2012-10-30 15 views
1

我遇到了一個奇怪的問題,也許有人可以幫助。onclick無法使用一些scrollTop值

有在頁面上多張圖片,每一個被定義爲:

<td><a href="#" onclick="Show(\'div1\');return false;"><img src="img1" onmouseout="Hide(\'div1\');"></a></td> 

當用戶點擊圖片,隱藏的div應該出現在頁面的中間,消失在鼠標移開。 這是隱藏的div:

<div id="div1" style="width:400px;height:220px;padding:8px;position:absolute;display:none;border:6px solid #CC6600;background-color:#FFDAB4"> 

一切正常,直到我開始向上和向下滾動。在某些特定位置和滾動結束時,隱藏的div不會出現。有誰明白爲什麼?

這裏的javascript:

function Show (div) 
{ 
    var winW=630,winH=460,t,l; 

    if (document.body && document.body.offsetWidth) { 
     winW = document.body.offsetWidth; 
     winH = document.body.offsetHeight; 
    } 

    if (document.compatMode=='CSS1Compat' && 
     document.documentElement && 
     document.documentElement.offsetWidth) { 
     winW = document.documentElement.offsetWidth; 
     winH = document.documentElement.offsetHeight; 
    } 

    if (window.innerWidth && window.innerHeight) { 
     winW = window.innerWidth; 
     winH = window.innerHeight; 
    } 

    var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; 
    var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft; 

    t=winH/2-240/2+scrollTop; 
    l=winW/2-400/2+scrollLeft; 

    document.getElementById(div).style.top=t+"px"; 
    document.getElementById(div).style.left=l+"px"; 
    document.getElementById(div).style.display="block"; 
} 

function Hide(div) 
{ 
    document.getElementById(div).style.display="none"; 
} 

我才意識到,這不是scrollTop的問題。 div內的錨不佔用整個div,只佔下部分。奇怪的是光標在整個img上變化,onclick在整個img上被調用,但隱藏的div只在點擊下部時顯示。 我試過style =「display:block」沒有任何成功。絕望之餘,我把style =「opacity:0.9」,它確實有效!唯一的問題是隱藏的div顯示在img後面(比如z-index低於img)。我不使用z-index,因爲隱藏的div是位置:絕對。 *仍在尋找一些聰明的人!

+0

是否有可能在div沾到出現懸停,從圖像偷懸停? –

回答

0

嘗試jQuery的解決方案

$(function() { 
    $('body').scrollTop(0); 
}); 

同時,如果你想要一個JavaScript解決方案嘗試

document.body.scrollTop = document.documentElement.scrollTop = 0;