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;
};
オブジェクトをインスタンス化した後に関数 make を呼び出すと、要素が作成されましたが、次の理由でイベントが処理されません。
Uncaught TypeError: undefined のメソッド 'trait1' を呼び出せません。
誰でも私を助けることができますか?同じ質問に対する多くの回答を見ましたが、提案された解決策はどれもうまくいきませんでした。