J'utilise The DynaTree (https://code.google.com/p/dynatree) mais j'ai des problèmes et j'espère que quelqu'un pourra m'aider.
J'affiche l'arbre sur la page comme ci-dessous:
<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>
Cependant, j'essaye de changer l'icône sur un élément, qu'il soit sélectionné ou pas seulement en utilisant JavaScript .
la nouvelle icône que je souhaite utiliser est base2.gif
J'ai essayé d'utiliser ce qui suit mais cela ne semble pas fonctionner:
document.getElementById('item1').data = "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'";
quelqu'un sait ce que je pourrais faire de mal?
javascript
dom
dynatree
Aaron
la source
la source
data
- clé est un préfixe. Vous devriez utiliserdata-you-attribute-name
Réponses:
Utilisez la
setAttribute
méthode:Mais vous devriez vraiment utiliser des données suivies d'un tiret et de sa propriété, comme:
Et pour le faire dans JS, utilisez la
dataset
propriété:la source
Veuillez utiliser l'ensemble de données
donc dans votre cas pour la configuration des données:
la source
Pour les personnes venant de Google, cette question ne concerne pas les attributs de données - OP a ajouté un attribut non standard à leur objet HTML et s'est demandé comment le définir.
Cependant, vous ne devez pas ajouter des attributs personnalisés à vos propriétés - vous devez utiliser les attributs de données - par exemple , OP aurait dû utiliser
data-icon
,data-url
,data-target
, etc.Dans tous les cas, il s'avère que la façon dont vous définissez ces attributs via JavaScript est la même dans les deux cas. Utilisation:
pour changer l'attribut donné
attributeName
envalue
pour l'élément DOMele
.Par exemple:
Notez que vous pouvez également utiliser
.dataset
pour définir les valeurs des attributs de données, mais comme le souligne @racemic, il est 62% plus lent (au moins dans Chrome sur macOS au moment de la rédaction). Je recommanderais donc d'utiliser lasetAttribute
méthode à la place.la source