javascript - 在 JavaScript 中将节点作为参数传递?

标签 javascript dom

我将 Node 类型元素传递给 cardClicked。

 function init() {
     for (i in set.cards) {
         var myP = document.createElement("p");
         myP.innerHTML = set.cards[i].points + "&nbsp &nbsp" + 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 的变量:

  1. var myP
  2. 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 + "&nbsp; &nbsp;" + 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/

相关文章:

firefox - 使用 Firefox 检查 Shadow DOM

javascript - 将值从一个 html 表单移动到另一个表单,因此一个表单提交来自自身和另一个表单的值

javascript - 如何以编程方式在 Chromium 中添加 HTML DOM 断点?

javascript - 无法读取未定义的属性 'fontSize'

javascript - 媒体流录制存储在哪里?

javascript - 我可以通过ajax创建jquery mobile listview吗?

javascript - 使用 jQuery 更改 url 查询字符串值

javascript - Cmd 只需转到 Elm 中的新网页

javascript - JSON解析多数据

javascript - .each() 函数,每次迭代之间有间隔