Javascript: IE: outerHTML
-
19-09-2019 - |
Pregunta
problema que encuentro con outerHTML usando IE Browser
si digo:
txt="Update Complete!";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;
funciona bien:
Pero si digo
txt="1 Error:<ul><li>Some Error</li></ul>";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;
Me da un error de:
Message: Unknown runtime error
Line: 389
Char: 4
Code: 0
URI: http://10.1.1.16/schedule_calendar/js/validate.js
Línea: 389 se refiere a "msg.outerHTML = txt;"
¿Puede alguien ayudarme con este .. Gracias de antemano
Solución
Para algunas razones que no conozco, en la mayoría de los casos de modificación outerHTML no está permitido. Supongo que, esto es porque cuando se está modificando la outerHTML de un elemento va a sustituir en realidad el elemento actual.
OMI, que es más seguro para reemplazar un elemento de modificar su outerHTML.
En su caso, tal vez esto será suficiente:
las actualizaciones en:
<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>
Otros consejos
¿Cuál es su código tratando de lograr? En ambos casos lo hace:
- crear un nuevo elemento
p
- anexar el elemento
p
asub
(que supongo es un elemento en sí, así) - establece la
outerHTML
del elementop
a algún texto.
Se podría muy bien haber hecho:
- crear una nueva textNode con los datos de texto deseados
-
anexe a que childNodes de
sub
:sub.appendChild(document.createTextNode("Update Complete!"));
O, si está vacía sub
todos modos, sólo tiene que hacer:
sub.innerHTML = "Update Complete!";