Я пытаюсь использовать селектора атрибутов и CSS для форматирования элементов.Селекторы атрибутов, JavaScript и IE8
HTML, выглядит следующим образом:
<div id="user" highlight="false">User Name</div>
CSS-это:
[highlight=true]
{
background-color: red;
}
[highlight=false]
{
background-color: white;
}
И затем есть некоторые сопровождающие JavaScript:
if(foo)
{
node.setAttribute('highlight', true);
}
else
{
node.setAttribute('highlight', false);
}
Это работает в Firefox и Chrome. Когда атрибут выделения изменяется с помощью JavaScript, цвет фона элемента изменяется соответствующим образом. Однако в IE8 это совсем другая история. Элемент будет отображаться правильно в соответствии с значением выделения, которое первоначально было назначено в HTML, но при динамическом изменении атрибута отображение элемента не изменяется.
Это известная причуда, и есть ли известная работа?
Обновление Я просто изменил имя атрибута на «frob» со значениями «on» и «off». Это должно решить любую проблему с зарезервированными или интерпретируемыми значениями.
Другие примечания. Когда я включаю инструменты разработчика IE8 и использую инспектор HTML, он покажет стиль [frob = on] или [frob = off], как это применимо для любого значения frob, когда я начал инспектор документов. Однако атрибут frob больше не будет изменяться в представлении инспектора. Ни в коем случае значения в [frob = on/off] css никогда не применяются после первоначального рендеринга HTML.
Обновление: проблема решена Решение состоит в том, чтобы заставить перерисовать. Существуют различные способы сделать это, но, похоже, стандартным является переназначение имени класса самому себе.
Изменение JavaScript для использования строковые формы не делают трюк. Спасибо хоть. –
Хорошо. Можете ли вы по-прежнему попробовать что-то отличное от истинного или ложного, просто чтобы убедиться, что в нем нет парсинга? Работает ли он с известным допустимым атрибутом типа 'rel'? –