javascript - 如何将孩子添加到带有类的嵌套 div 结构中
问题描述
我正在尝试在我的一个项目中的嵌套 div 结构中添加一个 div。
下面是我为复制行为而编写的示例。单击按钮后我无法看到小部件 div 可能会出现什么问题?
function myFunction() {
var widget = document.createElement("div");
widget.id = 'widget';
widget.innerHTML = "I am Widget";
var x = document.getElementsByClassName("model-viewer");
x[0].appendChild(widget);
console.log(x)
x[0].innerHTML = "Hello World!";
}
<div class="example">First div element with class="example".
<div class="app_main">
<div class="model"></div>
<div class="model-filter">
<div class="model-viewer">hello</div>
</div>
<div class="mod"></div>
</div>
</div>
<button onclick="myFunction()">Try it</button>
<p><strong>Note:</strong> The getElementsByClassName() method is not supported in Internet Explorer 8 and earlier versions.</p>
解决方案
innerHTML
您已成功附加小部件,但随后您立即将其覆盖。
调用该appendChild
函数后,您的 HTML 如下所示:
<div class="model-viewer">
hello
<div id="widget">
I am Widget
</div>
</div>
然后你打电话innerHTML
,它会替换里面.modal-viewer
的所有代码(包括#widget
)。
您可以使用insertAdjacentHTML将小部件附加到元素之后。
function myFunction() {
var widget = document.createElement("div");
widget.id = 'widget';
widget.innerHTML = "I am Widget";
var x = document.getElementsByClassName("model-viewer");
// x[0].appendChild(widget); // OLD WAY
x[0].insertAdjacentHTML('afterEnd', widget.innerHTML); // NEW WAY
console.log(x)
x[0].innerHTML = "Hello World!";
}
<div class="example">First div element with class="example".
<div class="app_main">
<div class="model"></div>
<div class="model-filter">
<div class="model-viewer">hello</div>
</div>
<div class="mod"></div>
</div>
</div>
<button onclick="myFunction()">Try it</button>
<p><strong>Note:</strong> The getElementsByClassName() method is not supported in Internet Explorer 8 and earlier versions.</p>
推荐阅读
- php - Laravel 门问题
- go - 如何配置 goland 以识别“mod”包?
- php - 检测设备是iOS还是Android,然后重定向
- php - 如何使用 symfony 在 RabbitMQ 中运行迁移?
- python - 返回字典的 Python 类
- javascript - 如何在计算时将输入值连接并显示到 DOM?
- javascript - Symfony/Twig 如何包含新的 javascript 函数并避免重复?
- c++ - 如何调用函数指针数组中的函数?
- javascript - 如何在 Jquery UI 滑块中获取幻灯片上的索引号
- c# - Visual Studio 2017 不会创建 C# 和 Visual Basic 项目