javascript - div - innerhtml jquery ejemplos
Probando el tipo de un elemento DOM en JavaScript (6)
¿Hay alguna forma de probar el tipo de elemento en JavaScript?
La respuesta puede requerir o no la biblioteca de prototipos, sin embargo, la siguiente configuración hace uso de la biblioteca.
function(event) {
var element = event.element();
// if the element is an anchor
...
// if the element is a td
...
}
Tengo otra forma de probar lo mismo.
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
}
Normalmente lo obtengo del valor de retorno toString (). Funciona en elementos DOM accedidos de manera diferente:
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]"
Luego la pieza relevante:
Object.prototype.toString.call(...).split('' '')[1].slice(0, -1);
Funciona en Chrome, FF, Opera, Edge, IE9 + (en IE antiguo devuelve "[objeto Object]").
Puede usar typeof(N)
para obtener el tipo de objeto real, pero lo que quiere hacer es verificar la etiqueta, no el tipo del elemento DOM.
En ese caso, use la propiedad elem.tagName
o elem.nodeName
.
si quieres ser realmente creativo, puedes usar un diccionario de nombres de etiquetas y cierres anónimos en lugar de un interruptor o si / else.
Quizás también deba verificar el tipo de nodo:
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
}
}
Editar: se corrigió el nodeType-value
roenving es correcto PERO necesita cambiar la prueba para:
if(element.nodeType == 1) { //code }
porque nodeType of 3 es en realidad un nodo de texto y nodeType de 1 es un elemento HTML. Ver http://www.w3schools.com/Dom/dom_nodetype.asp
if (element.nodeName == "A")
{
}
else if (element.nodeName == "TD")
{
}