window.onload=function (){
//当页面加载完成,我们需要绑定各种事件
//根据ID获取表格
var fruitTbl = document.getElementById("tbl_fruit");
var rows=fruitTbl.rows;
for(var i=1;i<rows.length-1;i++){
var tr=rows[i];
//绑定事件,并不是执行事件,所以不能加小括号
tr.onmouseover=showBGColor;
tr.onmouseout=clearBGColor;
//获取某一行所有单元格
var tds=tr.cells;
var priceID=tds[1];
priceID.onmouseover=showHand;
//绑定鼠标点击单价单元格的事件(可以对单价进行编辑)
priceID.onclick=editPrice;
//绑定删除小图标的点击事件
var img=tds[4].firstChild;
if(img&&img.tagName=="IMG"){
img.onclick=delFruit;
}
}
document.getElementById("addBtn").onclick=addFruit;
}
function addFruit(){
var fname=document.getElementById("fname").value;
var price= parseInt(document.getElementById("price").value);
}
function delFruit(){
if(event&&event.srcElement&&event.srcElement.tagName=="IMG"){
//alert表示弹出一个对话框,只有确定按钮
//confirm表示弹出一个对话框,有确定和取消按钮,点击确定,返回true,点击取消,返回false
if(window.confirm("是否确认删除当前库存记录?")){
var img=event.srcElement;
var tr=img.parentElement.parentElement;
var fruitTbl=document.getElementById("tbl_fruit");
fruitTbl.deleteRow(tr.rowIndex);
updateZJ();
}
}
}
function editPrice(){
if(event&&event.srcElement&&event.srcElement.tagName=="TD"){
var priceID=event.srcElement;
//判断当前priceID有子节点,而且第一个子节点是文本节点
if(priceID.firstChild&&priceID.firstChild.nodeType==3){
//innerText:表示设置或者获取当前节点的内部文本
var oldPrice=priceID.innerText;
priceID.innerHTML="<input type='text' size='4'/>";
//<td><input type='text' size='4'/></td>
var input=priceID.firstChild;
if(input.tagName=="INPUT"){
input.value=oldPrice;
//表示选中内部的文本
input.select();
//绑定输入框失去焦点事件,失去焦点就更新单价
input.onblur=updatePrice;
//在输入框上绑定键盘按下的事件,此处需要保证用户输入的是数字
input.onkeydown=ckInput;
}
}
}
}
//检验键盘按下的值的方法
function ckInput(){
var kc=event.keyCode;
//0-9的asc码:48-57
//backspace:8
//enter:13
//console.log(kc)
if(!((kc>=48&&kc<=57)||kc==8||kc==13)){
event.returnValue=false;
}
if(kc==13){
event.srcElement.blur();
}
}
function updatePrice(){
if(event&&event.srcElement&&event.srcElement.tagName=="INPUT"){
var input=event.srcElement;
var newPrice=input.value;
//input节点的父节点是td
var priceTD=input.parentElement;
priceTD.innerText=newPrice
//更新当前行的小计,td的父元素是tr
updateXJ(priceTD.parentElement);
}
}
function updateXJ(tr){
if(tr&&tr.tagName=="TR"){
var tds=tr.cells;
var price=tds[1].innerText;
var count=tds[2].innerText;
//innerText获取的是字符串类型,所以需要parseInt转换
var XJ=parseInt(price)*parseInt(count);
tds[3].innerText=XJ;
//更新总计
updateZJ();
}
}
function updateZJ(){
//获取table
var fruitTble=document.getElementById("tbl_fruit");
var rows=fruitTble.rows;
var sum=0;
for(var i=1;i<rows.length-1;i++){
var tr=rows[i];
//把内部的文本进行类型强制转换
//NaN:not a number
var xj=parseInt(tr.cells[3].innerText);
sum=sum+xj;
}
rows[rows.length-1].cells[1].innerText=sum;
}
//当鼠标悬浮的时候,显示背景颜色
function showBGColor(){
//当前发生的事件
//event.srcElement:事件源
//alert(event.srcElement);
//alert(event.srcElement.tagName);--->TD
if(event&&event.srcElement&&event.srcElement.tagName=="TD"){
var td=event.srcElement;
//获取td的父元素
var tr=td.parentElement;
//如果想要通过js来设置某个结点的样式,就需要加上.style
tr.style.backgroundColor="pink";
//tr.cells表示获取这个tr中所有的单元格
var tds=tr.cells;
for(var i=0;i<tds.length;i++){
tds[i].style.color="yellow";
}
}
}
//当鼠标离开的时候,恢复原始样式
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="gray";
}
}
}
//当鼠标悬浮在单价单元格的时候,显示手势
function showHand(){
if(event&&event.srcElement&&event.srcElement.tagName=="TD"){
var td=event.srcElement;
//cursor:光标
td.style.cursor="hand";
}
}