javascript - 在未附加到 DOM 的函数中创建的元素
问题描述
我在弄清楚为什么我创建的元素不会附加到我的函数中的 DOM 时遇到了一些问题。
let startText = document.querySelector('.text-container').innerHTML = "Lets Start.";
let lvlTitle = document.querySelector('.text-container');
let background = document.querySelector('.full-page');
lvlTitle.addEventListener('click', countChangeBackground);
var clicks = 0;
function countChangeBackground() {
clicks += 1;
var message = "";
if (clicks == 1) {
message = "Test";
background.style.backgroundColor = "#f81884";
lvlTitle.style.color = "#f2eee2";
} else if (clicks == 2) {
message = "Test2";
background.style.backgroundColor = "#f5ce28";
lvlTitle.style.color = "black";
} else if (clicks == 3) {
message = "Add Li to ul";
var ul = document.querySelector('.text-container');
var li = document.createElement('li');
li.className = 'text-content';
li.appendChild(document.createTextNode('New Text'));
ul.appendChild(li);
console.log(li);
} else {
message = startText;
background.style.backgroundColor = "#f2eee2";
lvlTitle.style.color = "black";
}
lvlTitle.innerHTML = message;
};
<div class="full-page">
<div class="click-container">
<ul class="text-container">
</ul>
</div>
</div>
这是一个 jsfiddle: 将 Li 添加到 DOM
解决方案
这是导致您出现问题的行:
lvlTitle.innerHTML = message;
当您设置 innerHTML 时,如果该元素内还有其他节点,它们将被覆盖。
在某些情况下,您需要更改逻辑以仅设置 innerHTML。
我在这里更新了你的 jsfiddle:http: //jsfiddle.net/jepoqd01/
推荐阅读
- r - 使用 makeFeatSelWrapper (mlr) 的 bit.names 和 bits.to.features 参数对特征组执行包装器选择
- r - VennDiagram:旋转类别标签
- python - Pipenv 未设置 PYTHONPATH
- php - PHP AWS Cognito'执行“SignUp”时出错:ResourceNotFoundException:用户池客户端 XXXX 不存在
- javascript - 在只读 html 输入上显示插入符号
- android - 使用共享视图模型掌握详细信息流
- c++ - 如何通过替换顺序代码的 while 循环来添加 OpenMP for 循环
- javascript - To do list in Javascript - 如何始终在列表顶部插入新项目?
- android - 在我将继承从 Activity 更改为 AppCompatActivity 后,ActionBar 菜单改变了它的行为
- vba - 对于每个循环立即跳转到最后一个结果