Javascript 有没有办法在点击按钮后在同一页面上显示内容?
我正试图让我的内容显示在与按钮相同的页面上。但当我输入值并按display时,我正在形成的正方形会显示在一个新的白色网页上 我要求用户输入两个值(高度和宽度),我还要求输入一个字符来形成正方形的边框,但我还不能完成这一部分,所以我只是同时硬编码了一个#字符作为边框 我想知道的是如何在同一页上显示我的方块,而不是在单独的页面上 我使用一个外部JavaScript文件:下面是它的代码。其名称为“SquareScript.js”:Javascript 有没有办法在点击按钮后在同一页面上显示内容?,javascript,html,Javascript,Html,我正试图让我的内容显示在与按钮相同的页面上。但当我输入值并按display时,我正在形成的正方形会显示在一个新的白色网页上 我要求用户输入两个值(高度和宽度),我还要求输入一个字符来形成正方形的边框,但我还不能完成这一部分,所以我只是同时硬编码了一个#字符作为边框 我想知道的是如何在同一页上显示我的方块,而不是在单独的页面上 我使用一个外部JavaScript文件:下面是它的代码。其名称为“SquareScript.js”: 函数显示() { var a=document.getElementB
函数显示()
{
var a=document.getElementById(“value1”).value;
var b=document.getElementById(“value2”).value;
var outputText=“”;
对于(变量i=0;i”;
对于(var r=0;r”;
}
对于(变量i=0;i
这是我的网页代码:
<!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>
表{背景色:白色;颜色:黑色;}
正文{背景图像:url('squares.png');}
欢迎建造一个广场
请输入数值1:
请输入数值2:
请输入一个字符:nbsp  
展示
document.getElementById(“output”).innerHTML(outputText);
<>任何有用的提示都会被赏识,请考虑我对Web开发还是新的,所以我的代码显然是非常基础的。如果你还需要我什么,请告诉我 不要使用
文档。编写。在页面上创建
,并将输出放在那里。您应该创建一个包含HTML输出的字符串变量。然后可以使用以下代码显示此HTML:
document.getElementById("result").innerHTML = my_html_output;
document.write()
的工作方式是,当在HTML页面之外调用它时,它会自动创建一个新文档并写入其中(请参阅)。在您的案例中就是这样:函数在HTML之外被调用(在SquareScript.js中),因此它正在生成一个新文档,这就是您看到的“新的白色网页”
您可以通过在HTML页面中调用document.write()
来解决此问题。或者您可以放弃使用document.write()
,而是引用现有页面上的元素(更灵活的解决方案)。通过在HTML中创建一个新元素,其中函数的输出应该出现(如
),您可以使用document.getElementById(“output”)
将脚本的输出放入该元素中
您不必每次添加内容时都调用此函数。相反,创建一个新变量来保存生成的输出文本
var outputText = "";
然后,当您遍历循环时,您可以将以下内容添加到outputText
:
for (var i = 0; i < a; i++) {
outputText += "#";
}
那么我将在for循环中执行此操作?当我试图显示#?Addvar my#u html_输出时编码>到函数的开头,并替换任何文档。用my\u html\u output+=something编写(something)
代码>。所以我将在for循环中pu这个:document.getElementById(“输出”).innerHTML(“#”)中@AndreSmith:只要先在HTML中添加一个带有id=“output”
的元素,就可以了。例如,您可以添加
或
。我已经修改了我的代码,以便按照您所说的方式进行操作。但事实并非如此working@AndreSmith不要用document.getElementById(“output”).innerHTML(“#”)替换每个document.write()
,而是将所有输出内容添加到一个保持变量中,并将其内容插入脚本末尾的HTML中。有关详细信息,请参见我的更新答案。@AndreSmith您应该将插入内容的代码放在SquareScript.js中Display()
函数的末尾,而不是放在
本身中。
for (var i = 0; i < a; i++) {
outputText += "#";
}
document.getElementById("output").innerHTML(outputText);