MelittaMedlem sedan sep. 2003448 inlägg Hur kommer det sig att denna inte fungerar?
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);
}
PeeerMedlem sedan mars 20025 907 inlägg setTimeout("flash('cnt')",250);
Om du har ett element som har "cnt" som id vill säga.
JojoxxMedlem sedan juni 20004 308 inlägg 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.
PeeerMedlem sedan mars 20025 907 inlägg Ahhhh.. funktionsanropet var inne i funktionen! :r
MelittaMedlem sedan sep. 2003448 inlägg Och, jag är helt vilsen (grön som ett oplockat äpple) och jag får det inte att lira, här är båda funktionerna.
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);
}
function doColor(cnt,func) {
var thisobj = document.getElementById(cnt)
if(func=='0'){
flash(cnt);
} else {
thisobj.style.borderColor = '#EAEAEA';
}
}
JojoxxMedlem sedan juni 20004 308 inlägg Det ser inte ut att vara några fel. Så länge som view är definierad. Annars kommer du att få ett felmeddelande på det.
var view=1;
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);
}
function doColor(cnt,func) {
var thisobj = document.getElementById(cnt)
if(func=='0'){
flash(cnt);
} else {
thisobj.style.borderColor = '#EAEAEA';
}
}
MelittaMedlem sedan sep. 2003448 inlägg Ok, lite skumt för flash stannar vi första färgbytet.
MelittaMedlem sedan sep. 2003448 inlägg Kan man föresten köra en funktion i en annan?
function bla(){
function bla2(){
kod
}
}
dectgapMedlem sedan sep. 20021 655 inlägg
Melitta skrev:
Kan man föresten köra en funktion i en annan?
function bla(){
function bla2(){
kod
}
}
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.
function2 kan bara anropas ifrån function.
JojoxxMedlem sedan juni 20004 308 inlägg
Melitta skrev:
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.