为了账号安全,请及时绑定邮箱和手机立即绑定

有两个问题:1,背景颜色没有改变;2,不能删除行

有两个问题:1,背景颜色没有改变;2,不能删除行

<!DOCTYPE html> <html>  <head>   <title> new document </title>     <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>   <style type="text/css">       .show{         background-color:#9F6;         color:#00C;       }   </style>   <script type="text/javascript">           window.onload = function(){                         // !! 功能不能实现   鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。         var rowList = document.getElementsByTagName("tr");         for(var i=1;i<rowList.length;i++){             rowList[i].onmouseover = function(){                 rowList[i].className = "show";             }             rowList[i].onmouseout = function(){                 rowList[i].className = "hideShow";             }         }             }             // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;     function add(){         var content = prompt("请输入您的学号和姓名,中间以逗号隔开","");         var id = content.split(",")[0];         var name = content.split(",")[1];         var row = document.createElement("tr");         var tdName = document.createElement("td");         var tdId = document.createElement("td");         var tdOpe = document.createElement("td");         var link = document.createElement("a");         tdName.innerHTML = name;         tdId.innerHTML = id;         link.innerHTML = "删除";         link.setAttribute("href","javascript:del();");         row.appendChild(tdId);         row.appendChild(tdName);         tdOpe.appendChild(link);         row.appendChild(tdOpe);         var table = document.getElementById("table");         table.appendChild(row);     }                 // !!功能不能实现            创建删除函数         function del(){             var thisRow = this.parentNode;             var table = document.getElementById("table");             table.removeChild(thisRow);         }   </script>   </head>   <body>     <table border="1" width="50%" id="table">    <tr> <th>学号</th> <th>姓名</th> <th>操作</th>    </tr>      <tr> <td>xh001</td> <td>王小明</td> <td><a href="javascript:del();" >删除</a></td>   <!--在删除按钮上添加点击事件  -->    </tr>    <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:del();" >删除</a></td>   <!--在删除按钮上添加点击事件  -->    </tr>      </table>    <input type="button" value="添加一行" onclick="add()" />   <!--在添加按钮上添加点击事件  -->  </body> </html>
查看完整描述

2 回答

已采纳
?
黑女2008

TA贡献75条经验 获得超32个赞


第一个问题,js没有块级作用域,就是你 rowList[i].className = "show";这里的i的值始终都是你最后循环的结果3

rowList[i].onmouseover = function(){
   this.className = "show";
}
rowList[i].onmouseout = function(){
   this.className = "hideShow";
}

第二个问题,你var thisRow = this.parentNode; 这里的this是window对象,并不上你的tr这行对象,

<td><a onclick="del(this)" >删除</a></td>   <!--在删除按钮上添加点击事件  -->

// !!功能不能实现            创建删除函数
function del(thisNode){
   var thisRow = thisNode.parentNode.parentNode;
   thisRow.remove();
}

查看完整回答
3 反对 回复 2016-09-11
  • 黑女2008
    黑女2008
    remove()这个方法好像是jquery吧,记不清楚了。如果那个方法不行,就 function del(thisNode){ var tr=thisNode.parentNode.parentNode; var tbody=tr.parentNode; tbody.removeChild(tr); } (table默认生成的页面结构下会有一个tbody子元素)
  • stone310
    stone310
    跟题主有个同样问题,看了您的回答还有有些模糊,为什么这么写(不加参数)<a onclick="del()" >这里del里面的this是window呢,del()不也是在a标签上调用的吗,在哪调用this指向哪,不应该指向a吗
  • 黑女2008
    黑女2008
    href="javascript:del();"等价于href="javascript:window.del();"你这个del是window的方法,谁调用this指向谁,就指向了window啊,onclick="del(this)" 这个就等价于onclick="window.del(this)"我这里的this传递过去并非就是改变了this指向,这里仅仅是一个参数的传递。就是调用del()方法,传递了个参数,这个参数就是点击的那个标签,del方法的this还是window对象,只是这个方法接收了一个参数。
点击展开后面3
?
Siming0

TA贡献16条经验 获得超32个赞

请指向当前this,鼠标进入时才能有效果

查看完整回答
1 反对 回复 2016-09-11
  • 2 回答
  • 1 关注
  • 1498 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信