Avatar billede bbe1379 Nybegynder
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?
Avatar billede stigc Nybegynder
03. april 2001 - 20:38 #1
prøve med:

preObj.forms[\'checkForm\'].elements[\'dato_fra\']!=null

Jeg har dog ikke testet det :)
Avatar billede bbe1379 Nybegynder
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
Avatar billede stigc Nybegynder
03. april 2001 - 21:10 #3
du mangler document foran.


if (document.preObj.forms[\'checkForm\'].elements[\'dato_fra\'] ? true : false)
       
Avatar billede stigc Nybegynder
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>
Avatar billede bbe1379 Nybegynder
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
Avatar billede stigc Nybegynder
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?
Avatar billede stigc Nybegynder
03. april 2001 - 21:43 #7
jeg kunne jo ikke vide at preObj var af typen document.
Avatar billede johnnyk Nybegynder
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.
Avatar billede bbe1379 Nybegynder
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
Avatar billede emileej Nybegynder
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/
Avatar billede bbe1379 Nybegynder
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.
Avatar billede johnnyk Nybegynder
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 :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester