Nej, men det är ett klassiskt fel. När setTimeout körs så körs det exakt så som du skriver det, d.v.s. flash(cnt)
Och då är cnt undefined eftersom den variabeln bara lever i funktionen flash.
Alltså;
function flash(cnt) {
var thisobj = document.getElementById(cnt)
if(view==1){
thisobj.style.borderColor='#EAEAEA';
view=0;
} else {
thisobj.style.borderColor='#996600';
view=1;
}
setTimeout("flash('"+cnt+"')",250);
}
Så kommer flash att anropas med det som variabeln cnt innehåller vid det tillfälle som du skapar timeouten.
Ja, det går bra. function2 i ditt exempel har då tillgång till både variabler som är definierade i sig själv och de som är definierade i function.
Funktionen function har däremot ingen aning om vad som sker i function2.
Ok, lite skumt för flash stannar vi första färgbytet.
En liten tankevurpa kanske. Du har ingenting som avbryter timeouten till flash. Den kommer att snurra i all oändlighet. Eftersom view är definierad globalt kommer även den variabeln att krocka om du kör 2 flash-snurror samtidigt. Men det är antagligen inget problem eftersom du egentligen bara vill köra en flash åt gången.
För att avrbryta en timeout:
mytimer=setTimeout(...); // Skapar en timeout och ger den ett handtag.
...
clearTimeout(mytimer); // Avbryter timeouten i fråga.
279 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849