2011-04-21 3 views
5

¿Cómo puedo obtener la lista de atributos de una cadena HTML usando Javascript? Aquí está mi código hasta ahora.Obtenga la lista de atributos de una cadena HTML usando Javascript

function traverse_test(){ 
    var root=document.getElementById('arbre0').childNodes; 
    for(var i=0;i<root.length;i++){ 
     var lis = root[i]; 
     if (lis =='[object HTMLUListElement]') { 
      for (var member in lis) { 
       if (typeof lis[member] == "string") { 
        var assertion = lis[member]; 
        var resultat = assertion.search(/..Bookmarks/); 
        if (resultat != -1) { 
         output.innerHTML+= lis[member]; 
         // Here I'd like to have the list of lis[member] attributes 
         for(var attr in lis[member].attributes) { 
          output.innerHTML+=lis[member].attributes[attr].name + "=\""+ lis[member].attributes[attr].value + "\""; 
         } 
         break; 
        } 
       } 
      } 
     } 
    } 
} 
+1

¿Se refiere a cualquier cadena arbitraria de HTML? como 'parseHTMLAndGetAttributes (" ");'? ¿O desea obtener atributos del DOM de una página ya analizada? Esto último es más fácil. –

+0

Desde el DOM, pero voy a probar tu primer método, ¡gracias! – Bruno

+2

@ Bruno: ese no es realmente un método que existe. @Joshua solo estaba usando eso como un caso de uso hipotético. –

Respuesta

12

utilizar la propiedad Node.attributes de un elemento DOM. Ejemplo:

var foo = document.getElementById('foo'), 
    attrs = foo.attributes, 
    i = attrs.length, 
    attr; 

while (i--) 
{ 
    attr = attrs[i]; 
    console.log(attr.name + '="' + attr.value + '"'); 
} 

Demostración: http://jsfiddle.net/mattball/j8AVq/

1

Si conoce los atributos para obtener el valor que puede hacer:

var MyValue = document.getElementById("myimage").getAttribute("src") 

En JavaScript para recorrer todos los atributos:

var el = document.getElementById("someId"); 
var arr = []; 
for (var i=0, attrs=el.attributes, l=attrs.length; i<l; i++){ 
    arr.push(attrs.item(i).nodeName); 
} 

El código anterior se tomó de this question

Jquery podría ser otra opción:

http://plugins.jquery.com/project/getAttributes

0
[].slice 
.apply(document.querySelector('something').attributes) 
.forEach(function(item){ 
    console.log(item, item.name, item.value); 
}); 
+1

Hola, bienvenido a StackOverflow! Siempre es bueno explicar las respuestas de tu código :) – ajacian81

0

Parece que todas estas respuestas apuntan a cómo obtener una lista de attr desde un nodo pero la pregunta pide attrs de una cadena HTML. Aquí está mi 2cents.

//turn your string into a node and get your html strings NamedNodeMap 
var temp = document.createElement("div"); 
    temp.innerHTML = "<div attr-1 attr-2 attr-3 attr-4></div>"; 
    temp = temp.firstElementChild.attributes; 

    //put the attributes in a an array 
    var list = Object.keys(temp).map(function(index) { return temp[ index ] }); 

    console.log(list); 
Cuestiones relacionadas