如何将子表追加到我的单元格和行

时间:2018-12-04 11:16:01

标签: javascript

您好,我的代码有问题。我不知道如何table.appendchild(row)。我尝试用append或appendchild来做到这一点,但没有用。

我的代码:

var body = document.getElementsByTagName('body')[0];
    var table = document.createElement('table');
    
        body.appendChild(table);
        var createrow = function(c1,c2){
            var row = document.createElement('tr');
            row.appendChild(c1);
            row.setAttribute('class', 'row')
            row.appendChild(c2); 
        
            return row;
        }
        var createcell = function(value){
            var cell = document.createElement('td');
            cell.setAttribute('class', 'cell');
            cell.innerText=value;
            table.appendChild(cell);
            return cell;
        }
        
        
        body.appendChild(createrow(createcell('Ion'),createcell('24')))
        body.appendChild(createrow(createcell('Gigle'),createcell('26')))

1 个答案:

答案 0 :(得分:4)

target.appendChild(another)的意思是“将这个元素“另一个”作为子元素放置在“目标”元素中。

您在代码中犯了一些错误。第一个是您的createcell函数:

var createcell = function(value){
    var cell = document.createElement('td');
    cell.setAttribute('class', 'cell');
    cell.innerText=value;
    // table.appendChild(cell); -- uncommented
    return cell;
}

此功能的目的是为您的表创建一个“单元格”。您正在执行此操作,但同时也正在执行table.appendChild(cell);,这意味着您正在将该单元格放置在表中。那是不对的。我没有评论。

您的createrow函数似乎正确。

最后,您正在做

body.appendChild(createrow(createcell('Ion'),createcell('24')))

表示“获取createrow函数的结果(这是您的<tr>元素)并将其放在元素“ body”中”。您的body<body>元素。不是您想让您的行。您要将行放置在表中。因此,您需要将其更正为

table.appendChild(createrow(createcell('Ion'),createcell('24')))

的意思是“创建一行并将其作为子元素放置在元素“表”中”。那么您的table<table>元素。现在,该行已放置在正确的位置。