Установить атрибут данных с помощью JavaScript

Я использую DynaTree (https://code.google.com/p/dynatree), но у меня возникли некоторые проблемы, и я надеюсь, что кто-то может помочь ..

Я отображаю дерево на странице, как показано ниже:

<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>

Однако я пытаюсь изменить значок элемента независимо от того, выбран он или нет, используя толькоJavaScript.

новая иконка, которую я хочу использовать - base2.gif

Я пытался использовать следующее, но оно не работает:

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

Кто-нибудь знает, что я могу делать не так?

 MilkyWayJoe02 июл. 2012 г., 02:28
ключевое словоdata это префикс Вы должны использоватьdata-you-attribute-name
 0x499602D208 авг. 2012 г., 23:57
@ Аарон Ты должен выбрать лучший ответ.

Ответы на вопрос(2)

ИспользоватьsetAttribute метод:

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

Но вы действительно должны использовать данные с чертой и их свойством, например:

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

И чтобы сделать это в JS используйтеdataset имущество:

document.getElementById('item1').dataset.icon = "base.gif";
 Aaron02 июл. 2012 г., 05:37
все еще не может заставить его работать, используя document.getElementById («item1»). setAttribute («data» »,« icon: »base2.gif», url: «output.htm», target: & apos; target: & apos; ; AccessPage ", выход:" 1 ";);
 28 сент. 2013 г., 17:27
IE & lt; = 8 не поддерживает setAttribute
 02 июл. 2012 г., 05:41
Что именно вы делаете в своем коде, что заставляет вас понимать, что он не работает?
 Aaron02 июл. 2012 г., 05:46
Я добавил код и добавил предупреждение в конце (поэтому оно будет запущено, когда код будет готов), и я также вижу, что значок не меняется. (когда я удаляю код, вижу мой дисплей alart, так что я знаю, что что-то не так с кодом, который я только что добавил.)
 02 июл. 2012 г., 02:46
Свойство набора данных может быть полезно, если рассматриваются только браузеры, совместимые с HTML5, но это короткий список, и для широкой сети требуется более широкая поддержка. Я придерживаюсь использованияsetAttribute теперь.

Пожалуйста, используйте набор данных

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

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

Итак, в вашем случае для настройки данных:

getElementById('item1').dataset.icon = "base2.gif";
 17 февр. 2017 г., 11:16
jsperf.com/html5-dataset-vs-native-setattribute Этот предложенный метод намного медленнее
 17 июн. 2016 г., 02:36
Также (при необходимости) используйте camelCase для ссылки на имена в дефисах (строки в скобках не работают).

Ваш ответ на вопрос