gpt4 book ai didi

javascript - While 循环和innerHTML

转载 作者:行者123 更新时间:2023-11-28 13:45:04 25 4
gpt4 key购买 nike

我不确定我的 while 循环或代码的 insideHTML 部分是否有问题,但当单击提交按钮时,我无法在 div 标记中显示下拉列表。谁能看出它出了什么问题。

<html>
<head>
<script type="text/javascript">

function getvalue() {
number = document.getnumber.input.value;
document.getElementById("result").value = number;
}
</script>

</head>
<body>

<script>
function generatedropdown() {
html = '<select name="select" id="i">';
while (i < number) {
html+='<option>Test 1</option>';
html+='<option>Test 2</option>';
html+='<option>Test 3</option>';
html+='<option>Test 4</option>';
html+='<option>Test 5</option>';
i++;
}
html+='</select>';
document.getElementById("my-output").innerHTML = html;
}
</script>


<form name="getnumber">
Input number: <input type="text" name="input">
<input type="button" value="Next" onClick="getvalue()">
</form>


<form id="showlists">
Number entered: <input type="text" id="result" readonly="readonly">
<input type="button" value="Show lists" onClick="generatedropdown()">
<div id="my-output">Generated List:</div>
</form>
</body>
</html>

最佳答案

一些问题:

  • 您从未为 i 设置初始值,因此代码会抛出错误,因为您正在尝试读取从未设置过的全局值或声明。

  • 您依赖于调用 getvalue 来初始化 number,但我不会指望它。

  • 您依赖于隐式字符串 -> 数字转换,我不推荐这样做;使用 parseInt 解析用户提供的数字。

  • (可选)您的循环正是 for 构造的设计目的,而不是 while (尽管 while 可以工作如果您初始化了i)。

  • 您正在成为 The Horror of Implicit Globals 的牺牲品因为你从来没有声明你的变量。

我建议阅读有关 JavaScript 的优秀入门书或教程,以掌握基础知识。

这是一个最小更新:

function generatedropdown() {
// Declare your variables
var html, i, number;

// Get the number, and convert it from a decimal string
// to a number explicitly rather than relying on implicit
// coercion
number = parseInt(document.getvalue.input.value, 10);

// Probably bail if it's not a number
if (isNaN(number)) {
return;
}

// (Optional, but you were doing it) Show the number
document.getElementById("result").value = number;

// Build your HTML
html = '<select name="select" id="i">';

// This is exactly what `for` loops are for
for (i = 0; i < number; ++i) {
html+='<option>Test 1</option>';
html+='<option>Test 2</option>';
html+='<option>Test 3</option>';
html+='<option>Test 4</option>';
html+='<option>Test 5</option>';
}
html+='</select>';
document.getElementById("my-output").innerHTML = html;
}

关于javascript - While 循环和innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com