Newsgroup: it.comp.lang.javascript
Titolo: inserire HTML arbitrario in una DIV tramite DHTML

Ciao a tutti!
Ho una <DIV> con il suo attributo "NAME" e "ID". Vorrei una funzione
generica che inserisca nella DIV il codice HTML presente in una textarea.
Una volta era facile ma ora, con Gecko che fa il pignolo, non riesco più...
Come posso, quindi, inserire HTML in un oggetto selezionato tramite
getElementById, senza usare innerHTML ?
Grazie.
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribù Digitale Blackmambo: 
www.blackmambo.it
)

 getElementById, senza usare innerHTML ?
innerHTML è supportato da tutti i browser Gecko se non ricordo male
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 innerHTML è supportato da tutti i browser Gecko se non ricordo male
Sì, ma la documentazione lascia intendere che lo supporta giusto per
"rendere felice" lo sviluppatore... cmq me lo tengo così, per ora.
D'altra parte però ho dei problemi con un assegnamento del tipo:
document.getElementById(div_id).innerHTML=html;
dove "div_id" è la stringa che denota l'id di un tag DIV e "html" una
stringa contenente del semplice codice.
Su Firefox non ho problemi ma con IE ho un non meglio identificato "errore
di runtime".
Qualche idea? Ho risolto con uno script che riconosce IE ed esegue codice
specifico per IE (con una eval()) e non mi piace per nulla.
Grazie!


 Qualche idea? 
Provare a cambiare il nome della variabile da html a qualsiasi altro nome?
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

getElementById, senza usare innerHTML ?
Con una serie di  document.createElement e [object].appendChild per
ogni tag/oggetto del tuo HTML.
Ad esempio:
mydiv=document.getElementById("mydiv");
var myimginsidemydiv=document.createElement("img");
myimginsidemydiv.src="immagineallinternodelladiv.jpg";
mydiv.appendChild(myimginsidemydiv);
'bye

 ogni tag/oggetto del tuo HTML.
Avevo visto questo tipo di soluzione ma mi pare un po' complesso per html
"arbitrario" passato come parametro alla procedura.
Comunque grazie!
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribů Digitale Blackmambo: 
www.blackmambo.it
)

 nome?
Rinominata in "sourcehtml" o "blah", non cambia nulla :-(
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribů Digitale Blackmambo: 
www.blackmambo.it
)

 Rinominata in "sourcehtml" o "blah", non cambia nulla :-(
Qual è il "semplice codice" che stai scrivendo nel div?
innerHTML non mi ha mai dato problemi, magari però se ci metto dentro una
pagina completa segnala errore DOM ? Boh
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 Qual č il "semplice codice" che stai scrivendo nel div?
document.getElementById(div_id).innerHTML="ciao <b>Alex</b>"
Mi sembra abbastanza "semplice" no? :-D
Certo, se gli incollassi del codice contenente Javascript, Form e magari un
tag HEAD avrebbe qualche motivo in piů per darmi errore.
Ad ogni modo, per ora ho codificato un "workaround" poco elegante ma
funzionante:
var ie4 = document.all;
if (ie4)
 {
  eval(div_id + ".innerHTML='" + sourcehtml + "';");
 }
else
 {
  document.getElementById(div_id).innerHTML=sourcehtml;
 }
Grazie!


   document.getElementById(div_id).innerHTML=sourcehtml;
Domanda forse stupida: cosě come hai scritto div_id č una var...č una
variabile, vero? Non č che il div ha id='div_id' ? (altrimenti devi
metterlo tra virgolette).
Posta per favore un esempio completo non funzionante cosě lo testo.


 Posta per favore un esempio completo non funzionante cosě lo testo.
Ci sono! Nel preparare l'esempio ho scoperto l'inganno...
Nella pagina si trova un campo di una form il cui NAME corrisponde all'ID
della DIV. Non dovrebbe fare differenza dal momento che GetElementById e
GetElementByName sono funzioni diverse, tuttavia IE va in crisi.
Alex.
=============================
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<script language="JavaScript">
function setNodeHTML(div_id, sourcehtml)
{
var ie4 = document.all;
//if (ie4)
if (false)
 {
  eval(div_id + ".innerHTML='" + sourcehtml + "';");
 }
else
 {
  document.getElementById(div_id).innerHTML=sourcehtml;
 }
}
function popola()
{
 setNodeHTML("nome_campo",document.nome_modulo.nome_campo.value);
}
</script>
<form name="nome_modulo">
<input type="text" name="nome_campo" value="valore_campo" />
</form>
<p><div id="nome_campo">&nbsp;</div></p>
<p><button onclick="popola();">popola()</button></p>
</body>
</html>
=============================


 GetElementByName sono funzioni diverse, tuttavia IE va in crisi.
Simpatica questa. Forse Zer0 era incappato in un pacco simile una
volta...Strano perché, se non ricordo male, anche in presenza di più id
uguali IE ti restituisce il primo senza problemi.
