我制作了一个简单的脚本,当在外部div上盘旋时会显示一个div(在另一个内部)(这是否有效?)
无论如何这是代码。
for (var ost = 1; ost <= 16; ost++) {
var maelk = String("sovs"+ ost);
document.getElementById(maelk).addEventListener('mouseover', on, false);
document.getElementById(maelk).addEventListener('mouseout', off, false);
}
function on(e) {
var t=e.currentTarget.id;
var g= t.substr(4,5);
var v="celltext" + g;
$("#"+v).show();
//stop(true, false).fadeIn("slow");
}
function off(e) {
var t=e.currentTarget.id;
var g= t.substr(4,5);
var v="celltext" + g;
$("#"+v).hide();
//stop(true, true).fadeOut("slow");
}
但这不适用于Internet Explorer。我听说原因是addEventListener。所以我尝试编辑代码:
for (var ost = 1; ost <= 16; ost++) {
var maelk = String("sovs"+ ost);
var maelkelement = document.getElementById(maelk);
if (!maelkelement.addEventListener) {
maelkelement.attachEvent('mouseover', on, false);
maelkelement.attachEvent('mouseout', off, false);
}
else {
maelkelement.addEventListener('mouseover', on, false);
maelkelement.addEventListener('mouseout', off, false);
}
function on(e) {
var t=e.currentTarget.id;
var g= t.substr(4,5);
var v="celltext" + g;
$("#"+v).show();
//stop(true, false).fadeIn("slow");
}
function off(e) {
var t=e.currentTarget.id;
var g= t.substr(4,5);
var v="celltext" + g;
$("#"+v).hide();
//stop(true, true).fadeOut("slow");
}
唯一的区别是与IE沟通的IF句子。但这不起作用。
有人有任何想法吗?
非常感谢帮助,并提前感谢您
此致 的Mathias
答案 0 :(得分:0)
使用attachEvent
时,事件名称略有不同。您需要使用'onmouseover'
和'onmouseout'
代替:
if (!maelkelement.addEventListener) {
maelkelement.attachEvent('onmouseover', on);
maelkelement.attachEvent('onmouseout', off);
}
另见:
element.AddEventListener
(“旧版Internet Explorer和attachEvent”部分)答案 1 :(得分:0)
如果这对第一个元素起作用,我会感到惊讶,因为&amp;和在他们被裁判之前没有被定义。 我会改为
var on = function(e) {...}
var off = function(e) {...}
for(...) {
....addEventListener(..., on, false);
....addEventListener(..., off, false);
}
答案 2 :(得分:0)
Zeta是对的:使用onmouseover
和onmouseout
,但这仍然无法解决您的问题。除此之外,重要的是要注意IE默认情况下不会将事件对象传递给处理程序。相反,IE只有一个单一的全局事件对象,因此on
和off
函数都必须这样开始:
function onOrOff(e)
{
e = e || window.event;//get the global event for ie
var target = e.target || e.srcElement;//IE's bubbling model doesn't have a target, but a source element
//Now you can finally get some work done
if (e.preventDefault)
{
e.preventDefault();
e.stopPropagation();
return;
}
e.returnValue = false;
e.cancelBubble = true;//bubbling || propagation and preventDefault works differently, too
}
最后:再次,由于冒泡模型,IE不支持事件捕获。 attachEvent
方法因此没有第三个参数,所以在IE分支中松开false并且你应该全部设置