登录  /  注册

onmouseover onmouseout事件问题_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 12:23:39
原创
1327人浏览过

onmouseover

光标移到DIV1上显示DIV2,移开时隐藏。当然,当光标在DIV2上时该DIV也要显示。

问题是,DIV2上有个下拉框,当点击下拉框,选择里面的选项时,DIV2会消失。

如何拯救啊?

回复讨论(解决方案)

补充DEMO代码如下:

<html><head><title></title></head><body>    <div onmouseover="ShowDiv()" onmouseout="HideDiv()">        鼠标移到这里显示另一个DIV    </div>    <div id="div2" style="width:200px;height:200px;border:1px solid #f00;display:none;" onmouseover="ShowDiv()" onmouseout="HideDiv()">         <select>            <option>1</option>            <option>2</option>            <option>3</option>        </select>           随便写一些内容        <br />        这里是需要显示的DIV    </div></body><script type="text/javascript">    function ShowDiv() {        document.getElementById('div2').style.display = 'block';    }    function HideDiv() {        document.getElementById('div2').style.display = 'none';    }</script></html>
登录后复制

DIV2在DIV1外面啊,当然会隐藏了,你应该把DIV2覆盖在DIV1上面。

DIV2在DIV1外面啊,当然会隐藏了,你应该把DIV2覆盖在DIV1上面。

我觉得这跟DIV1关系不大,DIV1只是为了能触发显示DIV2的

关键在点击DIV2里的下拉框后,好像就被认为是光标移出了DIV2,这样就触发了DIV2里的onmouseout,所以就隐藏了。

你有没有发现按照你的div排版来做,你的第二格div是显示在第一个div下面的。

你有没有发现按照你的div排版来做,你的第二格div是显示在第一个div下面的。

是的,显示在哪里不要紧,这只是个DEMO,为了说明问题。你把光标移到DIV2上DIV2还是显示的吧,但点击DIV2里面的下拉框就隐藏了。

    <div onmouseover="ShowDiv()" onmouseout="HideDiv(event)">        鼠标移到这里显示另一个DIV    </div>    <div id="div2" style="width:200px;height:200px;border:1px solid #f00;display:none;" onmouseover="ShowDiv()" onmouseout="HideDiv(event)">         <select>            <option>1</option>            <option>2</option>            <option>3</option>        </select>           随便写一些内容        <br />        这里是需要显示的DIV    </div></body><script type="text/javascript">    function ShowDiv() {        document.getElementById('div2').style.display = 'block';    }     function HideDiv(e) {		var e = e || window.event;        var tg = e.target || e.srcElement;        if(tg.tagName == "DIV"){              document.getElementById('div2').style.display = 'none';        }     }	</script>
登录后复制
登录后复制

鼠标在option上的mouseout 会触发父容器的mouseout事件。

    <div onmouseover="ShowDiv()" onmouseout="HideDiv(event)">        鼠标移到这里显示另一个DIV    </div>    <div id="div2" style="width:200px;height:200px;border:1px solid #f00;display:none;" onmouseover="ShowDiv()" onmouseout="HideDiv(event)">         <select>            <option>1</option>            <option>2</option>            <option>3</option>        </select>           随便写一些内容        <br />        这里是需要显示的DIV    </div></body><script type="text/javascript">    function ShowDiv() {        document.getElementById('div2').style.display = 'block';    }     function HideDiv(e) {		var e = e || window.event;        var tg = e.target || e.srcElement;        if(tg.tagName == "DIV"){              document.getElementById('div2').style.display = 'none';        }     }	</script>
登录后复制
登录后复制

鼠标在option上的mouseout 会触发父容器的mouseout事件。

是啊,如何解决?

额,有点不懂你的意思了,我试过了,点击下拉框DIV2没有消失,不知道你是怎么做的,倒是按照你的div排版来做,我的鼠标是进不了div2的,因为div2在div1下面,出了div1,div2不就隐藏了吗,还怎么点击下拉框呢

额,有点不懂你的意思了,我试过了,点击下拉框DIV2没有消失,不知道你是怎么做的,倒是按照你的div排版来做,我的鼠标是进不了div2的,因为div2在div1下面,出了div1,div2不就隐藏了吗,还怎么点击下拉框呢

无标题文档    <div onmouseover="ShowDiv()" onmouseout="HideDiv(event)">        鼠标移到这里显示另一个DIV    </div>    <div id="div2" style="width:200px;height:200px;border:1px solid #f00;display:none;" onmouseover="ShowDiv()" onmouseout="HideDiv(event)">         <select>            <option>1</option>            <option>2</option>            <option>3</option>        </select>           随便写一些内容        <br />        这里是需要显示的DIV    </div></body><script type="text/javascript">    function ShowDiv() {        document.getElementById('div2').style.display = 'block';    }     function HideDiv(e) {		var e = e || window.event;        var tg = e.target || e.srcElement;        if(tg.tagName == "DIV"){              document.getElementById('div2').style.display = 'none';        }     }	</script>
登录后复制


解决方法是给HideDiv(e)加上事件参数,判断事件源的tagName

额,有点不懂你的意思了,我试过了,点击下拉框DIV2没有消失,不知道你是怎么做的,倒是按照你的div排版来做,我的鼠标是进不了div2的,因为div2在div1下面,出了div1,div2不就隐藏了吗,还怎么点击下拉框呢

你不前后矛盾么?又说点击DIV2里的下拉框后DIV2没有消失,又说鼠标进不了DIV2,如果进不了你是怎么点下拉框的?

不是点击下拉框,是点击下拉框后移到别的OPTION上去。

你不前后矛盾么?又说点击DIV2里的下拉框后DIV2没有消失,又说鼠标进不了DIV2,如果进不了你是怎么点下拉框的?

不是点击下拉框,是点击下拉框后移到别的OPTION上去。
我只是把div2放在了div1里面


你不前后矛盾么?又说点击DIV2里的下拉框后DIV2没有消失,又说鼠标进不了DIV2,如果进不了你是怎么点下拉框的?

不是点击下拉框,是点击下拉框后移到别的OPTION上去。
我只是把div2放在了div1里面

可能是浏览器兼容性问题,我用的是IE8把DIV2放下面没有问题

问题解决了,如xiaofanku说的解决方案,谢谢

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号