Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
js的使用_javascript好学吗,希望能够帮助你!!!。
目标
使用js来完成一些页面的简单事件绑定。
要求和知识点
1.鼠标悬浮在某一行时,背景颜色发生改变
知识点:
①onmouseover 表示鼠标悬浮事件。
②使用 事件="方法名()" 为组件绑定事件。
③event代表一个事件。
④event.srcElement代表发生事件的组件(存在事件传递的效果)。
⑤event.srcElement.tagName获取事件组件的名字。
⑥event.srcElement.parentElement代表发生事件的组件的父组件。
⑦对于表格的一行(tr)来说,使用tr.cells来获取这一行的所有列。
⑧使用 组件.style.参数名 来设置组件的样式。
2.鼠标离开时,相应的行恢复原来状态
知识点:
①onmouseout 表示鼠标离开事件。
3.鼠标悬浮在单价单元格时,鼠标图案变成手的形状
知识点:
①组件.style.cursor 用来设置鼠标图案。
4.将js代码从html代码中抽离出来
知识点:
①window对象表示当前窗口。
②window.onload表示当窗口加载完成。后面可以赋值为一个匿名函数,用来初始化页面的各个组件和事件的绑定。
③document表示当前窗口的html文件。
④document.getElementById()可以用来根据id获取HTML文件中的一个标签。
⑤对于一个表格对象(table)来说,可以使用 对象名.rows 来获取这个表格的所有行。
⑥使用 对象名.事件=方法名 来为指定标签绑定一个事件。
5.当点击单价单元格时进行价格编写,并更新表中所有数据
知识点:
①onclick 表示鼠标点击事件。
②使用 节点对象名.firstChild 来获取节点的第一个子节点。
③使用 节点对象名.nodeType 来获取节点的节点类型,TextNode类型(文本类型)对应的是3,ElementNode类型(标签类型)对应的是1。
④节点对象名.innerText 表示设置或获取当前节点的内部文本。
⑤节点对象名.innerHTML 表示设置当前节点的内部HTML。
⑥input.select() 表示选中当前input对象的文字。
⑦onblur 表示失去焦点事件。
⑧innerText获取的是字符串类型,运算需要使用 parseInt() 来将其进行转换。
6.点击删除图标删除对应行
知识点:
①对于一个表对象来说,可以使用 对象名.deleteRow(int index) 来删除指定索引的行。
②对于一个行对象来说,可以使用 对象名.rowIndex 来获取该行所对应的索引。
③使用 window.confirm("文字内容") 来获取一个选择对话框。
7.确保输入的是数字
知识点:
①onkeydown 表示键盘按下事件。
②onkeydown.keyCode 表示获取键盘按下的键值。
③onkeydown.returnValue 表示键盘按下是否有反应。
8.点击按钮添加一行
知识点:
①对于表格对象来说使用 对象名.insertRow(index) 来在指定索引位置插入一行。
②对于一行对象来说使用 对象名.insertCell(index) 来在指定索引插入一个单元格。
代码实现
HTML代码
<html>
<head>
<title>水果库存系统</title>
<meta charset="utf-8">
<link rel="stylesheet" href="css/cssCode1.css">
<script type="text/javascript" src="js/jsCode2.js"></script>
</head>
<body>
<div id="container_div">
<div id="table_div">
<table id="table">
<tr>
<th class="w20">名称</th>
<th class="w20">单价</th>
<th class="w20">数量</th>
<th class="w20">小计</th>
<th class="w20">操作</th>
</tr>
<tr>
<td>苹果</td>
<td>5</td>
<td>10</td>
<td>100</td>
<td><img src="imgs/删除.jpg" class="img"></td>
</tr>
<tr>
<td>菠萝</td>
<td>6</td>
<td>4</td>
<td>90</td>
<td><img src="imgs/删除.jpg" class="img"></td>
</tr>
<tr>
<td>香蕉</td>
<td>6</td>
<td>8</td>
<td>667</td>
<td><img src="imgs/删除.jpg" class="img"></td>
</tr>
<tr>
<td>西瓜</td>
<td>3</td>
<td>8</td>
<td>20</td>
<td><img src="imgs/删除.jpg" class="img"></td>
</tr>
<tr>
<td>总计</td>
<td colspan="4">999</td>
</tr>
</table>
</div>
</div
</body>
</html>
CSS代码
body{ margin:0; pddding:0; background-color:#; } div{ position:relative; float:left; } #container_div{ width:80%; height:100%; margin-left:10%; padding:0; float:left; border:0px solid blue; background-color: honeydew; border-radius:8px; } #table_div{ width:100%; border:0px solid red; } #table{ width:60%; line-height:28px; margin-top:120px; margin-left:20%; } #table, #table tr,#table th,#table td{ border:1px solid gray; border-collapse:collapse; text-align:center; font-size:16px; font-family:"黑体"; font-weight:lighter; } .img{ width:24px; height:24px; } .w20{ width:20%; }
JavaScript代码
//4.将js代码从HTML文件中抽离出来 window.onload=function(){//窗口加载完成绑定一个匿名函数 updateZJ();//更新总计 var table=document.getElementById("table");//获取表格 var trs=table.rows;//获取所有行 for(var i=1;i<trs.length-1;i++){//给列绑定事件 trs[i].onmouseover=showBgColor;//鼠标悬浮事件(修改背景颜色) trs[i].onmouseout=clearBgColor;//鼠标离开事件(恢复背景颜色) var tds=trs[i].cells;//获取所有单元格 tds[1].onmouseover=showHand;//鼠标悬浮事件(将鼠标图案变成一个手) tds[1].onclick=updateDJ;//鼠标点击事件(更新单价) tds[4].onclick=deleterow;//鼠标点击事件(删除行) } } //更新总计 function updateZJ(){ var table=document.getElementById("table"); var trs=table.rows; var sum=0; for(var i=1;i<trs.length-1;i++){ var tds=trs[i].cells; var newxj=parseInt(tds[1].innerText)*parseInt(tds[2].innerText); tds[3].innerText=newxj; var newsum=parseInt(tds[3].innerText); sum=sum+newsum; } trs[trs.length-1].cells[1].innerText=sum; } //1.更新背景 function showBgColor(){ if(event&&event.srcElement&&event.srcElement.tagName=="TD"){//判断是否是指定的节点 var tr=event.srcElement.parentElement;//获取行 tr.style.backgroundColor="navy";//设置行背景色 var tds=tr.cells;//获取改行的所有单元格 for(var i=0;i<tds.length;i++){ tds[i].style.color="white";//设置单元格字体颜色 } } } //2.恢复背景 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";//设置单元格字体颜色 } } } //3.显示手 function showHand(){ if(event&&event.srcElement&&event.srcElement.tagName=="TD"){ event.srcElement.style.cursor="hand";//将鼠标图案变成一个手 } } //5.点击单价更新单价 function updateDJ(){ if(event&&event.srcElement&&event.srcElement.tagName=="TD"){ if(event&&event.srcElement.firstChild&&event.srcElement.firstChild.nodeType=="3"){//确保第一个子节点是文字 var td=event.srcElement;//获取单元格 var oldvalue=td.innerText;//获取单元格里面数据 td.innerHTML="<input type='text' size='4'/>";//设置内部HTML var input=td.firstChild;//获取内部HTML标签 if(input.tagName=="INPUT"){ input.value=oldvalue;//将原有值赋值给新节点 input.select();//文字自动被选中 input.onkeydown=ckInput;//绑定键盘按下事件 input.onblur=updateXJ;//更新小计 } } } } //更新小计 function updateXJ(){ if(event&&event.srcElement&&event.srcElement.tagName=="INPUT"){ var input=event.srcElement; var td=input.parentElement; var value=input.value; td.innerText=value; updateZJ(); } } //6.删除行 function deleterow(){ if(event&&event.srcElement&&event.srcElement.tagName=="IMG"){ var img=event.srcElement;//获取发生事件的节点 var table=document.getElementById("table");//获取表格 if(window.confirm("是否删除")){//删除提示 var index=img.parentElement.parentElement.rowIndex;//获取行索引 table.deleteRow(index);//删除行 updateZJ();//更新总计 } } } //7.确保按下的是数字 function ckInput(){ var keyCode=event.keyCode;//获取键值 if(!( ( keyCode>=48 && keyCode<=57 ) || keyCode==8 || keyCode==13 )){ event.returnValue=false;//不是对应键不做响应 } if(keyCode==13){ event.srcElement.blur();//失去焦点 } }
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章