我将 Node 类型元素传递给 cardClicked。
function init() {
for (i in set.cards) {
var myP = document.createElement("p");
myP.innerHTML = set.cards[i].points + "   " + set.cards[i].name;
myP.addEventListener("click", cardClicked.bind(myP));
document.getElementById("left column").appendChild(myP);
}
}
function cardClicked(myP) {
document.getElementById("right column").appendChild(myP);
}
但是当我运行此代码时,浏览器显示 myP
不是 Node 类型,无法通过 appendChild
添加?
发生什么事了?
最佳答案
您有两个名为 myP
的变量:
-
var myP
-
cardClicked(myP)
因为你打了cardClicked.bind(myP)
,this
的值里面cardClicked
将是1(由于事件处理程序的工作方式,无论如何它都会是)。
2 的值仍然是 cardClicked
时传递的第一个参数。被调用,这将是事件对象(正如错误消息所示,它不是一个 Node)。
使用this
相反。
function init() {
var i, myP;
for (i in set.cards) {
myP = document.createElement("p");
myP.innerHTML = set.cards[i].points + " " + set.cards[i].name;
myP.addEventListener("click", cardClicked);
document.getElementById("left column").appendChild(myP);
}
}
function cardClicked(event) {
document.getElementById("right column").appendChild(this);
}
关于javascript - 在 JavaScript 中将节点作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620679/