我有一组节点,这些节点将精美地填充obj

var nodesArray = [];

var obj = function(nodeSpan){
    this.nodeS = nodeSpan;

    this.doThings = function(){
            console.log(this.nodeS);
    };
}


我在obj中放入了许多nodeArray

var newObj = new obj(thisIsASpan) ///trust me that's a span
nodesArray.push(newObj);
//etc


我在每个添加了事件侦听器的节​​点上调用map函数。

Array.prototype.map.call(nodesArray, function(obj, index) {
        obj.nodeS.addEventListener('click', function(obj, index) {
                nodesArray[index].doThings(); ////Throws error in title.
        });
});


我单击该死的跨度之一。

我的标题出现错误,然后我走到休息室,然后发生故障。

最佳答案

在定义点击时,您不应添加obj和index,而是在触发点击时进行设置。在您的情况下,第一个参数是事件对象,第二个参数是未定义的,因为click仅具有一个参数。

Array.prototype.map.call(nodesArray, function(obj, index) {
        obj.nodeS.addEventListener('click', function(event) {
                nodesArray[index].doThings();
        });
});

关于javascript - 未捕获的TypeError:无法读取未定义的属性'doThings',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39904727/

10-12 01:06
查看更多