我正在嘗試開發一個在html中創建菜單的JavaScript對象。 該函數接收一個對象作爲參數。對象元素中的一個函數應該在從我的對象的方法調用的事件處理函數中執行。無法調用未定義的方法
這裏是我的代碼:
Menu = function(config) {
var j = 0;
this.config = config;
this.make = function() {
for (i = 0; i < this.config.items.length; i++) {
var vid = document.createElement("div");
vid.className = this.config.cls;
vid.id += i;
document.body.appendChild(vid);
var txt = document.createTextNode(this.config.items[i]);
var pp = document.createElement("p");
pp.appendChild(txt);
vid.appendChild(pp);
}
document.addEventListener("keydown", this.scrolldown, false);
document.onkeydown = function(e) {
var keyCode = e.keyCode;
alert("functional");
if (keyCode == 40) {
alert("You hit key down");
var et = document.getElementById(j);
this.config.trait1(et);
j = j + 1;
} else {
alert("no");
}
}
};
return this;
};
當我打電話的功能,使實例我有我的元素創建對象之後,但由於我的事件沒有被處理:
Uncaught TypeError: Cannot call method 'trait1' of undefined .
任何人都可以幫我?我看到了同一個問題的很多答案,但是沒有一個建議的解決方案可行。
爲什麼你將現代事件處理程序綁定('document.addEventListener')與過時的事件處理程序綁定('document.onkeydown = function')混合? – Quentin
我只是忘記刪除其中的一個。但是,你告訴我的錯誤是因爲'這'不是指我的對象。 – user2552861