【问题标题】:Outputting a 3D array as a table将 3D 数组输出为表格
【发布时间】:2015-12-01 08:34:00
【问题描述】:

我正在为一项任务制作二十一点游戏,并且有用于排行榜和卡片的数组。

我想像这样打印排行榜。卡片(在单个单元格中)|总计。

不胜感激,谢谢

function makeTable(leaderBoard) {
    var table = document.createElement('table');
    for (var i = 0; i < leaderBoard.length; i++) {
        var row = document.createElement('tr');
        for (var j = 0; j < leaderBoard[i].length; j++) {
            var cell = document.createElement('td');
            cell.textContent = leaderBoard[i][j];
            row.appendChild(cell);
        }
        table.appendChild(row);
    }
    document.getElementById('leaderBoard').innerHTML = table;
}

【问题讨论】:

  • 你已经做了什么???

标签: javascript arrays dom


【解决方案1】:

也许示例输入的格式不正确,但重用了预定义的表格和 html 表格函数,例如 insertRow 和 insertCell(不一定更好,但它们比 createElement 和 append 更容易观察):

<div id="leaderBoard"><table id=leaderTable></table></div>

function updateleaderboard(leaderBoard) {    
    var table = document.getElementById('leaderTable');
    while(table.rows.length > 0) table.deleteRow(0); //remove prev values, if any    
    for (var i = 0; i < leaderBoard.length; i++) { //If the function is always used on a winner (no ties), the loop isn't really needed
        var row =table.insertRow();
        var arrCards = leaderBoard[i++];
        var total = row.insertCell();
        total.className = 'res';
        total.textContent = leaderBoard[i];
        arrCards.forEach(function(c,ind){
            row.insertCell(ind).textContent = c;
        });
    }
}

var cards = [['Q','4','5'],19];

updateleaderboard(cards);

Fiddle

【讨论】:

    【解决方案2】:
    function makeTable(leaderBoard) {
        var table = document.createElement('table');
        var row = document.createElement('tr');
        for (var i = 0; i < leaderBoard[0].length; i++) {
            var cell = document.createElement('td');
            cell.textContent = leaderBoard[0][i];
            row.appendChild(cell);
        }
        var cell = document.createElement('td');
        cell.textContent = "Total: " + leaderBoard[1];
        row.appendChild(cell);
        table.appendChild(row);
        document.getElementById('leaderBoard').appendChild(table);
    }
    
    var userCards = ["Card 1", "Card 2", "Card 3"];
    var userTotal = 10;
    makeTable([userCards, userTotal]);
    

    http://jsfiddle.net/25kg3nnq/

    【讨论】:

    • 这是结果 - [object HTMLTableElement]
    • 这是数组 leaderBoard = [[usercards][usertotal]]
    • 你能给出一个示例条目和你想要的输出吗?
    • 当玩家获胜时,卡片会被收集到像这样的数组中 ["card1","card2"]。然后我创建一个名为 info 的变量,其中包括卡片数组和作为 int 的总数,例如 var info = [userCards,usersTotal]。然后我做 leaderBoard.push(info) 并且我希望表格在不同的单元格中输出所有这些信息
    猜你喜欢
    • 1970-01-01
    • 2017-03-10
    • 2018-01-29
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    相关资源
    最近更新 更多