我最终想要的是检索下面的示例脚本的innerHTML(将html放在数据库中)。它还必须包括onclick事件。但是,在生成的HTML中,没有可用的onclick事件。
<html>
</head>
<script>
function test() {
this.goodbye="goodbye!";
this.elem=document.createElement('div');
this.elem.style.border='1px solid #888888';
this.elem.textContent="hello";
this.elem.style.cursor='pointer';
var that=this;
this.elem.onclick=function(){that.say_goodbye();}
document.getElementsByTagName('body')[0].appendChild(this.elem);
}
test.prototype.say_goodbye=function(blockid) {
this.elem.textContent=this.goodbye;
}
</script>
</head>
<body>
<script>var obj = new test();</script>
<a href="javascript:alert(obj.elem.outerHTML);">get html</a>
</body>
</html>
因此,重要性是:
this.elem.onclick=function(){that.say_goodbye();}
我尝试将其添加为如下属性:
this.elem.setAttribute('onclick',that.say_goodbye.bind(that));
但是不起作用。当我点击给定代码中的链接时,浏览器会发出警告:
<div> onclick="function(){[native code]}" ..... </div>
在这种情况下,HTML现在有一个&#39; onclick&#39;事件但包含“[本机代码]&#39;作为行动。
有关如何使代码生效的任何想法吗?
答案 0 :(得分:0)
你得到这个的原因是属性值总是文本,你试图将对象放入其中(函数是对象)。这种情况你应该使用this.elem = that.say_goodbye.bind(那)。