Хочу для обычной вертикальной выпадающей вниз менюшки из списков добавить плавности и задержку перед закрытием. Когда мышку отводим от пункта (onmouseout) - надо проверить куда мы её отвели - на подпункт или нет. Для этого делаю задержку через settimeout, а там уже проверяю где сейчас курсор. Так вот - почему то не выходит ничего. event.srcElement тупо не работает внутри таймера, а document.activelement хоть убей выдаёт боди. Если взять event.srcElement до таймера - то он берет сам пункт с которого мышку увели, а не тот на который навелись.
<body>
<style>
#menu5 {
border: solid 7px black;
border-bottom-color: #e6350c;
border-right-color: #e6350c;
border-left-color:#fb8866;
border-top-color:#fb8866;
width: 180px;
}
#menu5, #menu5 ul{
list-style-type: none;
margin: 0;
padding:0;
}
#menu5 li ul li{
margin: 0;
text-align:left;
}
#menu5 a {display: block; height: 30px; width: 180px; margin: 0px;
background-color:#333;
}
</style>
<ul id="menu5">
<li ><a onmouseover="showli()" onmouseout="b()" id="asdd" href="#">Встречи</a>
<ul onmouseover="a();" onmouseout="b()" >
<li><a id="s1" style="opacity: 0.5; filter: alpha(opacity=50);" href="#">Ссылка 1</a></li>
<li><a style="opacity: 0.5; filter: alpha(opacity=50);" href="#">Ссылка 2</a></li>
</ul></li>
</ul>
<SCRIPT language="javascript">
var hT, sT, a, ids;
function a()
{a=2;}
function x()
{ids=event.srcElement.id;
alert(ids);}
function b() {
setTimeout (function()
{
x();
if (ids=='UL'){ Hide('s1', 0.5);}}
, 1000);
}
function c(){
Hide ('s1', 0.5);}
function showli()
{a=5; Show('s1', 1);}
function Show(objId, x) {
var obj = document.getElementsByTagName("a")[1];
op = (obj.style.opacity)?parseFloat(obj.style.opacity):parseInt(obj.style.filter)/100;
if(op < x) {
clearTimeout(hT);
op += 0.1;
for (var i=1; i<3; i++) {
var obj = document.getElementsByTagName("a")[i];
obj.style.opacity = op;
obj.style.filter='alpha(opacity='+op*100+')';}
sT=setTimeout('Show(\''+objId+'\', '+x+')',30);}
}
function Hide(objId, x) {
var obj = document.getElementsByTagName("a")[1];
op = (obj.style.opacity)?parseFloat(obj.style.opacity):parseInt(obj.style.filter)/100;
if(op > x) {
clearTimeout(sT);
op -= 0.1;
for (var i=1; i<3; i++) {
var obj = document.getElementsByTagName("a")[i];
obj.style.opacity = op;
obj.style.filter='alpha(opacity='+op*100+')';
hT=setTimeout('Hide(\''+objId+'\', '+x+')',30);
}}
}
</SCRIPT>
</body>