Ich habe das folgende Skript zu "FreezePane" -Funktionalität in HTML nachahmen, wie in Excel, wo die rechte Seite und die Header werden beide gescrollt, wenn der Benutzer die Ergebnistabelle scrollt.
fnAdjustTable=function(){
var colCount=$('#firstTr>td').length; //get total number of column
var m=0;
var n=0;
var brow='mozilla';
jQuery.each(jQuery.browser, function(i, val) {
if(val==true){
brow=i.toString();
}
});
$('.tableHeader').each(function(i){
if(m<colCount){
if(brow=='mozilla'){
$('#firstTd').css("width",$('.tableFirstCol').innerWidth());//for adjusting first td
$(this).css('width',$('#table_div td:eq('+m+')').innerWidth());//for assigning width to table Header div
}
else if(brow=='msie'){
$('#firstTd').css("width",$('.tableFirstCol').width());
$(this).css('width',$('#table_div td:eq('+m+')').width());//In IE there is difference of 2 px
}
}
m++;
});
$('.tableFirstCol').each(function(i){
if(brow=='mozilla'){
$(this).css('height',$('#table_div td:eq('+colCount*n+')').outerHeight()-1);//for providing height using scrollable table column height
}else if(brow=='msie'){
$(this).css('height',$('#table_div td:eq('+colCount*n+')').innerHeight());
}else{
$(this).css('height',$('#table_div td:eq('+colCount*n+')').height());
}
n++;
});
}
fnScroll=function(){
$('#divHeader').scrollLeft($('#table_div').scrollLeft());
$('#firstcol').scrollTop($('#table_div').scrollTop());
}
Das Problem ist, dass, wenn durch die „tableFirstCol“ tds iteriert, der Fehler das Skript zu stoppen läuft erscheint. Gibt es einen effizienteren Weg dies zu tun?
Im Wesentlichen ändert das Skript die Größe der oberen Kopf- und Seitenbereiche so, dass sie der Breite in der ersten Zeile/Spalte entsprechen. Wenn ich meinen Bericht mit einem großen Datumsbereich (Seitenkopf) ausführe, wird das Skript normalerweise angezeigt, wenn mehr als 30 Seitenkopfzeilen vorhanden sind.
Jede Hilfe wird geschätzt!
Verwenden IE8 Profiler, um herauszufinden, was so lange dauert. Meine Vermutung ist, dass es die Rückflüsse sind, die durch die Größenänderung der Header verursacht werden.Wenn dies der Fall ist, müssen Sie die Größenänderung außerhalb des Dokuments vornehmen. klonen Sie den Tabellenknoten und ersetzen Sie ihn oder verwenden Sie die HTML-Zeichenfolge. – Hemlock
@Hemlock, oder einfach ['detach()'] (http://api.jquery.com/detach/) verwenden und dann 'add()' zurückgeben. –
David, wenn ich am Anfang der Methode eine Trennung mache, und dann füge ich "hinzufügen" oder "anhängen" hinzu, um es zu seinem eigenen div hinzuzufügen? Ich habe diese versucht und die Größenänderung/etc tritt nicht auf. Ich versuche herauszufinden, was hier vor sich geht. – AAFR