[英]How can I test if an element is self-enclosed in JavaScript?
如何测试元素在JavaScript中是否自封闭? 因此,这是一个自我封闭元素的示例:
<input type="text" value="I'm self-enclosed.">
这是一个没有的元素的示例:
<div>I'm not self-enclosed.</div>
如何在JavaScript中区分它们?
您可以通过以下函数检测元素是否被自动封闭,这里是带有示例的JSFiddle 。
<div>False</div><br>
<input type="text" value="True"/><br>
两个简单的HTMLElement's
,第一个不是自封闭的,第二个是自封闭的。
function isSelfEnclosed(element) {
var elem = document.createElement( element.tagName );
return elem.outerHTML.indexOf( "><" ) == -1;
}
isSelfEnclosed( div )
-> False,假设div是div元素。
isSelfEnclosed( input )
-> True,假设输入是输入元素。
我们在element
的标记名之后创建一个新元素,然后检查它的.outerHTML
是否有“> <”。
我提出了这个自我回答的问题,因为我发现的唯一其他答案并非完全防弹。 无论如何,这是一个具有简单用途的简单功能,希望对您有所帮助!
cloneNode( true )
而不是cloneNode()
更新了不正确的代码( 17:01 p.m 05/01/15 ) 我宁愿对照已知的空元素列表检查tagName,而不是依靠innerHTML返回带有><
的内容
function isSelfEnclosed(element) {
return ['area', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param'].indexOf(element.tagName.toLowerCase()) != -1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.