在JavaScript中将节点作为参数传递?
我正在将节点类型元素传递给cardClicked在JavaScript中将节点作为参数传递?,javascript,dom,Javascript,Dom,我正在将节点类型元素传递给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", c
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)
,所以cardClicked
中的this
的值将为1(由于事件处理程序的工作方式,无论如何都是这样)
值2仍然是调用cardClicked
时传递的第一个参数,这将是事件对象(正如错误消息所说,它不是节点)
改用此
有两个变量称为
myP
:
var-myP
cardClicked(myP)
cardClicked.bind(myP)
,所以cardClicked
中的this
的值将为1(由于事件处理程序的工作方式,无论如何都是这样)
值2仍然是调用cardClicked
时传递的第一个参数,这将是事件对象(正如错误消息所说,它不是节点)
改用此
您能为我们创建一个运行环境吗?我在代码中没有看到任何会导致
myP
不是节点的内容。虽然你应该考虑不要在循环数组中使用<代码>(假设<代码> SET。卡< /代码>是一个数组)。你能创建一个让我们运行的吗?我在代码中没有看到任何会导致myP
不是节点的内容。虽然您应该考虑在循环数组中不使用<代码>(假设<代码> SET。卡< /代码>是一个数组)。
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);
}