将参数传递给通过'onclick'属性调用的javascript函数

时间:2011-06-23 15:02:48

标签: javascript jsf

我需要在网页上创建链接,该链接在onclick事件触发时调用具有不同参数的javascript函数。因此,函数需要通过参数。

在我的代码中,如下所示,我在wr()内从onclick致电时将参数传递给commandLink。如果我将i作为参数传递给wr()中的onclick函数,则代码无法成功执行,但如果我传递一个常量ie 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>

3 个答案:

答案 0 :(得分:1)

onclick属性的标记不应该使用#{i}评估变量'i'而不是仅传递'i'吗?

所以它应该是:

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

您是否曾使用类似FireBug之类的内容来查看您在JS函数内部评估的内容是什么?

修改:更新了上面的标记,将#{i}表达式括在单引号中

答案 1 :(得分:0)

您应该使用this传递元素的引用。它比传递硬参数更灵活。

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

然后

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

答案 2 :(得分:0)

你应该这样做:

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