Estoy usando The DynaTree (https://code.google.com/p/dynatree) pero estoy teniendo algunos problemas y espero que alguien pueda ayudar.
Estoy mostrando el árbol en la página como se muestra 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, estoy tratando de cambiar el ícono de un elemento sin importar si está seleccionado o no solo usando JavaScript .
el nuevo icono que quiero usar es base2.gif
He intentado usar lo siguiente, pero parece que no funciona:
document.getElementById('item1').data = "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'";
¿Alguien sabe lo que podría estar haciendo mal?
javascript
dom
dynatree
Aaron
fuente
fuente
data
es un prefijo. Usted debe estar utilizandodata-you-attribute-name
Respuestas:
Usa el
setAttribute
método:Pero realmente debería usar datos seguidos de un guión y con su propiedad, como:
Y para hacerlo en JS usa la
dataset
propiedad:fuente
Utilice el conjunto de datos
así que en su caso para configurar datos:
fuente
Para las personas que vienen de Google, esta pregunta no se trata de atributos de datos: OP agregó un atributo no estándar a su objeto HTML y se preguntó cómo configurarlo.
Sin embargo, no debe agregar atributos personalizados a sus propiedades; debe usar atributos de datos - por ejemplo, OP debería haber utilizado
data-icon
,data-url
,data-target
, etc.En cualquier caso, resulta que la forma de configurar estos atributos a través de JavaScript es la misma para ambos casos. Utilizar:
para cambiar el atributo dado
attributeName
avalue
para el elemento DOMele
.Por ejemplo:
Tenga en cuenta que también puede usar
.dataset
para establecer los valores de los atributos de datos, pero como señala @racemic, es un 62% más lento (al menos en Chrome en macOS en el momento de escribir este artículo). Así que recomendaría usar elsetAttribute
método en su lugar.fuente