Avatar billede gurly Praktikant
14. oktober 2007 - 09:57 Der er 11 kommentarer og
2 løsninger

Få kald fra knap til at kalde skiftevis imellem to script

Jeg har en knap som kalder på en funktion.
og så har jeg to script som udføre hver sin funktion.
så vil jeg gerne have det sådan at når man aktivere knappen så kalder den skiftevis imellem de to script/funktioner.
altså første gang man klikker på knappen kalder man på funktion A
næste klik så kalder den på funktion B
tredie klik kalder så på funktion A igen  OSV
kan man lægge funktionerne fra de to script ind i et´ script, som så kalder funktionerne skiftevis eller hvordan gør man det ?
de to script kalder i øvrigt på den samme ID, bare med hver sin funktion.  de to script ser sådan ud >

<SCRIPT type="text/javascript"><!--
function kald1() {
    Dims = document.getElementById("tingen")
    if (Dims) {
    ///do the 'thing'
    Dims.Stop();
    } }
//-->
</SCRIPT>


<SCRIPT type="text/javascript"><!--
function kald2() {
    Dims = document.getElementById("tingen")
    if (Dims) {
    ///do the 'thing'
    Dims.Run();
    } }
//-->
</SCRIPT>
Avatar billede kalp Novice
14. oktober 2007 - 10:38 #1
du kan gøre det på tusinde måde.. nu tager jeg bare lige den hurtigste for mig.

var callFunctionA = true;
function SwitchFunction()
{
  if(callFunctionA)
  {
    callFunctionA = false;
    kald1();
  }else
  {
    callFunctionA = true;
    kald2();
  }
}


når du trykker på knappen skal du kalde "SwitchFunction();"
Avatar billede keysersoze Ekspert
14. oktober 2007 - 10:42 #2
runfunc = 1;
function kald()
{
    if (runfunc == 1)
    {
        Dims = document.getElementById("tingen");
        if (Dims)
        {
            ///do the 'thing'
            Dims.Stop();
            runfunc = 2;
        }
    }
    else
    {
        Dims = document.getElementById("tingen");
        if (Dims)
        {
            ///do the 'thing'
            Dims.Run();
            runfunc = 1;
        }
    }
}
Avatar billede keysersoze Ekspert
14. oktober 2007 - 10:42 #3
"langsom" er mit mellemnavn...
Avatar billede kalp Novice
14. oktober 2007 - 10:43 #4
<SCRIPT type="text/javascript"><!--
var running = false;
function SwitchFunction()
{
    Dims = document.getElementById("tingen")
    if (Dims) {
    ///do the 'thing'
    if(running)
{
    running = false;
    Dims.Stop();
}else
{
running = true;
Dims.Run();
}
    } }
//-->
</SCRIPT>


sådan i en function.... stil gerne paranteser pænere;o9
Avatar billede kalp Novice
14. oktober 2007 - 10:45 #5
sådan.. så er det læseligt.. bare hvis der skulle være en lille fejl som skal rettes:)

<SCRIPT type="text/javascript">
var running = false;
function SwitchFunction()
{
    Dims = document.getElementById("tingen")
    if (Dims)
    {
      if(running)
      {
        running = false;
        Dims.Stop();
      }
      else
        {
          running = true;
          Dims.Run();
        }
    }
}
</SCRIPT>
Avatar billede gurly Praktikant
14. oktober 2007 - 12:27 #6
kalp > Det virker kun "næsten"
problemet er at første gang man klikker på knappen så sker der intet,
først ved andet klik kører den dims.stop()
klikker man så en gang mere køre den så dims.run()  som den skal
og ved gentagende klik skifter den frem og tilbage som den skal.
men det aller første klik er altså virkningsløst  ?
Avatar billede gurly Praktikant
14. oktober 2007 - 12:44 #7
så har jeg afprøvet det script keysersoze lagde, det køre fint fra første klik på knappen, og skifter fint som det skal, men der får jeg så et andet problem, for hvis bruger har klikket så dims.stop() er blevet kørt, så kan man komme ud for at "noget andet" på siden starter dimsen op igen, og klikker man så på knappen så køre den jo dims.run() hvor man i virkeligheden havde brug for dims.stop()
jeg ved godt at scriptet gør presis hvad jeg bad om, men kan man gøre noget for at fikse det lille problem, eller kan kelp´s script komme til at virke, for det havde jo ikke det problem  c",)
Avatar billede kalp Novice
14. oktober 2007 - 13:08 #8
jeg har lavet 2 forskellige scripts.. det første indlæg og så det sidste.. ved ikke hvad du benytter.
Avatar billede kalp Novice
14. oktober 2007 - 13:08 #9
<SCRIPT type="text/javascript">
var running = false;
var firstRun = false;
function SwitchFunction()
{
    Dims = document.getElementById("tingen")
    if (Dims)
    {
      if(running)
      {
        running = false;
        Dims.Stop();
      }
      else
        {
          running = true;
          Dims.Run();
        }
    }
    if(!firstRun)
    {
      Dim.Run();
      firstRun = true;
    }
}
</SCRIPT>



et quick fix.
Avatar billede gurly Praktikant
14. oktober 2007 - 13:35 #10
det gjorde ikke nogen forskel syntes jeg
Avatar billede gurly Praktikant
14. oktober 2007 - 23:34 #11
jeg gav op over for at finde ud af hvorfor scriptet fra kalp først virkede efter to klik.

Jeg bruger i stedet scriptet fra
keysersoze 14/10-2007 10:42:14

problemet med at en anden ting på siden nogen gange får "dimsen" til at starte, og at scriptet derfor kom "ud af trit"  har jeg løst ved at den anden ting på siden som forårsager start den får jeg til at køre funktionen
runfunc = 1;
som så resætter scriptet
men så er jeg i tvivl om hvordan mit kald skal se ud
jeg kalder på den sammen med en stribe andre funktioner
eksempelvis  ScriptHej():runfunc = 1;ScriptDav():
og så er jeg i tvivl om det er den rette måde eller jeg skal pakke 1 tallet ind i paranteser ()  ?
altså runfunc = 1;  eller  runfunc = (1);
begge dele virker men hvad er korrekt ?


Smid i bare Svar begge to, takker for hjælpen  c",)
Avatar billede kalp Novice
15. oktober 2007 - 08:42 #12
hvis runfunc er en integer variabel så er det korrekt uden ()
Avatar billede keysersoze Ekspert
15. oktober 2007 - 18:02 #13
svar :)
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