我想要向Onclick函数传递一个参数(即一个字符串)。
目前,我这样做:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
其中result.name例如等于字符串"Add“。
当我点击这个按钮时,我得到了一个错误提示:"Add is not defined“。由于此函数调用可以很好地处理数字参数,因此我假设它与字符串中的符号"“有关。
我如何解决这个问题?
发布于 2012-03-10 10:41:22
看起来您是在从字符串构建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
将在事件触发之前更改,您需要创建一个额外的作用域气泡来隐藏更改的变量。
发布于 2016-07-28 17:38:36
下面的方法将会有一个一跳点击-带控件的处理程序方法和处理程序方法,基于事件对象,可以演绎出点击事件和相应的对象。
它还提供了一种更清晰的方法来添加更多参数,并具有更大的灵活性。
<button type="button"
className="btn btn-default"
onClick="invoke"
name='gotoNode'
data-arg1='1234'>GotoNode</button>
在JavaScript层中:
invoke = (event) => {
let nameOfFunction = this[event.target.name];
let arg1 = event.target.getAttribute('data-arg1');
// We can add more arguments as needed...
window[nameOfFunction](arg1)
// Hope the function is in the window.
// Else the respective object need to be used
})
}
这里的优点是我们可以有尽可能多的参数(在上面的例子中,data-arg1,data-arg2等)。根据需要。
发布于 2012-03-10 10:12:36
我建议甚至不要使用HTML处理程序,而要使用更常见的东西,比如document.getElementById
。
HTML:
<input type="button" id="nodeGoto" />
JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
https://stackoverflow.com/questions/9643311
复制相似问题