js和css分离1

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--样式跟行为跟结构分离
			js可以通过class来控制样式
			而class有css来维护
		-->
		<link rel="stylesheet" type="text/css" href="../../css/stripeTable.css"/>
	</head>
	<body>

		<table id="tab-id">
			<!--caption 元素定义表格标题。 紧随table的后面-->
			<caption>表格的标题</caption>
			<tr>
				<th>姓名</th>
				<th>生日</th>
				<th>年龄</th>
			</tr>
			<tr>
				<td>长大1</td>
				<td>19920603</td>
				<td>15</td>
			</tr>
			<tr>
				<td>长大2</td>
				<td>19920603</td>
				<td>16</td>
			</tr>
			<tr>
				<td>长大3</td>
				<td>19920603</td>
				<td>17</td>
			</tr>
			<tr>
				<td>长大4</td>
				<td>19920603</td>
				<td>18</td>
			</tr>
		</table>
		
		<script src="../../js/stripeTale.js"></script>
	</body>
</html>

CSS文件:

stripeTable.css

/*tr:nth-child(odd){
	background-color: aquamarine;
}
tr:nth-child(1){
	background-color: white;
}*/

table{
	border-collapse: collapse;
}

th,
td{
	border: 1px solid;
}

.classA{
	font-weight: bold;
}

.NclassA{
	font-weight: normal;
}

.classB{
	font-family: "arial narrow";
}

.classC{
	background-color: burlywood;
}

JS文件:

stripeTale.js
//可以通过传入class来控制样式,这样充分的将样式表,js分离
addOnloadEvent(tableStyle('classC'));
addOnloadEvent(onmouseTable('classA'));

function tableStyle(className) {
	//获取所有的table
	var tables = document.getElementsByTagName('table');
	for(var i = 0; i < tables.length; i++) {
		var flag = false;
		var rows = tables[i].getElementsByTagName('tr');
		for(var j = 0; j < rows.length; j++) {
			if(flag) {
				//rows[j].style.backgroundColor='red';
				addClass(rows[j], className);
				flag = false;
			} else {
				flag = true;
			}
		}

	}
}

//为table添加事件
//对于这种反复触发的事件,最好是addclass和removeClass结合使用
function onmouseTable(className) {
	var tabs = document.getElementsByTagName('table');
	for(var i = 0; i < tabs.length; i++) {
		var rows = tabs[i].getElementsByTagName('tr');
		//去掉第一行
		for(var j = 1; j < rows.length; j++) {
			rows[j].onmouseover = function() {
				//this.style.fontWeight='bold';
				//this.setAttribute('class','classA');//方式1
				addClass(this, className); //方式2
			}

			rows[j].onmouseout = function() {
				//this.style.fontWeight='normal';
				removeClass(this, className);
			}
		}

	}
}

//添加class  这个适合一次性触发的事件
function addClass(elem, className) {
	//	debugger;
	if(!elem) return null;
	//如果该元素上面已经存在class,那么追加
	if(elem.className) {
		elem.className += ' ' + className;
	} else {
		elem.className = className;
	}

}

//删除class
function removeClass(elem, className) {
	if(!elem) return false;
	var currClassName = elem.className;
	if(currClassName) {
		elem.className = currClassName.replace(className, '');
	} else {
		return false;
	}
}

function addOnloadEvent(func) {
	var oldOnload = window.onload;

	//如果没有绑定方法
	if(typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldOnload();
			func();
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值