Avatar billede soerenlyn Nybegynder
31. oktober 2007 - 20:11 Der er 6 kommentarer og
1 løsning

Overføre variable i anonym funktion

Hej Eksperter.

Er at et udsnit af en funktion jeg har:

function Help(id){
  alert(id);
}

function appendEvent(a,b,c){
  if(a.attachEvent){a.attachEvent("on"+b,c)}
  else if(a.addEventListener){a.addEventListener(b,c,false)}
  else{a["on"+b]=c}
}

function Add(){
  var obj=......;
  var tit=15;
  appendEvent(obj,"mouseover",function(){Help(tit)});
}

Problemet er når Help() bliver kørt, så alerter den en tom string. Det skyldnes nok at variablen tit er lokal, og når Help så kaldes så er det glemt.

Men hvordan løser jeg dette?

Venlig Hilsen
Søren Lyn
Avatar billede erikjacobsen Ekspert
31. oktober 2007 - 21:30 #1
"tit" og "id" - mener du de skal være samme variabel? Så må du kalde dem det sammen, og skrive

  var tit;

udenfor dine funktioner, og undlade en "var"-erklæring i funktionerne.
Avatar billede erikjacobsen Ekspert
31. oktober 2007 - 21:31 #2
Ok, det er endnu tidligt på aftenen, så det blev lidt vrøvlet. Prøv

var tit;
function Add(){
  var obj=......;
  tit=15;
  appendEvent(obj,"mouseover",function(){Help(tit)});
}
Avatar billede soerenlyn Nybegynder
31. oktober 2007 - 22:52 #3
Mit problem er at uden om min appendEvent er der en for-løkke (som jeg undlod her). Denne løkke laver en masse forskellige værdier af 'tit', som så skal knyttes til hver sit elements onmouseover ... Så det hjælper ikke at gøre den global ..
Avatar billede soerenlyn Nybegynder
01. november 2007 - 12:21 #4
Jeg har løst det selv nu :)
Avatar billede w13 Novice
01. november 2007 - 12:52 #5
Hvordan løste du det, Søren Lyn?
Avatar billede soerenlyn Nybegynder
01. november 2007 - 12:57 #6
Det skal jeg fortælle dig w13 !

I stedet for at buge den anonyme funktion function(){Help(tit)} hvor tit ikke bliver indsat rigtig, så brugte jeg new Function('',"Help("+tit+")")

Sådan skal det gøres :)
Avatar billede w13 Novice
01. november 2007 - 12:57 #7
Uhada! :)
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