当前位置: 首页 > news >正文

JS-项目实战-更新水果单价更新小计更新总计

1、fruit.js

//当页面加载完成后执行后面的匿名函数
window.onload = function () {//get:获取     Element:元素    By:通过...方式//getElementById()根据id值获取某元素let fruitTbl = document.getElementById("fruit_tbl");//table.rows:获取这个表格的所有的行,返回数组let rows = fruitTbl.rows;//从 1 开始,因为 第 0 行是表头,不需要绑定事件for (let i = 1; i < rows.length-1; i++) {let tr = rows[i];//事件动态绑定tr.onmouseover = showBGColor;tr.onmouseout = clearBGColor;//cell:单元格、细胞//获取这一行的所有的单元格let tds = tr.cells;let priceTD = tds[2];//绑定鼠标悬浮事件priceTD.onmouseover = showHand;//绑定点击事件priceTD.onclick=editPrice}zj();
};
editPrice = function () {let priceTD = event.srcElement;//inner:在...内部let oldPrice = priceTD.innerText;//innerHTML:在节点内部填充一段HTML代码//priceTD.innerHTML = "<input type='text' size='2' value='"+oldPrice+"'/>";priceTD.innerHTML = "<input type='text' size='2'/>";/*** <td><input type="text" size="2"/></td>* first:第一个 child:孩子* firstChild:第一个子节点* @type {ActiveX.IXMLDOMNode | ChildNode | (() => (Node | null))}*/let priceInput = priceTD.firstChild;priceInput.value = oldPrice;priceInput.select();//绑定失去焦点事件priceInput.onblur = updatePrice;
};
updatePrice = function () {let priceInput = event.srcElement;let newPrice = priceInput.value;let priceTD = priceInput.parentElement;priceTD.innerText = newPrice;xj(priceTD.parentElement)
};
xj = function (tr) {if (tr && tr.tagName == "TR") {let tds = tr.cells;let priceTD = tds[2];let fcountTD = tds[3];let xjTD = tds[4];let price = parseInt(priceTD.innerText);let fcount = parseInt(fcountTD.innerText);let xj = price*fcount;xjTD.innerText = xj;//同时更新总计zj();}
};
zj = function () {let fruitTbl = document.getElementById("fruit_tbl");let rows = fruitTbl.rows;let total = 0;for (let i = 1; i < rows.length - 1; i++) {let tr = rows[i];let xj = parseInt(tr.cells[4].innerText);total += xj;}rows[rows.length-1].cells[1].innerText = total;
};
function showHand() {let priceTD = event.srcElement;//cursor光标priceTD.style.cursor = "pointer";
}
function showBGColor() {//window.event表示当前发生的事件 ”window.“可以省略// console.log(window.event);// alert(window.event);let obj = window.event.srcElement;//alert(obj);//console.log(obj);   //发现obj是td,而不是tr。事件传递现象let td=obj;//parentElement:父元素   td的父元素是tr。tr有很多td子元素let tr = td.parentElement;tr.style.backgroundColor = "purple";
}
function clearBGColor() {let td = window.event.srcElement;let tr = td.parentElement;tr.style.backgroundColor = "transparent";
}

2、fruit.html 

<!DOCTYPE html>
<html lang="zh_CN">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>js-DOM/BOM实战</title><link href="style/fruit.css" rel="stylesheet"></link><script src="js/鼠标悬浮和离开事件.js"></script>
</head>
<body><div id="div0"><div id="div_title">欢迎使用水果库存系统</div><div id="div2"><table id="fruit_tbl"><tr><th class="w10"><input type="checkbox" /></th><th class="w20">名称</th><th class="w20">单价</th><th class="w20">数量</th><th class="w20">小计</th><th class="w10">操作</th></tr><!-- on:当...时候  mouse:鼠标  over:在...上--><!--当鼠标悬浮在这个tr上时,调用showBGColor()这个方法--><tr><td><input type="checkbox" /></td><td>苹果</td><td>5</td><td>2</td><td>10</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" /></td><td>菠萝</td><td>3</td><td>5</td><td>15</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" /></td><td>哈密瓜</td><td>4</td><td>5</td><td>20</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" /></td><td>葡萄</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" /></td><td>青梅</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" /></td><td>人参果</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" /></td><td>菠萝蜜</td></td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" /></td><td>西红柿</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td colspan="2">总结:</td><td colspan="4">0</td></tr></table></div></div>
</body>
</html>

3、fruit.css

*{color:rgb(3, 31, 2);font-weight: lighter;
}
body{padding:0;margin:0;background-color: rgb(3, 31, 2);
}
#div0{width:80%;border:0px solid red;background-color: rgb(209, 230, 235);margin-left:10%;padding-top:48px;padding-bottom:48px;margin-top:8px;
}
#div_title{width:80%;margin-left:10%;text-align: center;font-size:24px;letter-spacing: 4px;margin-bottom:16px;
}
#div2{margin-left:10%;border:0px solid red;width:80%;
}
.delBtn{width:16px;height:16px;
}
#fruit_tbl , #fruit_tbl td, #fruit_tbl th {border:1px solid lightgray;text-align: center;
}
#fruit_tbl{width:100%;line-height: 32px;border-collapse: collapse;
}
.w10{width:10%;
}
.w15{width:15%;
}
.w20{width:20%;
}

相关文章:

  • 快速构建高质量中文APP登录注册页面Figma源文件
  • Linux基本指令及周边(第一弹)
  • BeautifulReport测试报告框架
  • 计算机网络的性能指标
  • IDEA 2023搭建 SpringMVC +FreeMarker+JDBC
  • 【python】均值、中值和高斯滤波详解和示例
  • 以程序员的身份使用curl获取速卖通详情
  • 第四章 将对象映射到 XML - 异常
  • 读书笔记:彼得·德鲁克《认识管理》第21章 企业与政府
  • Spring JdbcTemplate Junit 测试 - ResultSetExtractor/RowMapper
  • 元数据管理,数字化时代企业的基础建设
  • make的内置变量
  • echarts 实现同一组legend控制两个饼图示例
  • QT小记:The QColor ctor taking ints is cheaper than the one taking string literals
  • 2023.11.14 关于 Spring Boot 创建和使用
  • [case10]使用RSQL实现端到端的动态查询
  • 【css3】浏览器内核及其兼容性
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • CSS实用技巧干货
  • IDEA常用插件整理
  • Java基本数据类型之Number
  • Linux gpio口使用方法
  • mysql中InnoDB引擎中页的概念
  • PHP的Ev教程三(Periodic watcher)
  • Redux 中间件分析
  • Redux系列x:源码分析
  • storm drpc实例
  • 大整数乘法-表格法
  • 机器学习 vs. 深度学习
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 双管齐下,VMware的容器新战略
  • 说说动画卡顿的解决方案
  • 详解移动APP与web APP的区别
  • 数据可视化之下发图实践
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​520就是要宠粉,你的心头书我买单
  • ​configparser --- 配置文件解析器​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #Linux(make工具和makefile文件以及makefile语法)
  • #mysql 8.0 踩坑日记
  • $jQuery 重写Alert样式方法
  • (4)事件处理——(7)简单事件(Simple events)
  • (C++)八皇后问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Java数据结构)ArrayList
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (算法)前K大的和
  • (一)基于IDEA的JAVA基础1
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ../depcomp: line 571: exec: g++: not found
  • .NET Framework杂记
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET关于 跳过SSL中遇到的问题
  • .net项目IIS、VS 附加进程调试
  • .net中调用windows performance记录性能信息