我正在编写一个简短的数组循环和事件处理程序程序,我想通过输入文本字段输入数组长度如果我写10个数组长度变为10并且窗口提示10次如果我写2数组长度变为2我在这里代码请检查它是否工作
<html>
<TITLE>Javascript Arrays</TITLE>
<BODY bgcolor="#F0F0F0">
<h1>Implementation of Sort and Reverse Functions </h>
<h2>Enter number of Elements</h2>
<form name="Anonymous Ghost">
<INPUT type="number" name="takeinput" id="valueField" size="30">
<Input type="button" name="name1" value="Take Input" onClick="a()">
</form>
<form name="Anonymous Ghost">
<Input type="button" name="name2" value="Ascending" onClick="b()">
<Input type="button" name="name3" value="Descending" onClick="c()">
</form>
</BODY>
<SCRIPT>
words = new Array(4);
function a() {
for (k = 0; k < words.length; k = k + 1) {
words[k] = window.prompt("Enter word # " + k, "");
}
}
function b() {
words.sort();
document.write("SORTED WORDS:" + "<BR>");
for (k = 0; k < words.length; k = k + 1) {
document.write(words[k] + "<BR>");
}
}
function c() {
words.sort();
words.reverse();
document.write("SORTED WORDS:" + "<BR>");
for (k = 0; k < words.length; k = k + 1) {
document.write(words[k] + "<BR>");
}
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
请检查我的密码并告诉我错误的地方......
答案 0 :(得分:0)
将您的功能a()更改为此
function a() {
var val = parseInt(document.getElementById('valueField').value)
var words = new Array(val);
for (k = 0; k < words.length; k = k + 1) {
words[k] = window.prompt("Enter word # " + k, "");
}
}
错误和解决方案
错误
words = new Array(4);
4 是硬编码的。无论你在输入字段中输入什么,它总是需要4个
<强>解决方案强>
从输入字段获取值,将其转换为整数,然后使用该值创建数组
为什么选择parseInt()?
new Array("5")
["5"]
它将生成一个具有值为5的单个元素的数组
new Array(5)
[undefined × 5]
它将生成一个长度为5且未定义值的数组