2011-03-09 55 views
0

我有一個鏈接,調用onmouseover javascript函數,使它下面的div可見。現在,這一切工作。onmouseover問題

現在的問題是我有一個HREF鏈接,當我將鼠標懸停在它的頂部時,它完美地工作,但是當我將鼠標移動到「現在可見」div上時,它會閃爍,因爲html似乎認爲它是不要關閉div,然後再次打開它,以便它始終關閉和打開。

我怎麼能阻止這種情況發生? (以下HTML,JavaScript是一種簡單的功能,使之可見,在發佈沒有意義的,它的工作原理)

<a style="text-decoration:none;display:block;" onmouseout="ShowStock(1,0);" onmouseover="ShowStock(1,1);" href="">50</a> 
<div id="stock1" style="visibility: hidden;"> 
<a style=" background-color:#009933; text-align:center;" name="1">1</a> 
</div> 

VIDEO它發生的事情:http://screencast.com/t/qjxHN4wyIc

回答

1

在視頻中表現出的問題是,stock1 DIV是偷竊的焦點,然後發射onmouseout,關閉stock1 div,然後觸發A標籤的onmouseover,顯示stock1 div,然後竊取焦點,觸發A標籤,等等...

最簡單的做法是將相同的ShowStock onmouseout/onmouseover應用於stock1 div,以便「顯示」它當被淹沒時自我隱藏,但在沒有被掩蓋時隱藏自身,除非當您將鼠標放在顯示它的A標記內的區域時。

例如,這個完美的作品(上jsfiddle.net,這也說明了一個單獨的版本,在視頻演示了錯誤):

a.hover { 
    background-color: #ccc; 
    width: 200px; 
    height: 200px; 
    position: absolute; 
    top: 15px; 
    left: 15px; 
} 
#show1 { 
    display: none; 
    width: 200px; 
    height: 200px; 
    position: absolute; 
    top: 75px; 
    left: 75px; 
    background-color: #daa; 
} 

function showTarget(target, state) { 
    switch (state) { 
     case 1: 
      state = 'block'; 
     break; 
     default: 
      state = 'none'; 
    } 
    target = 'show'+target; 
    document.getElementById(target).style.display = state; 
} 

<a class="hover" onmouseover="showTarget(1,1)" onmouseout="showTarget(1,0)">Test</a> 
<div id="show1" onmouseover="showTarget(1,1)" onmouseout="showTarget(1,0)">Test Show</div> 
+0

@Steven - 我發佈了一個演示我認爲會起作用的例子。 – 2011-03-09 02:52:18

1

儘量把onmouseout事件股票局外人元素一樣的方式上它位於具有onmousein事件的元素「a」上,並刪除原始元素的onmouseout事件。

這樣,只要將鼠標移出剛剛出現的庫存元素,它就會關閉。