Desuden mangler der en ordentlig reference til dine objekter -- det kan godt være at du (og måske IE) kan gennemskue, at når du skriver \'nr2\', så menes der det td-element, som hedder \'nr2\', men hvis det skal gøres ordentlig må der lidt mere reference til, f.eks. (IE4+):
document.all[objID]...
eller (IE5+;NS6+) document.getElementById(objID)...
function change(objID,farvet) { if (farvet==true) objID.bgColor=\'red\'; else objID.bgColor=\'white\'; farvet=!farvet; /* timeout med parametre: setTimeout(function, msec[, arg1[, ..., argN]])*/ timerID=setTimeout(\"change()\",500,objID,farvet);
}
er objId og farvet parameternavne, og de navne eksisterer kun imens funktionen kører. med timerID=setTimeout(\"change(objID,farvet)\",500); bliver navnene lagt i en streng der først fortolkes 555ms efter funktionen er færdig. Det vil definitivt ikke gå godt.
Vi kan sige: timerID=setTimeout(\"change(objID,\"+farvet+\")\",500);
så vil parameteren farvet blive evalueret og dens værdi blive skrevet ind i strengen.
Men en objektreferences værdi kan slet ikke skrives i en streng, så der skal noget andet til.
Næe, objId er jo navnet på objektet (eller burde være det. \'nr1\' med plinger om :-)), så det går: timerID=setTimeout(\"change(\"+objID+\",\"+farvet+\")\",500);
Ups. og vi skal sørge for det stadig er en streng når det ankommer til funktionen change: timerID=setTimeout(\"change(\'\"+objID+\"\',\"+farvet+\")\",500);
Jamen Jacob de to param objId og farvet bliver jo sendt med \'ud\' af funktionen som aktuelle parametre de skulle dermed være \'bevaret\' -Det er jo det normale -Eks function1(noget) { function2(noget) }
function2(nogetIgen) { document.write(\'nu skrives noget \',noget) }
Hvorfor er det anderledes med timeout ..nja DEN er jo en del af sproget...! Humlen må ligge i setTimeout(function, msec[, arg1[, ..., argN]]) som er sprogets syntaks.. Derfor troede jeg timerID=setTimeout(\"change()\",500,objID,farvet); var den rigtige men den kør ikke..
Min sidste var før dine gnyffer *s* Med den sidste kommer der ingen fejl men det kører ikke //timerID=setTimeout(\"change(\'\"+objID+\"\',\"+farvet+\")\",500);
Denne her kører heller ikke timerID=setTimeout(\"change()\",500,+\'\"+objID+\"\',\"+farvet+\");
Jeg tror også du skal bruge det andet format. Men første parameter er funktionen (dvs blot funktionens navn), ikke en streng med et funktionskald i. altså: timerID=setTimeout( change ,500,objID,farvet);
Jeg har lige tested og det virker faktisk. Den undefined du fik kom nok af at javascript kikkede efter en variabel ved navn nr1 og kunne ikke finde en, der skal citationstegn om:
Du bliver i hvert fald, som jakoba og jeg har skrevet flere gange nødt til at overføre dine parametre til funktionen, de er ulovlige som parametre til setTimeout.
Jamen, så har jeg jo igen lært noget (også vha. 120900) =;·]
Synes godt om
Ny brugerNybegynder
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.