2011-06-23 99 views
1

我需要在網頁上創建鏈接,該鏈接在被onclick事件觸發時調用具有不同參數的javascript函數。因此函數需要傳遞一個參數。將參數傳遞給通過'onclick'屬性調用的javascript函數

在我的代碼中,如下所示,我在commandLink內調用onclick時將參數傳遞給wr()函數。如果我將i作爲wr()函數的參數傳遞給onclick,但代碼無法成功執行,但如果傳遞常量即wr(4),則成功。我怎樣才能成功地將可變參數傳遞給此JavaScript函數?

  <h:form> 
       <ui:repeat value="#{bean.list}" var="i"> 
        <p:commandLink onclick="wr(i)" value="#{i}" /><br/> 
       </ui:repeat> 
      </h:form> 

      <p id="e">fd</p> 

      <script type="text/javascript" > 
       function wr(i){ 
        document.getElementById("e").innerHTML="this is "+i+ " !"; 
       } 
      </script> 

回答

1

應該不是你的標記的onclick屬性計算變量「我使用#{I},而不是僅僅通過 '我'?

所以它應該是:

<ui:repeat value="#{bean.list}" var="i"> 
    <p:commandLink onclick="wr(#{i})" value="'#{i}'" /><br/> 
</ui:repeat> 

你用過類似FireBug看什麼「我」是evaluting過你的JS函數內?

編輯:更新上面的標記,以用單的#{I}表達'引號

+0

是的,我看到thorugh螢火蟲的表達,最終使用'onclick =「wr(#{i})」'來評估類似'wr(one)'的東西',實際上應該用'onclick ='wr('#{i}' )' –

+0

好了 - 我更新了我的答案,以便將表達式用引號括起來。 – toddk

0

您應該使用this來傳遞元素的引用。它比傳遞硬參數更靈活。

如:...onclick="wr(this)"...

然後

function wr(elm){ 
    document.getElementById("e").innerHTML="this is "+ elm.value + " !"; 
} 
0

你應該這樣做:

<ui:repeat value="#{bean.list}" var="i"> 
    <p:commandLink onclick="wr('#{i}')" /><br/> 
</ui:repeat> 
相關問題