Javascript parses in some way the string parameters of functions? -


when try pass string function so

i="file:///bla/bla/bla"; fade(i); 

i uncaught syntaxerror: unexpected token :

so tried passing literal in function f("img1.jpg"); , got

uncaught referenceerror: img1 not defined (anonymous function) 

what going on?

(note kind of new in js)

in particular:

timeout = 3; var fadetime = 5; var curr = 0;  var fadedelta = 100/(fadetime*30); var opac = 100;  //var fadedelta = 100/(fadetime*3); //prelaod images have them there var namearr = new array( "img1.jpg", "img2.jpg", "img3.jpg", "img4.jpg"); var imgarr = new array();  var = 0; for( = 0; i<2 ; i++) {     var tmp = new image()     tmp.src = namearr[i];     imgarr.push(tmp);  }  function setopacity(image, op) {     if(typeof(image.filters) != 'undefined' )     {         image.filters.alpha.opacity = op;     }     else     {         image.style.opacity = op/100;     } }  function fadein(isrc) {     var locimg = document.getelementbyid("image");     opac -=fadedelta;     setopacity(locimg,opac);     if(opac>0)     {         settimeout("fadein(string("+isrc+"));", 30);     }     else     {         locimg.src = isrc;         setopacity(locimg,100);         opac=100;     } }   function fade(isrc) {     var locimg = document.getelementbyid("image");     var locdiv = document.getelementbyid("imagearea");      locdiv.style.backgroundimage = "url("+isrc+")";     fadein(isrc); }  function astatus() {     var locimg = document.getelementbyid("image");     var locdiv = document.getelementbyid("imagearea");      alert("background: "+locdiv.style.backgroundimage+"\nforeground: "+locimg.src+"\ncurr: "+curr); }  function onclick() {     curr = curr + 1;     curr%=imgarr.length;     fade(string(""+imgarr[curr].src)); } 

and output uncaught syntaxerror: unexpected token : error refering line before last (fade(string(imgarr[curr].src));)

note imgarr[curr].src file:///home/fakedrake/webdev/img1.jpg or file:///home/fakedrake/webdev/img2.jpg depending on value of curr

i got totally different error, “missing ) after argument list” on line

fadein(file:///some/local/file.jpg); 

however, problem same: interpreter thinks fadein gets variable name (in case file:///some/local/file.jpg, not valid identifier) instead of string.

the solution simple: add single quotes to

settimeout("fadein('"+isrc+"')", 30);     // here        ^        ^ 

Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -