Avatar billede lightbrain Nybegynder
23. juni 2002 - 13:02 Der er 5 kommentarer og
1 løsning

setTimeout( )

Hej

Nedenstående linie bruges til at skældne mellem et enkeltklik og et dobbeltklik, men funktion-kaldet i den, er unødvendig, for scriptet virker fint uden det. Så derfor er mit spørgsmål, hvordan omskrives nedenstående linie uden funktions-kaldet? (Jeg kunne ikke få det til at virke ved bare at slette det.)

forsinkelse = setTimeout( "virkeligEtKlik()", 50 );

_____________Måske relevant__________________________________

function checkPile (form, element) {

    if ( element.selectedIndex > -1 && element.selectedIndex < element.options.length ) {
   
    forsinkelse = setTimeout( "virkeligEtKlik()", 50 );

        if (element.name == "artikel") {
            form.ikkePlaceret.selectedIndex = -1;

            if (element.selectedIndex == 0 )
                form.Op.disabled = true;
            else
                form.Op.disabled = false;
       
            if (element.selectedIndex == element.options.length - 1 )
                form.Ned.disabled = true;
            else
                form.Ned.disabled = false;
        }
   
        if (element.name == "ikkePlaceret") {
            form.Op.disabled = true;
            form.Ned.disabled = true;
            form.artikel.selectedIndex = -1;
        }
    }
}

function virkeligEtKlik() {
    //alert( "enkelklik" ); // til test
}; //end virkeligEtKlik()
.
.
.

<select name="artikel" style="width: 100px" onDblClick="flyt(this.form, this);" onClick="self.checkPile(this.form, this);" size=5>       
</select>
Avatar billede Slettet bruger
23. juni 2002 - 13:14 #1
Din flyt()-funktion bør vel indeholde en clearTimeout af en slags...
Kan vi få et link til hele siden?
Avatar billede lightbrain Nybegynder
23. juni 2002 - 13:18 #2
Undskyld, der glemte jeg lige flyt-funktionen:

function flyt(form,element) {

    if ( element.selectedIndex > -1 && element.selectedIndex < element.options.length ) {

        clearTimeout( forsinkelse );
   
        //Opdaterer den enkelte flytning af artiklen
        if (element.name == "ikkePlaceret") {
            for (var i = 1;i < gruppe[1].length; i++)  {         
                if (gruppe[1][i].artikelnr == document.Arranger.ikkePlaceret.value) {
                    gruppe[1][i].emnenr = document.Arranger.emne.value;               
                    gruppe[1][i].niveau = document.Arranger.artikel.length + 1;
                    gruppe[1][i].aendret = "ja";
                }
            }
        }

        else if (element.name == "artikel") {
            for (var i = 1;i < gruppe[1].length; i++)  {         
                if (gruppe[1][i].artikelnr == document.Arranger.artikel.value) {
                    gruppe[1][i].emnenr = 0;
                    gruppe[1][i].niveau = 0;
                    gruppe[1][i].aendret = "ja";               
                }
            }   
        }
       
        sel1 = (element.name == "artikel") ? form.artikel : form.ikkePlaceret;
        sel2 = (element.name == "artikel") ? form.ikkePlaceret : form.artikel;
        ind = sel1.selectedIndex;
        sel2.options.length += 1;
        sel2.options[sel2.options.length - 1].text = sel1.options[ind].text;
        sel2.options[sel2.options.length - 1].value = sel1.options[ind].value;
        sel1.options[ind] = null;
       
        ArrangerResten ();
        LaasAlle("Arranger");
    }
}
Avatar billede Slettet bruger
23. juni 2002 - 13:37 #3
Det hele ser lidt rodet ud. Som jeg ser det, bør det timeouten ikke kalde virkeligEtKlik(), men snarere checkPile()...
Hvad er det, du vil med scriptet?
Avatar billede lightbrain Nybegynder
23. juni 2002 - 13:46 #4
Det skal bruges til at skældne mellem et enkeltklik (kør = onClick="self.checkPile(this.form, this);") og et dobbeltklik (kør = onDblClick="flyt(this.form, this);").

Og det gøres ved, at man i den tid, der er sat af "forsinkelse = setTimeout( "virkeligEtKlik()", 50 );" kan nå at lave et dobbeltklik. Det var oprindelig Jacoba, som kom med svaret:

http://www.eksperten.dk/spm/226082

Men har jeg programmeret videre, så nu skal jeg ikke bruge funktions-kaldet i "forsinkelse = setTimeout( "virkeligEtKlik()", 50 );" mere, men kan jeg kan ikke bare slette det.

Derfor er funktionen bare tom:

function virkeligEtKlik() {
    //alert( "enkelklik" ); // til test
}; //end virkeligEtKlik()
Avatar billede Slettet bruger
23. juni 2002 - 13:55 #5
OK, så var det som jeg havde forventet!
Men så er der rodet lidt rundt imellem funktionerne.

Først og fremmest skal du bare slette funktionen virkeligEtKlik().
Derefter skal du slette linjen:

forsinkelse = setTimeout( "virkeligEtKlik()", 50 );

... i funktionen checkPile().

Derimod skal din select se sådan her ud:

<select name="artikel" style="width: 100px" onDblClick="flyt(this.form, this);" onClick="forsinkelse = setTimeout('self.checkPile(document.minForm, document.minForm.artikel);', 50);" size=5>
</select>

Husk at udskifte "minForm" med det rigtige formnavn!
Avatar billede lightbrain Nybegynder
29. juni 2002 - 11:44 #6
Det virker - mange tak for hjælpen :-)
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