2014-10-09 84 views
-2

如何确定字符串是否为有效的HTML标记?验证字符串是否为有效的HTML标记名称

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

var Str = 'strongg'; 

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

谢谢。

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

+1

创建一个有效标签名称的数组,检查该数组对应的字符串 – tymeJV 2014-10-09 19:43:37

+0

您可以获取有效标签名称列表[here](http://www.w3schools.com/tags/default.asp)。为什么不将它们存储在'IsValid'的数组中,并将每个元素的“Str”进行比较? – 2014-10-09 19:43:46

+0

我知道这个解决方案。但是有没有更好的方法? – user3417601 2014-10-09 19:47:09

回答

0

得到有效的HTML标签的列表(或任何你想要的比较),只是这样做:

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

感谢您的回答。 – user3417601 2014-10-09 20:04:15

0

您将获得和使用自己的HTML标签的阵列来检查这一点 - 我会亲自去W3C spec而不是w3schools之一。

然后,你要使用的阵列上的indexOf和检查,如果它不是-1,这样的事情:

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

3

HTML5引入了必须用于不受定义的元素的HTMLUnknownElement interface标准的HTML规范。

使用document.createElement时,如果元素不是按规范定义的有效标记,则它将是HTMLUnknownElement类型的对象。由于使用.toString将返回[object type],您可以创建元素和测试该类型:

function isValid(input) { 
 
    return document.createElement(input).toString() != "[object HTMLUnknownElement]"; 
 
} 
 

 
alert(isValid("tr")); 
 
alert(isValid("a")); 
 
alert(isValid("trs")); 
 
alert(isValid("strong")); 
 
alert(isValid("strongg"));

然而,这不是很多旧的浏览器工作。

+0

感谢您的回答。我在我的项目中已经使用'createElement',因此它是我函数的一个直觉解决方案。 – user3417601 2014-10-09 20:26:58

+0

+1伟大的做法@尼斯。 – PeterKA 2014-10-09 21:11:17

相关问题