JavaScript: IE: outerHTML
-
19-09-2019 - |
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
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:
- creare un nuovo elemento
p
- accoda l'elemento
p
asub
(che presumo è un elemento stesso così) - impostare il
outerHTML
dell'elementop
ad un testo.
Si potrebbe altrettanto bene avete fatto:
- creare un nuovo TextNode con i dati di testo desiderati
-
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!";