87,984
社区成员
发帖
与我相关
我的任务
分享<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<style>
body{
font-family:"Helvetical","Arial",sans-serif;
background-color:#fff;
color:#000;
}
table{
margin:auto;
border:1px solid #699;
}
caption{
margin:auto;
padding:.2em;
font-size:1.2em;
font-weight:bold;
}
th{
font-weight:normal;
font-style:italic;
text-align:left;
border:1px dotted #699;
background-color:#9cc;
}
th,td{
width:10em;
padding:.5em;
}
.intro,.intro th{ /* 样式定义中追加tr下th的内容 */
font-weight:bold;
}
.odd{
background-color: #ffc;
}
</style>
</head>
<body>
<table>
<caption>Itinerary</caption>
<thead>
<tr>
<th>When</th><th>Where</th>
</tr>
</thead>
<tbody>
<tr>
<td>June 9th</td><td>Portland.OR</td>
</tr>
<tr>
<td>June 10th</td><td>Seattle.WA</td>
</tr>
<tr>
<td>June 12th</td><td>Sacramento.CA</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
//添加加载函数
function addLoadEvent(func){
var oldonload = window.onload;
if(typeof window.onload != "function"){
window.onload = func;
}else{
window.onload = function(){
oldonload();
func();
}
}
}
//设置表格样式
function stripeTable(){
if(!document.getElementsByTagName) return false;
var tables = document.getElementsByTagName("table");
var odd,rows;
for(var i=0;i<tables.length;i++){
odd = false;
rows = tables[i].getElementsByTagName("tr");
for(var j = 0;j<rows.length;j++){
if(odd==true){
addClass(rows[j],"odd");
odd= false;
}else{
odd = true;
}
rows[j].onmouseover = function(){
addClass(this,'intro');
}
rows[j].onmouseout = function(){
removeClass(this,'intro')
}
}
}
}
//增加样式
function addClass(element,value){
if(!element.className){
element.className = value;
}else{
var newClassName = element.className;
newClassName += " ";
newClassName += value;
element.className = newClassName;
}
}
// 追加移除样式的内容
function removeClass(el,cls){
el.className = el.className.replace(new RegExp('\s*' + cls + '\s*','gi'),'');
}
addLoadEvent(stripeTable);
</script>
</body>
</html> rows[j].onmouseover = function(){ //问题1:为什么鼠标放在第一行上,第一行字体并没有加粗?
//问题2:为不能换成addClass(rows[j],"intro");控制台会提示element未定义???
this.style.fontWeight = "bold";
}
问题1:
第一行没有变色是因为你将样式定义加到了 tr 上,但是 th 有自己的定义,然后 th 的定义比 tr 的定义更接近文字,所以 th 样式生效
问题2:
onmouseover 触发事件后,执行的必报函数中没有继承自定义时的变量,所以应该写作 addClass(this,'intro'),因为 this 在必报中代表的就是触发该方法的对象
另外,不要把问题放到代码里,我找你提的问题都瞅了很久