0

我试图让我的内容与我的按钮显示在同一页面上。但是当我输入值并按下显示时,我正在形成的正方形显示在一个新的白色网页上。

我要求用户输入两个值(高度和宽度),我还要求输入一个字符来形成正方形的边框,但我还不能完成那部分,所以我只是硬编码了一个 # 字符同时边界

我想知道的是如何在同一页面上而不是在单独的页面上显示我的正方形。

我使用外部 JavaScript 文件:这是它的代码。它被命名为“SquareScript.js”:

function Display()
{
var a = document.getElementById("value1").value;
var b = document.getElementById("value2").value;
var outputText = "";

for (var i = 0; i < a; i++)
{
outputText += "#";
}

outputText +="<br>";
for (var r = 0; r < b; r++)
{
outputText += "#";


for(var p = 0; p < a-2; p++)
{
outputText +="&nbsp&nbsp";
}
outputText += "#";
outputText +="<br>";
}

for (var i = 0; i < a; i++)
{
outputText += "#";
}

}

这是我的网页代码:

<!DOCTYPE html>
<html>

    <head>
        <link rel = "stylesheet" type = "text/css" href = "Assignment3.css">
        <style>
            table {background-color:white;color:black;}
            body {background-image: url('squares.png');}
        </style>
    </head>

    <body>
        <div class = "heading">
            <h1><img src = "Interested.png" width = 100px height = 100px></img>WELCOME TO BUILD A   SQUARE</h1>
        </div>

        <script src = "SquareScript.js">
        </script>

        <table>
            <tr>
                <td>
                    Please Enter value number 1:&nbsp&nbsp<input type = "text" id = "value1">
                </td>
            </tr>

            <tr>
                <td>
                    Please Enter value number 2:&nbsp&nbsp<input type = "text" id = "value2">
                </td>
            </tr>

            <tr>
                <td>
                    Please Enter a character:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type = "text"     id = "character"> 
                </td>
            </tr>

            <tr>
                <td>
                    <button onclick = "Display()">Display</button>
                </td>
            </tr>
    <div id="output" style = "background-color:blue;"><script>
     document.getElementById("output").innerHTML(outputText);
    </script></div>

 </table>
    </body>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
</html>

任何有用的提示将不胜感激,请考虑我对 Web 开发还是新手这一事实,所以我的代码显然非常基础。如果您需要我的更多信息,请告诉我。

4

2 回答 2

1

不要使用document.write. 在您的页面上创建<div id="result"></div>并将您的输出放在那里。您应该创建一个包含 HTML 输出的字符串变量。然后,您可以使用以下代码显示此 HTML:

document.getElementById("result").innerHTML = my_html_output;
于 2013-05-27T11:54:15.397 回答
1

工作方式document.write()是当它在 HTML 页面之外被调用时,它会自动创建一个新文档并写入该文档(请参阅文档)。这就是您的情况:该函数在 HTML 之外调用(在 SquareScript.js 中),因此它正在创建一个新文档,即您所看到的“新白色网页”。

document.write()您可以通过从 HTML 页面中调用来解决此问题。或者您可以放弃使用document.write()并引用现有页面上的元素(更灵活的解决方案)。通过在 HTML 中创建函数输出应该出现的新元素(如<div id="output"></div>),您可以使用document.getElementById("output")将脚本的输出放入该元素中。

您无需在每次要添加内容时都调用它。相反,创建一个新变量来保存您生成的输出文本。

var outputText = "";

然后,当您遍历循环时,您可以添加outputText

for (var i = 0; i < a; i++) {
    outputText += "#";
}

div然后在所有循环完成后,您可以通过将以下函数调用作为函数中的最后一件事将内容插入输出display()

document.getElementById("output").innerHTML(outputText);
于 2013-05-27T11:54:24.617 回答