JAVASCRIPT: IE: outerHTML - PullRequest
       13

JAVASCRIPT: IE: outerHTML

1 голос
/ 11 января 2010

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

если я скажу:

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;"

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

Ответы [ 2 ]

1 голос
/ 11 января 2010

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

IMO, безопаснее заменить элемент, чем изменить его externalHTML.

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

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

<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>
0 голосов
/ 11 января 2010

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

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

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

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

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

Или, если sub пусто, просто выполните:

sub.innerHTML = "Update Complete!";
...