Uncaught TypeError: Cannot set property 'innerHTML' of undefined

window.onload = function(){
     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
         var tr=document.getElementsByTagName("tr");
         for(var i=0;i<tr.length;i++){
             bgcChange(tr[i]);
         }
     }
     function bgcChange(node){
         node.onmouseover=function(){
             node.style.backgroundColor="#f2f2f2";
         }
         node.onmouseout=function(){
             node.style.backgroundColor="#f6d0e7";
         }
     }
      // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
     var num=2;
    function add(){
        num++;
        var ot=document.getElementById('table');
        var tbody=ot.getElementsByClassName("tbody")[0];
        var otc=ot.childNodes[1];
        var tr=document.getElementsByTagName("tr");
        var td1=document.getElementsByTagName("td");
//        var xm=document.createElement("td");
        var tt=document.createElement("tr");
        var trs=otc.parentNode.appendChild(tt);
        console.log(otc)
        console.log(trs.typeof);
        var ts=Array.prototype.slice.call(trs);
        console.log(ts)
        console.log(ts.push(tr));
        ts.forEach(function(element,index,array){
            var j=2;
            while(j<element.length){
                j++;
                tr[j].innerHTML+="<tr><th>"+'element[j]'+"</th></tr>"+"<tr><th>"+'element[j]'+"</th></tr>"+"<tr><th>"+'element[j]'+"</th></tr>";
                return function() {
                    return this.tr[j].innerHTML+="<tr><th>"+'element[j]'+"</th></tr>"+"<tr><th>"+'element[j]'+"</th></tr>"+"<tr><th>"+'element[j]'+"</th></tr>";
                }
            }
            console.log(element[j])
        })
        console.log(tr)
        
        td1.innerHTML="xh00"+num;
//        xm.innerHTML="第"+num+"个学生";
     var del=document.createElement("td");
        del.innerHTML="";
        var tab=document.getElementById("table");

        var tr = document.getElementsByTagName("tr");
        for(var i=0;i<tr.length;i++){
            bgcChange(tr[i]);
        }
    }这里报了个tr没获取到,涉及到闭包概念,给返回一个function给tr赋值,问题得到解决。
上一篇:第七节 JavaScript操作元素包裹的内容


下一篇:js常用的属性与方法