0

テーブルのヘッダーを修正するコードがあり、正常に動作します。しかし、この関数には警告があります:

Error: TypeError: $(...).offset(...) is undefined

私のコード(私はブートストラップを使用しています):

function goheadfixed(classtable) {
$(classtable).wrap('<div class="fix-inner">'); 
$('.fix-inner').wrap('<div class="fix-outer" style="position: relative;"></div>'); //this is relative cause the header will be absolute
$('.fix-outer').append('<div class="fix-head"></div>');
$('.fix-head').prepend($('.fix-inner').html()); // agrego la tabla
$('.fix-head table').find('caption').remove();
//$('.fix-head table').removeAttr('style');
$('.fix-head table').css('width','100%');

$('.fix-head').css('width', $('.fix-inner table').outerWidth(true)+'px');
$('.fix-head').css('height', $('.fix-inner table thead').outerHeight(true)+'px');

var ithead = parseInt($('.fix-inner table thead').offset().top);
var divfix = parseInt($('.fix-inner').offset().top);
var itop = ithead-divfix;

$('.fix-head').css({'position':'absolute', 'overflow':'hidden', 'top': itop+'px', 'left':0, 'z-index':100 });

$(window).scroll(function () {
    var vscroll = $(window).scrollTop();

    if(vscroll >= ithead)
        $('.fix-head').css('top',(vscroll-divfix)+'px');
    else
        $('.fix-head').css('top', itop+'px');
});

/*  If the windows resize   */
$(window).resize(goresize);
}

function goresize() {
$('.fix-head').css('width', $('.fix-inner table').outerWidth(true)+'px');
$('.fix-head').css('height', $('.fix-inner table thead').outerHeight(true)+'px');
}

私は自分の関数を呼び出します:

goheadfixed('table.fixed');

次に、他のコードjavascriptを下に置くと、私のコードは機能しませんが、上に置くと正常に機能します! :

この警告を削除するにはどうすればよいですか?

編集(回答として投稿された詳細を追加):ああ。申し訳ありませんが、この機能を使用していない場合にのみ「警告」が表示されることを忘れていました。

関数 goheadfixed('table.fixed'); を呼び出すと、大丈夫ですが、この関数を呼び出さないと、警告が表示されます。

4

1 に答える 1

0

14 行目$('.fix-inner table thead')は、存在しない要素または非表示の要素を参照しています。setを持つ要素を少なくとも 1 つ見つけているかのように聞こえますがdisplay:none、そのために未定義の数値が返されます。

これを修正するには、$("thead:visible")各要素に可視セレクタを追加します。

于 2013-01-23T23:02:30.937 に答える