TransWikia.com

последовательно setTimeout c разным временем работает одновременно

Stack Overflow на русском Asked by geforce on December 22, 2021

прошу, помогите советом

Вызываю последовательно 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

Самое страшное, проблему могу решить только не очень правильным образом, и хочется что то более правильное

Оно же на JS-Fiddle, работает, но неправильно написано

2 Answers

Что бы передать параметры можно завернуть вызов вашей функции в анонимную функцию:

setTimeout( function(){ function_logo(1,2); }, 2000 )

Или так:

`setTimeout( () => function_logo(1,2), 2000 )`

Или передавать пераметры после задержки. Почитайте документацию по setTimeout.

Answered by fortavey on December 22, 2021

В Вашем коде

setTimeout(function_logo(1,1), 1500);

аналогично

setTimeout(null, 1500);

потому что Вы должны передать в setTimeout функцию, а не её результат.

Решается проблема, к примеру, так:

setTimeout( function_logo.bind(null, 1, 1), 1500);

Answered by ReinRaus on December 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP