在数组长度中获取表单输入文本字段

时间:2014-07-06 12:21:44

标签: javascript

我正在编写一个简短的数组循环和事件处理程序程序,我想通过输入文本字段输入数组长度如果我写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>

请检查我的密码并告诉我错误的地方......

1 个答案:

答案 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且未定义值的数组