使用onclick函数传递参数作为变量读取时应将其作为字符串读取

时间:2012-01-20 10:47:08

标签: javascript dynamic parameters onclick

这是我的问题:

我正在动态创建一个带有onclick功能的按钮,如下所示:

 $("#test).html('<input type="button" value="Close" onclick="remove('+param1+','+param2+');" />');

参数读得很好但功能不是触发器,我收到此错误信息: 当bob是param1的字符串值时,“bob未定义”。

显然,当它应该被读作字符串时,bob被读作变量,但我不明白为什么。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:5)

那是因为这个字符串就在这里:

'onclick="remove('+param1+','+param2+');"'

最终会看起来像这样:

'onclick="remove(foo, bar);"'

您可能希望它看起来像这样:

'onclick="remove(\'foo\', \'bar\');"'

所以改成它:

'onclick="remove(\''+param1+'\', \''+param2+'\');"'

你也可以这样做:

$("#test").html('<input type="button" value="Close" />').find('input[type=button]').click(function () {
    remove(param1, param2);
});

编辑:我还注意到你错过了一个“来自你的$() - 来电:$("#test)应该是$("#test")

答案 1 :(得分:0)

我可以建议你这个

<script type="text/javascript">
//<![CDATA[
    var i = 0;
    $(function () {
        $("#lnkAdder").click(function () {
            // appending new item
            $("#Container").append(
                $("<a>").attr({ "href": "javascript:;" }).text("Click me").click(function () {
                    var data = ++i;
                    alert("I'm clicked,  I'm number " + data);
                })
            );
        });
    });
//]]>
</script>
<a href="javascript:;" id="lnkAdder">Add item</a>
<div id="Container"></div>

这里的关键是javascript闭包。 正如您所见,有一个名为lnkAdder的链接。它负责将新项目添加到容器中。单击它会将新项目附加到容器中。在附加您使用jQuery API并创建新元素时,添加属性并添加事件侦听器。在事件侦听器正文中,您将值复制到内部变量中。他们酌情使用它。