2011-01-27 328 views
0

問題解決:我刪除了第一個功能,因爲它不需要,現在它可以在所有瀏覽器中運行。感謝帖子雖然!相同的瀏覽器版本,2個不同的javascript處理


我在這裏的問題是,我有一個服務器上沒有問題,在IE瀏覽器是什麼那麼曾經完美運行的JavaScript。但在另一臺服務器上給我2 IE錯誤。

  1. 它聲稱我的offset()。top不是空或不是對象。
  2. 我的淡入和淡出效果甚至沒有激活。

然後我又有一個很大的問題,那就是在FireFox中它的全部工作。

OPS:這是一個webpart,所以在網站上運行的額外的JavaScript可能會介入JavaScript我試圖在這裏執行。但我不確定。

我已經在IE 8.0.7600.16385這個服務器上測試了這個webpart。

腳本:

<script type="text/javascript" 
src="/_layouts/Progressive/Javascripts/jquery-1.4.3.js"></script> 

<script type="text/javascript"> 
(function($) { 
    $.fn.goTo = function() { 
     // This is where IE on the second server claims the error to be. 
     $('html, body').animate({scrollTop: $(this).offset().top + 'px'}, 'fast'); 
     return this; 
    } 
})(jQuery); 

function showParagraphs(sender) { 
    var id = sender.getAttribute('href'); 
    if ($('#<%=paragraph.ClientID%>').hasClass("readable")) { 
     $('#<%=paragraph.ClientID%>').removeClass("readable"); 
     highlightSelected(id); 
    } 
    else { 
     $('#<%=paragraph.ClientID%>').addClass("readable"); 
     rmvClass(id); 
    } 
}; 

function highlightSelected(id) { 
    $(id).goTo(); 
    $(id).addClass("reading"); 
    // This part is what isn't activated on the second server. 
    $('.reading').fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400); 
    // .reading only adds a gray background to the DIV. 
}; 

function rmvClass(id) { 
    $('div').each(function() { 
     if ($(this).hasClass("reading")) { 
      $(this).removeClass("reading"); 
     } 
    }); 
} 

function toTop() { 
    $('div').each(function() { 
     $(this).removeClass("reading"); 
    }); 
    $('#<%=paragraph.ClientID%>').addClass("readable"); 
} 

$(document).ready(function() { 
    $('#<%=q.ClientID%>').find('dd').hide().end().find('dt').click(function() { 
     $(this).next().slideToggle("fast"); 
    }); 

    $("#<%=q.ClientID%> dt").click(function() { 
     if ($(this).hasClass("selected")) { 
      $(this).removeClass("selected"); 
     } 
     else { 
      $(this).addClass("selected"); 
     } 
    }); 
}); 
</script> 

任何想法或建議?

+0

你應該做的一件事是升級到jQuery 1.4.4 - 1.4.3版本中有一些令人討厭的錯誤。 – Pointy 2011-01-27 17:02:01

+0

在你的第一個函數中,你正在傳遞var`jQuery`,所以你可以在函數中使用`$`,然後使用`$`,而在其他函數中沒有任何包裝,這告訴我你正在嘗試使用jquery以兩種不同的方式(通過`$`和`jQuery`)。這是打算? – JustcallmeDrago 2011-01-27 17:05:04

回答

0

$(id) 

返回一個空jQuery對象,然後 「.offset()」 將返回null。你將這個「highlightSelected」代碼與某些東西的「href」值聯繫起來,所以也許你認爲這是一個與頁面上的東西相對應的「id」值,實際上並不是這樣。然而,很難確切知道,因爲您沒有發佈任何相關的HTML,甚至沒有顯示「showParagraphs()」的調用方式!

相關問題