последовательно setTimeout c разным временем работает одновременно
прошу, помогите советом
Вызываю последовательно 3 раза setTimeout, с разным временем, но они почему то выполняются в одно время. Подскажите, что не так делаю
//HTML
<div>
<style>
.logo_b{width:18px;height:18px;background-color:#000000;}
.logo_y{width:18px;height:18px;background-color:#FFDD00;}
</style>
<table class="logo_m" cellspacing="0" cellpadding="0">
<tr><td class="logo_y"></td><td class="logo_y"></td><td class="logo_y"></td></tr>
</table>
</div>
//JS+JQ
function function_logo(xxx,yyy){
$(".logo_m")
.find('tr:nth-child('+xxx+')')
.find('td:nth-child('+yyy+')')
.removeClass("logo_y")
.addClass("logo_b");
}
setTimeout(function_logo(1,1),1500);
setTimeout(function_logo(1,2),2000);
setTimeout(function_logo(1,3),2500);
Самое страшное, проблему могу решить только не очень правильным образом, и хочется что то более правильное
Оно же на JS-Fiddle, работает, но неправильно написано
Ответы (2 шт):
Автор решения: ReinRaus
→ Ссылка
В Вашем коде
setTimeout(function_logo(1,1), 1500);
аналогично
setTimeout(null, 1500);
потому что Вы должны передать в setTimeout функцию, а не её результат.
Решается проблема, к примеру, так:
setTimeout( function_logo.bind(null, 1, 1), 1500);
Автор решения: fortavey
→ Ссылка
Что бы передать параметры можно завернуть вызов вашей функции в анонимную функцию:
setTimeout( function(){ function_logo(1,2); }, 2000 )
Или так:
`setTimeout( () => function_logo(1,2), 2000 )`
Или передавать пераметры после задержки. Почитайте документацию по setTimeout.