Internet Explorer и динамические списки из JavaScript - PullRequest
0 голосов
/ 21 июня 2010

У меня есть страница, которая требует ввода данных пользователем, тогда она выполнит некоторые javascript и заполнит поля на странице. Частично это включает в себя вызов perl-скрипта, который будет запускаться и получать данные с другой страницы, чтобы проверить это на основе ввода от пользователя. Количество элементов, которые будет возвращать скрипт perl, может быть от нуля до десяти или даже больше. Чтобы справиться с этим, я написал несколько javascript для добавления каждого элемента в список на моей html-странице.

Проблема, с которой я сталкиваюсь, заключается в том, что она, кажется, прекрасно работает в Safari и Chrome, но, похоже, не хочет работать в Internet Explorer 6 или 7. Основная проблема заключается в том, что большинство людей, которые будут с помощью этого будет на Internet Explorer. У меня нет ошибок в моем коде JavaScript.

<div id='testDiv'><ul></ul></div>

тогда я просто заставил свой javascript заменить экземпляр </ul> в div на

<li>blah blah blah</li></ul>

и повторять это каждый раз, когда необходимо добавить элемент в список. Все остальное на странице работает нормально, и есть даже новая строка для отображения новых элементов списка. Однако там нет текста.

Есть ли что-то, что я делаю неправильно, или Internet Explorer неправильно отображает это?


РЕДАКТИРОВАТЬ: добавил запрашиваемую информацию.

var dateList = document.getElementById('testDiv').innerHTML;
var insertToList = "<li><div>blah blah blah</div></li></ul>";
dateList = dateList.replace('</ul>', insertToList);
document.getElementById('testDiv').innerHTML = dateList;

У меня есть это в цикле для циклического просмотра результатов и добавления результатов в список по мере необходимости. К сожалению, я не могу связать вас со страницей, так как это внутренний проект.

Ответы [ 2 ]

0 голосов
/ 28 июня 2010

В IE6 testDiv.innerHTML равно <UL></UL>. Обратите внимание на заглавные теги.

dateList.replace('</ul>', ...) не может найти ничего, что соответствует, поэтому он не выполняет замену.

Лучшим подходом было бы получить ссылку на элемент list (ul) и добавить туда HTML.

var ulRef = document.getElementById('testDiv').getElementsByTagName("ul")[0];
ulRef.innerHTML += "<li><div>blah blah blah</div></li>";
0 голосов
/ 23 июня 2010

В зависимости от того, что вы используете для механизма выбора, IE может отличаться. Я рекомендую использовать jQuery для выбора и замены контента, поскольку он обрабатывает различия браузера для вас.

...