codice:var tableScroll = (function(){ var global = this, finalise, tableList = {}; var notOnScroll = true, notAbort = true; var overrideStyles = { margin:[{keys:['margin','marginBottom','marginLeft','marginRight','marginTop'],value:'0px'}], padding:[{keys:['padding','paddingBottom','paddingLeft','paddingRight','paddingTop'],value:'0px'}], border:[ {keys:['border','borderBottom','borderLeft','borderRight','borderTop'],value:'0px none #FFFFFF'}, {keys:['borderWidth','borderLeftWidth','borderRightWidth','borderBottomWidth','borderTopWidth'],value:'0px'}, {keys:['borderStyle','borderRightStyle','borderLeftStyle','borderBottomStyle','borderTopStyle'],value:'none'} ], overflow:[{keys:['overflow'],value:'hidden'}], positionRel:[{keys:['position'],value:'relative'}], positionAbs:[{keys:['position'],value:'absolute'}], top:[{keys:['top'],value:'0px'}], left:[{keys:['left'],value:'0px'}], zIndex:[{keys:['zIndex'],value:2}] }; function setStyleProps(styleObj){ var data, dArray; for(var c = 1;c < arguments.length;c++){ if((data = overrideStyles[arguments[c]])){ for(var d = data.length;d--;){ dArray = data[d].keys; for(var e = dArray.length;e--;){ styleObj[dArray[e]] = data[d].value; } } } } return true; } function setClass(el,val){ if(el.setAttribute){el.setAttribute('class',val);} return (el.className = val); } function retFalse(){return false;} function TableScroll(id){ var midAbsDiv, parent, vHeaderAbsStyle, vHeaderRelStyle, hHeaderAbsStyle, hHeaderRelStyle; var midAbsDivStyle, midAbsinerDivStyle, inRelDivStyle, outRelDivDim; var lastScrollTop = NaN, lastScrollLeft = NaN, lastWidth = NaN, lastHeight = NaN, tableDim, table = getElementWithId(id); var midRelinerDivStyle, midRelinerDiv, testCellDim; function position(){ var nh,nw,size,th,tw,cellWidth,celHeight,st = midAbsDiv.scrollTop, sl = midAbsDiv.scrollLeft, h = outRelDivDim(true).h, w = outRelDivDim.w; if((size = ((w != lastWidth)||(h != lastHeight)))||(st != lastScrollTop)||(sl != lastScrollLeft)){ hHeaderRelStyle.left = (((cellWidth = (testCellDim().x - tableDim().iX)) + (lastScrollLeft = sl)) * -1)+'px';//position vHeaderRelStyle.top = (((celHeight = (testCellDim.y - tableDim.iY)) + (lastScrollTop = st)) * -1)+'px'; if(size){ vHeaderRelStyle.width = vHeaderAbsStyle.width = midAbsDivStyle.left = hHeaderAbsStyle.left = (cellWidth+'px'); hHeaderRelStyle.height = hHeaderAbsStyle.height = midAbsDivStyle.top = vHeaderAbsStyle.top = (celHeight+'px'); inRelDivStyle.left = (cellWidth * -1)+'px'; inRelDivStyle.top = (celHeight * -1)+'px'; midRelinerDivStyle.width = midAbsinerDivStyle.width = ((tw = tableDim.w) - cellWidth)+'px'; midRelinerDivStyle.height = midAbsinerDivStyle.height = ((th = tableDim.h) - celHeight)+'px'; midAbsDivStyle.height = vHeaderAbsStyle.height = (((nh = ((lastHeight = h) - celHeight)) > celHeight)?nh:celHeight)+'px'; midAbsDivStyle.width = hHeaderAbsStyle.width = (((nw = ((lastWidth = w) - cellWidth)) > cellWidth)?nw:cellWidth)+'px'; hHeaderRelStyle.width = inRelDivStyle.width = tw + 'px'; vHeaderRelStyle.height = inRelDivStyle.height = th + 'px'; } } return notOnScroll; } function onScroll(){ notOnScroll = false; position(); } function onSize(){ position(); return true; } finalise.addItem(function(){ testCellDim = midRelinerDivStyle = midRelinerDiv = midAbsinerDivStyle = tableDim = vHeaderAbsStyle = vHeaderRelStyle = hHeaderAbsStyle = hHeaderRelStyle = inRelDivStyle = outRelDivDim = midAbsDiv = parent = table = null; }) if( table&& (typeof table.scrollTop == 'number')&& (typeof table.offsetHeight == 'number')&& table.tagName&& table.appendChild&& table.cloneNode&& table.getAttribute&& table.getElementsByTagName&& (parent = table.parentNode)&& parent.insertBefore ){ InitializeMe(function(){ var newTable, testCell; var vHeaderAbs, vHeaderRel, hHeaderAbs, hHeaderRel,outRelDiv, midAbsinerDiv, inRelDiv; if( (notAbort)&& (testCell = table.getElementsByTagName('td')[0])&& (newTable = table.cloneNode(true))&& (outRelDiv = document.createElement('DIV'))&& (setClass(outRelDiv, 'tableBoxOuter'))&& (midAbsDiv = document.createElement('DIV'))&& (midRelinerDiv = document.createElement('DIV'))&& (midAbsinerDiv = document.createElement('DIV'))&& (inRelDiv = document.createElement('DIV'))&& (vHeaderAbs = document.createElement('DIV'))&& (vHeaderRel = document.createElement('DIV'))&& (hHeaderAbs = document.createElement('DIV'))&& (hHeaderRel = document.createElement('DIV'))&& (setStyleProps(outRelDiv.style, 'positionRel', 'padding'))&& (midAbsDivStyle = midAbsDiv.style)&& (setStyleProps(midAbsDivStyle, 'positionAbs', 'padding', 'margin', 'border', 'zIndex'))&& (midRelinerDivStyle = midRelinerDiv.style)&& (setStyleProps(midRelinerDivStyle, 'positionRel', 'padding', 'margin', 'border', 'top', 'left'))&& (midAbsinerDivStyle = midAbsinerDiv.style)&& (setStyleProps(midAbsinerDivStyle, 'positionAbs', 'overflow', 'padding', 'margin', 'border', 'top', 'left'))&& (inRelDivStyle = inRelDiv.style)&& (setStyleProps(inRelDivStyle, 'positionRel', 'padding', 'margin', 'border', 'top', 'left'))&& (vHeaderAbsStyle = vHeaderAbs.style)&& (setStyleProps(vHeaderAbsStyle, 'positionAbs', 'overflow', 'padding', 'margin', 'border', 'top', 'left', 'zIndex'))&& (vHeaderRelStyle = vHeaderRel.style)&& (setStyleProps(vHeaderRelStyle, 'positionRel', 'padding', 'margin', 'border', 'top', 'left'))&& (hHeaderAbsStyle = hHeaderAbs.style)&& (setStyleProps(hHeaderAbsStyle, 'positionAbs', 'overflow', 'padding', 'margin', 'border', 'top', 'left', 'zIndex'))&& (hHeaderRelStyle = hHeaderRel.style)&& (setStyleProps(hHeaderRelStyle, 'positionRel', 'padding', 'margin', 'border', 'top', 'left'))&& (setStyleProps(table.style, 'margin'))&& (midAbsDiv.appendChild(midRelinerDiv))&& (midRelinerDiv.appendChild(midAbsinerDiv))&& (midAbsinerDiv.appendChild(inRelDiv))&& (outRelDiv.appendChild(midAbsDiv))&& (vHeaderAbs.appendChild(vHeaderRel))&& (hHeaderAbs.appendChild(hHeaderRel))&& (outRelDiv.appendChild(vHeaderAbs))&& (outRelDiv.appendChild(hHeaderAbs))&& (parent.insertBefore(outRelDiv, table))&& (!isNaN((outRelDivDim = getSimpleExtPxIn(outRelDiv)).w))&& (inRelDiv.appendChild(table))&& (!isNaN((testCellDim = getSimpleExtPxIn(testCell)).w))&& (!isNaN((tableDim = getSimpleExtPxIn(table)).w))&& (hHeaderRel.appendChild(newTable))&& (newTable = table.cloneNode(true))&& (vHeaderRel.appendChild(newTable)) ){ midAbsDivStyle.overflow = 'scroll'; if(midAbsDiv.addEventListener){ midAbsDiv.addEventListener('scroll', onScroll, false); }else if(midAbsDiv.attachEvent){ midAbsDiv.attachEvent('onscroll', onScroll); }else{ midAbsDiv.onscroll = onScroll; } GlobalEventMonitor('resize', onSize); position(); TimedQue(position); }else{ notAbort = false; } }); }else{ notAbort = false; } return true; } function main(){ var id; for(var c = 0;c < arguments.length;c++){ id = arguments[c]; if(notAbort&&!tableList[id]){ tableList[id] = TableScroll(id); } } } if( (!global.queryStrings||!queryStrings['noTableScroll'])&& global.setTimeout&& global.document&& document.createElement ){ finalizeMe((finalise = getNewFILCFncStac(function(){ finalise = tableList = null; }))); return main; }else{ return retFalse; } })(); </script> </head> <body> <input type="button" value="nascondi riga 3" name="nascondi riga 3" onclick='modifica()'> <table id="mainTable" class="scrolltable"> <thead> <tr> <th>this column will not display</th> <th>COLUMN 1</th> <th>COLUMN 2</th> <th>COLUMN 3</th> <th>COLUMN 4</th> <th>COLUMN 5</th> <th>COLUMN 6</th> <th>COLUMN 7</th> </tr> </thead> <tbody> <?php for($i=0;$i<30;$i++){ echo" <tr id='a$i'> <th>ROW HEADER $i</th> <td>colonna 1 riga $i</td> <td>colonna 2 riga $i</td> <td>colonna 3 riga $i</td> <td>colonna 4 riga $i</td> <td>colonna 5 riga $i</td> <td>colonna 6 riga $i</td> <td>colonna 7 riga $i</td> </tr>"; } ?> </tbody> </table></center> <script type="text/javascript"> if(typeof tableScroll == 'function'){tableScroll('mainTable');} </script> </body> </html>

Rispondi quotando