Почему работает .html, а не innerHTML или appendChild - PullRequest
3 голосов
/ 04 декабря 2009

Я пытаюсь добавить ajax-ответ в div (это HTML-код с таблицами, формами и т. Д.).

В FF innerHTML работает отлично, но в IE выдает мне неизвестную ошибку.

Я перепробовал много вещей, но он заработал только тогда, когда я добавил jQuery и запустил метод .html в div, в который я хочу вставить код.

Кто-нибудь хочет объяснить, почему это работает, а не просто innerHTML? Я попытался посмотреть на код .html(), но, думаю, я не очень хорош в JS, потому что не понимал, что он делает.

Ответы [ 4 ]

9 голосов
/ 04 декабря 2009

IE имеет несколько задокументированных ( pre | таблица (thead, tbody, tr, tfoot) | div | выберите ) .innerHTML ошибок .

Таким образом, такие библиотеки, как jQuery , абстрагируют вас от этих ошибок, применяя обходные пути там, где это необходимо для IE.

Что касается вашей конкретной ошибки ... не видя код, трудно сказать.

Установка .innerHTML для pre, определенных div, select (если произойдет сбой, произойдет сбой без вывода сообщений), но установка .innerHTML для определенных элементов таблицы (в определенных версиях IE) будет фактически выдать ошибку / исключение.

Примечание : проблема с установкой .innerHTML элемента div очень специфична по условию и возникает только в IE6 и IE7.

0 голосов
/ 04 декабря 2009

У меня одна и та же проблема каждый день. Попробуйте использовать .innerText вместо .innerHTML, это решит вашу проблему. Ответ: JavaScript разбирается по-разному в IE и FF.

0 голосов
/ 04 декабря 2009

IE суетливо об изменении <table>s из JavaScript. Раньше у меня возникали проблемы, если я не укажу таблицу до последней детали, включая тег <tbody>.

0 голосов
/ 04 декабря 2009

Просто используйте jQuery и забудьте обо всех ужасных кросс-браузерных проблемах - вы не вернетесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...