我正在尝试将我的内容显示在与我的按钮相同的页面上。但是当我输入数值并按下显示时,我正在形成的方形显示在新的白色网页上。
我要求用户输入两个值(高度和宽度),我还要求一个字符来形成正方形的边框,但我还没能做到这一点,所以我只是硬编码一个#字符在此期间为边界
我想知道的是如何在同一页面上显示我的方块而不是单独的页面。
我使用外部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 +="  ";
}
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:  <input type = "text" id = "value1">
</td>
</tr>
<tr>
<td>
Please Enter value number 2:  <input type = "text" id = "value2">
</td>
</tr>
<tr>
<td>
Please Enter a character:         <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开发的新手,所以我的代码显然是非常基本的。如果您对我有任何需求,请告诉我。
答案 0 :(得分:1)
请勿使用document.write
。在您的页面上创建<div id="result"></div>
并将输出放在那里。您应该创建一个包含HTML输出的字符串变量。然后,您可以使用以下代码显示此HTML:
document.getElementById("result").innerHTML = my_html_output;
答案 1 :(得分:1)
document.write()
的工作方式是,当它在HTML页面外部调用时,它会自动创建一个新文档并写入该文档(请参阅documentation)。这就是你的情况:该函数在HTML之外调用(在SquareScript.js中),因此它正在创建一个新文档,这是你正在看到的“新的白色网页”。
您可以通过在HTML页面中调用document.write()
来解决此问题。或者您可以放弃使用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);