`
fuhao9611
  • 浏览: 85374 次
  • 性别: Icon_minigender_1
  • 来自: 陕西 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript例子——计算

阅读更多
customer.js:
/**
 * @author fuhao
 * @param {Object} tbodyid
 * 首先在Html页面上定义一个标准的table模板
 * table的子节点是tbody
 * tbody的子节点是tr
 * tr的子节点是td
 * td的子节点是checkbox和input
 */
// 以table模板为标准,添加新的行的方法
function add(tbodyid){
	if(tbodyid==null){
		alert("该方法需要的参数不正确");
		return ;
	}
	// 得到tbody,也可以使用prototype.js里面的$(tbodyid)
	var tbody = document.getElementById(tbodyid);
	// var tbody = $(tbodyid);
	// 获得tbody下的索引为1的tr
	var trtemplate = tbody.childNodes[1];
	// 得到tr下的td数组
	var tds = trtemplate.childNodes;
	// 得到该tr下所有td数组的长度
	var trlength = tds.length;
	var tr = document.createElement("tr");
	for(var i=0;i<trlength;i++){
		var td = document.createElement("td");
		// 设置td的式样标记
		td.className = tds[i].className;
		var content = tds[i].innerHTML;
		td.innerHTML = content;
		tr.appendChild(td);	
	}
	tbody.appendChild(tr);
}

// 删除选中行的方法
function del(name){
	if(name==null){
		alert("该方法需要的参数不正确");
		return ;
	}
	// 获得数组
	var names = document.getElementsByName(name);
	// 获得数组的长度
	var length = names.length;
	if(length==1){
		alert("请至少保留一条记录");
		return ;
	}
	// 定义一个数组
	var arr = new Array();
	try{
		for(var i=0;i<length;i++){
			if(names[i].checked==true){
				// 将checkbox的父节点(td)的父节点(tr)放入数组里面
				arr.push(names[i].parentNode.parentNode);
			}
		}
	}catch(e){
		alert("捕获到的异常是:"+e);
	}
	if(arr.length==0){
		alert("请至少选择一条删除");
		return ;
	}
	var delsure = confirm("确认要删除所选记录吗?");
	if(!delsure){
		return ;
	}
	for(var j=0;j<arr.length;j++){
		if(arr.length == length){
			alert("请至少保留一条记录");
			return ;
		}
		Element.remove(arr[j]);
	}
}
// 敲回车,则添加新的一行
function addItem(tbodyid){
	// 13代表回车
	if(event.keyCode==13){
		add(tbodyid);
	}
}
// 全部选择
function checkAll(name){
	// 首先获得所有checkbox集合
	var names = document.getElementsByName(name);
	for(var i=0;i<names.length;i++){
		names[i].checked=true;
	}
}
// 取消选择--反选
function cancelCheck(name){
	var names = document.getElementsByName(name);
	var length = names.length;
	for(var i=0;i<length;i++){
		if(names[i].checked){
			names[i].checked = false;
		}else{
			names[i].checked = true;
		}
	}
}

//用于自动补0的方法 如:5--5.00,5.5--5.50
function mend(number){
	var str = number+"";
	if (str.indexOf(".")==-1){ //说明没有小数点
		return str+".00";
	}else{ //说明有小数点
		var tmp = str.substring(str.indexOf(".")+1);
	    if (tmp.length==0) return str+"00";
		if (tmp.length==1) return str+"0";
		if (tmp.length>=2) return str.substring(0,str.indexOf(".")+3);
	}
}

//用于四舍五入的方法
function ForDight(Dight,How) {  
   Dight = Math.round(Dight*Math.pow(10,How))/Math.pow(10,How);  
   return  mend(Dight);  
} 

// 计算(这里以数量作为参照物)
function calc(obj){
	// obj.parentElement获取对象层次中的父对象
	var td = obj.parentElement;
	var tr = td.parentElement;
	var numbers = tr.childNodes[4].childNodes[0].value;       // 数量
	//alert("numbers:"+numbers);
	var faceValue = tr.childNodes[2].childNodes[0].value;     //面值
	//alert("faceValue:"+faceValue);
	var additionValue = tr.childNodes[3].childNodes[0].value; //附赠
	//alert("additionValue:"+additionValue);
	//判断为空或者不为数字
	if(numbers=="" || faceValue=="" || additionValue=="" || isNaN(numbers) || isNaN(faceValue) || isNaN(additionValue)){
		// alert("--你的输入有误,数量为非空正整数,面值和附赠应为非空正数--");
		tr.childNodes[5].childNodes[0].value = "";
		tr.childNodes[6].childNodes[0].value = "";
		tr.childNodes[7].childNodes[0].value = "";
		return ;
	}
	//判断是否小于零或者数量为整数
	if(numbers<=0*1 || faceValue<=0*1 || additionValue<=0*1 || numbers.indexOf(".")!=-1){
		// alert("--你的输入有误,数量为非空正整数,面值和附赠应为非空正数--");
		tr.childNodes[5].childNodes[0].value = "";
		tr.childNodes[6].childNodes[0].value = "";
		tr.childNodes[7].childNodes[0].value = "";
		return ;
	} 
	var faceValues = numbers*faceValue;    //面值金额
	var additionValues = numbers*additionValue;//附赠金额
	var faceValueAll = faceValues+additionValues;  //面值总额
	// 赋值	
	tr.childNodes[5].childNodes[0].value = ForDight(faceValues,2);
	tr.childNodes[6].childNodes[0].value = ForDight(additionValues,2);
	tr.childNodes[7].childNodes[0].value = ForDight(faceValueAll,2);
}

function calcs(obj){
	// obj.parentElement获取对象层次中的父对象
	var td = obj.parentElement;
	var tr = td.parentElement;
	var numbers = tr.childNodes[4].childNodes[0].value;       // 数量
	var price = tr.childNodes[8].childNodes[0].value;		  //单价
	var agio = tr.childNodes[9].childNodes[0].value;		  //折扣
	if(numbers=="" || price=="" || isNaN(numbers) || isNaN(price) || isNaN(agio)){
		alert("--------");
		tr.childNodes[10].childNodes[0].value = "";
		return ;
	}
	if(numbers<=0*1 || numbers.indexOf(".")!=-1 || price<=0*1 || agio<=0*1 || agio>10){
		alert("++++++++");
		tr.childNodes[10].childNodes[0].value = "";
		return ;
	}
	var factValues ;
	if(agio==""){//说明没有填写折扣 
	alert("--说明没有填写折扣--");
		factValues = price*numbers;
		alert("factValue1:"+factValues);
	}else{
	alert("--说明填写折扣了--");
		factValues = price*numbers*agio;
		alert("factValue2:"+factValues);
	}
	alert("factValue3:"+factValues);
	tr.childNodes[10].childNodes[0].value = ForDight(factValues,2);
}

calc.htm:
引用

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JavaScript例子</title>
<script src="js/customer.js"></script>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<a href="#" onclick="add('DispatchItemTable')">增加</a>&nbsp;&nbsp;
<a href="#" onclick="del('checkName')">删除</a>&nbsp;&nbsp;
<a href="#" onclick="checkAll('checkName')">全选</a>&nbsp;&nbsp;
<a href="#" onclick="cancelCheck('checkName')">反选</a>&nbsp;&nbsp;面值金额=面值*数量&nbsp;&nbsp;附赠金额=附赠*数量&nbsp&nbsp;
面值总额=面值金额+附赠金额&nbsp;&nbsp;实收金额=单价*数量*折扣
</p>
<table id="table" align='center' border='1' bordercolor='#0690AE' cellpadding='0' cellspacing='0' style='border-collapse:collapse;'  width='100%'>
  <tbody id="DispatchItemTable">
  <tr>
    <td nowrap class='data_list_th'>序号</td>
    <td class='data_list_th'>卡名称</td>
    <td class='data_list_th'><font color="red">*</font>面值(元)</td>
    <td class='data_list_th'><font color="red">*</font>附赠(元)</td>
    <td class='data_list_th'><font color="red">*</font>数量(枚)</td>
    <td class='data_list_th'>面值金额(元)</td>
    <td class='data_list_th'>附赠金额(元)</td>
<td class='data_list_th'>面值总额(元)</td>
<td class='data_list_th'><font color="red">*</font>单价(元)</td>
<td class='data_list_th'><font color="red">*</font>折扣</td>
<td class='data_list_th'>实收金额(元)</td>
  </tr>
  <tr id="testc">
    <td class='data_list_td'><input type="checkbox" name="checkName" /></td>
    <td class='data_list_td'><input name="cardName" type="text" size="12" value="IC卡" readonly="true" onkeydown="addItem('DispatchItemTable')" /></td>
    <td class='data_list_td'><input name="faceValue" type="text" size="12"  onchange="calc(this);calcs(this)" /></td>
    <td class='data_list_td'><input name="additionValue" type="text" size="12"  onchange="calc(this)" /></td>
    <td class='data_list_td'><input name="cardNumber" type="text" size="12"  onchange="calc(this)" /></td>
    <td class='data_list_td'><input type="text" name="faceValues" size="12" readonly="true" /></td>
    <td class='data_list_td'><input type="text" name="additionValues" size="12" readonly="true" /></td>
<td class='data_list_td'><input type="text" name="faceValuesAll" size="12" readonly="true" /></td>
<td class='data_list_td'><input type="text" name="price" size="12" onchange="calcs(this)" /></td>
<td class='data_list_td'><input type="text" name="agios" size="12" onchange="calcs(this)" /></td>
<td class='data_list_td'><input type="text" name="factValue" size="12" readonly="true" /></td>
  </tr>
</tbody>
</table>
<p>&nbsp;</p>
</body>
</html>
分享到:
评论

相关推荐

    GIS例子——2008奥运奖牌榜地理分布图

    例如,我们可以用C#来处理奖牌数据,计算各国的奖牌总数,然后将这些数据发送到GIS客户端。 AJAX(Asynchronous JavaScript and XML)则是一种在不刷新整个网页的情况下,能够更新部分网页内容的技术。在“2008奥运...

    AE开发——点选的例子

    在本示例中,“AE开发——点选的例子”提供了深入的实践教程,帮助开发者理解和实现点选功能。 首先,我们需要理解AE开发的基础。Adobe After Effects是一款强大的视觉特效和动态图形编辑软件,常用于电影、电视和...

    JavaScript与JQuery实现全选例子

    无论是使用原生JavaScript还是jQuery来实现全选功能,关键是理解其中的核心逻辑——即如何根据全选按钮的状态来更新所有复选框的状态,以及如何根据所有复选框的状态来更新全选按钮的状态。此外,根据项目的实际需求...

    JavaScript学习书籍PDF格式

    首先,书名“JavaScript The Good Parts”揭示了本书的重点——探讨JavaScript语言中最优秀、最实用的部分。作者很可能是想引导读者避开语言的一些陷阱和复杂性,专注于那些能够提高生产力和代码质量的关键概念。O'...

    javascript经典特效---移动的导航菜单.rar

    过度频繁的DOM操作会消耗大量计算资源,因此在编写JavaScript代码时,可以使用防抖(debounce)或节流(throttle)技术来限制事件处理函数的执行频率,从而提高页面性能。 具体到“移动的导航菜单.htm”这个文件,它很...

    javascript学习之循环结构(4)—— do while循环结构

    2. **循环变量**:通常在循环体内会有一个或多个变量来跟踪循环状态,如上面例子中的`i`,这些变量需要在循环中适当更新,以确保循环能正确终止。 3. **跳出循环**:如果在循环体内部满足某个条件需要提前退出循环,...

    Delphi XE6调用javascript

    本文将详细介绍如何在 Delphi XE6 中利用 TWebBrowser 组件来调用 JavaScript,并通过一个具体的示例——展示 Google 地图 API 的应用来深入探讨这一过程。 #### Delphi XE6 中 TWebBrowser 组件介绍 TWebBrowser ...

    HTML——烟花(追光者).zip

    这通常涉及定时器(如`setInterval`或`requestAnimationFrame`)来实现帧动画,以及数学函数来计算烟花轨迹、颜色变化等。JavaScript库如jQuery或Three.js也可能被用来简化和优化动画的实现,尤其是处理复杂的数学...

    薪资实时计算.rar

    【jQuery薪资计算器】是一款用于实时计算每日薪资收入的前端应用,它基于JavaScript的库——jQuery构建,能够帮助用户快速、方便地了解他们的每日工资状况。这个应用的核心功能是根据输入的工作天数、日薪等信息,...

    javascript经典特效---游动的文字.rar

    JavaScript经典特效——游动的文字,是一种常见的网页动态效果,它能吸引用户注意力并提升网站的交互体验。在网页设计中,动态文字常用于标题、标语或者公告等位置,通过不断移动或滚动的方式呈现,使信息更加生动...

    JavaScript开发实例教程

    "JavaScript网页开发实例教程"很可能包含了以上所有内容的实例,通过实践这些例子,读者将能够更好地理解JavaScript的工作原理,以及如何将其应用于实际网页开发中。书中可能还会涉及AJAX(异步JavaScript和XML)...

    怎样搭建三层架构——三层架构的小例子

    在这个例子中,可能包含一系列的HTML、CSS和JavaScript文件,用于构建用户界面,以及与后端通信的接口。 2. 业务逻辑层(Business Logic Layer): 业务逻辑层是核心的处理中心,实现了所有业务规则和流程。它处理...

    网页计算器(javascript版)_v1.0_.rar

    在这个例子中,可能有一个用于显示计算结果的`&lt;div&gt;`元素,以及一组表示数字和运算符的`&lt;button&gt;`元素。 2. **事件监听**:JavaScript通过添加事件监听器来响应用户的点击操作。例如,当用户点击数字按钮时,...

    物理问题炮弹的射程学习教案.pptx

    首先,文档以一个具体的例子——由初速度和发射仰角求解炮弹射程的问题作为起点。这涉及到物理学中的抛体运动,需要计算在重力作用下的水平位移。JavaScript代码可以方便地实现这样的计算,模拟导弹或炮弹的轨迹。在...

    QUnit前台JS测试框架——实例

    在这个“QUnit前台JS测试框架——实例”中,我们将探讨如何使用QUnit进行JavaScript的单元测试,以及如何通过具体的测试实例来验证代码的正确性。 首先,了解QUnit的基本结构是非常重要的。一个QUnit测试通常由若干...

    javascript经典特效---找相同的图片.rar

    总的来说,JavaScript经典特效——找相同的图片游戏,不仅是一个有趣的练习,也是学习JavaScript实际应用的好例子,涵盖了网页动态效果创建、用户交互处理等多个重要方面。通过深入研究这个案例,开发者可以提升...

Global site tag (gtag.js) - Google Analytics