我想把一个对象作为参数传递给一个字符串中的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>
5条答案
按热度按时间w8ntj3qf1#
上面的例子不起作用,因为
obj
到文本的输出是[Object object]
,所以实际上,您调用的是someListener([Object object])
。在
o
中有元素的示例时,使用javascript绑定到它的click:我在这里为你创造了一把实用的小提琴:JSFiddle
vvppvyoh2#
h43kikqp3#
这是一个老问题,我不太理解它的答案,但最简单的解决方案是组合函数
encodeURIComponent
和JSON.stringify
,也就是说,将对象字符串化,然后对那些特殊字符进行转义,然后在函数内部反向执行该过程gcuhipw94#
只需使用JSON.strigify(obj)将对象字符串化,并将其作为参数传递给onclick函数,它将被直接解析并作为Object接收到函数中。
ffdz8vbo5#
就像这样传过去: