Ich verwende The DynaTree (https://code.google.com/p/dynatree), habe aber einige Probleme und hoffe, dass jemand helfen kann.
Ich zeige den Baum auf der Seite wie folgt an:
<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>
Ich versuche jedoch, das Symbol eines Elements zu ändern, unabhängig davon, ob es ausgewählt ist oder nicht nur JavaScript verwendet .
Das neue Symbol, das ich verwenden möchte, ist base2.gif
Ich habe Folgendes versucht, aber es scheint nicht zu funktionieren:
document.getElementById('item1').data = "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'";
Weiß jemand, was ich falsch machen könnte?
javascript
dom
dynatree
Aaron
quelle
quelle
data
ist ein Präfix. Sie sollten verwendendata-you-attribute-name
Antworten:
Verwenden Sie die
setAttribute
Methode:Aber Sie sollten wirklich Daten verwenden, denen ein Bindestrich und seine Eigenschaft folgen, wie:
Und um dies in JS zu tun, verwenden Sie die
dataset
Eigenschaft:quelle
Bitte verwenden Sie den Datensatz
Also in Ihrem Fall zum Einstellen von Daten:
quelle
Bei Google-Nutzern geht es bei dieser Frage nicht um Datenattribute. OP hat seinem HTML-Objekt ein nicht standardmäßiges Attribut hinzugefügt und sich gefragt, wie es festgelegt werden soll.
Sie sollten jedoch nicht benutzerdefinierte Attribute hinzufügen , um Ihre Eigenschaften - Sie sollten verwenden Datenattribute - zB OP verwendet haben sollte
data-icon
,data-url
,data-target
etc.In jedem Fall stellt sich heraus, dass die Art und Weise, wie Sie diese Attribute über JavaScript festlegen, in beiden Fällen gleich ist. Verwenden:
das gegebene Attribut zu ändern ,
attributeName
umvalue
für das DOM - Elementele
.Beispielsweise:
Beachten Sie, dass Sie auch
.dataset
die Werte von Datenattributen festlegen können. Wie @racemic jedoch hervorhebt, ist diese um 62% langsamer (zumindest in Chrome unter macOS zum Zeitpunkt des Schreibens). Daher würde ich empfehlen, stattdessen diesetAttribute
Methode zu verwenden.quelle