Javascript:使用动态参数从 onclick 事件调用对象函数/方法

标签 javascript object dynamic onclick invoke

我正在尝试这样做:

<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>";

anchor 必须在 javascript 中动态创建。如何从动态创建的 anchor 调用 MyItem 对象方法 toggle()?

ps,我是凭内存输入js,所以如果有语法错误,我深表歉意。

最佳答案

不要添加类似的事件处理程序和元素。使用 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();
}

关于Javascript:使用动态参数从 onclick 事件调用对象函数/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14616253/

相关文章:

javascript - 将 jsx 内容传递给 redux 状态并从那里渲染它

javascript - 如何使用 Odoo JS 在 Many2One 字段上应用域过滤器?

c - Java 的 Object 类型在 C 中的等价物

c# - 动态Where Linq 到实体

javascript - 使用 jQuery 重置文本,存在 AJAX 调用

javascript - 最长回文子串将 Java 转换为 Javascript

javascript - 如何从对象子 sibling 访问对象子值?

java - 使用对象数组进行插入排序?

javascript - 我如何使用 jquery 动态添加或删除附加到元素的类?

java - 如何在 ComboBox ListView 中显示动态变化的文本