0
この「ループ」では、クロージャー/インナー関数を使用してイベントの要素のキーを付けることができない理由を理解したいと思います。私はfor,while
のような他のループで何が起こるかを知っています...このような状況ではこのアプローチがうまくいかない本当の理由はわかりません。JS IndexedDBクロージャー/内部関数
Q:キーを直接渡すことができないのはなぜですか?与えられた例では
item.transaction(["itens"], "readonly").objectStore("itens").openCursor()
.onsuccess = function(e) {
var info = e.target.result;
if (info) {
var div = document.createElement("div");
var img = document.createElement("img");
var h2 = document.createElement("h2");
img.src = "../imagens/misc/" + info.value.image;
h2.innerHTML = info.value.title;
div.appendChild(h2);
div.onclick = function() {
//always the lasy key.
console.log(info.key);
};
div.appendChild(img);
box.appendChild(div);
info.continue();
}
};
私は解決策のタイプは作品を知っている...
bt.onclick = (function(index) {
return function(){console.log('iterator: ' + index);}
})(i);
with ({ n: i }) {
bt.onclick = function(index) {
console.log('iterator: ' + n);
};
}