2012-04-30 29 views
2

我有一個jquery函數可以在所有瀏覽器中運行,但不能在ie7和ie9中以兼容模式運行。 問題是在這個函數:SCRIPT87:無效的參數

$('.non-attivo').live('click',function(){ 
    clearInterval(start_slide); 
    n_btn = ""; 
    for(var i=1;i<$(this).attr('id').length; i++) 
     n_btn += $(this).attr('id')[i] + ""; 
    slide_pos = parseInt(n_btn, 10); 
    var margin_slider = slide_pos * 780; 
    $('#immagini').animate({ marginLeft: "-" + margin_slider + "px"}, 500); 
    $('.attivo').attr('class', 'non-attivo'); 
    $(this).attr('class', 'attivo'); 
    start_slide = setInterval(rotate, 4000); 
}); 

的錯誤是:

SCRIPT87:無效的參數。

jquery.min.js,第4行字符23894

我怎樣才能解決呢?

+0

你怎麼能確定這個問題是在這個功能? – mkoryak

+0

因爲其他人工作正常。我也試着評論其他代碼,並得到相同的錯誤 – pindol

+5

最可能的方式,你確定'margin_slider'是導致問題。它必須在'parseInt'中返回'NaN'。在'.animate'之前嘗試'alert(margin_slider)'並查看它返回的內容。很難用有限的信息得出結論。 –

回答

1

極有可能您確定margin_slider的方式會導致此問題。它必須在parseInt中返回NaN

嘗試alert(margin_slider).animate之前,看看它返回。

而且這取決於你迭代的..調試更看到正在被退回的n_btn和期望是什麼。如果n_btn返回一個數字字符串或以數字開頭的任何字符串應該返回您是數字..但似乎它不。

使用.charAt(i)代替$(this).attr('id')[i]嘗試。你可以var thisId = this.id,然後使用var而不是$(this).attr('id')

1

前幾天我遇到了這個問題。

萬一別人也絆倒在此,問題是,我用這似乎IE9-不知道如何處理HTML按鈕元素。添加一個HTML Shim解決了這個問題。