验证字符串是否是有效的HTML标记名称

时间:2014-10-09 19:40:24

标签: jquery dom

如何判断字符串是否为有效的HTML标记?

例如:a,或h1,div或span,...是有效的HTML标记名。 但ar,或abc,或div2,...是invaild。

var Str = 'strongg';

if( IsValid(Str) ) {
// do something
}

感谢。

PS 我想,这不是一个愚蠢的问题,我在这里找到了一个很好的解决方案(见下文)。但我不知道为什么这个帖子有“-3”?想知道!

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); };