javascript - RemoveChild javascript,如果没有更多的子节点不要抛出错误
问题描述
function delete(){
let k = document.getElementsByClassName('row');
for(let i=0; i<k.length; i++)
{
if(k[i].hasChildNodes()){
k[i].removeChild(k[i].childNodes[2]);
}
}
}
<div id="table">
<div class="row">
<div class="column">1.1</div>
<div class="column">1.2</div>
<div class="column">1.3</div>
<div class="column">1.4</div>
<div class="column">1.5</div>
</div>
<div class="row">
<div class="column">2.1</div>
<div class="column">2.2</div>
<div class="column">2.3</div>
<div class="column">2.4</div>
<div class="column">2.5</div>
</div>
<div class="row">
<div class="column">3.1</div>
<div class="column">3.2</div>
<div class="column">3.3</div>
<div class="column">3.4</div>
<div class="column">3.5</div>
</div>
<div class="row">
<div class="column">4.1</div>
<div class="column">4.2</div>
<div class="column">4.3</div>
<div class="column">4.4</div>
<div class="column">4.5</div>
</div>
<div class="row">
<div class="column">5.1</div>
<div class="column">5.2</div>
<div class="column">5.3</div>
<div class="column">5.4</div>
<div class="column">5.5</div>
</div>
</div>
<div id="button">
<input type="button" onclick="delete()" value="delete">
</div>
嗨,我目前正试图在 removeChild() 方法的帮助下每隔一列删除一次。如果我删除所有列,我想保留一个,但控制台显然显示“Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'"
因为如果所有列都被删除,就没有更多的孩子了。
现在的问题:我怎样才能捕捉到这个错误;有没有类似的东西,if(!k[i].hasChildNodes())
或者如果没有更多的孩子,我怎么能告诉 if 语句只是 print('hello')
解决方案
对要删除的元素使用直接选择器可能会更容易,使用:nth-child(2)
, 然后.remove()
与选择器匹配的所有元素:
function deleteRow() {
document.querySelectorAll('.column:nth-child(2)').forEach((child) => {
child.remove();
});
}
<div id="table">
<div class="row">
<div class="column">1.1</div>
<div class="column">1.2</div>
<div class="column">1.3</div>
<div class="column">1.4</div>
<div class="column">1.5</div>
</div>
<div class="row">
<div class="column">2.1</div>
<div class="column">2.2</div>
<div class="column">2.3</div>
<div class="column">2.4</div>
<div class="column">2.5</div>
</div>
<div class="row">
<div class="column">3.1</div>
<div class="column">3.2</div>
<div class="column">3.3</div>
<div class="column">3.4</div>
<div class="column">3.5</div>
</div>
<div class="row">
<div class="column">4.1</div>
<div class="column">4.2</div>
<div class="column">4.3</div>
<div class="column">4.4</div>
<div class="column">4.5</div>
</div>
<div class="row">
<div class="column">5.1</div>
<div class="column">5.2</div>
<div class="column">5.3</div>
<div class="column">5.4</div>
<div class="column">5.5</div>
</div>
</div>
<div id="button">
<input type="button" onclick="deleteRow()" value="delete">
</div>
推荐阅读
- sql - 如果group by的任何一行不包含值,则sql选择行
- react-native - 应用程序崩溃时应用程序我启动应用程序并且任何待处理的通知都可用
- javascript - 如何使用 PHP 检索 MySQL 中的表行并使用 Javascript 显示它?
- android-ndk - 找不到本机库
- tensorflow - 如何在 TensorFlow - keras 中为密集选择单位?
- python - 额外继承对执行速度的影响
- java - 动态填充网格布局
- python - 改变 Pyspark DataFrame 的结构
- python - 如何在 Pycharm 上更改 Run 终端的字体
- c# - Nlog 不会在 xml 文件文档中创建 Root 元素,同时在同一文件中为不同的日志级别写入日志