验证字符串是否为有效的HTML标记名称
如何确定字符串是否为有效的HTML标记?验证字符串是否为有效的HTML标记名称
例如:a,或h1,div或span,...是有效的HTML标记名。 但是ar,或abc或div2,...都是invaild。
var Str = 'strongg';
if(IsValid(Str)) {
// do something
}
谢谢。
PS 我想,这不是一个愚蠢的问题,我在这里找到了一个很好的解决方案(见下文)。但我不知道为什么这个线程有“-3”?想知道!
得到有效的HTML标签的列表(或任何你想要的比较),只是这样做:
function IsValid(s) {
var tags = ['a', 'p', 'etc...'];
return tags.indexOf(s) != -1;
}
感谢您的回答。 – user3417601 2014-10-09 20:04:15
您将获得和使用自己的HTML标签的阵列来检查这一点 - 我会亲自去W3C spec而不是w3schools之一。
然后,你要使用的阵列上的indexOf和检查,如果它不是-1,这样的事情:
var isValid = function (tagCandidate) { return (validHtmlTags.indexOf(tagCandidate) > -1); };
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"));
然而,这不是很多旧的浏览器工作。
感谢您的回答。我在我的项目中已经使用'createElement',因此它是我函数的一个直觉解决方案。 – user3417601 2014-10-09 20:26:58
+1伟大的做法@尼斯。 – PeterKA 2014-10-09 21:11:17
创建一个有效标签名称的数组,检查该数组对应的字符串 – tymeJV 2014-10-09 19:43:37
您可以获取有效标签名称列表[here](http://www.w3schools.com/tags/default.asp)。为什么不将它们存储在'IsValid'的数组中,并将每个元素的“Str”进行比较? – 2014-10-09 19:43:46
我知道这个解决方案。但是有没有更好的方法? – user3417601 2014-10-09 19:47:09