4

我正在尝试这样做:

<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,如有语法错误,敬请见谅。

4

2 回答 2

11

不要添加类似的事件处理程序和元素。使用 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();
}
于 2013-01-31T00:13:10.283 回答
2

那是行不通的。您正在尝试使用像字符串这样的对象。尝试以下操作:

document.body.innerHTML += "<a onclick='(function(){MyItem.toggle();})()'>link</a>";
于 2013-01-31T00:12:55.967 回答