JavaScript. Подробное руководство, 6-е издание, стр. 208
Стандарт HTML5 предоставляет решение этой проблемы. В документах, соответствующих стандарту HTML5, все атрибуты, имена которых состоят только из символов в нижнем регистре и начинаются с приставки «data-», считаются допустимыми. Эти «атрибуты с данными» не оказывают влияния на представление элементов, в которых присутствуют, и обеспечивают стандартный способ включения дополнительных данных без нарушения стандартов.
Кроме того, стандарт HTML5 определяет в объекте
<b>Element</b><b>dataset</b><b>dataset.х</b><b>data-x</b><b>data-jquery-test</b><b>dataset.jqueryTest</b>Ниже приводится более конкретный пример. Допустим, что в документе имеется следующий фрагмент разметки:
<b><span class="sparkline" data-ymin="0" data-ymax="10"></b><b>1 1 1 2 2 3 4 5 5 4 3 5 6 7 7 4 2 1</b><b></span></b><b>Sparkline</b><b>// Предполагается, что в броузере поддерживается метод Array.map(),</b><b>// определяемый стандартом ES5 (или реализована его имитация) </b><b>var sparklines = document.getElementsByClassName("sparkline"); </b><b>for(var і = 0; і < sparklines.length; i++) { </b><b> var dataset = sparklines[і].dataset; </b><b> var ymin = parseFloat(dataset.ymin); </b><b> var ymax = parseFloat(dataset.ymax);</b><b> var data = sparklines[i].textContent.split(" ").map(parseFloat);</b><b> drawSparkline(sparklines[i], ymin, ymax, data); // Еще не реализована</b><b>}</b>На момент написания этих строк свойство
<b>dataset</b><b>var sparklines = document.getElementsByClassName("sparkline"); </b><b>for(var і = 0; і < sparklines.length; i++) { </b><b> var elt = sparklines[i];</b><b> var ymin = parseFloat(elt.getAttribute("data-ymin")); </b><b> var ymin = parseFloat(elt.getAttribute("data-ymax")); </b><b> var points = elt.getAttribute("data-points"); </b><b> var data = elt.textContent.split(" ').map(parseFloat); </b><b> drawSparkline(elt, ymin, ymax, data); // Еще не реализована</b><b>}</b>Обратите внимание, что свойство
<b>dataset</b><b>data-</b><b>dataset</b><b>data-</b>Функция
<b>drawSparkline()</b><b><canvas></b>15.4.4. Атрибуты как узлы типа Attr
Существует несколько способов работы с атрибутами элементов. Тип
<b>Node</b><b>attributes</b><b>Element</b><b>attributes</b><b>Element</b><b>NodeList</b><b>attributes</b><b>document.body.attributes[0] // Первый атрибут элемента <body></b><b>document.body.attributes.bgcolor // Атрибут bgcolor элемента <body> </b><b>document.body.attributes["ONLOAD"] // Атрибут onload элемента <body></b>Значениями, получаемыми в результате индексирования объекта
<b>attributes</b><b>Attr</b><b>Attr</b><b>Node</b><b>name</b><b>value</b><b>Attr</b>15.5. Содержимое элемента
Взгляните еще раз на рис. 15.1 и попробуйте ответить на вопрос: какой объект представляет «содержимое» элемента
<b><р>.</b>