我想把一个参数(即一个字符串)传递给一个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'会在事件发生前发生变化,你需要创建一个额外的范围泡来影射变化的变量。
我建议甚至不要使用HTML的onclick
处理程序,而使用更常见的东西,如document.getElementById
。
HTML。
<input type="button" id="nodeGoto" />
JavaScript。
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
已编辑。 如果要求在你的HTML代码中引用全局对象(js),你可以尝试这样做。[不要在变量周围使用任何引号('或")]
[Fiddle][1]参考。
Javascript。
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML。
<input value="Hello" type="button" onClick="gotoNode(result.name)" />