JavaScript通过事件代理高亮显示表格行的方法
本文实例讲述了JavaScript通过事件代理高亮显示表格行的方法。分享给大家供大家参考。具体实现方法如下:
<!DOCTYPEhtml>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>HighlightRows</title>
<styletype="text/css">
table{
background-color:lightgreen;
}
#third{
background-color:yellow;
}
</style>
</head>
<body>
<!--Demonstrating"EventDelegation"tohighlighttable'rows
onmouseover.
Argumentscanbepassedviathedelegate.
Mysite:andrew.dx.am-->
<tableid="thetable"summary="highlightdemo">
<tr><td>Justone</td><td>..noanother</td></tr>
<tr><td>Second</td><td>..noanother</td></tr>
<trid="third"><td>Athird</td><td>..noanother</td></tr>
<tr><td>Fourthforluck</td><td>..noanother</td></tr>
</table>
<scripttype="text/javascript">
varaddEvent=function(elem,eventType,func){
if(elem.addEventListener)
addEvent=function(elem,eventType,func){
elem.addEventListener(eventType,func,false);
};
elseif(elem.attachEvent)
addEvent=function(elem,eventType,func){
elem.attachEvent('on'+eventType,func);
};
addEvent(elem,eventType,func);
};
vardelegateEvent=function(elem,childElems,eventType,func,args){
addEvent(elem,eventType,function(e){
varevt=e||window.event;
varelem=evt.target||evt.srcElement;
if(elem.nodeName.toLowerCase()==childElems.toLowerCase()){
func(elem,args);
}
});
};
functionhighlightRows(obj,args){
if(args&&args.over){
obj.prevColour=obj.parentNode.style.backgroundColor;
obj.parentNode.style.backgroundColor=args.colour;
if(args.index&&obj.title=="")
obj.title="Row"+obj.parentNode.rowIndex;
}else{
obj.parentNode.style.backgroundColor="";
if(obj.title.indexOf("Row")+1)
obj.title="";
}
}
functioninit(){
delegateEvent(document.getElementById('thetable'),'td','mouseover',
highlightRows,{'colour':'lightblue','over':true,
'index':true});
delegateEvent(document.getElementById('thetable'),'td','mouseout',
highlightRows,{'over':false});
}
addEvent(window,'load',init);
</script>
</body>
</html>
希望本文所述对大家的javascript程序设计有所帮助。