Обратите внимание на псевдокод и форматирование, я не могу запомнить код с головы.Internet Explorer 10 - (Javascript или jQuery) Как изменить атрибуты и свойства, не зная, какой тип (динамические изменения)?
В IE9 и ниже я знаю, что вы можете устанавливать свойства и атрибуты с помощью метода setAttribute(), но это, похоже, было изменено в IE10 разделяющими атрибутами и свойствами отдельно.
Даже делать что-то вроде
element.setAttribute("className", "myClass");
устанавливает элемент выступать в качестве
<tag className = "myClass" />
, который даже не установить свойство.
В моем коде у меня есть список JSON, который я использую для хранения имен и значений атрибутов/свойств, которые я просто устанавливаю с помощью setAttribute();
createElement(tag, list)
{
//pseudocode
var element = createElementWithTag(tag);
for each(attr in attributes)
if (attributes.hasOwnKey(attr))
element.setAttribute(attr, attributes[attr]);
}
И это отлично работает для IE7-9, но полностью не работает в IE10.
Есть ли способ установить свойство и атрибут без какого типа (attr или prop)?
Я даже не могу придумать способ динамического задания свойства, без hardcoding - случай, для которого свойство, которое я хочу изменить.
Решение, вероятно, также будет полезно.
Это сработало, спасибо кучу! Я бы поднял голову, если бы у меня была достаточно репутации ... Я немного опасаюсь попыток блокировки, потому что они замедляют работу, и хотя это, вероятно, не очень важно на небольшой веб-странице, я решил сделать это: if (tag [prop! == "undefined") tag [prop] = attribs [prop] else tag.setAttribute [prop, attribs [prop]); Не уверен, что это лучшая реализация, хотя ... – MaskedTwilight
Также вы можете объяснить, почему вы использовали tag.setAttribute (alias [prop] || prop, attribs [prop]) вместо просто tag.setAttribute [prop, attribs [prop]) ;? – MaskedTwilight
@MaskedTwilight: ваш оператор if всегда будет правдой, снимите кавычки вокруг неопределенного. единственное, что нужно попробовать - это установить свойство, которое очень быстро и может позволить себе замедлиться без какого-либо воздействия. если вы используете его строго, вы можете уйти с его удалением. попытка состоит в том, чтобы исключить исключения из таких странных тегов, как вставка и при установке определенных свойств в IE, которые не нравятся. псевдоним необходим для перевода «className» в «класс» для вызова setAttribute. он гомогенизирует между именами имен и именами свойств. – dandavis