2013-10-01 40 views
0

有人可以幫助我,我不能完成網站,直到完成,是我的家人的驚喜:(IE8中的JavaScript錯誤 - 預計';' &'position()。left'爲空

我在IE8得到一個錯誤。這個功能在所有瀏覽器上都能正常工作,爲什麼IE會標記錯誤,我根本就不明白,我只能看到它是無法解決的,直到它被修復:(請幫助我,必須有一個小毛刺引起這顯然是不可見的錯誤...

這些都是錯誤的,我將不勝感激,如果有人能幫助我。我就要用腳本混淆。

**錯誤**

Message: 'position().left' is null or not an object Line: 44 Char: 5 Code: 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") 
     });  
    }); 
}); 
+1

你爲什麼讓你的家人遭受IE8的煎熬? – Pointy

+0

你的小提琴沒有id example-two的元素。我收到了一個完全不同的錯誤。 –

+0

您的標記是否包含類'current_page_item_two'的元素?我將你的標記加倍,並添加了'#example-two'和一個li'current_page_item_two',它在IE8 \ Chrome中工作正常。 –

回答

1

這裏有很多錯誤,所以我不會詳細討論(例如一個頁面上的多個jQueries,不在DOM上的引用元素等)。

這適用於我的機器上的IE8,您可以隨時自行修復違規風格。有在Chrome或IE瀏覽器沒有顯示出JS錯誤:

http://jsfiddle.net/KyleMuir/ghAkB/15/embedded/result/

這裏是固定的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") 
     }); 
    }); 
}); 

小提琴:http://jsfiddle.net/KyleMuir/ghAkB/15/

希望這有助於。

+0

所以你刪除了第二個例如,腳本的這部分也是無用的嗎?你能否提一下,如果你能做出這個錯誤最糟糕的事情是什麼?現在,如果沒有第二個例子,我們可以完美運作,您做出了令人驚歎的工作,相信我,我非常感謝您的時間和您的幫助,這是一個巨大的解脫!非常感謝!!你是唯一設法對代碼進行排序的人!:) – Sol

+0

我希望你不介意,如果我問別的,因爲只有一個天才,這個編碼是一個整體迷宮....我需要替換這兩個代碼 js/jquery-1.3.1。 min.js http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js?ver=1.3.2' 對於較新的版本,是否需要更新兩個或一個所有功能都是通用的?我應該下載哪個版本,並且會影響我擁有的jQuery功能? – Sol

+0

是的。它指向你沒有的菜單。如果這有助於您,請將其標爲正確答案:)很高興得到了協助。 –