У меня проблема с простым javascript и некоторыми ajax.Не использовать правильно javascript setTimeout/clearTimeout?
У меня есть связь, которая вызывает яваскрипт функцию следующим образом:
<div id="Button11" onmouseover="changeContent4()">Actions</div>
функция Javascript, что называется выше, как это:
function changeContent4()
{
BubbleOn()
document.getElementById("text1").innerHTML='Some text here';
clearTimeout(BOffi);
var BOffi = setTimeout(BubbleOff, 20000);
}
Это работает, он запускает функцию BubbleOn, помещает текст элемент text1, скорее всего, он очищает тайм-аут BOffi и устанавливает для него новый тайм-аут 20000ms.
Вот BubbleOn:
function BubbleOn() {
$("#bubble").fadeIn(function() {
})
}
А вот BubbleOff:
function BubbleOff() {
$("#bubble").fadeOut(function() {
})
}
Как и в функциях BubbleOn и BubbleOff работает. Они просто скрывают или показывают div с именем bubble, который содержит элемент text1. Когда BOffi идет тайм-аут, он просто запускает функцию BubbleOff. Это прекрасно работает. Проблема заключается в том, что при запуске BubbleOff мышь сразу же помещается по ссылке, которая запускает changeContent4(), она снова отображает пузырек div и снова помещает текст, но затем пузырь div исчезает через секунду! Не после 20000 мс. После этого, если мышь снова помещается для запуска changeContent4(), все работает отлично. Если в течение миллисекунды больше времени, чем секунда между затуханием пузырьков и размещением мыши над changeContent4(), она работает и ждет 20000 мс. Меньше секунды и пузырь показывается примерно в секунду ...
Что может быть причиной этого? Может ли быть, что fadeOut все еще работает, даже пузырь исчез с экрана, и поэтому он не сбрасывает счетчик BOffi? Что может занять 1 секунду или меньше, а затем снова запустить BubbleOff после этой магической секунды?
Я также хотел бы добавить, что если это то, что нужно сделать много времени на одной странице, вы должны сохранить элемент 'document.getElementById (« text1 »)', а также использовать jquery для этого, поскольку у вас уже есть его везде – TecHunter
Это работает иначе, но теперь текст не может быть изменен в другой ссылке до истечения таймаута. Я должен был упомянуть, что это необходимо. – Jarno
@ Ярно сделал так. я отредактировал его подождать a sec – TecHunter