【发布时间】:2021-06-16 14:02:41
【问题描述】:
我正在尝试在“div”中创建一个“a”元素,并在该“a”元素中添加一个“img”图像,该图像已经存在于“div”元素中。我做了,但是,我怀疑因为下面的代码不起作用。
document.querySelectorAll(".card").forEach(function(div){
div.appendChild(document.createElement("a"))
div.querySelector("a").appendChild(div.querySelector(".image"))
// OUPUT
// <div class="card">
// <a>
// <img class="image" alt="image-1" id="image-1">
// </a>
// </div>
// NOT WORK
div.appendChild(document.createElement("a").appendChild(div.querySelector(".image")))
// OUTPUT
// <div class="card">
// <img class="image" alt="image-1" id="image-1">
// </div>
})
【问题讨论】:
-
请包含运行此 JavaScript 的 HTML。您可以使用 Stack Snippets(图标在编辑器工具栏中看起来像
<>)使其可运行。但是,您的第一组代码的输出似乎产生了您想要的输出。 -
appendChild返回它附加的节点。所以div.appendChild(document.createElement("a").appendChild(…))没有按照你的意图将a附加到div,因为你丢失了对那个的引用,当你一口气写完document.createElement("a").appendChild()时——它返回了@ 987654328@ 元素,因此现在将其附加到您的 div 中。停止尝试将所有内容编写为单行,并使用 变量 来保留您以后可能仍需要的方法调用的返回值。 -
或者,如果您坚持编写难以阅读的内容,请使用大括号。
(div.appendChild(document.createElement("a")).appendChild(div.querySelector(".image")))。(div.appendChild(document.createElement("a"))返回新创建并附加的a,因此现在调用 的appendChild可以再次将图像附加到a元素。 -
@CBroe 感谢您的帮助非常有用,我编写此代码是为了进行实验,所以我特地这样做了。
标签: javascript html dom appendchild createelement