javascript:将对象作为参数传递给字符串内的onclick函数

标签 javascript argument-passing

我想将一个对象作为参数传递给字符串内的 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>

最佳答案

上面的示例不起作用,因为 obj 到文本的输出是 [Object object],所以本质上,您正在调用 someListener([Object object ]).

当您在 o 中拥有该元素的实例时,使用 javascript 绑定(bind)到它的点击:

function myfunction(obj,parentobj){ 
    var o=document.createElement("div");
    o.innerHTML='<input type="button" />';

    o.onClick = function () {
        someListener(obj)
    }

    parentobj.appendChild(o.firstChild);
}

我在这里为您创建了一个可用的 fiddle :JSFiddle

关于javascript:将对象作为参数传递给字符串内的onclick函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109811/

相关文章:

javascript - 这些 jQuery JavaScript 中哪一个具有更好的性能?

javascript - 主干js中的分页

javascript - 如何使用 jquery 1.11 及更高版本制作 “See all category” 链接按钮以显示其余文本

C++ 无法将 public const string 成员作为参数传递给同一类的成员函数

javascript - 如何使用 Mechanize 处理 JavaScript?

javascript - 从 Devtools 窗口将 Chrome 选项卡置于前台

eval - Tcl:如何评估语句以在调用时填写默认参数

c++:使用存储在数组中的各种参数调用函数?

c++ - 数据未从 tempArray[] 正确存储到 realArray[][]

c - C 中函数不返回任何值