首先,你有很多问题需要解决:
你正在设置
.innerHTML
到A
while
循环,这是无效的,因为循环没有返回值。而且,在循环中,只需要一个html字符串。它不会被返回或分配给任何东西,因此不会发生任何事情。
你也拼错了
id
你的
input
:
document.getElementById("numerInput")
另外,不要使用内联HTML事件属性(即
onclick
作为
there are many reasons
不要使用这个20多年的古老技术,只是不会死。将所有javascript工作与html分离。
最后,您的HTML无效:
"<p>Content<p/><br>"
应该是:
"<p>Content</p>"
注意,除了修复结束语的语法之外
p
, the
<br>
已删除。不使用
<BR>
只需在文档中添加间距-使用css即可。
<BR>
应仅用于将换行符插入某些内容,因为该内容应被拆分,但不应插入新节。
现在,为了解决你的整体问题,你应该做的是设置
.innerHTML
返回一个函数的返回值,或者更简单地说是循环创建的最终结果,如下所示。
// Get DOM references just once in JavaScript
let input = document.getElementById("numberInput");
let btn = document.querySelector("input[type='button']");
// Set up event handlers in JavaScript, not HTML with standards-based code:
btn.addEventListener("click", updatePage);
function updatePage() {
var output = ""; // Will hold result
// Instead of a while loop, just a for loop that counts to the value entered into the input
for (var i = 0; i < input.value; i++) {
// Don't modify the DOM more than necessary (especially in a loop) for performance reasons
// Just build up a string with the desired output
output += "<p>Content</p>"; // Concatenate more data
};
// After the string has been built, update the DOM
document.getElementById("content").innerHTML = output;
}
<input type="number" value="1" id="numberInput">
<br>
<input type="button" value="Update">
<div id="content">
<p>Content</p>
</div>
而且,如果您确实希望相同的字符串重复输入
输入
,那么使用
string.repeat()
.
// Get DOM references just once in JavaScript
let input = document.getElementById("numberInput");
let btn = document.querySelector("input[type='button']");
// Set up event handlers in JavaScript, not HTML with standards-based code:
btn.addEventListener("click", updatePage);
function updatePage() {
// Just use string.repeat()
document.getElementById("content").innerHTML = "<p>Content</p>".repeat(input.value);
}
<输入type=“number”value=“1”id=“number input”>
<br>
<input type=“button”value=“update”>
<div id=“content”>
<p>内容<p>
</分区>