Javascript 使用 Document.Write 的嵌套 While 循环

Javascript Nested While Loops using Document.Write

我只是想 运行 一个 javascript 来为我创建一个 "grid" table。这是我的代码...

<!DOCTYPE html>
<html>
<head>  
    <style>

        * {margin: 0;}

        body {width: 100%; height: 100%;}

        table {margin: 20px auto; border-collapse: collapse;}

        td {border: thin solid black; height: 5px; width: 5px;}

    </style>    
</head>

<body>      
    <table>     
        <script>

            var x = 1;
            var y = 1;

            while (x < 10) {            
                document.write("<tr>");             
                    while (y < 10) {
                        document.write("<td></td>");
                        y++;
                    }                   
                    document.write("</tr>");                    
                    x++;                
            }           

        </script>       
    </table>        
</body> 

当我 运行 这样做时,嵌套的 WHILE 循环有效,但第一个只有 运行 一次给我一行 9 块。

但是,如果我注释掉嵌套循环并添加一个简单的输出使其看起来像...

<script>

        var x = 1;            

        while (x < 10) {            
            document.write("<tr>");             
            document.write("<td></td>");                     
            document.write("</tr>");                    

            x++;                
        }           

</script>

它将正确打印出 1 列 9 行...我错过了什么??

谢谢。

你必须在 y 循环完成后重置你的 y 变量,否则如果退出循环,它将永远不会在第一次后进入循环。
不过,我建议使用 for 循环,因为它们更适合您的情况。

<!DOCTYPE html>
<html>

<head>
  <style>
    * {
      margin: 0;
    }
    body {
      width: 100%;
      height: 100%;
    }
    table {
      margin: 20px auto;
      border-collapse: collapse;
    }
    td {
      border: thin solid black;
      height: 5px;
      width: 5px;
    }
  </style>
</head>

<body>
  <table>
    <script>
      var x = 1;
      var y = 1;

      while (x < 10) {
        document.write("<tr>");
        while (y < 10) {
          document.write("<td></td>");
          y++;
        }
        y = 1;
        document.write("</tr>");
        x++;
      }
    </script>
  </table>
</body>

<!DOCTYPE html>
<html>

<head>
  <style>
    * {
      margin: 0;
    }
    body {
      width: 100%;
      height: 100%;
    }
    table {
      margin: 20px auto;
      border-collapse: collapse;
    }
    td {
      border: thin solid black;
      height: 5px;
      width: 5px;
    }
  </style>
</head>

<body>
  <table>
    <script>
      for (var x = 1; x < 10; x++) {
        document.write("<tr>");
        for (var y = 1; y < 10; y++) {
          document.write("<td></td>");
        }
        document.write("</tr>");
      }
    </script>
  </table>
</body>

另请注意,每次使用 document.write 方法时,浏览器都必须重新解析您的整个 DOM,这对性能不利。