这是由于当鼠标移动到td内里的 a 上时,td 的 onmouseout 变乱会被触发。 然后 a 的 onmouseover 被触发,由变乱转达链,向上又发送到td, 因此 td 的 onmouseover 再次触发,于是就会有闪烁了。
有两种要领可以办理,第一,在 td 的onmouseout 中,对 event.srcElement 举办判定,看它是否包括在td中:
function ChangeColor(bDirection) { if (!bDirection) //onmouseout 被引发 { if (event.srcElement.contains(event.toElement)) return; // 谁人是子工具,不做操纵 ..... } }
<td onmouseout="ChangeColor(false)" onmouseover="ChangeColor(true)"><a>hello</a></td>
////////////////////////////////////////////////
javascript event 变乱理会
描写 event代表变乱的状态,譬喻触发event工具的元素、鼠标的位置及状态、按下的键等等。 event工具只在变乱产生的进程中才有用。 event的某些属性只对特定的变乱故意义。好比,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 变乱故意义。 例子 下面的例子搜查鼠标是否在链接上单击,而且,假如shift键被按下,就打消链接的跳转。 < HTML> <HEAD><TITLE>Cancels Links</TITLE> <SCRIPT LANGUAGE="JScript"> function cancelLink() { if (window.event.srcElement.tagName == "A" && window.event.shiftKey) window.event.returnvalue = false; } </SCRIPT> < BODY onclick="cancelLink()"> 下面的例子在状态栏上表现鼠标的当前位置。 < BODY onmousemove="window.status = ’X=’ + window.event.x + ’ Y=’ + window.event.y"> 属性: altKey, button, cancelBubble, clientX, clientY, ctrlKey, fromElement, keyCode, offsetX, offsetY, propertyName, returnvalue, screenX, screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y -------------------------------------------------------------------------------- 1.altKey 描写: 搜查alt键的状态。 语法: event.altKey 也许的值: 当alt键按下时,值为 TRUE ,不然为 FALSE 。只读。 2.button 描写: 搜查按下的鼠标键。 语法: event.button 也许的值: 0 没按键 1 按左键 2 按右键 3 按阁下键 4 按中间键 5 按左键和中间键 6 按右键和中间键 7 按全部的键 这个属性仅用于onmousedown, onmouseup, 和 onmousemove 变乱。对其他变乱,不管鼠标状态怎样,都返回 0(好比onclick)。 3.cancelBubble 描写: 检测是否接管上层元素的变乱的节制。 语法: event.cancelBubble[ = cancelBubble] 也许的值: 这是一个可读写的布尔值: TRUE 不被上层原素的变乱节制。 FALSE 应承被上层元素的变乱节制。这是默认值。 例子: 下面的代码片段演示了当在图片上点击(onclick)时,假犹如时shift键也被按下,就打消上层元素(body)上的变乱onclick所激发的showSrc()函数。 <SCRIPT LANGUAGE="JScript"> function checkCancel() { if (window.event.shiftKey) window.event.cancelBubble = true; } function showSrc() { if (window.event.srcElement.tagName == "IMG") alert(window.event.srcElement.src); } </SCRIPT> <BODY onclick="showSrc()"> <IMG onclick="checkCancel()" SRC="sample.gif"> 4.clientX 描写: 返回鼠标在窗口客户地区中的X坐标。 语法: event.clientX 注释: 这是个只读属性。这意味着,你只能通过它来获得鼠标的当前位置,却不能用它来变动鼠标的位置。 5.clientY 描写: 返回鼠标在窗口客户地区中的Y坐标。 语法: event.clientY 注释: 这是个只读属性。这意味着,你只能通过它来获得鼠标的当前位置,却不能用它来变动鼠标的位置。 6.ctrlKey 描写: 搜查ctrl键的状态。 语法: event.ctrlKey 也许的值: 当ctrl键按下时,值为 TRUE ,不然为 FALSE 。只读。 7.fromElement 描写: 检测 onmouseover 和 onmouseout 变乱产生时,鼠标所分开的元素。 参考:18.toElement 语法: event.fromElement 注释: 这是个只读属性。 8.keyCode 描写: (请参考 http://www.joyist.com/forum/showto ... ID=31&Forum_ID=2) 检测键盘变乱相对应的内码。 这个属性用于 onkeydown, onkeyup, 和 onkeypress 变乱。 语法: event.keyCode[ = keyCode] 也许的值: 这是个可读写的值,可所以任何一个Unicode键盘内码。假如没有激发键盘变乱,则该值为 0 。 9.offsetX 描写: 搜查相对付触发变乱的工具,鼠标位置的程度坐标 语法: event.offsetX 10.offsetY 描写: 搜查相对付触发变乱的工具,鼠标位置的垂直坐标 语法: event.offsetY 11.propertyName 描写: 配置或返回元素的变革了的属性的名称。 语法: event.propertyName [ = sProperty ] 也许的值: sProperty 是一个字符串,指定或返回触发变乱的元素在变乱中变革了的属性的名称。 这个属性是可读写的。无默认值。 注释: 你可以通过行使 onpropertychange 变乱,获得 propertyName 的值。 例子: 下面的例子通过行使 onpropertychange 变乱,弹出一个对话框,表现 propertyName 的值。 <HEAD> <SCRIPT> function changeProp() { btnProp.value = "This is the new value"; } function changeCSSProp() { btnStyleProp.style.backgroundColor = "aqua"; } </SCRIPT> </HEAD> <BODY> <P>The event object property propertyName is used here to return which property has been altered.</P> <INPUT TYPE=button ID=btnProp onclick="changeProp()" value="Click to change the value property of this button" onpropertychange=’alert(event.propertyName+" property has changed value")’> <INPUT TYPE=button ID=btnStyleProp onclick="changeCSSProp()" value="Click to change the CSS backgroundColor property of this button" onpropertychange=’alert(event.propertyName+" property has changed value")’> </BODY> 12.returnvalue 描写: 配置或搜查从变乱中返回的值 语法: event.returnvalue[ = Boolean] 也许的值: true 变乱中的值被返回 false 源工具上变乱的默认操纵被打消 例子见本文的开头。 13.screenX 描写: 检测鼠标相对付用户屏幕的程度位置 语法: event.screenX 注释: 这是个只读属性。这意味着,你只能通过它来获得鼠标的当前位置,却不能用它来变动鼠标的位置。 14.screenY 描写: 检测鼠标相对付用户屏幕的垂直位置 语法: event.screenY 注释: 这是个只读属性。这意味着,你只能通过它来获得鼠标的当前位置,却不能用它来变动鼠标的位置。 15.shiftKey 描写: 搜查shift键的状态。 语法: event.shiftKey 也许的值: 当shift键按下时,值为 TRUE ,不然为 FALSE 。只读。 16.srcElement 描写: 返回触发变乱的元素。只读。例子见本文开头。 语法: event.srcElement 17.srcFilter 描写: 返回触发 onfilterchange 变乱的滤镜。只读。 语法: event.srcFilter 18.toElement 描写: 检测 onmouseover 和 onmouseout 变乱产生时,鼠标所进入的元素。 参考:7.fromElement 语法: event.toElement 注释: 这是个只读属性。 例子:下面的代码演示了当鼠标移到按钮上时,弹出一个对话框,表现“mouse arrived” <SCRIPT> function testMouse(oObject) { if(oObject.contains(event.toElement)) { alert("mouse arrived"); } } </SCRIPT> : <BUTTON ID=oButton onmouseover="testMouse(this)">Mouse Over This.</BUTTON> 19.type 描写: 返回变乱名。 语法: event.type 注释: 返回没有“on”作为前缀的变乱名,好比,onclick变乱返回的type是click 只读。 20. x 描写: 返回鼠标相对付css属性中有position属性的上级元素的x轴坐标。假如没有css属性中有position属性的上级元素,默认以BODY元素作为参考工具。 语法: event.x 注释: 假如变乱触发后,鼠标移出窗口外,则返回的值为 -1 这是个只读属性。这意味着,你只能通过它来获得鼠标的当前位置,却不能用它来变动鼠标的位置。 21. y 描写: 返回鼠标相对付css属性中有position属性的上级元素的y轴坐标。假如没有css属性中有position属性的上级元素,默认以BODY元素作为参考工具。 语法: event.y 注释: 假如变乱触发后,鼠标移出窗口外,则返回的值为 -1 这是个只读属性。这意味着,你只能通过它来获得鼠标的当前位置,却不能用它来变动鼠标的位置。 (编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|