Я намагаюся знайти спосіб, який додасть / оновить атрибут за допомогою 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']
.
Однак якщо ви використовуєте атрибути, це WILL працює:e.attributes['class']
Підводячи підсумок, подумайте про атрибути як буквальні та об'єктно-орієнтовані.
У буквальному сенсі ви просто хочете, щоб він виплюнув x = 'y', а не думав про це. Це те, для чого призначені атрибути, setAttribute, createAttribute (за винятком стилю IE). Але оскільки це справді об’єкти, речі можуть заплутатися.
Оскільки у вас виникнуть проблеми з правильним створенням елемента DOM замість jQuery innerHTML slop, я ставлюся до нього як до одного і дотримуйтесь e.className = 'fooClass' і e.id = 'fooID'. Це вподобання дизайну, але в цьому випадку намагатися ставитися до цього, як ні до чого, крім предмета, працює проти вас.
Він ніколи не буде спрацьовувати з вами, як інші методи, просто пам’ятайте про те, що клас є className, а стиль є об’єктом, тому це style.width не style = "width: 50px". Також пам’ятайте tagName, але це вже встановлено createElement, тому вам не потрібно буде турбуватися про це.
Це було довше, ніж я хотів, але маніпуляція CSS в JS - справа хитра.
id
, а не з чимось іншим на кшталтdata-toggle
Обов’язкове рішення jQuery . Знаходить і встановлює title
атрибут foo
. Зверніть увагу, що це вибирає один елемент, оскільки я це роблю за id, але ви можете легко встановити той самий атрибут для колекції, змінивши селектор.
$('#element').attr( 'title', 'foo' );
Що ви хочете зробити з атрибутом? Це атрибут html чи щось своє?
Більшу частину часу ви можете просто адресувати його як властивість: хочете встановити заголовок для елемента? element.title = "foo"
зробимо це.
Для власних спеціальних атрибутів JS DOM, природно, розширюється (він же розширюється = true), найпростіший підсумок якого - це ви можете зробити, element.myCustomFlag = foo
а згодом прочитати без проблем.