js项目实战(弹性预算规则)

js项目实战(弹性预算规则)

HTML代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gbk">
		<title>Untitled Document</title>
		<script src="util.js"></script>

	</head>
	<body>
		<table  width="100%" height="100%"  border = "1"    >
			<tr>
				<td align="center"  >
					<input type="button"  value="删除"   οnclick="delRow();"  >
				</td>
				<td align="center"  >
					弹性预算规则:<input type="button"  value="添加"  οnclick="addRow();"    >
				</td>
			</tr>
			<tr>
				<table   id="table1" width="100%" height="100%"  border = "1"  >
					<tr id="tr0" >
						<td align="center"  > 
						</td>
						<th align="center"  >编码</th>
						<th align="center"  >弹性计算规则</th>	
						<th align="center"  >摘要</th>
						<th align="center"  >参数</th>
						<th align="center"  >说明</th>
					</tr>
					<tr  id="tr1">
						<td align="center"  >
							<input type="checkbox"   name="cb1" value="111"  οnclick="chaValue(this);" >
						</td>
						<td align="center"  >111</td>
						<td align="center"  >按人均标准求和</td>	
						<td align="center"  >办公用品人月每月10元</td>
						<td align="center"  >com.bjsxt.test</td>
						<td align="center"  >办公用品预算科目弹性预算</td>
					</tr>
					<tr  id="tr2">
						<td align="center"  >
							<input type="checkbox"  name="cb1" value="112"  οnclick="chaValue(this);"  >
						</td>
						<td align="center"  >112</td>
						<td align="center"  >按人均标准求差</td>	
						<td align="center"  >办公用品人月每月1000元</td>
						<td align="center"  >com.bjsxt.test</td>
						<td align="center"  >办公用品预算科目弹性预算</td>
					</tr>
				</table>		
			</tr>		
		</table>
	</body>
</html>
<script>
	//获取表格对象
	var table1=$("#table1");
	//在表格后添加一行 ,第一列是checkbox,后面是空
	function addRow(){

		//创建新的一行
		var newTr=table1.insertRow(table1.rows.length);
		//用来装新的列元素
		var newTds=[];
		//添加每一列  并装在列元素的数组里面
		for(var i=0;i<6;i++){
			var newTd=newTr.insertCell(i);
			//给列元素设置居中
			newTd.align="center";
			newTds.push(newTd);
		}
		//给第一列 设置为 一个checkbox 元素  结构同之前的
		newTds[0].innerHTML='<input type="checkbox"   name="cb1" value="111"  οnclick="chaValue(this);" >';
	}
	//删除选中的行元素
	function delRow(){
		//获取所有的checkbox
		var checks=$("cb1");
		//遍历所有的checkbox  找到选中的  并且删除该行
		for(var i=0;i<checks.length;i++){
			if(checks[i].checked){
				//找到所在的  行元素tr
				var tr=checks[i].parentNode.parentNode;
				//删除该行   tr.rowIndex 是行元素 所在下标
				table1.deleteRow(tr.rowIndex);
				i--;//因为前面的行 删除了  所有的行元素 下标  往前移了1位  所有i--
			}
		}
	}
	//如果选中  可以更改  文本的值   如果不选中  锁定文本的值
	function chaValue(obj){
		//判断checkbox 是否选中
		if(obj.checked){
			//找到checkbox所在的tr
			var parentTr=obj.parentNode.parentNode;
			for(var i=1;i<parentTr.cells.length;i++){
				//获取成为文本框之前  td内的 内容
				var innerValue=parentTr.cells[i].innerHTML;
				parentTr.cells[i].innerHTML='<input type="text" value="'+innerValue+'"/>';
			}
		}else{
			//找到checkbox所在的tr
			var parentTr=obj.parentNode.parentNode;
			for(var i=1;i<parentTr.cells.length;i++){
				//拿到td中的 input 标签的值
				var inputValue=getFirstChild(parentTr.cells[i]).value;
				//给对应td标签 设置值
				parentTr.cells[i].innerHTML=inputValue;
			}
		}
	}
</script>

js代码:


/**
 *
 * @param idOrName  如果传入id  前面加上#   如果传入name  直接传入
 * @returns {*}  返回元素节点  如果没找到 返回null
 */
function $(idOrName){
    var obj=null;
    if(idOrName){
        if(idOrName.charAt(0)=="#"){
            obj=document.getElementById(idOrName.substring(1));
        }else{
            obj=document.getElementsByName(idOrName);
        }
    }
    return obj;
}
/**
 *
 * @param parentNode  父节点
 * @returns {Array}  所有的元素子节点
 */
function getChildNodes(parentNode){
    var childs=parentNode.childNodes;
    var newChilds=[];
    for(var i=0;i<childs.length;i++){
        if(childs[i].nodeType==1){
            newChilds.push(childs[i]);
        }
    }
    return newChilds;
}
/**
 *
 * @param parentNode 父节点
 * @returns {*|Node}   第一个元素节点
 */
function getFirstChild(parentNode){
    var firstChild=parentNode.firstChild;
    if(firstChild.nodeType==3){
        firstChild=firstChild.nextSibling;
    }
    return firstChild;

}
/**
 *
 * @param parentNode 父节点
 * @returns {*|Node}   最后一个元素节点
 */
function getLastChild(parentNode){
    var lastChild=parentNode.lastChild;
    if(lastChild.nodeType==3){
        lastChild=lastChild.previousSibling;
    }
    return lastChild;
}
/**
 *
 * @param node  元素节点
 * @returns {*|Node}  返回下一个兄弟元素节点
 */
function getNextSibling(node){
    var nextNode=node.nextSibling;
    if(nextNode.nodeType==3){
        nextNode=nextNode.nextSibling;
    }
    return nextNode;
}
/**
 *
 * @param node  元素节点
 * @returns {*|Node}  返回前一个兄弟元素节点
 */
function getPreviousSibling(node){
    var preNode=node.previousSibling;
    if(preNode.nodeType==3){
        preNode=preNode.previousSibling;
    }
    return preNode;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值