如何判断字符串是否为有效的HTML标记?
例如:a,或h1,div或span,...是有效的HTML标记名。 但ar,或abc,或div2,...是invaild。
var Str = 'strongg';
if( IsValid(Str) ) {
// do something
}
感谢。
PS 我想,这不是一个愚蠢的问题,我在这里找到了一个很好的解决方案(见下文)。但我不知道为什么这个帖子有“-3”?想知道!
答案 0 :(得分:8)
HTML5引入了HTMLUnknownElement interface,它必须用于未由标准HTML规范定义的元素。
使用document.createElement
时,如果元素不是规范的有效标记,则它将是HTMLUnknownElement类型的对象。由于使用.toString
将返回[object type]
,您可以为该类型创建元素并进行测试:
function isValid(input) {
return document.createElement(input).toString() != "[object HTMLUnknownElement]";
}
console.log( isValid("tr") );
console.log( isValid("a") );
console.log( isValid("trs") );
console.log( isValid("strong") );
console.log( isValid("strongg") );
然而,这些在旧浏览器中不起作用。
答案 1 :(得分:0)
获取有效HTML标记列表(或任何您想要与之比较的内容),然后执行以下操作:
function IsValid(s) {
var tags = ['a', 'p', 'etc...'];
return tags.indexOf(s) != -1;
}
答案 2 :(得分:0)
您必须获取并使用自己的HTML标记数组来检查这一点 - 我个人会选择W3C spec而不是w3schools。
然后,你想在数组上使用indexOf并检查它是否不是-1,如下所示:
var isValid = function (tagCandidate) {
return (validHtmlTags.indexOf(tagCandidate) > -1);
};