有沒有方法在JavaScript中測試元素的類型?在JavaScript中測試DOM元素的類型
答案可能會也可能不需要原型庫,但是下面的設置確實會利用庫。
function(event) {
var element = event.element();
// if the element is an anchor
...
// if the element is a td
...
}
有沒有方法在JavaScript中測試元素的類型?在JavaScript中測試DOM元素的類型
答案可能會也可能不需要原型庫,但是下面的設置確實會利用庫。
function(event) {
var element = event.element();
// if the element is an anchor
...
// if the element is a td
...
}
您可以使用typeof(N)
獲得實際的對象類型,但你想要做的就是檢查標記,而不是DOM元素的類型。
在這種情況下,請使用elem.tagName
或elem.nodeName
屬性。
如果您想獲得真正的創造性,可以使用標記名和匿名關閉字典,而不是使用開關或if/else。
if (element.nodeName == "A")
{
}
else if (element.nodeName == "TD")
{
}
也許你得檢查NODETYPE太:
if(element.nodeType == 1){//element of type html-object/tag
if(element.tagName=="a"){
//this is an a-element
}
if(element.tagName=="div"){
//this is a div-element
}
}
編輯:更正了節點類型值
roenving是正確的,但你需要測試更改爲:
if(element.nodeType == 1) { //code }
,因爲3的節點類型實際上是文本節點,1的節點類型是HTML元素。見http://www.w3schools.com/Dom/dom_nodetype.asp
Element.prototype.typeof = "element";
var element = document.body; // any dom element
if (element && element.typeof == "element"){
return true;
// this is a dom element
}
else{
return false;
// this isn't a dom element
}
我通常是從的toString()的返回值得到它。它工作在不同的方式訪問DOM元素:
var a = document.querySelector('a');
var img = document.createElement('img');
document.body.innerHTML += '<div id="newthing"></div>';
var div = document.getElementById('newthing');
Object.prototype.toString.call(a); // "[object HTMLAnchorElement]"
Object.prototype.toString.call(img); // "[object HTMLImageElement]"
Object.prototype.toString.call(div); // "[object HTMLDivElement]"
那麼相關片:
Object.prototype.toString.call(...).split(' ')[1].slice(0, -1);
它工作在Chrome,FF,歌劇,邊緣,IE9 +(在舊的IE它返回「的翻譯: 「)。
+1原因使用**大寫**不是一個選項! ;) – 2010-06-04 11:20:41
有時候是這樣。無論如何,你總是可以使用`element.nodeName.match(/ \ bTBODY \ b/i)`或`element.nodeName.toLowerCase()=='tbody'`等 – Robusto 2012-09-27 16:05:38