2011-07-05 30 views
0

如何在x,y座標上動態定位素數dialog由javascript變量定義的座標將對話框定位在由javascript變量定義的位置

我嘗試: -

我想這樣做,通過JavaScript本身,而是我沒有通過下面的代碼來設置位置:

 var dialog_x=300; 
     var dialog_y=500; 

     var s = document.getElementById("dialogId"); 
     s.style.position = "relative"; 
     s.style.left = dialog_x + "px"; 
     s.style.top = dialog_y + "px"; 

注意,這dialogId是我的ID定義對話框的屬性。當我知道父容器的id也被附加到這個id中時,我也嘗試使用生成的id(追加後),但它不起作用。

編輯:

我想通了對話框容器(其中包含報頭和對話的內容),我期望被分配我通過id屬性定義關於對話單元沒有被分配ID任何身份證,這是我無法訪問對話的原因。當我還沒有分配任何id時,我仍然無法理解如何檢索這個元素。我定義的id實際上分配給主對話框容器內的對話框內容容器。

+0

也許將其設置爲相對's.style.position =「relative」;你可以嘗試設置爲絕對,'s.style.position =「絕對」;'? –

+0

也嘗試過這樣做,但我想這個問題是我甚至無法使用我分配給它的Id在javascript中檢索對話框元素 –

+1

這聽起來像您有更多基本問題。如果您沒有下載並安裝Firefox的Firebug插件,我強烈建議您這樣做。有了它,您將能夠搜索DOM上的元素,並能夠找到對話框的實際ID。 –

回答

2

使用jQuery,您可以調用javascript方法,該方法將在對話框顯示時調整對話框的位置。

<h:form prependId="false"> 
     <p:commandButton value="Select Location" oncomplete="TreeDialog.show()" id="selectLocationButton"></p:commandButton> 
    </h:form> 
    <p:dialog header="Select the location" id="treeDialog" 
      widgetVar="TreeDialog" 
      modal="true" onShow="adjustPositionning($('#selectLocationButton'), $('#treeDialog'))" width="450"> 
     <p:tree value="#{myController.root}" var="node" dynamic="true" cache="true"> 
     <p:treeNode> 
      <h:outputText value="#{node.name}" /> 
     </p:treeNode> 
     </p:tree> 
    </p:dialog> 

<script type="text/javascript"> 
function adjustPositionning(sourceElement, dialog) { 
    var x = sourceElement.offset().left; 
    var y = sourceElement.offset().top; 
    var width = sourceElement.width(); 
    var padding = 15; 
    dialog.parent().offset({ top: y, left: x + width + padding }); 
} 
</script>