2010-05-24 3 views
4

Этот код innerHTML не был надежно работает в IE8: (но работает в IE6 IE7 FF Opera Chrome Safari) (по не работает надежно, я имею в виду, я поместил этот код в OnMouseOver обработчиков на различных элементов, иногда было бы изменить текст при наведении курсора на данный элемент, а иногда это не так - не было никакой закономерности в этом - будет ли она работать или нет, казалось, совершенно случайно)innerHTML ошибка IE8

document.getElementById("mydiv").innerHTML="some text"; 

методы DOM (удаление и повторное добавление div с обновленным текстом) тоже не помогли.

Поэтому я добавил это сразу после того, как приведенный выше код и установил его:

document.styleSheets[0].addRule("#mydiv:after", "content: ' ';"); 

Используя условные комментарии я определил этот 2-й строки кода, как для IE8 только

Я уверен, это будет спасать людей много времени с тех пор, как я потратил столетия на это! Даже Jquery.text() не помогал!

Я читал в другом месте, что innerHTML обновит DOM, но может не обновить элементы экрана. Я считаю, что правило CSS работает, потому что оно динамически изменяет содержимое псевдо-класса #mydiv и, следовательно, требует обновления содержимого mydiv, тем самым обновляя экран (что-то внутреннее HTTML не удалось).

Однако, если у кого есть лучшее решение, которое я хотел бы услышать - спасибо

редактироваться ЗАПРОШЕННЫЙ

+2

Добро пожаловать на SO. Можете ли вы указать, что означает «не работает надежно» в этом контексте? Почему правило CSS исправляет все, что не работает? Сообщения об ошибках и исправления хорошо и хорошо, но им нужна определенная основа. –

+1

Уверены, что у вас не было дублированных идентификаторов или чего-то еще? Вы знаете, что 'getElementById (« mydiv »)' фактически возвращает правильный DOMElement? –

ответ

-1

Вы можете использовать InnerText вместо innerHTML

+1

'' 'innerText''' не поддерживает перекрестный браузер - http://www.quirksmode.org/dom/w3c_html.html. –

 Смежные вопросы

  • Нет связанных вопросов^_^