2011-06-23 71 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> 
相关问题