IE8中的JavaScript错误-预期为''&';位置()。左';是空的

IE8中的JavaScript错误-预期为''&';位置()。左';是空的,javascript,jquery,internet-explorer,runtime-error,Javascript,Jquery,Internet Explorer,Runtime Error,有人能帮帮我吗?在完成这项工作之前,我无法完成网站建设,这对我的家人来说是一个惊喜:( 我在IE8中遇到了一个错误。这个功能在所有浏览器上都能正常工作。为什么IE会标记一个错误,我只是不明白,我所能看到的是,在它被修复之前没有出路:(请帮助我,一定是有一个小故障导致了明显不可见的错误 这些都是错误,如果有人能帮助我,我将不胜感激。我对脚本感到困惑 **错误** 消息:“position().left”为空或不是对象行:44字符:5 代码:0 这是第44行,位于脚本中: $magicLineTwo

有人能帮帮我吗?在完成这项工作之前,我无法完成网站建设,这对我的家人来说是一个惊喜:(

我在IE8中遇到了一个错误。这个功能在所有浏览器上都能正常工作。为什么IE会标记一个错误,我只是不明白,我所能看到的是,在它被修复之前没有出路:(请帮助我,一定是有一个小故障导致了明显不可见的错误

这些都是错误,如果有人能帮助我,我将不胜感激。我对脚本感到困惑

**错误**

消息:“position().left”为空或不是对象行:44字符:5 代码:0

这是第44行,位于脚本中:

$magicLineTwo

这是该脚本的全部代码。该脚本中没有其他内容,有两组代码标记为“示例1和示例2”,第二组代码产生了问题:

 $(function(){

    var $el, leftPos, newWidth,
        $mainNav = $("#example-one"),
        $mainNav2 = $("#example-two");

    /*
        EXAMPLE ONE
    */
    $mainNav.append("<li id='magic-line'></li>");

    var $magicLine = $("#magic-line");

    $magicLine
        .width($(".current_page_item").width())
        .css("left", $(".current_page_item a").position().left)
        .data("origLeft", $magicLine.position().left)
        .data("origWidth", $magicLine.width());

    $("#example-one li").find("a").hover(function() {
        $el = $(this);
        leftPos = $el.position().left;
        newWidth = $el.parent().width();

        $magicLine.stop().animate({
            left: leftPos,
            width: newWidth
        });
    }, function() {
        $magicLine.stop().animate({
            left: $magicLine.data("origLeft"),
            width: $magicLine.data("origWidth")
        });    
    });


    /*
        EXAMPLE TWO
    */
    $mainNav2.append("<li id='magic-line-two'></li>");

    var $magicLineTwo = $("#magic-line-two");

    $magicLineTwo
        .width($(".current_page_item_two").width())
        .height($mainNav2.height())
        .css("left", $(".current_page_item_two a").position().left)
        .data("origLeft", $(".current_page_item_two a").position().left)
        .data("origWidth", $magicLineTwo.width())
        .data("origColor", $(".current_page_item_two a").attr("rel"));

    $("#example-two li").find("a").hover(function() {
        $el = $(this);
        leftPos = $el.position().left;
        newWidth = $el.parent().width();
        $magicLineTwo.stop().animate({
            left: leftPos,
            width: newWidth,
            backgroundColor: $el.attr("rel"),
        });
    }, function() {
        $magicLineTwo.stop().animate({
            left: $magicLineTwo.data("origLeft"),
            width: $magicLineTwo.data("origWidth"),
            backgroundColor: $magicLineTwo.data("origColor")
        });    
    });
});
$(函数(){
var$el、leftPos、newWidth、,
$mainNav=$(“#示例一”),
$mainNav2=$(“#示例二”);
/*
例一
*/
$mainNav.append(“
  • ”; 变量$magicLine=$(“#幻线”); $magicLine .width($(“.current\u page\u item”).width() .css(“左”(“.current_page_item a”).position().left) .data(“origLeft”,$magicLine.position().左) .data(“origWidth”,$magicLine.width()); $(“#示例一li”).find(“a”).hover(函数(){ $el=$(此项); leftPos=$el.position().left; newWidth=$el.parent().width(); $magicLine.stop().animate({ 左:左位置, 宽度:新宽度 }); },函数(){ $magicLine.stop().animate({ 左:$magicLine.data(“origLeft”), 宽度:$magicLine.data(“origWidth”) }); }); /* 例二 */ $mainNav2.append(“
  • ”; var$magicLineTwo=$(“#幻线二”); $magicLineTwo .width($(“.current\u page\u item\u two”).width() .height($mainNav2.height()) .css(“左”、$(“.current_page_item_two a”).position().left) .data(“origLeft”,$(“.current\u page\u item\u two a”).position().左) .data(“origWidth”,$magicLineTwo.width()) .data(“origColor”,$(“.current\u page\u item\u two a”).attr(“rel”); $(“#示例二li”).find(“a”).hover(函数(){ $el=$(此项); leftPos=$el.position().left; newWidth=$el.parent().width(); $magicLineTwo.stop().animate({ 左:左位置, 宽度:newWidth, 背景颜色:$el.attr(“rel”), }); },函数(){ $magicLineTwo.stop().animate({ 左:$magicLineTwo.data(“origLeft”), 宽度:$magicLineTwo.data(“origWidth”), 背景颜色:$magicLineTwo.data(“原色”) }); }); });
    这有很多错误,因此我不会详细介绍(例如,一个页面上有多个jQuery,引用的元素不在DOM上,等等)

    这在我的机器上的IE8中起作用,你可以自己修复有问题的样式。Chrome或IE中没有显示JS错误:

    以下是固定JS:

    $(function () {
    
        var $el, leftPos, newWidth,
        $mainNav = $("#example-one")
        /*
        EXAMPLE ONE
    */
        $mainNav.append("<li id='magic-line'></li>");
    
        var $magicLine = $("#magic-line");
    
        $magicLine.width($(".current_page_item").width())
            .css("left", $(".current_page_item a").position().left)
            .data("origLeft", $magicLine.position().left)
            .data("origWidth", $magicLine.width());
    
        $("#example-one li").find("a").hover(function () {
            $el = $(this);
            leftPos = $el.position().left;
            newWidth = $el.parent().width();
    
        $magicLine.stop().animate({
            left: leftPos,
            width: newWidth
        });
        }, function () {
            $magicLine.stop().animate({
                left: $magicLine.data("origLeft"),
                width: $magicLine.data("origWidth")
            });
        });
    });
    
    $(函数(){
    var$el、leftPos、newWidth、,
    $mainNav=$(“#示例一”)
    /*
    例一
    */
    $mainNav.append(“
  • ”; 变量$magicLine=$(“#幻线”); $magicLine.width($(“.current\u page\u item”).width() .css(“左”(“.current_page_item a”).position().left) .data(“origLeft”,$magicLine.position().左) .data(“origWidth”,$magicLine.width()); $(“#示例一li”).find(“a”).hover(函数(){ $el=$(此项); leftPos=$el.position().left; newWidth=$el.parent().width(); $magicLine.stop().animate({ 左:左位置, 宽度:新宽度 }); },函数(){ $magicLine.stop().animate({ 左:$magicLine.data(“origLeft”), 宽度:$magicLine.data(“origWidth”) }); }); });
    小提琴:


    希望这能有所帮助。

    你为什么让你的家庭成员忍受IE8的折磨?你的小提琴没有id为示例二的元素。我得到了一个完全不同的错误。你的标记是否包含类
    当前页面_item_two
    的元素?我将你的标记加倍,添加了
    #示例二
    和带有
    c的li当前页面项目二在IE8\Chrome中运行良好。您遇到了什么错误?这是与fiddle中相同的脚本,这里没有其他内容。应该是菜单,我希望保持相同的效果。已经过去了几周:(在你的提琴中,我得到了
    未捕获的TypeError:无法调用null的方法'height'
    ,因为
    $mainNav2
    在DOM上不存在,所以你删除了第二个示例,那么脚本的这一部分是不是没用了?你能不能说一下,这其中最糟糕的是什么导致了这个错误?现在没有这个,它的功能是完美的。)第二个例子,你做了一个了不起的工作,相信我,我非常感谢你的时间和帮助,这是一个巨大的解脱!!非常感谢!!你是唯一一个整理代码的人!!:)我希望你不介意我问一些别的问题,因为这里只有一个天才,而这个编码是一个完整的迷宫……我是否需要替换这两个代码js/jquery-1.3.1.min.js’对于一个较新的版本,我是否需要更新两个或一个是所有函数的通用代码?我应该下载哪个版本,这会影响我的jquery函数有吗?是的。它指向一个你没有的菜单。如果这对你有帮助,请将它标记为正确答案:)很高兴能提供帮助。你的页面上应该只有一个jQuery文件,除非你有很好的理由拥有多个(例如,一个插件需要一个旧的ve)