• JS-项目实战-编辑单价单元格,可以点击单价单元格并且出现文本框,并自动选中输入框内部的文本


    1、鼠标悬浮和离开事件.js

    1. //当页面加载完成后执行后面的匿名函数
    2. window.onload = function () {
    3. //get:获取 Element:元素 By:通过...方式
    4. //getElementById()根据id值获取某元素
    5. let fruitTbl = document.getElementById("fruit_tbl");
    6. //table.rows:获取这个表格的所有的行,返回数组
    7. let rows = fruitTbl.rows;
    8. //从 1 开始,因为 第 0 行是表头,不需要绑定事件
    9. for (let i = 1; i < rows.length; i++) {
    10. let tr = rows[i];
    11. //事件动态绑定
    12. tr.onmouseover = showBGColor;
    13. tr.onmouseout = clearBGColor;
    14. //cell:单元格、细胞
    15. //获取这一行的所有的单元格
    16. let tds = tr.cells;
    17. let priceTD = tds[2];
    18. priceTD.onmouseover = showHand;
    19. priceTD.onclick=editPrice
    20. }
    21. };
    22. editPrice = function () {
    23. let priceTD = event.srcElement;
    24. //inner:在...内部
    25. let oldPrice = priceTD.innerText;
    26. //innerHTML:在节点内部填充一段HTML代码
    27. //priceTD.innerHTML = "";
    28. priceTD.innerHTML = "";
    29. /**
    30. *
    31. * first:第一个 child:孩子
    32. * firstChild:第一个子节点
    33. * @type {ActiveX.IXMLDOMNode | ChildNode | (() => (Node | null))}
    34. */
    35. let priceInput = priceTD.firstChild;
    36. priceInput.value = oldPrice;
    37. priceInput.select();
    38. };
    39. function showHand() {
    40. let priceTD = event.srcElement;
    41. //cursor光标
    42. priceTD.style.cursor = "pointer";
    43. }
    44. function showBGColor() {
    45. //window.event表示当前发生的事件 ”window.“可以省略
    46. // console.log(window.event);
    47. // alert(window.event);
    48. let obj = window.event.srcElement;
    49. //alert(obj);
    50. //console.log(obj); //发现obj是td,而不是tr。事件传递现象
    51. let td=obj;
    52. //parentElement:父元素 td的父元素是tr。tr有很多td子元素
    53. let tr = td.parentElement;
    54. tr.style.backgroundColor = "purple";
    55. }
    56. function clearBGColor() {
    57. let td = window.event.srcElement;
    58. let tr = td.parentElement;
    59. tr.style.backgroundColor = "transparent";
    60. }

    2、fruit.html

    1. html>
    2. <html lang="zh_CN">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>js-DOM/BOM实战title>
    8. <link href="style/fruit.css" rel="stylesheet">link>
    9. <script src="js/鼠标悬浮和离开事件.js">script>
    10. head>
    11. <body>
    12. <div id="div0">
    13. <div id="div_title">欢迎使用水果库存系统div>
    14. <div id="div2">
    15. <table id="fruit_tbl">
    16. <tr>
    17. <th class="w10"><input type="checkbox" />th>
    18. <th class="w20">名称th>
    19. <th class="w20">单价th>
    20. <th class="w20">数量th>
    21. <th class="w20">小计th>
    22. <th class="w10">操作th>
    23. tr>
    24. <tr>
    25. <td><input type="checkbox" />td>
    26. <td>苹果td>
    27. <td>5td>
    28. <td>2td>
    29. <td>10td>
    30. <td><img src='imgs/del.png' class="delBtn"/>td>
    31. tr>
    32. <tr>
    33. <td><input type="checkbox" />td>
    34. <td>菠萝td>
    35. <td>3td>
    36. <td>5td>
    37. <td>15td>
    38. <td><img src='imgs/del.png' class="delBtn"/>td>
    39. tr>
    40. <tr>
    41. <td><input type="checkbox" />td>
    42. <td>哈密瓜td>
    43. <td>4td>
    44. <td>5td>
    45. <td>20td>
    46. <td><img src='imgs/del.png' class="delBtn"/>td>
    47. tr>
    48. <tr>
    49. <td><input type="checkbox" />td>
    50. <td>葡萄td>
    51. <td>10td>
    52. <td>5td>
    53. <td>50td>
    54. <td><img src='imgs/del.png' class="delBtn"/>td>
    55. tr>
    56. <tr>
    57. <td><input type="checkbox" />td>
    58. <td>青梅td>
    59. <td>10td>
    60. <td>5td>
    61. <td>50td>
    62. <td><img src='imgs/del.png' class="delBtn"/>td>
    63. tr>
    64. <tr>
    65. <td><input type="checkbox" />td>
    66. <td>人参果td>
    67. <td>10td>
    68. <td>5td>
    69. <td>50td>
    70. <td><img src='imgs/del.png' class="delBtn"/>td>
    71. tr>
    72. <tr>
    73. <td><input type="checkbox" />td>
    74. <td>菠萝蜜td>td>
    75. <td>10td>
    76. <td>5td>
    77. <td>50td>
    78. <td><img src='imgs/del.png' class="delBtn"/>td>
    79. tr>
    80. <tr>
    81. <td><input type="checkbox" />td>
    82. <td>西红柿td>
    83. <td>10td>
    84. <td>5td>
    85. <td>50td>
    86. <td><img src='imgs/del.png' class="delBtn"/>td>
    87. tr>
    88. table>
    89. div>
    90. div>
    91. body>
    92. html>

     3、fruit.css

    1. *{
    2. color:rgb(3, 31, 2);
    3. font-weight: lighter;
    4. }
    5. body{
    6. padding:0;
    7. margin:0;
    8. background-color: rgb(3, 31, 2);
    9. }
    10. #div0{
    11. width:80%;
    12. border:0px solid red;
    13. background-color: rgb(209, 230, 235);
    14. margin-left:10%;
    15. padding-top:48px;
    16. padding-bottom:48px;
    17. margin-top:8px;
    18. }
    19. #div_title{
    20. width:80%;
    21. margin-left:10%;
    22. text-align: center;
    23. font-size:24px;
    24. letter-spacing: 4px;
    25. margin-bottom:16px;
    26. }
    27. #div2{
    28. margin-left:10%;
    29. border:0px solid red;
    30. width:80%;
    31. }
    32. .delBtn{
    33. width:16px;
    34. height:16px;
    35. }
    36. #fruit_tbl , #fruit_tbl td, #fruit_tbl th {
    37. border:1px solid lightgray;
    38. text-align: center;
    39. }
    40. #fruit_tbl{
    41. width:100%;
    42. line-height: 32px;
    43. border-collapse: collapse;
    44. }
    45. .w10{
    46. width:10%;
    47. }
    48. .w15{
    49. width:15%;
    50. }
    51. .w20{
    52. width:20%;
    53. }

    在JS中,使用 event.srcElement 属性可以获取触发事件的元素(即事件的源)。这个属性对于在事件处理函数中对元素进行操作非常有用。例如,可以使用 event.srcElement 来修改元素的样式,添加或删除元素的类等等。

    下面是一个使用 event.srcElement 的例子,当用户单击页面上的任意元素时,会在控制台中输出该元素的 id 属性:

    1. document.addEventListener('click', function(event) {
    2. console.log(event.srcElement.id);
    3. });

    此外,在老版本的 Internet Explorer 中,event.srcElement 是获取事件目标元素(即触发事件的元素)的首选属性,因为 event.target 不被支持。但在现代浏览器中,建议使用 event.target 来获取目标元素。

    event.srcElement 可以用在JS中来获取触发事件的元素。在早期的IE浏览器版本中,该属性被广泛使用来获取事件源元素。 在现代浏览器中,推荐使用 event.target 属性来代替 event.srcElement 属性,因为 event.srcElement 在所有主流浏览器中并不总是支持。

    通过使用 event.srcElement,您可以轻松地确定哪个元素触发了某个事件,并进一步针对该元素执行相应的操作。例如,您可以通过 event.srcElement 修改某个元素的样式或属性,或者为触发该事件的元素添加其他事件监听器来实现更多的功能。

    在 JavaScript 中,event.srcElement 属性通常用于以下目的:

    1. 获取触发事件的元素:event.srcElement 可以返回触发事件的元素对象,也就是事件的目标元素。

    2. 判断事件来自哪个元素:通过检查 event.srcElement 属性,可以判断事件来自哪个元素,进而根据需要进行相应的操作。

    3. 兼容性考虑:event.srcElement 属性在早期的 IE 浏览器中得到了广泛支持,很多旧的网站和代码仍在使用该属性,如果需要兼容旧版 IE 浏览器,就需要使用 event.srcElement 属性。

    需要注意的是,event.srcElement 属性已经被更加标准的 event.target 属性所取代,而且 event.target 属性在现代浏览器中得到了广泛支持,因此建议在编写新代码时使用 event.target 属性,而在兼容旧版 IE 浏览器时再考虑使用 event.srcElement 属性。

  • 相关阅读:
    antd前端上传获取文件的md5, 并结果form表单提交
    内容安全实验——实验一 硬盘分区恢复实践
    抖音短视频账号矩阵seo分发系统--开发源代
    【datawhale202207】强化学习:策略梯度和近端策略优化
    靠这套pytest接口自动化测试框架,击败99%的人
    智汀教你如何用手机远程控制智能门锁
    【生物医学的前沿问题】在MRI扫描中自动识别胃肠病变组织的数学模型
    猿创征文|当我在追光 我与光同航--我与Java的技术成长之路
    perl 对 xml 和 json 的简单应用
    加密大崩盘,Web3游戏到底还有没有未来?5篇论文深度探讨
  • 原文地址:https://blog.csdn.net/m0_65152767/article/details/134428469