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

新手上路,请多包涵

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

阅读 345
2 个回答

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

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

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

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

    parentobj.appendChild(o.firstChild);
}

我在这里为你创建了一个工作小提琴: JSFiddle

原文由 Austin 发布,翻译遵循 CC BY-SA 3.0 许可协议

function myfunction(obj,parentobj){
        var o=document.createElement("div");
         o.innerHTML="<input type='button' onclick='somelistener("+JSON.stringify(obj)+")'/>";
                                  parentobj.appendChild(o.firstChild);
            }
    // my similar problem, function a was called in a jsonArray loop in the dataTable initiation
    function a(data, type, obj) {
                         var str = "";
                         str += "<span class='button-group'>";
                         str +="<a onclick='chooseData1("+JSON.stringify(obj)+")'>[选择]</a>";
                         str += "</span>";
                         return str;
                                            }
function chooseData1(data){
                        console.log(data);
                  }

原文由 Nikikiy SCC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题