2

すべてのブラウザーで機能する jquery 関数がありますが、互換モードの ie7 と ie9 では機能しません。問題はこの関数にあります:

$('.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

どうすれば修正できますか?

4

2 に答える 2

1

数日前にこの問題に遭遇しました。

他の誰かがこれに出くわした場合、問題は、IE9 が処理方法を知らないように見える HTML ボタン要素を使用していたことです。HTML shim を追加すると、問題が解決しました。

于 2012-10-09T15:39:56.263 に答える
1

ほとんどの場合、特定した方法がmargin_slider問題の原因です。NaNin を返す必要がありますparseInt

alert(margin_slider)前に試して.animate、何が返されるかを確認してください。

また、何を繰り返しているかによって異なります。さらにデバッグして、何が返されn_btn、何が期待されるかを確認してください。数値文字列または数値で始まる任意の文字列を返す場合n_btn、数値を返す必要があります..しかし、そうではないようです。

.charAt(i)代わりにを使用してみてください$(this).attr('id')[i]var thisId = this.idそして、代わりにvarを使用することができます$(this).attr('id')

于 2012-04-30T20:58:58.010 に答える