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

如何确定字符串是否是有效的HTML标记?

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

var Str = 'strongg'; if( IsValid(Str) ) { // do something } 

谢谢。

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

HTML5引入了HTMLUnknownElement接口 ,该接口必须用于未由标准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") ); 

获取有效HTML标记列表(或任何您想要与之比较的内容)并简单地执行以下操作:

 function IsValid(s) { var tags = ['a', 'p', 'etc...']; return tags.indexOf(s) != -1; } 

您必须获取并使用自己的HTML标签数组来检查这一点 – 我个人会使用W3C规范而不是w3schools。

然后,你想在数组上使用indexOf并检查它是否不是-1,如下所示:

var isValid = function (tagCandidate) { return (validHtmlTags.indexOf(tagCandidate) > -1); };