Вопрос

Проблема, с которой я столкнулся при использовании externalHTML при использовании браузера IE

Если я говорю:

txt="Update Complete!";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;

Это работает нормально:

Но если я скажу

txt="1 Error:<ul><li>Some Error</li></ul>";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;

Выдает мне ошибку:

Message: Unknown runtime error
Line: 389
Char: 4
Code: 0
URI: http://10.1.1.16/schedule_calendar/js/validate.js

Строка: 389 относится к «msg.outerHTML = txt;»

Может ли кто-нибудь помочь мне с этим?заранее спасибо

Это было полезно?

Решение

По некоторым причинам, которые я не знаю, в большинстве случаев изменение внешнего HTML не допускается.Я предполагаю, что это потому, что когда вы изменяете внешний HTML-код элемента, вы фактически заменяете текущий элемент.

ИМО, безопаснее заменить элемент, чем изменять его внешний HTML.

В вашем случае, возможно, этого будет достаточно:

ОБНОВЛЕНИЯ ЗДЕСЬ:

<html>
<head><title>Test</title></head>
<body>
<div>
    some content...
    <div id="sub"></div>
</div>
<script type="text/javascript">
window.onload = function(){
    var sub = document.getElementById('sub');
    var txt="<p>Update Complete!</p>";
    sub.innerHTML = txt;

    alert('test 1');

    txt="1 Error:<ul><li>Some Error</li></ul>";
    sub.innerHTML = txt;
}
</script>
</body>
</html>

Другие советы

Чего пытается достичь ваш код?В обоих случаях вы делаете:

  1. создать новый p элемент
  2. добавить p элемент для sub (который, как я полагаю, тоже является элементом)
  3. установить outerHTML принадлежащий p элемент в какой-то текст.

С таким же успехом вы могли бы сделать:

  1. создайте новый textNode с нужными текстовыми данными
  2. добавить это к subдочерние узлы:

    sub.appendChild(document.createTextNode("Update Complete!"));

Или если sub в любом случае пусто, просто выполните:

sub.innerHTML = "Update Complete!";
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top