使用带有JavaScript的离散标记检查元素是否已关闭

Ood*_*Ood 8 html javascript dom nodes

我正在获取en元素的子节点,我想检查标签是否实际上可以包含文本.例如:

<br />, <img />
Run Code Online (Sandbox Code Playgroud)

应该返回false和

<span></span>, <div></div>, <li></li>
Run Code Online (Sandbox Code Playgroud)

应该回归真实.谢谢!

wiz*_*lus 9

遗憾的是,无法检测代码中的标记是如何编写的,因为当JavaScript运行时,HTML代码已经被解析为DOM对象.

但是,您的问题似乎更多地是关于特定元素类型是否可以包含文本.这个简单的测试将为您提供每种元素类型的答案:

function canElementContainText(tagname) {
    try {
        var e = document.createElement(tagname);
        return e.outerHTML.indexOf("/") != -1;
    } catch (ex) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

例如canElementContainText("div")返回truecanElementContainText("img")返回false.

然后,您可以将tagName任何元素的属性传递给此函数以进行测试.

var result = canElementContainText(myElement.tagName);
Run Code Online (Sandbox Code Playgroud)