首页 > 语言 > JavaScript > 正文

JavaScript通过事件代理高亮显示表格行的方法

2024-05-06 16:20:56
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JavaScript通过事件代理高亮显示表格行的方法,涉及javascript事件代理及页面元素的操作技巧,需要的朋友可以参考下

本文实例讲述了JavaScript通过事件代理高亮显示表格行的方法。分享给大家供大家参考。具体实现方法如下:

 

 
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>Highlight Rows</title> 
  6. <style type="text/css"
  7. table { 
  8. background-color: lightgreen; 
  9. #third { 
  10. background-color: yellow; 
  11. </style> 
  12. </head> 
  13. <body> 
  14. <!-- Demonstrating "Event Delegation" to highlight table' rows  
  15. on mouseover.  
  16. Arguments can be passed via the delegate.  
  17. My site:andrew.dx.am --> 
  18. <table id="thetable" summary="highlight demo"
  19. <tr><td>Just one</td><td>.. no another</td></tr> 
  20. <tr><td>Second</td><td>.. no another</td></tr> 
  21. <tr id="third"><td>A third</td><td>.. no another</td></tr> 
  22. <tr><td>Fourth for luck</td><td>.. no another</td></tr> 
  23. </table> 
  24. <script type="text/javascript"
  25. var addEvent = function (elem, eventType, func) { 
  26. if ( elem.addEventListener ) 
  27. addEvent = function (elem, eventType, func) { 
  28. elem.addEventListener(eventType, func, false); 
  29. }; 
  30. else if ( elem.attachEvent ) 
  31. addEvent = function (elem, eventType, func) { 
  32. elem.attachEvent('on' + eventType, func); 
  33. }; 
  34. addEvent(elem, eventType, func); 
  35. }; 
  36. var delegateEvent = function (elem, childElems, eventType, func, args) { 
  37. addEvent(elem, eventType, function (e) { 
  38. var evt = e || window.event; 
  39. var elem = evt.target || evt.srcElement; 
  40. if ( elem.nodeName.toLowerCase() == childElems.toLowerCase() ) { 
  41. func(elem, args); 
  42. }); 
  43. }; 
  44. function highlightRows(obj, args) { 
  45. if (args && args.over) { 
  46. obj.prevColour = obj.parentNode.style.backgroundColor; 
  47. obj.parentNode.style.backgroundColor = args.colour; 
  48. if (args.index && obj.title == ""
  49. obj.title = "Row " + obj.parentNode.rowIndex; 
  50. else { 
  51. obj.parentNode.style.backgroundColor = ""
  52. if (obj.title.indexOf("Row ") + 1) 
  53. obj.title = ""
  54. function init() { 
  55. delegateEvent(document.getElementById('thetable'), 'td''mouseover'
  56. highlightRows, {'colour''lightblue''over'true,  
  57. 'index'true}); 
  58. delegateEvent(document.getElementById('thetable'), 'td''mouseout'
  59. highlightRows, {'over'false}); 
  60. addEvent(window, 'load', init); 
  61. </script> 
  62. </body> 
  63. </html> 

希望本文所述对大家的javascript程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选