03. april 2001 - 20:10
Der er
10 kommentarer og 2 løsninger
check om objekt eksisterer
Jeg har brug for at lave en løkke, der tester om et objekt eksisterer. Jeg har lavet denn: function checkExist(){ if (preObj.forms[\'checkForm\'].elements[\'dato_fra\'] ? true : false) alert(\'findes\'); else alert(\'findes ikke\'); setTimeout(\'checkExist()\',2000); } ....men Netscape ka\' ik\' hitte ud af \'et Den virker fint i IE, og problemet med NN opstår først når den har lavet sin timeout Hvem har et bedre bud?
Annonceindlæg fra GlobalConnect
03. april 2001 - 20:38
#1
prøve med: preObj.forms[\'checkForm\'].elements[\'dato_fra\']!=null Jeg har dog ikke testet det :)
03. april 2001 - 20:46
#2
Problemet er ikke at \"se\" objektet, men at NN laver en fejl når den kalder samme funktion efter timeOut\'en Jeg ved ikke om NN har et problem med rekursive funktionskald...hmmm
03. april 2001 - 21:10
#3
du mangler document foran. if (document.preObj.forms[\'checkForm\'].elements[\'dato_fra\'] ? true : false)
03. april 2001 - 21:11
#4
følgende kører på min computer: <html> <body> <form name=\"form1\" action=post> </form> <script> function checkExist(){ if (document.form1.test!=null) alert(\"findes\"); else alert(\"findes ikke\"); setTimeout(\'checkExist();\',2000); } checkExist(); </script> </body> </html>
03. april 2001 - 21:26
#5
hmmm, har du nu også læst hvad der står? Jeg mangler ikke document. preObj består af document + de lag elementet ligger i. Dit script er jo ikke anderledes end mit, og det kører ikke i NN
03. april 2001 - 21:42
#6
mit kører fint i NN v. 4.6, her på min computer. Har du prøvet at kører mit test eksemple?
03. april 2001 - 21:43
#7
jeg kunne jo ikke vide at preObj var af typen document.
03. april 2001 - 22:27
#8
Skal funktionen køre hele tiden? Hvis ikke, så skal du lige sørge for at sætte nogle klammer omkring din else. Iøvrigt så kan jeg ikke lige se hvorfor du har et betinget udtryk i din if-sætning - den skulle da gerne selv sørge for at evaluere true hhv false. Ku\' måske være det, der får det til at kage i NN.
04. april 2001 - 20:40
#9
Nu har jeg lavet en lidt anderledes, men det virker stadig ikke: function dateLoadOne(){ if(preObj.forms[\'checkForm\'].elements[\'date_from\']){ alert(\'OK\');dateInit() } else{ dateLoadOne() } } dateLoadOne() 200 point i alt til den, der kan lave en funktion, der looper til den finder objektet. Den skal virke i NN, og der kan ikke bruges onLoad
04. april 2001 - 21:52
#10
Prøv denne (basseret på NN\'s JavaScript 1.5 referance):
function dateLoadOne(){
if(typeof(preObj.forms[\'checkForm\'].elements[\'date_form\'])!=\"undefined\"){
alert(\'OK\');
dateInit();
}else{
dateLoadOne();
}
}
E-)mil
http://www.fotx.net/emileej/
04. april 2001 - 22:21
#11
Den virkede ikke. Jeg fatter det simpelthen ikke og JEG HADER NETSACAPE!!! :-) Er de stive når de sidder og programmerer. Nu er det sgu\' ikke engang nok at følge deres egen retningslinier....lort, lort, lort. Jeg prøvede med setInterval, og det lader til at virke: function dateLoadOne(){ if (document.getElementById){divIs = document.getElementById(\'divMain\')} else if (document.all) {divIs = document.all[\'divMain\']} else if (document.layers && document.layers[\'divMain\']) {divIs = document.layers[\'divMain\']} if(divIs.document.forms[\'checkForm\'].elements[\'date_from\']){ alert(\'OK\'); clearInterval(intHandle) } else{ alert(\'NOT OK\'); } } intHandle = setInterval(\'dateLoadOne()\',2000) jeg lader spørgsmåket stå åbent (hvis jeg nu tager fejl), men jeg regner med at dele de 100 ud til dem, der prøvede.
04. april 2001 - 22:26
#12
Det er fedt at vide - når man sidder og sveder over netscape\'s forpulede DOM, at man ikke er den eneste :-)
Vi tilbyder markedets bedste kurser inden for webudvikling