Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:检查是否有“错误”;“维珍”;元素?_Javascript_Html_Dom - Fatal编程技术网

JavaScript:检查是否有“错误”;“维珍”;元素?

JavaScript:检查是否有“错误”;“维珍”;元素?,javascript,html,dom,Javascript,Html,Dom,是否可以在JavaScript中检查元素是否只包含标记(无属性,无内容) 例如: <div></div> -> true <div id="foo"></div> -> false <div>bar</div> -> false ->true ->假的 条->假 如果在名为element的变量中有该元素,则可以检查该元素的属性数和子节点数。如果这两者都为零,那么您的条件为真 element.attribu

是否可以在JavaScript中检查元素是否只包含标记(无属性,无内容)

例如:

<div></div> -> true
<div id="foo"></div> -> false
<div>bar</div> -> false
->true
->假的
条->假

如果在名为
element
的变量中有该元素,则可以检查该元素的属性数和子节点数。如果这两者都为零,那么您的条件为真

element.attributes.length === 0 && element.childNodes.length === 0

但如果元素作为子节点包含空格,则不会出现这种情况。例如:

<div>   </div>

如果在名为
element
的变量中有该元素,则可以检查该元素的属性数和子节点数。如果这两者都为零,那么您的条件为真

element.attributes.length === 0 && element.childNodes.length === 0

但如果元素作为子节点包含空格,则不会出现这种情况。例如:

<div>   </div>

只需检查属性和内容,比如

function isVirgin(element) {
    return element.attributes.length === 0 &&  
           element.innerHTML.trim().length === 0;
}

只需检查属性和内容,如

function isVirgin(element) {
    return element.attributes.length === 0 &&  
           element.innerHTML.trim().length === 0;
}

其他人给出了理想的技术,但是如果你想找到符合这些要求的所有元素,你可以使用类似(ECMA5,即不是IE的东西,其他人给出了理想的技术,但是如果你想找到符合这些要求的所有元素,你可以使用(ECMA5,即非IE一个有趣的特例:只包含空格的标记如何? 如果要在“virgin”的定义中包含此类标记,应使用element.children,如中所示:

最重要的代码是:

log("has " + o.attributes.length + " attributes and " + o.children.length + " children");

一个有趣的特例是:只包含空格的标记怎么办? 如果要在“virgin”的定义中包含此类标记,应使用element.children,如中所示:

最重要的代码是:

log("has " + o.attributes.length + " attributes and " + o.children.length + " children");

+1非常好。可能应该提到,
:empty
在IE8和更低版本中不起作用。我确实提到过它是ECMA5(aka几乎肯定在IE<9中不起作用),但是是的,这不能帮助显式。是的。只是填隙
数组。prototype.filter()
比在IE8中添加缺少的CSS3选择器简单得多(而且IE6/7不能通过
.prototype
)扩展其DOM节点。+1非常好。应该提到
:empty
在IE8及更低版本中不起作用。我确实提到过它是ECMA5(aka几乎肯定在IE<9中不起作用)但是,是的,这不能不说是显式的。没错。只是填隙
Array.prototype.filter()
比在IE8中添加缺少的CSS3选择器要简单得多,也更常见(IE6/7不能通过
.prototype
扩展其DOM节点)。