周末为了解答一个问题,写了一堆代码,功能基本实现,但感觉结构太差了,没太多考虑。一点都不漂亮 复制代码 代码如下: The document title <BR>table{ <BR>border-spacing: 0; <BR>} <BR>td{ <BR>height: 50px; <BR>width: 50px; <BR>border-spacing: 0; <BR>} <BR>.hidden{ <BR>display: none; <BR>} <BR> hebing <BR>var selectecdlog = []; <BR>var resultLen = 0; <BR>var resultBegin = 0; <BR>var backColor = ['red','green','blue']; // assume 3 rows 1 -red 2 - green 3 - blue <BR>var resultColor =0; <BR>$("td").mousedown(function() { <BR>selectecdlog = []; <BR>resultColor = backColor[$(this).parent().attr('id').substr(1)-1]; <BR>$('td').css('background-color', 'white'); <BR>// ID for tr tag <BR>//alert($(this).parent().attr('id')); <BR>//get the column No. <BR>//alert($(this).index()+1); <BR>$(this).css('background-color', resultColor); <BR>selectecdlog.push($(this).attr('id')); <BR>//alert($(this).attr('id')); <BR>$("td").mouseup(onMouseUp); <BR>$("td").mouseover(onMouseOver); <BR>}) <BR>function onMouseUp(){ <BR>/* Act on the event */ <BR>var len =resultLen= Math.abs(parseInt(selectecdlog[0].substr(selectecdlog[0].indexOf('c')+1)) - parseInt($(this).attr('id').substr(($(this).attr('id').indexOf('c'))+1)))+1; <BR>var begin =resultBegin= parseInt(selectecdlog[0].substr(selectecdlog[0].indexOf('c')+1)) >parseInt($(this).attr('id').substr(($(this).attr('id').indexOf('c'))+1)) ? parseInt($(this).attr('id').substr(($(this).attr('id').indexOf('c'))+1)):parseInt(selectecdlog[0].substr(selectecdlog[0].indexOf('c')+1)); <BR>for(var i =0; i<resultLen;i++) <BR>{ <BR>selectecdlog.push(selectecdlog[0].substr(0,2)+"c"+(resultBegin+i)); <br><br>} <BR>selectecdlog.shift(); <BR>$('#log').text(selectecdlog.toString()); <br><br>$("td").unbind('mouseover',onMouseOver); <BR>$("td").unbind('mouseup',onMouseUp); <BR>} <BR>function onMouseOver (argument) { <BR>var len =resultLen= Math.abs(parseInt(selectecdlog[0].substr(selectecdlog[0].indexOf('c')+1)) - parseInt($(this).attr('id').substr(($(this).attr('id').indexOf('c'))+1)))+1; <BR>var begin =resultBegin= parseInt(selectecdlog[0].substr(selectecdlog[0].indexOf('c')+1)) >parseInt($(this).attr('id').substr(($(this).attr('id').indexOf('c'))+1)) ? parseInt($(this).attr('id').substr(($(this).attr('id').indexOf('c'))+1)):parseInt(selectecdlog[0].substr(selectecdlog[0].indexOf('c')+1)); <BR>$('td').css('background-color', 'white'); <BR>for(var i =0; i<len;i++) <BR>{ <BR>$('#'+selectecdlog[0].substr(0,2)+"c"+(begin+i)).css('background-color', resultColor); <BR>} <BR>//alert( $(this).attr('id').substr(($(this).attr('id').indexOf('c'))+1)); <BR>//$('#'+tdId).css('background-color', 'red'); <BR>} <BR>// set id attr for each td <BR>$("td").each(function(index, val){ <BR>/* iterate through array or object */ <BR>$(this).attr('id', $(this).parent().attr('id')+"c"+($(this).index()+1))}); <BR>//combine cells <BR>function combine (argument) { <BR>// body... <BR>for (var m in selectecdlog) <BR>{ <BR>if(m==0) <BR>{ <BR>$('#'+selectecdlog[m]).attr('colspan', resultLen); <BR>$('#'+selectecdlog[m]).css('width',resultLen*50+"px"); <BR>//$('#'+selectecdlog[m]).css('background-color', 'bule'); <BR>} <BR>else{ <BR>$('#'+selectecdlog[m]).addClass('hidden'); <BR>} <BR>} <BR>} <BR>