
正文
[修改后]html+css 做成一个可浏览的表格
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
现在表格内容需要显示的要求如下:
1, 表格很大,界面放不小,需要放到div中。
2, 在div中可以用scroll滑动查看。
3, td中的内容保持在一行中。
4, 可以点击tr,然后可以选中并了解点击了哪行。
html:
<div id="div1">
<table id="table1">
<tr></tr>
</table>
<div>
css:
//div宽度要小于table就有scroll了。
#table1 {border-collapse:collapse;height:;}
#table1 table ,th, td {border: 1px solid black;}
#table1 td{
width:230px; /*宽度根据需要设置,也可以设置百分比*/
height:25px;line-height:25px; /*高度也是根据需要设置*/
white-space:nowrap; /*文本显示不自动换行*/
/*overflow:hidden;*/ /*超出部分显示*/
}
#div1 {border: 1px solid red;width:; height:180px;overflow:scroll;}
js:
给点击增加一个onmousedown事件处理。
var trs = document.getElementById('table1').getElementsByTagName('tr');
var choose;
window.onload = function(){
for( var i=0; i<trs.length; i++ ){
trs[i].onmousedown = function(){
tronmousedown(this);
}
}
}
function tronmousedown(obj){
for( var o=1; o<trs.length; o++ ){
if( trs[o] == obj ){
trs[o].style.backgroundColor = 'lightblue';
choose = o;
}
else{
trs[o].style.backgroundColor = '';
}
}
}
可以一起交流。
--------------------------------------!!!
修改的分割线
收到博友daryluo的建议:“代码有一点不太好的地方,就是给每一个tr都添加了事件,事实上,只需要给table 一个元素添加事件就可以,当用户点击到td元素上时, 事件会冒泡到tr,然后到table, 在事件处理函数中,可以获取td 元素,然后找到父tr, tr上有rowIndex属性,就知道点击哪行了.”
于是,我把事件追加到了table上,通过手机evevt的srcElement找到td元素,然后通过parentNode找到其tr元素。再对此元素单独进行处理即可。
代码如下:
js:
var tb = document.getElementById('table1')
var trs = tb.getElementsByTagName('tr')
window.onload = function(){
tb.onmousedown = function(evt){
tronMousedownNew(evt)
}
}
function tronMousedownNew(evt){
var ele = evt.srcElement;
var rowIndex = ele.parentNode.rowIndex;
choose = rowIndex;
process(rowIndex);
}
function process(index)
{
for(var i=0; i< trs.length; i++){
if(i == index){
trs[i].style.backgroundColor = 'lightblue';
}
else{
trs[i].style.backgroundColor = '';
}
}
}
刚刚开始入门,多谢指教。








