我在弄清楚如何进行这项工作时遇到了麻烦。我需要StartNumber
框的值为0,而EndNumber
为12。单击ClickMe!
时,它会生成每个平方根0-12的无序列表。
function wasClicked() {
let firstBox = document.getElementById("startNumber");
console.log("firstBox is " + firstBox);
let startNumber = firstBox.Value;
let secondBox = document.getElementById("endNumber");
let endNumber = secondBox.value || 12;
let line = "";
for (let i = startNumber; i = endNUmber; i++) {
line += "<li>The square root of " + i + " is " + Math.sqrt(i).toFixed(3) + "</li>\n";
}
console.log(line);
}
function isANumber(x) {
return !isNaN(x);
}
<div>
<label>Start Number:</label>
<input type="text" id="startNumber" /><br>
</div>
<div>
<label>End Number:</label>
<input type="text" id="endNumber" /><br>
</div>
<div>
<button onclick="wasClicked()">Click Me!</button>
</div>
<div></div>
<h2>The list</h2>
<ul id="theList"></ul>
最佳答案
您的代码有很多问题。
首先,JavaScript中的大小写很重要,因此它是firstBox.value
而不是firstBox.Value
,并且endNumber
是与endNUmber
完全不同的名称。确保您知道任何内置属性或方法的正确情况,并在变量名中使用一致的大小写。
其次,您的for
循环语法已关闭。它应该是类似的东西
for (let i = start; i <= end; i++) ...
另外,HTML
.value
元素的<input>
属性是一个字符串,因此,如果您想将其视为数字,则需要将其转换为数字。有几种方法可以做到这一点,但是对于本示例,我将使用Number.parseFloat
。最后,您将需要以某种方式在DOM上呈现结果。同样,有几种方法可以执行此操作,但是最简单的方法是
Element.innerHTML
。将所有这些放在一起,您将获得以下内容:
function wasClicked() {
let firstBox = document.getElementById("startNumber");
let startNumber = Number.parseFloat(firstBox.value);
let secondBox = document.getElementById("endNumber");
let endNumber = Number.parseFloat(secondBox.value);
let line = "";
for (let i = startNumber; i <= endNumber; i++) {
line += `<li>The square root of ${i} is ${Math.sqrt(i).toFixed(3)}</li>`;
}
document.getElementById("theList").innerHTML = line;
}
function isANumber(x) {
return !isNaN(x);
}
<div>
<label>Start Number:</label>
<input type="text" id="startNumber" /><br>
</div>
<div>
<label>End Number:</label>
<input type="text" id="endNumber" /><br>
</div>
<div>
<button onclick="wasClicked()">Click Me!</button>
</div>
<div></div>
<h2>The list</h2>
<ul id="theList"></ul>