2014-10-09 119 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

相關問題