Я пытаюсь найти способ добавления / обновления атрибута с помощью JavaScript. Я знаю, что могу сделать это с помощью setAttribute()
функции, но в IE это не работает.
Я пытаюсь найти способ добавления / обновления атрибута с помощью JavaScript. Я знаю, что могу сделать это с помощью setAttribute()
функции, но в IE это не работает.
Ответы:
Вы можете прочитать здесь о поведении атрибутов во многих различных браузерах, включая IE.
element.setAttribute()
должен работать даже в IE. Вы пробовали? Если не сработает, возможно,
element.attributeName = 'value'
сработает.
document.getElementById("nav").setAttribute("class", "active");
он работает в консоли Chrome JS, но на фактической странице не работает .. есть идеи? Кстати, на самой странице я включаю .js
файл до конца области body
видимости.
То, что кажется простым, на самом деле сложно, если вы хотите быть полностью совместимыми.
var e = document.createElement('div');
Допустим, вам нужно добавить идентификатор div1.
e['id'] = 'div1';
e.id = 'div1';
e.attributes['id'] = 'div1';
e.createAttribute('id','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
. Обратите внимание, что это выбирает один элемент, поскольку я делаю это по идентификатору, но вы можете легко установить тот же атрибут в коллекции, изменив селектор.
$('#element').attr( 'title', 'foo' );
Что вы хотите сделать с атрибутом? Это атрибут html или что-то свое?
В большинстве случаев вы можете просто обращаться к нему как к свойству: хотите установить заголовок для элемента? element.title = "foo"
сделаю это.
Для ваших собственных пользовательских атрибутов JS модель DOM естественно расширяема (также известна как expando = true), простой результат заключается в том, что вы можете делать element.myCustomFlag = foo
и впоследствии читать ее без проблем.