2012-05-06 20 views
36

Estoy escribiendo una extensión de script de contenido de Chrome y necesito poder dirigirme a un elemento específico que, desafortunadamente, no tiene identificadores únicos, excepto su elemento principal.Obtiene el primer elemento secundario inmediato

Necesito apuntar al primer elemento secundario inmediato de parentElement. console.log(parentElement) informa ambos elementos/nodos hijos perfectamente, pero los registros de consola posteriores (los que se dirigen a los niñodos) siempre devuelven un valor undefined sin importar lo que haga.

Este es mi código hasta ahora
(I han excluido los nombres reales para evitar confusiones y, explicación adicional innecesaria)

function injectCode() { 

    var parentElement = document.getElementsByClassName("uniqueClassName"); 

    if (parentElement && parentElement.innerHTML != "") { 

     console.log(parentElement); 
     console.log(parentElement.firstElementChild); 
     console.log(parentElement.firstChild); 
     console.log(parentElement.childNodes); 
     console.log(parentElement.childNodes[0]); 
     console.log(parentElement.childNodes[1]); 

    } else { 

     setTimeout(injectCode, 250); 
    } 
} 

¿Cómo se selecciona el primer elemento hijo/nodo de parentElement?

enter image description here

Actualización:
parentElement.children[0] también tiene el mismo error que parentElement.childNodes[0].

+2

¿Quieres la primera nodo hijo o el primer hijo ** elemento ** (nodo)? –

+0

no dejes espacios entre parent div y child pero en una línea –

+0

childNodes [0] devuelve 'undefined' ¿verdad? Ver mi respuesta w ejemplo a continuación. –

Respuesta

83

Tanto éstos le dará el primer nodo hijo:

console.log(parentElement.firstChild); // or 
console.log(parentElement.childNodes[0]); 

Si necesita el primer hijo que es un nodo elemento a continuación, utilizar:

console.log(parentElement.children[0]); 

Editar

Ah, veo tu problema ahora; parentElement es una matriz.

Si sabe que sólo devolverá un resultado, que parece lo hace, se debe utilizar [0] a dearray (sí, hice esa palabra) del elemento:

var parentElement = document.getElementsByClassName("uniqueClassName")[0]; 
+0

Todo devuelve indefinido (como se puede ver en la imagen), y cuando se utiliza un '[0]' se activa todo el script. Acabo de probar '.children [0]' también, y eso tampoco funcionó. :/ – mythofechelon

+0

@BenHooper Actualizado mi respuesta desde que agregó la captura de pantalla, noté el problema real. – Paulpro

+0

¡Sí! ¡Eso funciono! Muchas gracias! : D – mythofechelon

Cuestiones relacionadas