когда вы вызываете settimeout, он возвращает вам переменную «handle» (число, я думаю)
если вы вызываете settimeout во второй раз, вы должны сначала
clearTimeout( handle )
, то:
handle = setTimeout( ... )
, чтобы помочь автоматизировать это, вы можете использовать оболочку, которая связывает вызовы тайм-аута со строкой (то есть идентификатором div или чем угодно), так что, если есть предыдущий settimeout с той же самой «строкой», он очищает его для Вы автоматически перед установкой снова,
Вы бы использовали массив (то есть словарь / hashmap), чтобы связать строки с дескрипторами.
var timeout_handles = []
function set_time_out( id, code, time ) /// wrapper
{
if( id in timeout_handles )
{
clearTimeout( timeout_handles[id] )
}
timeout_handles[id] = setTimeout( code, time )
}
Конечно, есть и другие способы сделать это ..