`

Table的onMouseOver和onMouseOut鼠标事件的问题

阅读更多
看下面这段代码:

我们需要给某个TABLE加上鼠标事件的时候,一般希望当鼠标滑在整个TABLE之上的时候做某些处理,当鼠标滑出TABLE的时候做另外的处理. 一般情况下你会用onmouseover和onmouseout,代码如下:
<TABLE border="1" width=200 onmouseover="alert('鼠标滑进')" onmouseout="alert('鼠标滑出')">
    <TR>
        <TD id="TD1" noWrap height=25 onmouseenter="this.style.color='red'"> 菜单1</TD>
    </TR>
    <tr>
        <TD id="TD2" noWrap height=25 onmouseenter="this.style.color='red'"> 菜单2</TD>
    </TR>
    <TR>
        <TD id="TD3" noWrap height=25 onmouseenter="this.style.color='red'"> 菜单3</TD>
    </TR>
</TABLE>
按常理说:当鼠标进入table的时候就会弹出"鼠标滑进",当鼠标离开table的时候就会弹出"鼠标滑出"
但事实情况却是会不停地弹出"鼠标滑进""鼠标滑出",因为鼠标在TD之间滑动时也会触发TABLE的onmouseover和onmouseout事件。

如果是在IE下,则可以换用onmouseenter和onmouseleave来解决,示例代码如下:

<TABLE border="1" width=200 onmouseenter="alert('鼠标滑进')" onmouseleave="alert('鼠标滑出')">
    <TR>
        <TD id="TD1" noWrap height=25 onmouseenter="this.style.color='red'"> 菜单1</TD>
    </TR>
    <tr>
        <TD id="TD2" noWrap height=25 onmouseenter="this.style.color='red'"> 菜单2</TD>
    </TR>
    <TR>
        <TD id="TD3" noWrap height=25 onmouseenter="this.style.color='red'"> 菜单3</TD>
    </TR>
</TABLE>

如果是其他浏览器,则需要判断鼠标指针的坐标是否处于TABLE之外.示例代码如下(网上搜集):
<style type="text/css">...
html, body {...}{
padding:0px;
margin:0px;
}
</style><br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>

<table id="ta" width="350" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td bgcolor="#996633">&nbsp;</td>
    <td bgcolor="#234633"><button >  Clos</button></td>
    <td bgcolor="#0000FF">&nbsp;</td>
  </tr>
</table>
<script type="text/javascript">...
var rePosition = function (o) ...{
//获取元素绝对位置
var $x = $y = 0;
do ...{
$x += o.offsetLeft;
$y += o.offsetTop;
} while ((o = o.offsetParent) && o.tagName != "BODY");
return ...{ x : $x, y : $y };
};

window.onload = function () ...{
var wc = document.getElementById("ta"), ing = false;
wc.onmouseover = function () ...{
if (!ing) ...{
ing = true;
alert("over");
}
};

wc.onmouseout = function () ...{
var wc = this, e = window.event || e,
x = document.body.scrollLeft + e.clientX, y = document.body.scrollTop + e.clientY, p = rePosition(wc);
//alert(y);
if (x <= p.x || x >= (p.x + wc.offsetWidth) || y <= p.y || y >= (p.y + wc.offsetHeight)) ...{
alert("out");
ing = false;
}
};
};
</script>



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fishsoul/archive/2007/09/26/1801898.aspx
分享到:
评论

相关推荐

    兼容ie和firefox的鼠标经过(onmouseover和onmouseout)实现--简短版

    "兼容IE和Firefox的鼠标经过(onmouseover和onmouseout)实现--简短版" 在本篇文章中,我们将探讨如何使用CSS和JavaScript来实现兼容IE和Firefox的鼠标经过效果(onmouseover和onmouseout)。在前端开发中,鼠标经过...

    文本框取鼠标事件文本框取鼠标事件

    根据提供的信息,我们可以深入探讨与“文本框取鼠标事件”相关的知识点。这主要涉及Web开发中的HTML和JavaScript技术,特别是如何在网页上处理文本框的鼠标事件。 ### 文本框与鼠标事件概述 #### 1. **文本框(Text...

    改变table中行的背景

    这里的关键在于每个`&lt;tr&gt;`(table row)元素都绑定了`onMouseOver`和`onMouseOut`事件处理器。这些事件处理器用于改变行的颜色,从而达到交互效果。 #### 解析关键属性 1. **`border`**: 设置表格边框的宽度,值为...

    关于datagrid的鼠标经过事件,显示datagrid中数据

    最后,在`datagrid`的每一行上绑定`onmouseover`和`onmouseout`事件,以便当鼠标进入和离开行时触发相应的函数。 ```html cssclass="borderblue" autogeneratecolumns="false" width="100%"&gt; 企业名称"&gt; ;" ...

    响应鼠标变换表格背景或者颜色的代码

    在上面的代码中,我们使用了 JavaScript 的 onMouseOver 和 onMouseOut 事件处理函数来实现鼠标变换表格背景或者颜色的效果。这些事件处理函数可以被应用于各种 HTML 元素上,以达到不同的交互效果。 在实现响应...

    改变选择table行的背景色

    具体来说,它通过监听鼠标悬停(`onMouseOver`)、鼠标离开(`onMouseOut`)以及点击(`onClick`)事件来改变指定行的背景颜色。以下是代码的主要组成部分: 1. **全局变量声明**:`var aTDClick = new Array(3);` 这里...

    鼠标移动变色代码

    通过`onmouseover`和`onmouseout`事件处理器,当鼠标悬停在`&lt;td&gt;`元素上时,改变其背景颜色、边框颜色和文字颜色;当鼠标移出时,恢复原状。这里使用了IE特有的`filters`属性,以实现颜色的渐变过渡。 最后,在`...

    隔行变色和鼠标滑过变色

    在这个示例中,首先为每行设置一个初始的背景色,然后通过`onmouseover`和`onmouseout`事件监听器来改变行的背景色。当鼠标滑过某一行时,其背景色变为白色;当鼠标离开时,背景色恢复为橙色。 #### 总结 通过以上...

    displaytag分页和鼠标经过变色功能

    代码中的关键部分是 `addRowId()` 方法的返回值,这是一个包含 `onmouseover` 和 `onmouseout` 事件处理函数的HTML属性字符串。当鼠标进入表格行时,调用 `m_over()` 函数,将类名 "trmo" 添加到行元素;当鼠标离开...

    CSS鼠标响应事件经过、移动、点击示例介绍

    在交互式用户界面中,CSS鼠标响应事件对于创建动态和响应式的用户体验至关重要。本文将详细讨论CSS中的鼠标响应事件,并通过示例展示如何实现这些效果。 首先,我们有以下几种常见的CSS鼠标响应事件: 1. `...

    Table隔行变色的JavaScript代码

    2. 鼠标交互事件:JavaScript代码中,为隔行变色的行添加了两个鼠标事件处理器:onmouseover(鼠标悬停时触发)和onmouseout(鼠标移出时触发)。当鼠标悬停在行元素上时,行的背景色将改变为一个中间色(bgColor)...

    js和html部分代码集.doc

    3. 鼠标移入移出时颜色变化:使用onMouseOver和onMouseOut事件来实现鼠标移入移出时颜色变化。 4. 平面按钮:使用style属性来设置按钮的样式。 5. 按钮颜色变化:使用style属性来设置按钮的颜色变化。 6. 平面输入框...

    js菜鸟笔记之防flash菜单_ekom.cn

    3. **绑定事件**:接着为每个`&lt;td&gt;`元素绑定`onmouseover`和`onmouseout`事件处理器。 4. **触发事件**:当鼠标悬停在某一个菜单项上时,触发`onmouseover`事件,修改样式;当鼠标离开时,触发`onmouseout`事件,...

    htmld的事件列表

    4. **onMouseOver** 和 **onMouseOut**: 当用户的鼠标指针移动到元素上时触发**onMouseOver**事件;当鼠标指针离开该元素时触发**onMouseOut**事件。 - 示例代码:`&lt;p onmouseover="this.style.color='red'" ...

    【JavaScript源代码】JavaScript实现表格动态变色.docx

    使用JavaScript,我们可以获取表格主体的所有行,并为每一行添加`onmouseover`和`onmouseout`事件监听器。在`onmouseover`事件中,我们将当前行的类名设置为`.bg`,使其背景色变为绿色;而在`onmouseout`事件中,...

    javascript 触发事件列表

    #### 八、鼠标移入事件(onmouseover) 当鼠标指针移动到某个元素上时触发的事件。 **示例:** ```html 按钮" onmouseover="window.status='注意状态'; return true;"&gt; ``` 当鼠标悬停在按钮上时,浏览器的状态栏...

    鼠标移过弹出层,效果不错哦

    - **触发机制**:通过`onmouseover`和`onmouseout`事件触发,当鼠标移动到按钮上方时显示弹出层,当鼠标离开时隐藏弹出层。 - **位置计算**:通过`offsetTop`和`offsetLeft`属性获取按钮的位置,并根据这些值计算弹...

    html标记大全 有marquee,table,form等最常用标记。

    - **onmouseover/onmouseout**:定义鼠标悬停或离开时的行为。 ```html &lt;marquee behavior="scroll" direction="left" loop="2" width="200" height="50" bgcolor="#FF0000" scrollamount="3" scrolldelay="300" ...

    纯JS代码实现隔行变色鼠标移入高亮

    4. 鼠标移入高亮显示:在隔行变色的基础上,添加鼠标移入事件监听器`onmouseover`和鼠标移出事件监听器`onmouseout`。当鼠标悬停在某一行上时,通过`onmouseover`事件将该行背景颜色变为红色,模拟高亮显示。当鼠标...

Global site tag (gtag.js) - Google Analytics