猿问

用于字母矩阵输出的嵌套 for 循环

背景:我一直在研究嵌套 for 循环练习。我正在编写的程序旨在获取列和行数据并使用嵌套 for 循环创建字母矩阵或网格。我能够在网格中编译数据(太棒了!),但是网格顶部有一行不必要的数据。(不太好......)任何人都可以让我知道可能导致此问题的原因,我相信这是非常简单的事情,但我的大脑可能因为看了这么久而烧焦了。

任何帮助将不胜感激。

<!DOCTYPE html>


<html>


<head>

    <title>""</title>


    <script>

        function letter_matrix() {


            let column = parseInt(document.form.letter_column.value);

            let rows = parseInt(document.form.letter_rows.value);

            let text = "<table><th></th>";


            let letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ";

            


            for (let i = 0; i < rows ; ++i) {

             

             text += "<tr>"+ letters.charAt(i) + "</td>";


               for(let j = 0; j < column ; j++){

                

                   let k = (i * rows + j) % 26;


                   text += "<td>"+letters.charAt(k)+ "</td>";

               }


               

        }

        text += "</table>";

 

        document.getElementById("results").innerHTML= text;

    }

    </script>

</head>


<body>

    <h1>""</h1>


    <form name="form" action = "javascript:letter_matrix();">


        Columns: <input type="text" name="letter_column">

        Rows: <input type="text" name="letter_rows">


        <input type="submit" value="Enter values.">


    </form>


    <pre id="results">

    </pre>

</body>


</html>


三国纷争
浏览 143回答 3
3回答

哈士奇WWW

在第一个文件中,for您创建一个<tr>添加一些文本并关闭一个</td>.你很可能应该只打开一个tr,然后在内部for然后关闭trfor (let i = 0; i < rows; ++i) {&nbsp; text += "<tr>";&nbsp; for (let j = 0; j < column; j++) {&nbsp; &nbsp; let k = (i * rows + j) % 26;&nbsp; &nbsp; text += "<td>" + letters.charAt(k) + "</td>";&nbsp; }&nbsp; text += '</tr>';}

达令说

您需要<tr>如下所示拆分标签。这条线引起了问题text += "<tr>"+ letters.charAt(i) + "</td>";您得到的异常结果只是因为这个。请参阅下面的代码,我如何在循环</tr>后使用for并删除letter.charAt(i). 这是添加了额外的行。         text += "<tr>";                   for(let j = 0; j < column ; j++){                           let k = (i * rows + j) % 26;                       text += "<td>"+letters.charAt(k)+ "</td>";           }         text += "</tr>";

温温酱

就是这个。 https://jsfiddle.net/Cornel777/kgbojuhz/8/刚刚添加到"<td>"这里text += "<tr>"+ "<td>" + letters.charAt(i) + "</td>";搬了你的<script>后<body>这样做了,但这不是强制性的,只是较新的。let column = document.getElementById("columns").value;let rows = document.getElementById("rows").value; <!DOCTYPE html>        <html>        <head>        <title>""</title>              </head>        <body>        <h1>""</h1>            <form name="form" action = "javascript:letter_matrix();">                Columns: <input id="columns" type="text" name="letter_column">            Rows: <input id="rows" type="text" name="letter_rows">                <input type="submit" value="Enter values.">            </form>            <pre id="results">        </pre>    </body>          <script>            function letter_matrix() {                    let column = document.getElementById("columns").value;                let rows = document.getElementById("rows").value;                let text = "<table><th></th>";                    let letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ";                                    for (let i = 0; i < rows ; i++) {                                  text += "<tr>"+ "<td>" + letters.charAt(i) + "</td>";                       for(let j = 0; j < column ; j++){                                                          let k = (i * rows + j) % 26;                           text += "<td>"+letters.charAt(k)+ "</td>";                   }                                   }                        text += "</table>";                 document.getElementById("results").innerHTML= text;        }        </script>        </html>    
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答