注釋鼠標(biāo)移動改變背景處的下面有一段注釋的代碼,請大神幫我看看,為什么不能運行呢?
<!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(){
?????????????????
???? // 鼠標(biāo)移動改變背景,可以通過給每行綁定鼠標(biāo)移上事件和鼠標(biāo)移除事件來改變所在行背景色。
??????? var move=document.getElementsByTagName("tr");
??????? /*for(var i=0;i<=move.length;i++)
??????? {
??????????? move[i].onmouseover=function(){
??????????? move[i].style.backgroundColor="#f2f2f2";
??????????? }
??????????? move[i].onmouseout=function(){
??????????????? move[i].style.backgroundColor="#fff";
??????????? }
??????? }*/
??????? //注釋的這段代碼有什么問題?為什么不能運行呢?而且為什么不能把function給去掉,用onmouseout/onmouseover直接被賦值相關(guān)屬性呢,而是要采用函數(shù)的方式進行賦值?
??????? for(var i=0;i<move.length;i++)
??????? {
??????????? bgcChange(move[i]);
??????? }
????? }
??????? function bgcChange(a)
???? {
??????? a.onmouseover=function(){
??????????? a.style.backgroundColor="#f2f2f2";
??????? }
??????? a.onmouseout=function(){
??????????? a.style.backgroundColor="#fff";
??????? }
???? }
????? // 編寫一個函數(shù),供添加按鈕調(diào)用,動態(tài)在表格的最后一行添加子節(jié)點;
????? function adder(){
????????? var tr=document.createElement("tr");//添加行標(biāo)簽元素
????????? var td=document.createElement("td");//添加列標(biāo)簽元素
????????? var td1=document.createElement("td");//添加列標(biāo)簽元素?????????
????????? tr.appendChild(td);//添加列節(jié)點
????????? tr.appendChild(td1);//添加列節(jié)點
????????? var tb=document.getElementById("table");//獲取父節(jié)點
????????? tb.appendChild(tr);//添加行節(jié)點
????????? var td3=document.createElement("td");//添加列標(biāo)簽元素
????????? td3.innerHTML='<a href="javascript:;" onclick="del(this)">刪除</a>';
????????? tr.appendChild(td3);
????????? var i=prompt("請輸入學(xué)號","");
????????? var j=prompt("請輸入姓名","");
????????? if(i!=null&&i!=""&&j!=null&j!="")
????????? {
????????????? td.innerHTML=i;
????????????? td1.innerHTML=j;
????????? }else{
????????????? alert("請重新輸入");
????????? }
????? }
??? ??
?? ?
???? // 創(chuàng)建刪除函數(shù)
???? function del(a){
???????? var tb=a.parentNode.parentNode.parentNode;//父標(biāo)簽
???????? var tr=a.parentNode.parentNode//行標(biāo)簽
???????? tb.removeChild(tr);
???? }
? </script>
?</head>
?<body>
??? <table border="1" width="50%" id="table">
??? <tr>
??<th>學(xué)號</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="adder()" />?? <!--在添加按鈕上添加點擊事件? -->
?</body>
</html>
2016-01-28
你注釋那段錯誤在于i<=move.length,因為你前面i從0開始;如果你把move[i].style.backgroundColor中的move[i]改為this也能正常運行。至于你后面問的為什么不能直接給onmouseover/onmouseout直接賦屬性的問題,我想應(yīng)該是因為你的事件是寫在外面的,如果是行內(nèi)鼠標(biāo)移入/移除事件,就可以直接寫。個人理解。