要素が空かどうかを調べたい。おそらくこれは、人々が innerText と innerHTML の違いを理解するのにも役立つ最良の例の 1 つです。
以下に例を示します。
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 がどのように寄与するかを確認する必要があります。したがって、上記の調査結果に基づいて、私は結論付けました
これらの両方の条件が満たされた場合、要素は空です。
- Trimmerd innerText/textContent が空です。(#5 を満たす)
- 子要素の数が 0 です。(#2 を満たす)
したがって、コードは次のようになります
function isEmpty(element) {
return (element.textContent.trim() && element.childElementCount == 0);
}
私は自分のアプローチを検証し、ここでユースケースを見逃しているかどうか、またはより良いソリューションが本当に役立つかどうかを伝えたいだけです.