Estou usando o DynaTree (https://code.google.com/p/dynatree), mas estou tendo alguns problemas e espero que alguém possa ajudar ..
Estou exibindo a árvore na página como abaixo:
<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>
No entanto, estou tentando mudar o ícone em um item, não importa se ele está selecionado ou não apenas usando JavaScript .
o novo ícone que desejo usar é o base2.gif
Eu tentei usar o seguinte, mas não parece funcionar:
document.getElementById('item1').data = "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'";
alguém sabe o que posso estar fazendo de errado?
javascript
dom
dynatree
Aaron
fonte
fonte
data
- chave é um prefixo. Você deveria estar usandodata-you-attribute-name
Respostas:
Use o
setAttribute
método:Mas você realmente deveria usar dados seguidos de um travessão e com sua propriedade, como:
E para fazer isso em JS use a
dataset
propriedade:fonte
Use um conjunto de dados
então, no seu caso para definir dados:
fonte
Para as pessoas que vêm do Google, esta questão não é sobre atributos de dados - o OP adicionou um atributo não padrão ao seu objeto HTML e perguntou como configurá-lo.
No entanto, você não deve adicionar atributos personalizados a seus propriedades - você deve usar atributos de dados - por exemplo, OP deveria ter usado
data-icon
,data-url
,data-target
, etc.Em qualquer caso, verifica-se que a maneira como você define esses atributos via JavaScript é a mesma para os dois casos. Usar:
para alterar o atributo fornecido
attributeName
paravalue
para o elemento DOMele
.Por exemplo:
Observe que você também pode usar
.dataset
para definir os valores dos atributos de dados, mas como @racemic aponta, é 62% mais lento (pelo menos no Chrome no macOS no momento da escrita). Portanto, eu recomendaria usar osetAttribute
método.fonte