2012-02-23 25 views
-2

我運行下面的JavaScript:錯誤:未捕獲的異常:[異常... 「字符串包含一個......」

$('img').each(
    function(){ 
     var w = parseInt(this.width); 
      alert(w); 
      alert(this.src); 
     if(w > 300){ 

      var percent = parseInt((w/666)*100); 
      $(this).removeAttr('width height').css('width',percent + "%"); 

     } 
}); 

而且我收到以下錯誤:

Error: uncaught exception: [Exception... "String contains an invalid character" code: "5" nsresult: "0x80530005 (NS_ERROR_DOM_INVALID_CHARACTER_ERR)" location: "http://code.jquery.com/jquery-1.6.4.min.js Line: 2"]

我在試圖追蹤這個問題時遇到了麻煩,因爲它不能很好地描述問題或問題的根源。任何人都可以解釋一下這個問題嗎?

感謝

+3

你爲什麼使用轉義引號?使用'$('img')。each(/*...*/);' – 2012-02-23 21:58:24

+1

實際代碼中是否有轉義符(\\)? – Rodaine 2012-02-23 21:58:35

+0

這是一個非常準確的錯誤代碼:) - '字符串包含無效字符。 – Jasper 2012-02-23 22:00:17

回答

0

看起來你不知道正確的語法。 試試這個:

$('img').each(
    function(){ 
     var w = parseInt(this.width); 
      alert(w); 
      alert(this.src); 
     if(w > 300){ 

      var percent = parseInt((w/666)*100); 
      $(this).removeAttr('width height').css('width',percent + "px"); 

     } 
}); 
0

$(\'img\')將無法​​正常工作。應該是$('img')。還有一些其他地方你試圖逃避單引號,但你不需要。你的代碼應該看起來更像這樣:

$('img').each(
    function(){ 
     var w = parseInt(this.width); 
      alert(w); 
      alert(this.src); 
     if(w > 300){ 

      var percent = parseInt((w/666)*100); 
      $(this).removeAttr('width height').css('width',percent + "px"); 

     } 
}); 
0

看起來它is running perfectly我 - 儘管它沒有改變大小的圖像 - 所以這個問題可能是別的地方在你的代碼/頁。

關於代碼中的邏輯,我不確定你在這裏要做什麼;

parseInt((W/666)*100) 

你試圖讓所有的圖片是一個寬度的最大尺寸?即縮小瀏覽器中的圖片? If so, why not just set the size to a fixed value,like;

$('img').each(
    function(){ 
     var maxwidth = 300; 
     var w = parseInt(this.width); 
     var h = parseInt(this.height) 
     if(w > maxwidth){ 
      var hscale = parseInt(h/(w/maxwidth)); 
      $(this).width(maxwidth).height(hscale); 
     } 
}); 
相關問題