Avatar billede hoppe11 Nybegynder
12. maj 2009 - 10:54 Der er 21 kommentarer og
1 løsning

eval string

når jeg tilføjer noget til en eval string får jeg fejl

her virker det:
eval(callback_function+'('+text+')');

her virker det ikke:
eval(callback_function+'('+text+(callback_var ? ', '+callback_var:'')+')');

hvad gør jeg galt?
Avatar billede Cars10 Praktikant
12. maj 2009 - 11:53 #1
Prøv således:
eval(callback_function+'('+text+(callback_var)? ', '+callback_var : '' +')');
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 12:40 #2
det virker heller ikke.. så går den sidste del med i statementen...
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 12:51 #3
eval(callback_function+'('+self.xmlhttp.responseText+      /*  (callback_var ? ', '+callback_var:'')+  */      ')');

callback_var kan være et objekt, men det burde jo ikke have nogen betydning for hvordan linjen skal skrives...

så snart jeg unescaper meldes fejl
Avatar billede Cars10 Praktikant
12. maj 2009 - 13:08 #4
ok prøv så med:

eval(callback_function+'('+text+(callback_var)? (', '+callback_var) : ('') +')');
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 13:18 #5
nu er statementen jo adskilt af paranteser..
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 13:19 #6
har du et konkret svar eller gætter du bare?
Avatar billede Cars10 Praktikant
12. maj 2009 - 13:20 #7
ellers gør således:

if(callback_var) { eval(callback_function+'('+text+callback_var+')'); } else { eval(callback_function+'('+text+')'); }
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 13:22 #8
ja, men jeg kunne stadig godt tænke mig at vide hvordan man får det andet til at virke
Avatar billede Cars10 Praktikant
12. maj 2009 - 13:26 #9
ja det var fordi du havde en parantes udenom hele funktion og den første er jo bool og resten er tekst:

bool ? text : text

Følgende er gyldige:
bool ? text : text
bool ? (text : text)
bool ? (text) : (text)
(bool) ? (text) : (text)

Følgende er ikke gyldig:
(bool ? text : text)
Avatar billede Cars10 Praktikant
12. maj 2009 - 13:28 #10
svare til

if(bool)
  return text;
else
  return text;
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 13:46 #11
synes ikke rigtig der er noget af det som virker..

en parantes omkring det hele burde ikke have indflydelse på selve statementen..

hmmm
Avatar billede Cars10 Praktikant
12. maj 2009 - 13:56 #12
jeg ved ikke lige hvorfor du skriver callback_var 2 gang i den sætning. Altså den første skal jo være en bool og den anden er jo en tekst.
Avatar billede Cars10 Praktikant
12. maj 2009 - 14:18 #13
Det kan være dit eval udtryk der ikke er gyldigt og ikke selve if sætningen. Hvad for du hvis du bruger document.write() i stedet for eval?
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 15:00 #14
jeg tror det har noget at gøre med det element objekt jeg sender med.. callback_var er et TD element..

men man burde vel bare kunne sende objektet med som det er?
Avatar billede hoppe11 Nybegynder
12. maj 2009 - 15:07 #15
man skal måske i stedet lave objektet om til en string før det kan sendes med på den måde?
Avatar billede Cars10 Praktikant
13. maj 2009 - 10:30 #16
ja eval skal bruge en input parameter af typen string, se her:
http://www.w3schools.com/jsref/jsref_eval.asp

og så skal dit udtryk i stringen selvfølgelig være et gyldigt udtryk
Avatar billede Cars10 Praktikant
13. maj 2009 - 11:10 #17
eval('callback_function(' <= Denne skal med i string hvis det er en func

+text+

callback_var? <= denne skal være af typen bool

', '+callback_var <= Denne skal være af typen text

: '' +')');
Avatar billede Cars10 Praktikant
13. maj 2009 - 11:12 #18
eval('callback_function('+text+callback_var? ', '+callback_var : '' +')');
Avatar billede Cars10 Praktikant
13. maj 2009 - 11:18 #19
hvis din sidste callback_var skal være et objekt er der noget galt i dit udtryk, da + opratoren bruges til at ligge strings sammen og kan ikke bruges på denne måde på et objekt
Avatar billede Cars10 Praktikant
13. maj 2009 - 11:28 #20
Jeg tror muligvis det er dette her du vil forsøge:

eval('callback_function(' + callback_var? 'text, callback_var' : 'text' +')');
Avatar billede hoppe11 Nybegynder
13. maj 2009 - 11:38 #21
smid et svar :)
Avatar billede Cars10 Praktikant
13. maj 2009 - 11:57 #22
ok :)
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