在for循环中使用x.length时出现问题

Problems using x.length within for loop

本文关键字:length 问题 for 循环      更新时间:2024-06-01

我在尝试基于输入(列/行)值动态生成HTML表时遇到问题。

当我对下面循环中的值进行硬编码时(即,不使用提示),它会创建正确数量的单元格。但是,当在循环中使用x.length时,某些内容无法正常工作。

工作正常:

函数createTable(){

    // declare variables
    var body = document.body,
        table = document.createElement('table');

    // Begin creating table
    // for each row
    for(var r = 0; r < 8; r++) {
        // create row
        var tr = table.insertRow();
        // for each column
        for(var c = 0; c < 8; c++) {
            // create column
            var td = tr.insertCell();
            td.appendChild(document.createTextNode('Cell'));
        }
    }
    // append table to body
    body.appendChild(table);
}
createTable();

不会根据变量输入创建正确的单元格

函数createTable(){

    // declare variables
    var body = document.body,
        table = document.createElement('table'),
        rows = prompt("enter rows"),
        columns = prompt("enter columns");

    // Begin creating table
    // for each row
    for(var r = 0; r < rows.length; r++) {
        // create row
        var tr = table.insertRow();
        // for each column
        for(var c = 0; c < columns.length; c++) {
            // create column
            var td = tr.insertCell();
            td.appendChild(document.createTextNode('Cell'));
        }
    }
    // append table to body
    body.appendChild(table);
}
createTable();

rowscolumns是字符串,这是它们具有.length的唯一原因。你似乎想把它们用作解析后的数字,没有任何长度:

var body = document.body,
    table = document.createElement('table'),
    rows = parseInt(prompt("enter rows"), 10),
    columns = parseInt(prompt("enter columns"), 10);
for (var r = 0; r < rows; r++) {
    var tr = table.insertRow();
    for (var c = 0; c < columns; c++) {
        var td = tr.insertCell();
        td.appendChild(document.createTextNode('Cell'));
    }
}
body.appendChild(table);

使用parseInt(rows)parseInt(columns)。此函数返回一个整数,但必须检查输入是否真的是由字符串表示的整数值。