首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Onmouseover/out

Onmouseover/out
EN

Stack Overflow用户
提问于 2013-01-15 21:18:11
回答 3查看 868关注 0票数 0

我有两个问题。

  1. 鼠标控制功能非常快,而且肯定不能正常工作。我为onmouseout状态做了一个单独的函数,但它没有帮助。
  2. 类的更改是正确的,但是它保持不变,不返回到原来的类。它取决于链接是否位于选定的页面上。任何帮助都将不胜感激。

JAVASCRIPT:

代码语言:javascript
复制
function changeRollover(rollover) {
    var rollItems = document.getElementById(rollover);
    var rollLinks = rollItems.getElementsByTagName('a');
    var noOfLinks = rollLinks.length;
    for (var r = 0; r < noOfLinks; r++) {
        var normalText = rollLinks[r].innerHTML;
        var rolloverText = rollLinks[r].title;
        var rolloverItem = document.getElementById(rollover);
        rolloverItem.innerHTML = "<a href='#' title='" + normalText + "'>" + rolloverText + "</a>";
        rolloverItem.class = rollover + "rollover";    
    }
}

HTML:

代码语言:javascript
复制
<div class="nav">
    <ul id="NavItems">
        <li id="item0" class="selected"  onClick="changeClass(this.id)" 
                       onmouseover="changeRollover(this.id)">
            <a href="#" title="Shop Trends">Collections</a>
        </li>
        <li id="item1" onClick="changeClass(this.id)" 
                       onmouseover="changeRollover(this.id)">
            <a href="#" title="Shop Everything" >All Jewlery</a>
        </li>
        <li id="item2" onmouseover="changeRollover(this.id)" 
                       onClick="changeClass(this.id)">
            <a href="#" title="Shop Press">As Seen On</a>
        </li>
        <li id="item3" onmouseover="changeRollover(this.id)" 
                       onClick="changeClass(this.id)">
            <a href="#" title="fashion + shop">Collaborations</a>
        </li>
        <li id="item4" onmouseover="changeRollover(this.id)" 
                       onClick="changeClass(this.id)">
            <a href="#" title="Shop Designer">Designer Pop Ups</a>
        </li>
    </ul>
    <div class="shipping">
        <a href="#">start your free orders today<br>
        *** click here for more information ***</a>
    </div>
</div>
<!-- .nav -->
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-15 21:40:05

您想要的效果(从可用性的角度来看是可疑的,但除此之外)最好使用一些简单的CSS来实现:

代码语言:javascript
复制
#NavItems .hover {
  display: none;
}
#NavItems:hover .hover {
  display: inline;
}
#NavItems:hover .normal {
  display: none;
}

它需要这样的标记:

代码语言:javascript
复制
<ul id="NavItems">
  <li id="item0">
    <a href="#">
      <span class="normal">Collections</span><span class="hover">Shop Trends</span>
    </a>
  </li>
</ul>
票数 2
EN

Stack Overflow用户

发布于 2013-01-15 21:35:04

根据浏览器的可兼容性要求,我建议使用onmouseenter作为函数的触发器。

DOM事件-浏览器可移植性

但首先,您缺少了一个可以为您重置类的onmouseout函数。一旦将类附加到元素,如果您希望它根据用户的操作而消失,那么它也必须手动删除。因此,创建类似于resetRollover函数的东西,如下所示,并附加一个onmouseout DOM监听器来激发该函数:

代码语言:javascript
复制
function resetRollover(rollover) {
  var className = document.getElementById(rollover).className;

  document.getElementById(rollover).className = className.substring(0, indexOf(' rollover'));
}
票数 0
EN

Stack Overflow用户

发布于 2013-01-15 21:43:05

问题是您的onmouseover处理程序在lis上。当鼠标悬停在<li>中的<a>上,并再次触发<li>的“重新进入”onmouseover时。

示例这里:这是与您的代码相同的代码,我添加了一些颜色。如果您只在黑色部分( <li>)上移动鼠标,则滚动将按需要进行。但是当你在绿色部分( <a>s)上移动鼠标时。

作为一种解决方案,您可以处理<a>上的滚转,也可以更改基本设计(请参阅@Thomas的答案)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14347109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档