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
Post a Comment