Avatar billede nomak Nybegynder
21. juli 2003 - 17:20 Der er 10 kommentarer og
1 løsning

setTimeout med variabel igen..

setTimeout("ShowText(Text)", 100);

hvis jeg bruger det, siger den at Text er undifined?

den får Text fra en funktion:

function ShowText(Text) {
  if(noget...)
    ....noget mere;

  else
    setTimeout("ShowText(Text)", 100);
}

ehh...
Avatar billede nmh Nybegynder
21. juli 2003 - 17:28 #1
Du skalgive text en værdi, når du 1 gang starter ShowText
Dette lille program virker:
<html>
<script>
t="hej"

function Start(t)
{
  alert(t)
  setTimeout("Start(t)",1000)
}
</script>
<body>

<input type=button onClick="Start('Hej')">
</body>
</html>
Avatar billede grunken Nybegynder
21. juli 2003 - 17:35 #2
har du husket at lave en "var Text"

var Text

function ShowText(Text) {
  if(noget...)
    ....noget mere;

  else
    setTimeout("ShowText(Text)", 100);
}
function faatext(){
Text = "rødgrød med fløde";
}
Avatar billede erikjacobsen Ekspert
21. juli 2003 - 17:49 #3
Måske

    setTimeout("ShowText('"+Text+"')", 100);
Avatar billede roenving Novice
21. juli 2003 - 17:51 #4
Generelt kan man opsøge problemer, når man sætter parametre på funktioner som kaldes med setTimeout, så jeg forsøger altid selv at have parametre til rådighed som globale variable:

Som grunken er inde på:

<script osv ...>
var text="";

function showText(){
 
  if(


text='Ny text';setTimeout('showText()',100)

-- jeg er dog herinde blevet belært om, at man kan bruge følgende shortcut:

setTimeout('showText("'+text+'")',100)
Avatar billede nomak Nybegynder
21. juli 2003 - 19:15 #5
ahh, erikjakobsen havde det bedste svar :)
Avatar billede erikjacobsen Ekspert
21. juli 2003 - 19:59 #6
Nej, mit er et hack. Indeholder din Text-variabel en strof (') går det
jo galt. Det vil det ikke med en global variabel. Det var mere for at
du kunne se og forstå hvorfor.
Avatar billede roenving Novice
22. juli 2003 - 01:22 #7
-- og erik så er det sikkert grunden til de udsagn jeg har forholdt mig til ...

-- jeg er (heldigvis !-) så doven, at når Danny Goodman (Javascript Bible) siger det kan give fejl, så prøver jeg en anden løsning ...

-- Selv har jeg oplevet eet problem een gang -- du har garanteret ret i, at tekststrengen indeholdt en tekst-delimiter !-)
Avatar billede erikjacobsen Ekspert
22. juli 2003 - 10:35 #8
Men det du't fint til tal ;)
Avatar billede Slettet bruger
22. juli 2003 - 11:13 #9
Man kan dog også argumentere for og imod, om en global variabel ikke kan være lige så skadelig; specielt hvis vi taler større scripts, som skal bruges af andre personer med mindre JavaScript-erfaring end en selv.

Personligt holder jeg mig fra globale variabler, hvis det er muligt. :)
Avatar billede roenving Novice
22. juli 2003 - 23:37 #10
>>phoenixv

Hvorfor ?-)

-- jeg forstår godt argumentet med at lægge data flydende i ens kode, men findes der en effektiv metode til at bibeholde værdier bør den da bruges ...

-- og umiddelbart kom jeg til at tænke på den første 'succes' jeg havde med javascript (før jeg egentlig havde lært det !-), nemlig at overføre alle links-værdier til et parent-frameset, så de kunne findes efter en reload af framen -- en simpel men enormt effektiv udnyttelse af globale variable ...

-- klart nok er det i det miljø man arbejder med i en browser ikke hensigtsmæssigt at gå ud fra, at det er den samme verden som findes bare efter 3 sekunder, men det som sker indenfor en sides rammer kan man vel nogenlunde trygt fortsætte ...
Avatar billede Slettet bruger
23. juli 2003 - 11:52 #11
roenving>> Helt sikkert. Så længe man udelukkende selv skal bruge det, og har en god sans for overblik, kan det ikke skade! :)
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