Я пытаюсь понять поведение тегов стиля при использовании с innerHTML.Стиль innerHTML
Я сделал 3 эксперимента:
стиль с существующим правилом, innerHTML вставляет другое правило Selector
Результат: оба правила. Демонстрация: http://jsfiddle.net/Tcy3B/
Style с существующим правилом, innerHTML вставляет то же самое правило Selector
Результат: новое правило игнорируется. Демонстрация: http://jsfiddle.net/Tcy3B/1/
Пустой стиль, innerHTML вставляет правило, другой innerHTML вставляет еще одно правило
Результат: второе правило перезаписывает первый. Демонстрация: http://jsfiddle.net/Tcy3B/2/
Может ли кто-нибудь объяснить логику? Это выглядит совершенно случайным для меня, иногда второе правило добавляется к первому, иногда оно игнорируется, а иногда оно перезаписывает первый.
Фон: идея заключается в создании динамических пользовательских интерфейсов, которые полагаются на CSS, а не на JavaScript, как показано на рисунке full text search example.
В качестве примера, вот код второго демо:
HTML:
<style type="text/css">
.red {color:red;}
</style>
<div class="red">red</div>
<div class="blue">blue</div>
JavaScript:
var st=document.getElementsByTagName("style")[0];
st.innerHTML=".red {color:blue;}";
Хороший вопрос. Я задавался вопросом о том же. –
@ Асад тоже, моя ошибка тоже :-(Это просто поведение jsfiddle, если я даю стилю идентификатор, тогда все работает так, как ожидалось, с innerHTML, переписывающим предыдущие правила. Голосование, чтобы закрыть вопрос. – Christophe
@ Christophe Да, это правда.Вероятно, вы должны опубликовать это как ответ, поскольку он объясняет, что происходит. –