我想将一个对象作为参数传递给字符串内的 Onclick 函数。像下面这样的东西:
function myfunction(obj,parentobj){
var o=document.createElement("div");
o.innerHTML='<input type="button" onclick="somelistener(' + obj + ')" />';
parentobj.appendChild(o.firstChild);
}
显然,这是行不通的。有人知道吗?谢谢!
一个更完整的版本,正如@Austin所建议的
<!DOCTYPE html>
<html>
<body>
<style type="text/css">
</style>
<p id="test">test</p>
<p id="objectid"></p>
<script>
function test(s){
document.getElementById("test").innerHTML+=s;
}
function somelistener(obj){
test(obj.id);
}
function myfunction(obj,parentobj){
var o=document.createElement("div");
o.innerHTML='<input type="button" onclick="somelistener(' + obj + ')" />';
o.onclick = function () {
someListener(obj)
}
parentobj.appendChild(o.firstChild);
}
myfunction(document.getElementById("objectid"),document.getElementById("test"));
</script>
</body>
</html>
原文由 Elizabeth 发布,翻译遵循 CC BY-SA 4.0 许可协议
上面的示例不起作用,因为
obj
到文本的输出是[Object object]
,所以基本上,您正在调用someListener([Object object])
当您在
o
中拥有元素的实例时,使用 javascript 绑定到它的点击:我在这里为你创建了一个工作小提琴: JSFiddle