如何测试元素是否在JavaScript中自我封闭? 所以,这是一个自封闭元素的例子:
<input type="text" value="I'm self-enclosed.">
这是一个不是
的元素的例子<div>I'm not self-enclosed.</div>
如何在JavaScript中区分它们?
答案 0 :(得分:4)
您可以通过以下函数检测元素是否是自我封闭的,这里是带有演示的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 )
- &gt;假, div 是div元素。
isSelfEnclosed( input )
- &gt;是的,假设输入是输入元素。
我们在element
的标记名称之后创建一个新元素,然后检查它是.outerHTML
是否有“&gt;&lt;”在它。
我提出了这个自我回答的问题,因为only other answer I found并不完全是防弹的。无论如何,这是一个简单的功能,目的很简单,希望它对某人有帮助!
cloneNode( true )
而非cloneNode()
更新了错误的代码( 17:01,05/01/15 )答案 1 :(得分:2)
我宁愿根据已知的void元素列表检查tagName,而不是依赖于innerHTML返回其中><
的内容
function isSelfEnclosed(element) {
return ['area', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param'].indexOf(element.tagName.toLowerCase()) != -1;
}