我有一组节点,这些节点将精美地填充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/