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

¿Fue útil?

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:

  1. crear un nuevo elemento p
  2. anexar el elemento p a sub (que supongo es un elemento en sí, así)
  3. establece la outerHTML del elemento p a algún texto.

Se podría muy bien haber hecho:

  1. crear una nueva textNode con los datos de texto deseados
  2. 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!";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top