Я пытаюсь сделать простой setTimeout, чтобы сделать тег div невидимым через 2 секунды.
Функция setTimeout делает div невидимым, но нерегулярно, иногда сразу, а иногда через 1 секунду и т. Д.
Вот мой код:
function beginTimeOut(){
t = setTimeout(function(){hideSubMenu()},2000);
}
function hideSubMenu(){
var elem;
elem = document.getElementById("ul_navlist1");
elem.style.visibility="hidden";
clearTimeout(t);
}
Кстати, t - глобальная переменная. Я тоже попробовал это: t = setTimeout("hideSubMenu()",2000);
, но с такими же нерегулярными результатами.
ОБНОВЛЕНИЕ ОП:
Это div, который содержит мое меню и подменю. Я отредактировал его, чтобы его можно было немного прочитать.
Right_rect - это div, который содержит меню и подменю. В этом разделе я вызываю onmouseout, чтобы скрыть подменю.
<div class="right_rect" onmouseout="beginTimeOut();">
<div class="menu2" >
<ul >
<li onclick="hideOrShow();"><a href="#">item1</a></li>
</ul>
</div>
<div id="ul_navlist1">
<ul >
<li><a href="#">sub_item1</a></li>
</ul>
</div>
</div>
и это часть javascript, которую я использую для выполнения процесса скрытия и показа.
function hideOrShow(){
var hOrV;
var elem;
var styleType = "visibility";
elem = document.getElementById("ul_navlist1");
hOrV = getStyle(elem, styleType);
if(hOrV =="hidden"){
//alert();
elem.style.visibility="visible";
}else{
elem.style.visibility="hidden";
}
}
function beginTimeOut(){
setTimeout(function(){document.getElementById("ul_navlist1").style.visibility="hidden";}, 2000);
}
function getStyle(oElm, strCssRule){
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle){
strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
}
else if(oElm.currentStyle){
strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
return p1.toUpperCase();
});
strValue = oElm.currentStyle[strCssRule];
}
return strValue;
}
Функция getStyle - не мой код.