Это мое первое реальное погружение в JavaScript. Конечно, я использовал его раньше, но я никогда ничего не писал с нуля.
Во всяком случае, у меня очень странная проблема, и я надеюсь, что кто-то сможет понять меня.
Я пытаюсь сделать текст из div исчезающим с черного на белый. Простой, да?
Следующий код работает. Он изменит цвет на белый, однако время setTimeout 500 мс игнорируется.
Если вы используете Chrome и смотрите на консоль JS, вы легко увидите, что метод doFade() вызывается почти мгновенно, а не каждые 500 миллисекунд.
Кто-нибудь может это объяснить?
var started = false;
var newColor;
var div;
var hex = 0;
function fadestart(){
if (typeof fadestart.storedColor == 'undefined') {
div = document.getElementById('test');
fadestart.storedColor = div.style.color;
}
if(!started){
console.log('fadestart');
newColor = fadestart.storedColor;
started = true;
setTimeout(doFade(), 500);
}
}
function fadestop(){
console.log('fadestop');
div.style.color = fadestart.storedColor;
started = false;
hex = 0;
}
function doFade(){
if(hex<=238){
console.log(hex);
hex+=17;
div.style.color="rgb("+hex+","+hex+","+hex+")";
setTimeout(doFade(), 500);
}
}