Domanda

problema che ho incontrato con outerHTML utilizzando IE Browser

Se io dico:

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

Funziona bene:

Ma se io dico

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

mi dà un errore di:

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

Linea: 389 si riferisce a "msg.outerHTML = txt;"

Qualcuno mi può aiutare con questo .. Grazie in anticipo

È stato utile?

Soluzione

Per alcune ragioni che non conosco, nella maggior parte dei casi la modifica outerHTML non è permesso. Sto indovinando che, questo è perché quando si sta modificando l'outerHTML di un elemento in realtà si sta sostituendo l'elemento corrente.

IMO, più sicuro per sostituire un elemento che modificare la sua outerHTML.

Nel tuo caso, forse questo sarà sufficiente:

QUI

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

Altri suggerimenti

Qual è il codice cercando di raggiungere? In entrambi i casi si fa:

  1. creare un nuovo elemento p
  2. accoda l'elemento p a sub (che presumo è un elemento stesso così)
  3. impostare il outerHTML dell'elemento p ad un testo.

Si potrebbe altrettanto bene avete fatto:

  1. creare un nuovo TextNode con i dati di testo desiderati
  2. accodare che a childNodes di sub:

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

In alternativa, se sub è vuoto in ogni caso, fare semplicemente:

sub.innerHTML = "Update Complete!";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top