【问题标题】:onclick does not work with some scrollTop valuesonclick 不适用于某些 scrollTop 值
【发布时间】:2012-10-30 19:38:36
【问题描述】:

我遇到了一个奇怪的问题,也许有人可以帮忙。

页面上有多个img,每一个定义为:

<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 问题。 Anchor inside div不占整个div,只占下部。奇怪的是光标在整个img上发生了变化,onclick在整个img上被调用,但隐藏的div只有在点击下部时才会显示。 我试过 style="display:block" 没有任何成功。出于绝望,我输入了 style="opacity:0.9" 并且它确实有效!唯一的问题是隐藏的 div 显示在 img 后面(比如 z-index 低于 img)。我没有使用 z-index,因为隐藏的 div 是位置:绝对。 * 还在找聪明人!!!

【问题讨论】:

  • div 是否有可能在出现时悬停,从图像中窃取悬停?

标签: onclick scrolltop onmouseout


【解决方案1】:

试试jQuery解决方案

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

同时,如果您想要 JavaScript 解决方案,请尝试

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2014-12-17
    • 2013-06-26
    • 2021-07-30
    相关资源
    最近更新 更多