Newsgroup: it.comp.lang.javascript
Titolo: comporre dinamicamente nomi di campi di input

Salve
Il mio problema e' il seguente
Ho due pulsanti che chiamano una stessa funzione e ciascuno gli passa una
stringa relativa a un differente iframe chiamati corpo_it , corpo_en.
I due pulsanti gli passano "_it" o "_en"  le funzioni devono applicare le
modifiche all'iframe
corpo+ilMioParametroPassato.innerHtml
il problema e' che non so come attaccare dinamicamente al nome del campo
chiamando la funzione.
Ho fatto diverse prove con due campi textarea in modo che mi
e allego il codice non funzionante...
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function  assegna(lin){
 var nomeCampo="campo"+lin;
 alert(document.frm.[nomeCampo].value);
}
</script>
</head>
<body>
<form action="" method="post" name="frm" id="frm">
  <p>Campo_it
    <textarea name="campo_it" id="campo_it">Questo testo italiano</textarea>
</p>
  <p>campo_en
    <textarea name="campo_en" id="campo_en"></textarea>
    <input type="button" name="Submit" value="cambia"
onClick="assegna('_it')">
</p>
</form>
</body>
</html>

 un iframe e` un oggetto window
Sni.
L'iframe "contiene" un oggetto window, dipendentemente dal tipo di accesso
che fai, ti viene restituito un tipo di elemento piuttosto che un altro.
Con il codice che hai scritto tu ad esempio, chiedi di gestire l'oggetto
window contenuto nell'iframe.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
L'ingegnere non vive, funziona.

 Non e`, come il frame, un oggetto window esso stesso?
No.
Fai questa prova preferibilmente con un browser Gecko (che quando stampi un
oggetto ti dice effettivamente il prototipo da cui deriva):
alert("window access:"+window.frames["precog"]+"\r\n"+
	"element access:"+document.getElementById("precog")+"\r\n"+
	"same object? "+
(window.frames["precog"]==document.getElementById("precog")) );
ovviamente con un iframe del tipo:
<iframe id="precog" name="precog"></iframe>
Dando per assunto che un oggetto iframe *e'* un oggetto window (invece che
considerare che un oggetto iframe *contiene* un oggetto window), un errore
che fanno molti e': referenzio l'oggetto in qualche modo, e poi ci lavoro
come se fosse una window. Ma non essendo la stessa cosa, vengono risultati
strani. Prova ad esempio a fare questo:
var myiframe=document.getElementById("precog");
alert(myiframe.document.documentElement.innerHTML);
Uno si aspetterebbe di vedere l'html della pagina contenuta nell'iframe.
Vedrai da solo invece che tipo di risultato ottieni. Non va in errore, e
questo e' un altro elemento che puo' fuorviare.
Ovviamente hai modo tramite l'oggetto iframe di raggiungere l'oggetto
window in esso contenuto usando il riferimento all'elemento. Puoi
considerare, infatti, la notazione window.frames[] come una sorta di
"scorciatoia".
alert("window access:"+window.frames["precog"]+"\r\n"+
	"window access by
element:"+document.getElementById("precog").contentWindow+"\r\n"+
	"same object? "+
(window.frames["precog"]==document.getElementById("precog").contentWindow)
);
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 window.frames['myiframe'].window.document... , right?
Beh, dipende essenzialmente da cosa vuoi farci. Non me la sento di dire
cosa e' generalmente meglio o meno. Anche se l'ottica che potremmo definire
"corretta" sarebbe quella di referenziare l'iframe tramite id, almeno
secondo il W3C che vorrebbe meno attributi "name" possibili.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)