javascript - 如何通过单击按钮删除 HTML 元素,然后再次添加它
问题描述
我想在单击按钮时删除一个元素,然后在再次单击按钮时再次添加它。
不要误会我的意思,我不想“隐藏”我想删除它的元素。
我不太确定为什么这不起作用,但我的猜测是这会创建一个引用,一旦我删除了原始元素,就没有什么可添加的了。
有没有办法只使用本机javascript来解决这个问题?
function sortClick() {
var classes = document.getElementById('btn').classList;
var myNode = document.getElementById('myNode');
var clone = myNode.cloneNode(true);
if(!classes.contains('firstClick')){
classes.add("firstClick");
myNode.parentNode.removeChild(myNode);
}
else if(classes.contains('firstClick')) {
classes.remove('firstClick');
document.body.appendChild( clone );
}
};
#btn {
cursor: pointer;
}
.firstClick {
color: red;
}
<div id='btn' onClick='sortClick()'>click</div>
<div id=myNode>removed then added</div>
解决方案
您有一个问题,因为您没有将元素存储在全局变量中,而是使用本地变量。看一下这个。希望对你有效。
var clone;
function sortClick() {
var classes = document.getElementById('btn').classList;
if (document.getElementById('myNode')) {
var myNode = document.getElementById('myNode');
clone = myNode.cloneNode(true);
}
if (!classes.contains('firstClick')) {
classes.add("firstClick");
myNode.parentNode.removeChild(myNode);
} else if (classes.contains('firstClick')) {
classes.remove('firstClick');
document.body.appendChild(clone);
}
};
#btn {
cursor: pointer;
}
.firstClick {
color: red;
}
<div id='btn' onClick='sortClick()'>click</div>
<div id='myNode'>removed then added</div>
推荐阅读
- ruby-on-rails - Rails 5 控制器测试中的默认 Mime 类型
- mongodb - mongodb查询排序和索引
- javascript - JS 模块如何防止内部定义的自定义元素暴露其 API?
- ios - 如何过滤 dic-filter 的数组并附加到单独的 dic 数组
- javascript - 如何使用 Express 通过 HTTP 发送图像
- swift - 如何在下面的代码中添加标题和参数
- sql - Oracle SQL 组问题
- python - 与 msvcrt.getwch 同时运行时,输入内置函数无法正常工作
- json - 将默认字段添加到 Jolt JSON 转换
- arrays - 聚合嵌套的对象数组