存储'这个' onclick属性中的对象

时间:2015-10-26 14:32:32

标签: javascript

我最终想要的是检索下面的示例脚本的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;作为行动。

有关如何使代码生效的任何想法吗?

1 个答案:

答案 0 :(得分:0)

你得到这个的原因是属性值总是文本,你试图将对象放入其中(函数是对象)。这种情况你应该使用this.elem = that.say_goodbye.bind(那)。