JavaScript

  1. Javascript : 客户端的一个脚本语言

  2. js是一门弱类型语言,变量的数据类型由后面赋的值决定

  3. 数据类型:

    1. 基本数据类型:数值,字符,布尔。。。
    2. 引用数据类型:new 出来的对象,数组。。
  4. js的定义方法类似于python,没有返回值类型,没有参数类型,也不确定有没有返回值

    function hello(num1,num2,name) {if(num1>num2){return "hello to"+name;}else{alert("Hello")}}
    
<script language="JavaScript">var str = "hello world";// 打印alert(str)// 引用数据类型var persion = new Object();persion.pid = "p001";persion.pname = "xiaowang"alert(persion.pname)// js方法function hello1(name){return "hello to"+name;}function hello(num1,num2,name) {if(num1>num2){return "hello to"+name;}else{alert("Hello")}}
</script>

初学时候,html中会混杂着和JS的绑定,代码如下:

涉及到的css在上一章

javascript-01.js

// 当鼠标悬浮时,显示背景颜色
function showBGColor(){// event:当前发生的事件//event.srcElement事件源// alert(event.srcElement );// alert(event.srcElement.tagName);if(event && event.srcElement &&event.srcElement.tagName=="TD"){var td = event.srcElement;//td.parentElement 获取td的父元素var tr = td.parentElement;// 如果想要通过js代码设置某节点的样式 则需要 .styletr.style.backgroundColor = "navy";//tr.ceils 表示获取这个tr中的所有单元格var tds = tr.cells;for(var i=0;i<tds.length;i++){tds[i].style.color="white";}}
}
// 当鼠标离开时,恢复原始样式
function clearBGColor(){if(event && event.srcElement && event.srcElement.tagName=="TD"){var td = event.srcElement;var tr = td.parentElement;tr.style.backgroundColor="transparent";var tds = tr.cells;for(var i=0;i<tds.length;i++){tds[i].style.color="threeddarkshadow";}}
}// 当鼠标悬浮在单价单元格时候,显示手势
function showHand(){if(event && event.srcElement && event.srcElement.tagName=="TD"){var td = event.srcElement;td.style.cursor="hand";}
}

html代码

 <html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" href="css-demo02.css"><script type="text/javascript" src="javascript-01.js"></script>
</head>
<body><div id="div_container"><div id="div_fruit_list"><table id="tbl_fruit"><tr><th>名称</th><th>单价</th><th>数量</th><th>小计</th><th>操作</th></tr>
<!--            onmouseover: 当鼠标放在这个上面时候--><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>苹果</td><td onmouseover="showHand()">100</td><td>5</td><td>500</td><td>删除</td></tr><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>香蕉</td><td onmouseover="showHand()">100</td><td>5</td><td>500</td><td>删除</td></tr><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>鸭梨</td><td onmouseover="showHand()">100</td><td>5</td><td>500</td><td>删除</td></tr><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>西瓜</td><td onmouseover="showHand()">100</td><td>5</td><td>500</td><td>删除</td></tr><tr><td>总计</td><td colspan="4">2500</td></tr></table></div></div>
</body>
</html>

接下来对上面的进行优化,使html中仅有html代码 去掉多余的绑定

  1. 去掉html文件中的绑定事件
  2. 在JS中增加如下代码:
// window 代表当前窗口
//当窗口加载的时候执行这个匿名函数
window.onload=function (){// 当页面加载完成的时候 我们需要绑定各种事件// 根绝 ID 获取表格var fruitTbl = document.getElementById("tbl_fruit");// 获取表格中的所有行var rows = fruitTbl.rows;for(var i=0;i<rows.length;i++){var tr = rows[i];//1.绑定鼠标悬浮设置背景颜色tr.onmouseover=showBGColor;tr.onmouseout=clearBGColor;// 获取tr 这一行所有的单元格var cells = tr.cells;var priceID = cells[1];//2.绑定鼠标悬浮在单价单元格变收拾的事件priceID.onmouseover=showHand;}
}

更新单价

//3.绑定鼠标点击单价单元格的事件
priceID.onclick=editPrice;
//当鼠标点击单元格时进行价格编辑
function editPrice(){if(event && event.srcElement && event.srcElement.tagName=="TD"){var priceTD = event.srcElement;// 判断 当前 priceTD 有子节点且为文本节点 TextNode对应的是3 ElementNode对应的是1if(priceTD.firstChild && priceTD.firstChild.nodeType==3) {//innerText 表示设置或者获取当前节点的内部文本var oldPirce = priceTD.innerText;// innerHTML 表示设置当前节点的内部HTMLpriceTD.innerHTML="<input type='text' size='4'/>"var input = priceTD.firstChild;if(input.tagName=="INPUT"){input.value = oldPirce;// 选中输入框文本input.select();//4.绑定输入框失去焦点,更新单价input.onblur=updatePrice;}}}
}function updatePrice(){if(event && event.srcElement && event.srcElement.tagName=="INPUT"){var input = event.srcElement;var newPrice = input.value;//input节点的父节点是tdvar priceTD = input.parentElement;priceTD.innerText=newPrice;// 更新当前行的小计这一个格子的值// priceTD.parentElement td 的父元素是trupdateXJ(priceTD.parentElement);}
}// 更新指定行的小计
function updateXJ(tr){if(tr && tr.tagName=="TR"){var tds = tr.cells;var price = tds[1].innerText;var count = tds[2].innerText;var xj = parseInt(price)*parseInt(count);tds[3].innerText = xj;// 更新总计updateZJ();}
}function updateZJ(){var fruitTbl = document.getElementById("tbl_fruit");var rows = fruitTbl.rows;var sum = 0;for(var i=1;i<rows.length-1;i++){var tr = rows[i];var xj = parseInt(tr.cells[3].innerText);sum = sum + xj;}rows[rows.length-1].cells[1].innerText = sum;
}

删除某条记录操作

// 7. 绑定删除小图标的点击事件
var img = cells[4].firstChild;
if(img && img.tagName=="IMG"){// 绑定单击事件img.onclick=delFruit;
}

在editPrice()中加入如下

//8. 在输入框上绑定键盘摁下的事件,此处我需要保证用户输入的是数字
input.onkeydown=ckInput;
function delFruit(){if(event && event.srcElement && event.srcElement.tagName=="IMG"){// alert 表示弹出一个对话框,只有确定按钮,if(window.confirm("是否确认删除当前库存记录")){var img = event.srcElement;var tr = img.parentElement.parentElement;var fruitTbl = document.getElementById("tbl_fruit");fruitTbl.deleteRow(tr.rowIndex);updateZJ();}}
}
// 检验键盘摁下的值的方法
function ckInput(){var kc = event.keyCode;// 0 ~ 9// console.log(kc)if(!((kc>=48 && kc<=57) || kc==8 || kc==13)){event.returnValue=false;}if(kc==13){event.srcElement.blur();}
}

JavaScript学习记录相关推荐

  1. JavaScript学习记录01快速入门、基本语法、严格检查模式

    文章目录 JavaScript学习记录01快速入门.基本语法.严格检查模式 1.1什么是JavaScript 1.2认识JavaScript框架 1.3快速入门 1.4基本语法入门 1.5数据类型简介 ...

  2. JavaScript学习记录总结(四)——js函数的特殊性

    <script type="text/javascript">   //当局部变量与全局变量 重名的时候    var v="全局变量";//定义全 ...

  3. JavaScript学习记录总结(十)——几个重要的BOM对象

    一.弹出框 <script type="text/javascript">     window.οnlοad=function(){          window. ...

  4. [JavaScript学习记录] 首次运用于网页,做一个简易利息计算器!!!

    目录 事件 错误处理 1.隐藏/显示文字 2.简单的加法计算器 效果: ★★★3.简易利息计算器 效果: ​​​​​​​ 事件 javascript允许html与用户交互的行为 例如:鼠标点击事件 & ...

  5. JavaScript学习记录-正则表达式(2)

    获取控制 正则表达式元字符是包含特殊含义的字符.它们有一些特殊功能,可以控制匹配模式的方式.反斜杠后的元字符将失去其特殊含义,反斜杠后为模式修饰符的可选参数. (1)字符类:单个字符和数字 元字符/元 ...

  6. JavaScript学习记录十七

    apply和call方法的使用 //apply和call的使用     //作用:可以改变this的指向 //apply和call方法中如果没有传入参数,或者是传入的是null,那么调用该方法的函数对 ...

  7. JavaScript学习记录七

    Typora查看文档工具 Document对象 * JavaScript分三个部分:     * ECMAScript标准:JS的基本的语法     * DOM:Document Object Mod ...

  8. HTML+CSS+JavaScript学习记录

    Internet相关知识 TCP/IP: 传输控制协议/网际协议 TCP/IP通信是点对点的,即通信是网络中一台主机与另一台主机之间的. 在TCP/IP中,HTTP协议用于浏览网页,FTP协议用于In ...

  9. JavaScript学习记录 (三) 函数和对象

    1.函数 使用 function 关键字来声明函数 函数的命名规则和变量一样 JS没有函数签名,所以没有函数重载 JS函数中的所有参数都是值传递:不能通过引用传递 // 定义函数 function t ...

最新文章

  1. linux 内核调试信息在哪里,Linux kernel debug技巧----开启DEBUG选项
  2. Koa 本地搭建 HTTPS 环境
  3. 状态码302.。。。
  4. fatal error LNK1169: 找到一个或多个多重定义的符号
  5. Android 微信支付步骤
  6. flash与IPhone
  7. 360云计算|2019年度精选文章
  8. Linux 目录配置标准:FHS
  9. MYSQL—— 基础入门,select 查询涉及到的关键字组合详解(进阶篇)
  10. Matlab的语言概述
  11. 毁掉一家公司最好的方式,就是跟员工讨价还价
  12. 支持向量机的特点,优点缺点
  13. Microsoft Excel 教程:如何在 Excel 中使用 COUNTIF 函数?
  14. IDEA打开多个窗口
  15. 驱动调试-摄像头部分
  16. 药店java源码_基于jsp的药店-JavaEE实现药店 - java项目源码
  17. 站长在线零基础Python完全自学教程20:在Python中使用正则表达式完全解读
  18. autocad map 3d 2022 地图绘制软件
  19. AI相关领域期刊会议列表
  20. Julia学习--介绍

热门文章

  1. 计算机物理地址和逻辑地址的区别和联系,物理地址和逻辑地址的区别
  2. 腾讯云服务器怎么开通端口?以80端口为例轻量和CVM教程合集
  3. 【自然语言处理】2. Attention实现详细解析( tfa, keras 方法调用源码分析 自建网络)
  4. js判断浏览器内核(ie11特殊判断)
  5. js对象怎么通过value找到key
  6. 一、在全系1000名学生中,征集慈善募捐, 当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
  7. ul阻燃标准有几个等级_ul94阻燃等级标准[最新]
  8. linux下查看磁盘分区的文件系统格式
  9. 互联网怎样为考生服务 百度给出了一份标准答案
  10. Shell编程案例:抽奖程序(从班级名单里随机抽取学生名字)