在onclick函数中传递字符串参数

我想把一个参数(即一个字符串)传递给一个Onclick函数。目前,我是这样做的。

'<input type="button" onClick="gotoNode(' + result.name + ')" />'

例如,将result.name等于字符串"Add"。 当我点击这个按钮时,我遇到了一个错误,说Add没有被定义。因为这个函数调用在有数字参数的情况下工作得很好,所以我认为这与字符串中的符号""有关系。 以前有人遇到过这个问题吗?

解决办法

看起来你是在用字符串构建DOM元素。你只需要在result.name周围添加一些引号。

'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'

不过你真的应该用适当的DOM方法来做这个。

var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
    gotoNode(result.name);
});

​document.body.appendChild(inputElement);​

请注意,如果这是一个循环或其他什么,`result'会在事件发生前发生变化,你需要创建一个额外的范围泡来影射变化的变量。

评论(11)

我建议甚至不要使用HTML的onclick处理程序,而使用更常见的东西,如document.getElementById

HTML。

<input type="button" id="nodeGoto" />

JavaScript。

document.getElementById("nodeGoto").addEventListener("click", function() {
    gotoNode(result.name);
}, false);
评论(6)

已编辑。 如果要求在你的HTML代码中引用全局对象(js),你可以尝试这样做。[不要在变量周围使用任何引号('或")]

[Fiddle][1]参考。

Javascript。

var result = {name: 'hello'};
function gotoNode(name) {
    alert(name);
}

HTML。

<input value="Hello" type="button" onClick="gotoNode(result.name)" />​
评论(5)