Я пытаюсь найти способ добавления / обновления атрибута с помощью JavaScript. Я знаю, что могу сделать это с помощью setAttribute()
функции, но в IE это не работает.
javascript
html
cross-browser
dev.e.loper
источник
источник
document.getElementById("nav").setAttribute("class", "active");
он работает в консоли Chrome JS, но на фактической странице не работает .. есть идеи? Кстати, на самой странице я включаю.js
файл до конца областиbody
видимости.То, что кажется простым, на самом деле сложно, если вы хотите быть полностью совместимыми.
Допустим, вам нужно добавить идентификатор div1.
Все они будут работать, за исключением последнего в IE 5.5 (который на данный момент является древней историей, но по-прежнему используется XP по умолчанию без обновлений).Но, конечно, есть непредвиденные обстоятельства. Не будет работать в IE до 8:
e.attributes['style']
не будет ошибки, но фактически не будет устанавливать класс, это должно быть className :e['class']
.Однако, если вы используете атрибуты, это БУДЕТ работать:
e.attributes['class']
Таким образом, считайте атрибуты буквальными и объектно-ориентированными.
Буквально, вы просто хотите, чтобы он выплюнул x = 'y' и не думал об этом. Для этого предназначены атрибуты setAttribute, createAttribute (кроме исключения стиля IE). Но поскольку это действительно объекты, можно запутаться.
Поскольку у вас возникнут проблемы с правильным созданием элемента DOM вместо jQuery innerHTML slop, я бы относился к нему как к одному и придерживался e.className = 'fooClass' и e.id = 'fooID'. Это предпочтение дизайна, но в данном случае попытка рассматривать это как нечто иное, чем объект, работает против вас.
Это никогда не вызовет неприятных последствий, как другие методы, просто помните, что class является className, а style - объектом, поэтому style.width не style = "width: 50px". Также запомните tagName, но это уже установлено createElement, поэтому вам не о чем беспокоиться.
Это длилось дольше, чем я хотел, но манипуляции с CSS в JS - дело непростое.
источник
id
, а не с чем-то еще вродеdata-toggle
Обязательное решение jQuery . Находит и устанавливает для
title
атрибута значениеfoo
. Обратите внимание, что это выбирает один элемент, поскольку я делаю это по идентификатору, но вы можете легко установить тот же атрибут в коллекции, изменив селектор.источник
Что вы хотите сделать с атрибутом? Это атрибут html или что-то свое?
В большинстве случаев вы можете просто обращаться к нему как к свойству: хотите установить заголовок для элемента?
element.title = "foo"
сделаю это.Для ваших собственных пользовательских атрибутов JS модель DOM естественно расширяема (также известна как expando = true), простой результат заключается в том, что вы можете делать
element.myCustomFlag = foo
и впоследствии читать ее без проблем.источник