相关疑难解决方法(0)

检查 HTML 元素是否包含原始文本?

采取这个 HTML:

<div id="el1">
  <div id="el2">
    <div id="el3">
      Hello
      <div id="el4">
        World
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

注意el3el4包含原始文本;即“你好”和“世界”。其他元素(el1el2)仅包含其他元素。

然而,使用纯 JavaScript,它们的所有innerHTML属性都表明它们包含某种形式的文本。

如何使用纯 JavaScript 来确定特定元素是否包含原始文本作为子元素。在这种情况下,该方法还将识别el3为包含原始文本(即使此后它还包含另一个元素)。

像这样的东西:

var els = getElementByTagName("*");

for(var i = 0; i < els.length; i++){

  if( /* element contains text */ ){

    // do something

  }
}
Run Code Online (Sandbox Code Playgroud)

这真的只是 RegEx 的工作吗?有了 HTMLElement 的所有属性,您可能会认为会有更好的方法。

没有 jQuery,谢谢。

html javascript dom

5
推荐指数
1
解决办法
3734
查看次数

javascript - 检查元素是否直接包含任何文本

我想知道一个元素是否直接包含任何文本。我直接的意思是:不是通过它的孩子。

<div id="case1"></div>
<div id="case2">text-in-div</div>
<div id="case3">
    <p>text-in-p</p>
</div>
<div id="case4">
    text-in-div
    <p>text-in-p</p>
</div>
<div id="case5">
    <p>text-in-p</p>
    text-in-div
</div>
<div id="case6">
    <p>text-in-p</p>
    text-in-div
    <p>text-in-p</p>
</div>

<script>
    function containsTextDirectly(id) {
        var element = document.getElementById(id);
        //what comes here?
    }

    console.log(containsTextDirectly("case1")); //false
    console.log(containsTextDirectly("case2")); //true
    console.log(containsTextDirectly("case3")); //false
    console.log(containsTextDirectly("case4")); //true
    console.log(containsTextDirectly("case5")); //true
    console.log(containsTextDirectly("case6")); //true

</script>
Run Code Online (Sandbox Code Playgroud)

显然我可以以编程方式检查它(删除子项并查看元素是否变空......)但我正在寻找更优化(优雅)的解决方案。

html javascript

0
推荐指数
1
解决办法
826
查看次数

标签 统计

html ×2

javascript ×2

dom ×1