我正在做一个6x6列()的表,这些列()现在是空的,背景是白色的。我的任务是,当单击一列时,它应该在绿色、红色和灰色之间改变颜色(取决于单击特定列的次数)。
代码:
<table style="width: 100%; height: 100%; margin: 0 auto; border-bottom:groove; border-left:groove; border-right:groove; border-top:groove; width: 75%; height: 75%;">
<tr style="border-bottom:medium;">
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
</tr>
<tr>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
</tr>
<tr>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
</tr>
<tr>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
</tr>
<tr>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
</tr>
<tr>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
<td style="border-bottom:groove; border-left:groove; border-right:groove; border-top:groove;"> </td>
</tr>
</table>我不知道该怎么做,如果我应该使用jQuery函数.感谢所有的答案/提示!
发布于 2014-05-08 12:02:24
这是我的解决办法。希望这能帮上忙:http://jsfiddle.net/8gHeD/
HTML
<table class="grooveTable">
<tr >
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>JavaScript
colorArray = ['none','red','green','blue'];
$('.grooveTable').on('click','td', function(){
console.log( $(this).data('color') );
console.log( colorArray.length );
color = $(this).data('color') == undefined ? 0 : $(this).data('color')*1;
if( color == undefined || color == colorArray.length )
{
$(this).css('background-color',colorArray[0]);
$(this).data('color','0');
}
else
{
$(this).css('background-color',colorArray[color+1]);
$(this).data('color',color+1);
}
});CSS
.grooveTable {
width: 100%;
height: 100%;
margin: 0 auto;
border-bottom:groove;
border-left:groove;
border-right:groove;
border-top:groove;
}
.grooveTable td {
cursor: pointer;
border-bottom:groove;
border-left:groove;
border-right:groove;
border-top:groove;
}
.grooveeTable tr:first {
border-bottom:medium;
}发布于 2014-05-08 11:52:03
用于更改整行的背景色:您可以像下面这样实现它:演示小提琴
$(document).ready(function(){
$('table').on('click','tr',function(){
switch($(this).attr('class')){
case 'green':
$(this).removeClass('green');
$(this).addClass('red');
break;
case 'red':
$(this).removeClass('red');
$(this).addClass('gray');
break;
case 'gray':
$(this).removeClass('gray');
// $(this).addClass('red');
break;
default:
$(this).addClass('green');
}
});
});更改特定栏的背景颜色:
$(document).ready(function(){
$('table').on('click','td',function(){
switch($(this).attr('class')){
case 'green':
$(this).removeClass('green');
$(this).addClass('red');
break;
case 'red':
$(this).removeClass('red');
$(this).addClass('gray');
break;
case 'gray':
$(this).removeClass('gray');
// $(this).addClass('red');
break;
default:
$(this).addClass('green');
}
});
});发布于 2014-05-08 11:56:26
演示: http://jsfiddle.net/abdennour/6K6gU/3/
我们的代码工作在列上而不是行上。这就是你想要的
$('td').click(function(){
var col=$('tbody td:nth-child('+($(this).parent('tr').index()+1)+')')
if($(this).hasClass('green')){
col.removeClass().addClass('red')
}else if($(this).hasClass('red')){
col.removeClass().addClass('gray')
}
else if($(this).hasClass('gray')){
col.removeClass().addClass('gray')
}else {
col.removeClass().addClass('green')
}
})更新:
如果你想要:白色->绿色->红色->灰色->白色
请参阅:http://jsfiddle.net/abdennour/6K6gU/4/
https://stackoverflow.com/questions/23540706
复制相似问题