09. februar 2004 - 13:01
Der er
21 kommentarer og 1 løsning
Referere til element i Iframe via JavaScript
Hvordan bærer man sig ad med at refere til et element inde i en Iframe i en funktion (JavaScript), når man skal gå via en DIV i original-dokumentet? Skal benytte SPAN'ens InnerHTML, der skal overføres til et andet SPAN's InnerHTML. Original-dokument: (hoved.asp) <FORM NAME="formAll"> <DIV ID="d1"> <IFRAME ID="fTrans"> </IFRAME> </DIV> <SPAN TYPE="text" ID="s2"> ... hertil skal indholdet overføres .... </SPAN> </FORM> Iframe-dokument: (trans.asp) <FORM NAME="formTrans"> <SPAN TYPE="text" ID="sTrans"> ... indhold, der skal overføres ... </SPAN> </FORM>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
09. februar 2004 - 13:33
#1
var objFrame = document.getElementById( "fTrans" ); // dette er din iframe var objSpan = objFrame.document.getElementById( "sTrans" ); // dette er dit span element /nute
09. februar 2004 - 14:38
#2
hmm, virker ikke Får følgende fejl: Objektet understøtter ikke denne egenskab eller metode allerede ved den første linje :-(
09. februar 2004 - 14:48
#3
ups ... undskyld ... prøv dette: var objFrame = document.frames["fTrans"]; // din iframe var objSpan = objFrame.document.getElementById("sTrans"); //dit span /nute
09. februar 2004 - 15:01
#4
øhh, nu er det sidste linje, jeg får samme fejlmelding på :)
09. februar 2004 - 15:05
#5
det fungere fint for mig. hvilken fejl får du ?
09. februar 2004 - 15:11
#6
Fejl: Objektet understøtter ikke denne egenskab eller metode hmmm, mystisk ... hvis jeg skriver: var objSpan = objFrame.document.all("sTrans"); returneres 'undefined'
09. februar 2004 - 15:14
#7
hvilken browser bruger du ?
09. februar 2004 - 15:18
#8
IE 6
09. februar 2004 - 15:28
#9
jeg kører IE6 også ... dette fungerer fint for mig: var objFrame = document.frames["fTrans"]; // din iframe var objSpan = objFrame.document.getElementById("sTrans"); //dit span det fungerer ikke i Mozilla, men ved at lægge ind en simple browsercheck, så kan det fungere: var objApp = navigator.appName; var objFrame = null; var objSpan = null; if( objApp.indexOf( "Netscape" ) > -1 ) { objFrame = document.getElementById( "fTrans" ); objSpan = objFrame.contentDocument.getElementById("sTrans"); } else if( objApp.indexOf( "Microsoft" ) > -1 ) { objFrame = document.frames["fTrans"] objSpan = objFrame.document.getElementById("sTrans"); } alert( objSpan.innerHTML ); /nute
10. februar 2004 - 09:33
#10
Det virker desværre ikke for mig .-(
10. februar 2004 - 09:53
#11
hvis det ikke er altfor meget kode ... kan du poste hele HTML'en for både hoved.asp og trans.asp ? (altså den HTML du kopierer fra "vis kode" i din browser) /nute
10. februar 2004 - 11:11
#12
trans.asp fylder ganske vist kun 77 linjer, men hoved.asp fylder 3258 linjers kode ... desuden benyttes et javaScript-dokument på 1632 linjers kode til bl.a. at overføre opl. fra et sted i hoveddok. til et andet sted i samme. Det er nok lige i overkanten at poste :-p Arbejder på en formular med så mange input-felter, at det overskrider grænsen for, hvormeget der kan overføres til en frame med post-metoden.
10. februar 2004 - 11:24
#13
HTML'en til trans.asp ser således ud, hvis den kopieres fra "vis kilde": <HTML> <BODY> <FORM NAME="formTrans" METODE="post" ACTION="hoved.asp" TARGET="tekst"> <SPAN TYPE="text" ID="sTrans" NAME="sTrans"> <TABLE ALIGN="left" COLS="2"> <COLGROUP ALIGN="left" CLASS="en"> <TR> <TD><STRONG>Valgt transportør:</STRONG></TD> <TD>Organisationsnavn</TD> </TR> <TR><TD> </TD> <TD>Vejnavn nummer</TD> </TR> <TR><TD> </TD> <TD>4000 Roskilde</TD> </TR> <TR><TD> </TD> <TD>Tlf.nr.: 00000000</TD> </TR> <TR><TD> </TD> <TD>Kontaktperson: Fornavn Efternavn</TD> </TR> </TABLE> <BR CLEAR="all"> </SPAN> </FORM> </BODY> </HTML> men det er jeg bange for, ikke viser ret meget, idet oplysningerne er udtræk fra database via asp, - har en fornemmelse af, at det er der, problemet ligger begravet....
10. februar 2004 - 11:31
#14
jeg forstår ikke hvorfor du har problemer ... jeg har laveet følgende 2 filer: *********** index.html *********** <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Untitled</title> <script language="JavaScript" type="text/javascript"> <!-- function test() { var objApp = navigator.appName; var objFrame = null; var objSpan = null; // Mozilla if( objApp.indexOf( "Netscape" ) > -1 ) { objFrame = document.getElementById( "fTrans" ); objSpan = objFrame.contentDocument.getElementById("sTrans"); } else if( objApp.indexOf( "Microsoft" ) > -1 ) { objFrame = document.frames["fTrans"] objSpan = objFrame.document.getElementById("sTrans"); } document.getElementById( 's2' ).innerHTML = objSpan.innerHTML; } //--> </script> </head> <body> <FORM NAME="formAll"> <DIV ID="d1"> <IFRAME name="fTrans" ID="fTrans" src="test.html"> </IFRAME> </DIV> <SPAN TYPE="text" ID="s2"> </SPAN> <input type="button" onclick="test();" value="Overfør fra frame"> </FORM> </body> </html> ********* test.html (som er kopi af din kode) ********* <HTML> <BODY> <FORM NAME="formTrans" METODE="post" ACTION="hoved.asp" TARGET="tekst"> <SPAN TYPE="text" ID="sTrans" NAME="sTrans"> <TABLE ALIGN="left" COLS="2"> <COLGROUP ALIGN="left" CLASS="en"> <TR> <TD><STRONG>Valgt transportør:</STRONG></TD> <TD>Organisationsnavn</TD> </TR> <TR><TD> </TD> <TD>Vejnavn nummer</TD> </TR> <TR><TD> </TD> <TD>4000 Roskilde</TD> </TR> <TR><TD> </TD> <TD>Tlf.nr.: 00000000</TD> </TR> <TR><TD> </TD> <TD>Kontaktperson: Fornavn Efternavn</TD> </TR> </TABLE> <BR CLEAR="all"> </SPAN> </FORM> </BODY> </HTML> hvis du kører dette, så vil du se at det fungerer. /nute
10. februar 2004 - 11:41
#15
funktionen til overførsel af SPAN-indholdet ser p.t. således ud: (nænsomt forkortet !-) function overforTrans(myDiv, mySpan) { var startPlac, slutPlac, indhold, objIframe, objSpan; startPlac = document.all(myDiv); objIframe = document.frames["fTrans"]; objSpan = objIframe.document.getElementById("sTrans"); slutPlac = document.all(mySpan); indhold = ""; indhold += objSpan.innerHTML; slutPlac.innerHTML = indhold; } det er ved denne linje: objSpan = objIframe.document.getElementById("sTrans"); der kommer fejlmedding.
10. februar 2004 - 11:46
#16
hvordan kalder du 'overforTrans' ... hvad er dine parametre ? /nute
10. februar 2004 - 12:38
#17
<button OnClick="overforTrans('d1', 's2');">OK</button> indeni d1 optræder et kontrolelement, der benyttes til at kontrollere, at der er blevet udvalgt en transportør, - denne del er fjernet fra overforTrans, da den ikke har relevans for problemstillingen.
10. februar 2004 - 13:12
#18
sorry ... jeg fatter det ikke ... det fungerer fint for mig, også når jeg bruger din 'overforTrans' metode. Fejlen er nødt til at ligge et andet sted ... du har ikke et link til siden, så det er muligt at se det hele ?
10. februar 2004 - 13:37
#19
oss mig - altså sorry :-p Desværre ligger det ikke ude på nettet endnu .... kun på min maskinen Hmm, måske er det IIS, der skaber problemet??
10. februar 2004 - 13:53
#20
du har endnu ikke svaret mig på om mit eksempel fungerer. har du testet det jeg postet @ 10/02-2004 11:31:26 ?? /nute
11. februar 2004 - 10:49
#21
Bare rolig, - har ikke glemt dig :-p ... skulle bare lige ha' tid til at fejlsøge. Nu er det endelig lykkedes, - resultatet ser således ud: Original-dokument: (hoved.asp) <FORM NAME="formAll"> <DIV ID="d1"> ..... <IFRAME ID="fTrans"> </IFRAME> <TEXTAREA ID="holdID" NAME="textTrans">Ingen</TEXTAREA></TD> <button OnClick="overforTrans('d1', 's2');">OK</button> </DIV> <SPAN TYPE="text" ID="s2"> ... hertil skal indholdet overføres .... </SPAN> </FORM> Script-dokument: function overforTrans(myDiv, mySpan) { var startPlac, slutPlac, indhold; startPlac = document.all(myDiv); var objFrame = null; var objSpan = null; objFrame = document.frames["fTrans"]; slutPlac = document.all(mySpan); indhold = ""; if (startPlac.all("holdID".innerText != "Ingen") { objSpan = objFrame.document.getElementById("sTrans"); document.getElementById( 's2' ).innerHTML = objSpan.innerHTML; } else { indhold += "<TABLE<TR>"; indhold += "<TD>Ingen transportør valgt</TD>"; indhold += "</TR></TABLE>"; slutPlac.innerHTML = indhold; } } Har ikke heeeelt forstået, hvorfor jeg ikke kunne få det til at virke tidligere, men det gør det altså nu :) Tak for kampen, - du har virkeligt fortjent dine point, så hvis du vil sende et 'svar' ....
11. februar 2004 - 17:25
#22
det var da godt at høre !! kunne hellere ikke helt forstå hvorfor det ikke ville spille, meeeen .. .jeg har jo hellere ikke hele din kode, så det var litd svært :o] *svar* /nute
Vi tilbyder markedets bedste kurser inden for webudvikling