我想知道一个元素是否为空。可能这也是帮助人们理解innerText 和 innerHTML 之间区别的最佳示例之一。
以下是示例:
1. <div> <!-- Just a comment node is present inside a div --> </div>
2. <div> <span></span> </div>
3. <div> hi </div>
4. <div> hello <!-- world --> I know javascript </div>
5. <div> </div>
Example_Number | 内部HTML | 内文 | #childElements | isElementEmpty(结果)
1..........................| 非空......| 空…………| 0.......................| 是的
2..........................| 非空......| 空…………| 1.......................| 不
3..........................| 非空......| 不是空的..| 0.......................| 不
4..........................| 非空......| 不是空的..| 0.......................| 不
5..................| 空…………| 空…………| 0.......................| 是的
在#5 中,考虑了修整值。
显然,innerHTML 并不能检查元素是否为空。现在,我们需要检查 innerText/textContent 和 numberOfChildElement 的贡献。所以基于以上发现,我得出结论
当满足这两个条件时,元素为空。
- 修剪的 innerText/textContent 为空。(满足#5)
- 子元素的数量为零。(满足#2)
所以代码变成了
function isEmpty(element) {
return (element.textContent.trim() && element.childElementCount == 0);
}
我只是想验证我的方法,并告诉我是否错过了这里的任何用例,或者更好的解决方案真的很有帮助。