javascript - 如何使用 javascript 每行打印 5 个乘法表并在下一行打印剩余 5 个?

标签 javascript html

这是我的 demo.jsp 页面。对于这段代码,我在单行中得到结果,但我需要每行打印 5 个表,在第二行中剩余 5 个乘法表,反之亦然。我可以在哪里更改代码以获得预期的结果。

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JavaScript Tables</title>
        <script>
            function getResult() {
                var output;
                var tableStart = "<table>";
                var tableEnd = "</table>";
                var trStart = "<tr>";
                var trEnd = "</tr>";
                var tdStart = "<td>";
                var tdEnd = "</td>";
                var firstValue = document.getElementById("first").value;
                //alert(firstValue);
                var secondValue = document.getElementById("second").value;
                //alert(secondValue);
                if (firstValue < secondValue) {
                    //alert(secondValue);
                    document.write(tableStart);
                    document.write(trStart);
                    for (var k = firstValue; k <= secondValue; k++) {
                        document.write(tdStart);
                        document.write(tableStart);
                        document.write(trStart);
                        document.write(tdStart);
                        document.write(k + ":table");
                        document.write(tdEnd);
                        document.write(trEnd);
                        for (var i = 1; i <= 10; i++) {
                            output = k * i;
                            document.write(trStart);
                            document.write(tdStart);
                            document.write(k + "*" + i + "=" + output);
                            document.write(tdEnd);
                            document.write(trEnd);
                        }
                        document.write(tableEnd);
                        document.write(tdEnd);
                    }
                    document.write(trEnd);
                    document.write(tableEnd);
                    document.close();
                }
                else {
                    //alert(secondValue);
                    alert("Ending table should be higher number");
                }
            }
        </script>
    </head>
    <body>
        <%
            out.println("<table>");
            out.println("<tr><td>Starting Number");
            out.println("</td><td>Ending Number</td></tr>");
            out.println("<tr><td>");
            out.println("<input type='text' id='first'>");
            out.println("</td><td>");
            out.println("<input type='text' id='second'>");
            out.println("</td></tr>");
            out.println("<tr><td align='right'>");
            out.println("<input type='button' value='Get Tables' onclick='getResult()'");
            out.println("</td></tr>");
            out.println("</table>");
        %>
    </body>
</html>

最佳答案

您需要将循环再嵌套一层。有一个新的外部循环,它以 5 的步长从开始到结束递增 j。然后 k 循环从 j 到结束当前行或结束值,以先到者为准。

DEMO

function getResult() {
    var output;
    var tableStart = "<table>";
    var tableEnd = "</table>";
    var trStart = "<tr>";
    var trEnd = "</tr>";
    var tdStart = "<td>";
    var tdEnd = "</td>";
    var firstValue = parseInt(document.getElementById("first").value, 10);
    //alert(firstValue);
    var secondValue = parseInt(document.getElementById("second").value, 10);
    //alert(secondValue);
    if (firstValue < secondValue) {
        //alert(secondValue);
        document.write(tableStart);
        for (var j = firstValue; j <= secondValue; j += 5) {
            document.write(trStart);
            for (var k = j; k <= Math.min(secondValue, j+4); k++) {
                document.write(tdStart);
                document.write(tableStart);
                document.write(trStart);
                document.write(tdStart);
                document.write(k + ":table");
                document.write(tdEnd);
                document.write(trEnd);
                for (var i = 1; i <= 10; i++) {
                    output = k * i;
                    document.write(trStart);
                    document.write(tdStart);
                    document.write(k + "*" + i + "=" + output);
                    document.write(tdEnd);
                    document.write(trEnd);
                }
                document.write(tableEnd);
                document.write(tdEnd);
            }
            document.write(trEnd);
        }
        document.write(tableEnd);
        document.close();
    } else {
        //alert(secondValue);
        alert("Ending table should be higher number");
    }
}

关于javascript - 如何使用 javascript 每行打印 5 个乘法表并在下一行打印剩余 5 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23925367/

相关文章:

javascript - 可以在这个特定的功能上下文中强制执行类型吗?

javascript - Firebase 无法在 webextension 的后台脚本中工作

jquery - 使用 .on() 在弹出窗口 'data-content' 中定位类

javascript - Jquery 搜索不隐藏表中的第一行

javascript - 将触发器中的 href 作为另一个元素的背景图片

javascript - 自动嵌入Youtube的jQuery函数需要接受多种链接格式

javascript - 如何设置通过给定 API 获取的图像的自动图像 slider

Javascript 元编程

javascript - 使用 Polymer 中元素之间的交互将对象添加到数组

php - 如何使用 URL 中的 $_GET 参数重定向到同一页面