Javascript添加侦听器错误:TypeError:trigger.addEventListener不是函数

Javascript添加侦听器错误:TypeError:trigger.addEventListener不是函数,javascript,events,dom-events,Javascript,Events,Dom Events,我正在使用以下代码向一个或多个链接添加侦听器: function getData() { var context = {}; context['triggers'] = triggers(); context['msg'] = msg; return context } function triggers() { var arr = [];

我正在使用以下代码向一个或多个链接添加侦听器:

 function getData() {
            var context = {};
            context['triggers'] = triggers();
            context['msg'] = msg;
            return context
        }

function triggers() {
            var arr = [];
            document.querySelectorAll('.trigger').forEach(function (trigger, index) {
                arr[index] = {};
                arr[index]['trigger'] = trigger;
            });
            return arr;
        }



function addListeners(data) {
            data.triggers.forEach(function (trigger) {
                trigger.addEventListener('click', change)
            });
        }

data = geData()
触发器是一个锚:

我得到以下错误:

TypeError: trigger.addEventListener is not a function
触发器中的对象不是锚点,而是一个将锚点作为名为触发器的属性包含的对象。因此:

我们之所以知道这一点,是因为以下代码:

function triggers() {
    var arr = [];
    document.querySelectorAll('.trigger').forEach(function (trigger, index) {
        arr[index] = {};
        arr[index]['trigger'] = trigger;
    });
    return arr;
}
这显然是创建一个对象,然后将元素设置为其上的触发器属性

旁注:您可以在使用字符串的几个地方使用属性初始值设定项和属性文字语法,并且FWIW您可以将映射应用于节点列表:


请发布使用数据调用addListeners的代码,特别是您在数据中发送的内容。这意味着两件事之一:1。触发器不是HTML元素或2。您是在不支持addEventListener的过时IE版本上执行此操作的,或者正在断开的兼容模式下使用IE9-IE11。@31piy更新了更多codeT.J Crowder;如果我使用触发器'instanceof Element',我会得到false,但在开发人员工具中,它似乎是一个anchor@user3541631-您误读了devtools向您展示的轻松操作!。它向您展示了一个具有触发器属性的对象,其值为锚元素。
function triggers() {
    var arr = [];
    document.querySelectorAll('.trigger').forEach(function (trigger, index) {
        arr[index] = {};
        arr[index]['trigger'] = trigger;
    });
    return arr;
}
function getData() {
    return {
        triggers: triggers(),
        msg: msg
    };
}

function triggers() {
    return Array.prototype.map.call(
        document.querySelectorAll('.trigger'),
        function(anchor) {
            return {trigger: anchor};
        }
    );
}

function addListeners(data) {
    data.triggers.forEach(function (entry) {
        entry.trigger.addEventListener('click', change)
    });
}

data = geData();