ЯВАСКРИПТ:ИЕ:внешнийHTML
-
19-09-2019 - |
Вопрос
Проблема, с которой я столкнулся при использовании 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>
Другие советы
Чего пытается достичь ваш код?В обоих случаях вы делаете:
- создать новый
p
элемент - добавить
p
элемент дляsub
(который, как я полагаю, тоже является элементом) - установить
outerHTML
принадлежащийp
элемент в какой-то текст.
С таким же успехом вы могли бы сделать:
- создайте новый textNode с нужными текстовыми данными
добавить это к
sub
дочерние узлы:sub.appendChild(document.createTextNode("Update Complete!"));
Или если sub
в любом случае пусто, просто выполните:
sub.innerHTML = "Update Complete!";