用Javascript将data-title from headline添加到每个td(二维数组中的for循环)

Add data-title from headline to every td with Javascript (for loop in two dimensional array)

本文关键字:二维数组 td 循环 for data-title Javascript from headline 添加      更新时间:2023-09-26

我有一个html表,我想从标题的单元格内容作为数据标题添加到响应式html表的每个td。

问题是,当我想为body单元格设置属性时,我得到了消息:

"array[i] is undefined"。

我的Javascript代码是这样的:

function myFunction() {
    var head = document.querySelector("table > thead");
    var body = document.querySelector("table > tbody");
    var columncount = body.rows[0].cells.length;
    var headItems = head.rows[0].cells;
    var headRows = head.rows;
    var headCells = [];
    var array = []
    if (headItems.length == columncount) {
        for (var i = 0; i < headRows.length; i++) {
            var columns = [];
            headCells = headRows[i].cells;
            for (var m = 0; m < headCells.length; m++) {
                columns[m] = headCells[m].innerHTML;
            }
            array[i] = columns;
        }
    }
    var bodyRows = body.rows;
    for (j = 0; j < bodyRows.length; j++) {
        var bodyCells = bodyRows[j].cells;
        for (k = 0; k < bodyCells.length; k++) {
            bodyCells[k].setAttribute("data-title", array[i][m]); // NOTE array[i][m] here
        }
    }
}

如果你在你的项目中使用jQuery,这可能会有帮助:

// Add data-title to every <td>
$( "table" ).each( function( index, tableID ) {
    $( tableID ).find( "thead tr th" ).each( function( index ) {
        index += 1;
        $( tableID ).find( "tbody tr td:nth-child(" + index + ")" ).attr( "data-title", $(this).text() );
    });
});

仅适用于包含<thead><tbody>标签的表

首先,在选择变量时,不要使用javascript关键字名称,例如,不要使用array,而要使用_arrayarr或其他变量

我认为你需要添加一个内容到这个array。试着给array添加一些东西,因为如果你做array[i], array是空的,没有i索引。

试试这个:

_array.push(some_value);

然后,您可以这样做,例如_array[0]