2012-07-02 8 views
49

estoy usando el DynaTree (https://code.google.com/p/dynatree) pero estoy teniendo algunos problemas con la esperanza de que alguien pueda ayudar ..los datos del conjunto de atributos utilizando JavaScript

estoy mostrando el árbol en la página, como a continuación:

<div id="tree"> 
     <ul> 
      <li class="folder">Outputs 
       <ul> 
        <li id="item1" data="icon: 'base.gif', url: 'page1.htm', target: 'AccessPage'">Item 1 Title 
        <li id="item2" data="icon: 'base.gif', url: 'page2.htm', target: 'AccessPage'">Item 2 Title 
        <li id="item3" data="icon: 'base.gif', url: 'page3.htm', target: 'AccessPage'">Item 3 Title 
        <li id="item4" data="icon: 'base.gif', url: 'page4.htm', target: 'AccessPage'">Item 4 Title 
       </ul> 
     </ul> 
    </div> 

sin embargo, yo estoy tratando de cambiar el icono de una partida sin importar si se ha seleccionado o no sólo el uso de JavaScript .

el nuevo icono que desea utilizar está base2.gif

He intentado usar el siguiente pero no parece funcionar:

document.getElementById('item1').data = "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'"; 

Alguien sabe lo que podría estar haciendo mal?

+2

la palabra clave 'data' es un prefijo. Deberías usar 'data-you-attribute-name' – MilkyWayJoe

+4

@ Aaron Debes elegir la mejor respuesta. – 0x499602D2

Respuesta

115

Utilice la setAttribute método:

document.getElementById('item1').setAttribute('data', "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'"); 

Pero que realmente debería estar utilizando datos siguió con un guión y con su propiedad, como:

<li ... data-icon="base.gif" ...> 

y hacerlo en JS utilizar el dataset propiedad:

document.getElementById('item1').dataset.icon = "base.gif"; 
+8

La propiedad del conjunto de datos puede ser útil si solo se consideran los navegadores compatibles con HTML5, pero esa es una lista breve y se necesita un soporte más amplio para la web general. Me limitaría a usar * setAttribute * por ahora. – RobG

+0

todavía no puede hacer que funcione utilizando document.getElementById ('item1'). SetAttribute ('data', "icon: 'base2.gif', url: 'output.htm', destino: 'AccessPage', salida : '1' "); – Aaron

+0

¿Qué estás haciendo exactamente en tu código que te hace darte cuenta de que no está funcionando? – 0x499602D2

29

Utilice el conjunto de datos

var article = document.querySelector('#electriccars'), 
    data = article.dataset; 

// data.columns -> "3" 
// data.indexnumber -> "12314" 
// data.parent -> "cars" 

por lo que en su caso para establecer datos:

getElementById('item1').dataset.icon = "base2.gif"; 
+1

también (cuando sea apropiado), el uso camelCase para referirse a los nombres con guión (las cadenas entre corchetes fallan). – jtheletter

+2

https://jsperf.com/html5-dataset-vs-native-setattribute Este método sugerido es mucho más lento – lxm7

Cuestiones relacionadas