Тестирование типа элемента DOM в JavaScript
Есть ли способ проверить тип элемента в JavaScript?
Ответ может быть или не требовать библиотеки прототипов, однако следующая установка использует библиотеку.
function(event) {
var element = event.element();
// if the element is an anchor
...
// if the element is a td
...
}
Ответы
Ответ 1
Вы можете использовать typeof(N)
для получения фактического типа объекта, но то, что вы хотите сделать, это проверить тег, а не тип элемента DOM.
В этом случае используйте свойство elem.tagName
или elem.nodeName
.
если вы хотите получить действительно творческий подход, вместо этого вы можете использовать словарь тэгов и анонимных закрытий, если переключатель или if/else.
Ответ 2
if (element.nodeName == "A")
{
}
else if (element.nodeName == "TD")
{
}
Ответ 3
Возможно, вам придется также проверить тип нода:
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
}
}
Изменить: Исправлено значение nodeType
Ответ 4
roenving правильно, но вам нужно сменить тест на:
if(element.nodeType == 1) {
//code
}
потому что nodeType of 3 на самом деле представляет собой текст node, а nodeType 1 - это HTML-элемент. См. http://www.w3schools.com/Dom/dom_nodetype.asp
Ответ 5
У меня есть другой способ тестирования.
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
}
Ответ 6
Я обычно получаю его из возвращаемого значения 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, Opera, Edge, IE9 + (в более старом IE он возвращает "Объект объекта" ).