Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Addeventlistener已转换为IE。可能是另一个错误?_Javascript - Fatal编程技术网

Javascript Addeventlistener已转换为IE。可能是另一个错误?

Javascript Addeventlistener已转换为IE。可能是另一个错误?,javascript,Javascript,我制作了一个简单的脚本,当鼠标悬停在外部div上时,它将显示一个div(在另一个div中)(这有意义吗?) 无论如何,这就是代码 for (var ost = 1; ost <= 16; ost++) { var maelk = String("sovs"+ ost); document.getElementById(maelk).addEventListener('mouseover', on, false); document.getEl

我制作了一个简单的脚本,当鼠标悬停在外部div上时,它将显示一个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");

    }

for(var ost=1;ost使用
attachEvent
时,事件名称略有不同。您需要使用
'onmouseover'
'onmouseout'

if (!maelkelement.addEventListener) {
    maelkelement.attachEvent('onmouseover', on);
    maelkelement.attachEvent('onmouseout', off);
}
另见:

  • MDN:“传统Internet Explorer和附件”部分)

如果这在第一个元素上起作用,我会感到惊讶,因为在它们被引用之前,还没有定义开和关的功能。 我会换成

var on = function(e) {...}
var off = function(e) {...}
for(...) {
  ....addEventListener(..., on, false);
  ....addEventListener(..., off, false);
}

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,您应该都设置好了

松开第三个参数:IE不支持事件捕获,因此false是无用的。如果有任何错误,它可能会触发错误s@EliasVanOotegem:其他参数可能会被忽略。但感谢您指出这一点。
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
}