亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

添加事件后,為什么沒反應??

?window.onload = function(){

? ? ? ? ? ? ? ? ??

? ? ?// 鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。

? ? ? ? var Trs=document.getElementsByTagName("tr");

? ? ? ??

? ? ? ? for(var i=1;i<Trs.length;i++){

? ? ? ? ? ? ?

? ? ? ? ? ? ?Trs[i].onmouseover=function(){

? ? ? ? ? ? ? ? Trs[i].style.backgroundColor="#f2f2f2";?

? ? ? ? ? ? ?}

? ? ? ? ? ? ?

? ? ? ? ? ? ?Trs[i].onmouseout=function(){

? ? ? ? ? ? ? ? Trs[i].style.backgroundColor="#fff";?

? ? ? ? ? ? ?}

? ? ? ? ?} ?

}


正在回答

4 回答

不好意思,沒看見回復,是這樣的,你的window.onload函數缺了一個大括號,還有,最好是把這些函數直接寫在script標簽中,不要寫在window.onload里面,因為del和add是在html標簽里面的,當程序執行到這里的時候,如果函數在window.onload里面,html標簽是獲取不到這個事件的,你這個程序就只是一個大括號位置的問題,至于如何在給新添加的tr添加onmouseout和onmouseover里面

<!DOCTYPE?html>

<html>
?<head>
??<title>?new?document?</title>??
??<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"/>???
??<script?type="text/javascript">?
??
??????window.onload?=?function(){
?????????????????

?????????
????????var?Trs=document.getElementsByTagName("tr");
?????????for(let?i=1;i<Trs.length;i++){
?????????????//沒反應
?????????????Trs[i].onmouseover=function(){
????????????????Trs[i].style.backgroundColor="#f2f2f2";?
?????????????}
?????????????
?????????????Trs[i].onmouseout=function(){
????????????????Trs[i].style.backgroundColor="#fff";?
?????????????}
?????????}?
?????????
?
?????
??????//?編寫一個函數,供添加按鈕調用,動態在表格的最后一行添加子節點;
??????
??????
???
?????//?創建刪除函數
???
??????}
??????function?del(obj){
?????????obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
??????};
??????var?i=2;
??????function?add(obj){
??????????var?tr=document.createElement("tr");
??????????var?td1=document.createElement("td");
??????????var?td2=document.createElement("td");
??????????var?td3=document.createElement("td");
??????????var?tab=document.getElementById("table");
??????????i++;
??????????td1.innerHTML="xh00"+i;
??????????td2.innerHTML="第"+i+"位同學";
??????????td3.innerHTML="<a?href='javascript:;'?onclick='del(this)'?>刪除</a>";
??????????tab.appendChild(tr);
??????????tr.appendChild(td1);
??????????tr.appendChild(td2);
??????????tr.appendChild(td3);
??????????
??????}
??</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:;"?onclick="del(this)">刪除</a></td>???<!--在刪除按鈕上添加點擊事件??-->
??</tr>

??<tr>
<td>xh002</td>
<td>劉小芳</td>
<td><a?href="javascript:;"?onclick="del(this)">刪除</a></td>???<!--在刪除按鈕上添加點擊事件??-->
??</tr>??

??</table>
??<input?type="button"?value="添加一行"?onclick="add(this)"/>??
?</body>
</html>


1 回復 有任何疑惑可以回復我~
#1

木槿111 提問者

運行沒效果?_?
2017-06-08 回復 有任何疑惑可以回復我~
#2

慕勒7123956 回復 木槿111 提問者

正常運行啊,怎么會沒效果,試試別的瀏覽器吧
2017-06-09 回復 有任何疑惑可以回復我~
#3

木槿111 提問者 回復 慕勒7123956

嗯,用gooogle就可以了
2017-06-12 回復 有任何疑惑可以回復我~

<!DOCTYPE html>


<html>

?<head>

? <title> new document </title> ?

? <meta http-equiv="Content-Type" content="text/html; charset=gbk"/> ??

? <script type="text/javascript">?

??

? ? ? window.onload = function(){

? ? ? ? ? ? ? ? ?

? ? ? ?/* var Trs=document.getElementsByTagName("tr");

? ? ? ??

? ? ? ? for(var i=1;i<Trs.length;i++){

? ? ? ? ? ? ?

? ? ? ? ? ? ?change(Trs[i]);

? ?}

? ? }

function change(obj){

? ? obj.onmouseover=function(){

? ? ? ? ? ? ? ? obj.style.backgroundColor="#f2f2f2";?

? ? ? ? ? ? ?}

? ? ? ? ? ? ?

? ? ? ? ?obj.onmouseout=function(){

? ? ? ? ? ? ? ? obj.style.backgroundColor="#fff";?

? ? ? ? ? ? ?}

? ? } ?*///這樣寫就可以

? ? ? ? ?

? ? ? ? ?

? ? ? ? var Trs=document.getElementsByTagName("tr");

? ? ? ? ?for(let i=1;i<Trs.length;i++){

? ? ? ? ? ? ?//沒反應

? ? ? ? ? ? ?Trs[i].onmouseover=function(){

? ? ? ? ? ? ? ? Trs[i].style.backgroundColor="#f2f2f2";?

? ? ? ? ? ? ?}

? ? ? ? ? ? ?

? ? ? ? ? ? ?Trs[i].onmouseout=function(){

? ? ? ? ? ? ? ? Trs[i].style.backgroundColor="#fff";?

? ? ? ? ? ? ?}

? ? ? ? ?}?

? ? ? ? ?

?

? ? ?

? ? ? // 編寫一個函數,供添加按鈕調用,動態在表格的最后一行添加子節點;

? ? ? var i=2;

? ? ? function add(obj){

? ? ? ? ? var tr=document.createElement("tr");

? ? ? ? ? var td1=document.createElement("td");

? ? ? ? ? var td2=document.createElement("td");

? ? ? ? ? var td3=document.createElement("td");

? ? ? ? ? var tab=document.getElementById("table");

? ? ? ? ? i++;

? ? ? ? ? td1.innerHTML="xh00"+i;

? ? ? ? ? td2.innerHTML="第"+i+"位同學";

? ? ? ? ? td3.innerHTML="<a href='javascript:;' onclick='del(this)' >刪除</a>";

? ? ? ? ? tab.appendChild(tr);

? ? ? ? ? tr.appendChild(td1);

? ? ? ? ? tr.appendChild(td2);

? ? ? ? ? tr.appendChild(td3);

? ? ? ? ??

? ? ? }

? ?

? ? ?// 創建刪除函數

? ? ? function del(obj){

? ? ? ? ?obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);

? ? ? }

? </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:;" onclick="del(this)">刪除</a></td> ? <!--在刪除按鈕上添加點擊事件 ?-->

? </tr>


? <tr>

<td>xh002</td>

<td>劉小芳</td>

<td><a href="javascript:;" onclick="del(this)">刪除</a></td> ? <!--在刪除按鈕上添加點擊事件 ?-->

? </tr> ?


? </table>

? <input type="button" value="添加一行" ?onclick="add(this)"/> ? <!--在添加按鈕上添加點擊事件 ?-->

?</body>

</html>


0 回復 有任何疑惑可以回復我~

"當這個程序運行的時候,循環已經完成,"??能解析一下嗎


0 回復 有任何疑惑可以回復我~
#1

慕勒7123956

當鼠標劃過tr,也就是你的這個onmouseover或者onmouseout函數開始執行的時候,你的for循環是已經完成的了,這時候的i是比整個數組還要大1的,當你的函數執行的時候,獲得的i就是一個比數組長度還大的值,這時候Trs[i]就是undefined的
2017-06-06 回復 有任何疑惑可以回復我~
#2

木槿111 提問者 回復 慕勒7123956

但是改了,還是不行,代碼如下。先謝謝了。
2017-06-06 回復 有任何疑惑可以回復我~

因為你給它綁定的這個事件的時候,用到了i變量,但是當這個程序運行的時候,循環已經完成,這個i已經是比數組的長度大了,你可以簡單的把for(var i=1;i<Trs.length;i++)改成for(let i=1;i<Trs.length;i++)

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

添加事件后,為什么沒反應??

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號