我正在尝试这样做:
<script>
var MyItem;
MyItem = new myobj('testobj');
function myobj(id)
{
var _id = id;
this.toggle = function()
{
...
}
function draw()
{
document.body.innerHTML += "<a onclick='" + MyItem + ".toggle();'>link</a>";
}
draw();
}
</script>
我得到“函数未定义”,但可以从控制台成功调用MyItem.toggle()。我也试过了:
document.body.innerHTML += "<a onclick='(function(){" + MyItem + ".toggle();})()'>link</a>";
必须在javascript中动态创建锚点。如何从动态创建的锚中调用MyItem对象方法toggle()?
ps,我正在从内存中输入js,所以如果有语法错误,我道歉。
答案 0 :(得分:9)
不要添加事件处理程序和类似的元素。使用DOM方法
var anchor = document.createElement("a");
anchor.innerHTML = "link";
anchor.onclick = function(){ MyItem.toggle(); };
document.body.appendChild(anchor);
我实际上认为你是在追求这样的事情
var MyItem;
MyItem = new myobj('testobj');
function myobj(id) {
var that = this;
this.toggle = function () {
alert(id);
}
function draw() {
var anchor = document.createElement("a");
anchor.innerHTML = "link";
anchor.onclick = function () {
that.toggle();
};
document.body.appendChild(anchor);
}
draw();
}
答案 1 :(得分:1)
那不行。您正在尝试使用类似字符串的对象。请尝试以下方法:
document.body.innerHTML += "<a onclick='(function(){MyItem.toggle();})()'>link</a>";