问答详情
源自:9-22 编程练习

关于window.onload加载问题

先把参考代码贴出:

window.onload = function(){

Highlight();

}  

function addOne(obj){ 

   var tbody = document.getElementById('table').lastChild;  

var tr = document.createElement('tr');  

 

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

td.innerHTML = "<input type='text'/>";

tr.appendChild(td);

 

td = document.createElement("td");  

td.innerHTML = "<input type='text'/>";

tr.appendChild(td);

 

td = document.createElement("td");

td.innerHTML = "<a href='javascript:;' onclick='deleteRow(this)'>删除</a>";

tr.appendChild(td);   

 

tbody.appendChild(tr);   

Highlight();

    }


function deleteRow(obj){

   var tbody = document.getElementById('table').lastChild;  

var tr = obj.parentNode.parentNode;

tbody.removeChild(tr);

}

function Highlight(){

var tbody = document.getElementById('table').lastChild;

trs = tbody.getElementsByTagName('tr');   

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

trs[i].onmouseover = function(){

this.style.backgroundColor ="#f2f2f2";

trs[i].onmouseout = function(){

this.style.backgroundColor ="#fff";

}  

}

问题1:

按照这段代码:window.onload = function(){

Highlight();

} 那应该只有Highlight();才能运行啊,为什么addOne(obj),deleteRow(obj)都可以运行成功。

2、在addOne(obj)函数结尾的Highlight();,怎么有种乱入的感觉,跟addOne(obj)函数一点关系都没有,是什么意思?


提问者:adions 2016-05-14 16:26

个回答

  • 慕婉清6635991
    2016-05-14 22:46:49

    1. window.onload = function(){Highlight();是为了给本来就有的两个tr加上mouseover事件,

    2. addOne(obj)函数结尾的Highlight()是为了给每次新添加的tr加上事件;

    addOne(),deleteRow(),这两个函数直接写在了html标签里,不光要看js代码,还要看看html代码