使用JavaScript并根据HTML标准,我该如何做到这一点?不知道从哪里开始编码isSingleClosing('input')
必须返回true的函数(注意/>
),而isSingleClosing('div')
返回false例如。自我或单个结束标记看起来像这个<tag/>
而非单个结束<tag></tag>
答案 0 :(得分:4)
最一致和最简单的方法是保留一个自闭元素列表
var elems = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
function isSingleClosing(elem) {
return elems.indexOf( elem.tagName.toLowerCase() ) !== -1;
}
答案 1 :(得分:0)
这样的isSingleClosing
函数看起来像这样:
function isSingleClosing(tagName){
var elem = document.createElement(tagName);
return (elem.outerHTML || new XMLSerializer().serializeToString(elem)).indexOf("></") < 0;
}
它根据传递的tagName
创建元素并尝试序列化它。然后它尝试在序列化中查找></
。如果已找到,则它不是自动关闭标记,因此请返回false
,否则返回1,因此请返回true
。
几乎每个浏览器都支持outerHTML
和XMLSerializer
中的至少一个。
这是确定标记符号的函数。但是,这仅涵盖运行此功能的浏览器中支持的标签。
它会返回true
bgsound
,但false
或command
会被弃用,非标准化或任何浏览器都不支持开头。
可能无法以向后兼容和向前兼容的方式获得所有案例。