当我在数组中推送一个对象时,它仍然是空的

时间:2018-04-03 12:46:49

标签: javascript

每当提交表单时,没有任何反应,当我检查我的数组时 控制台它仍然是空的。为了定位输入的值我需要把它放在一个函数中我也使用函数返回但没有任何反应。实际上,每当我点击提交按钮时,我都希望在对象中收集用户数据并推入数组...



var labelsarray = document.getElementsByTagName("label");
var inputsarray = document.getElementsByTagName("input");
var array = [];
function subm() {
    var users = {
        FirstName: inputsarray[0].value,
        LastName: inputsarray[1].value,
        UserName: inputsarray[2].value,
        Password:  inputsarray[3].value,
        DateofBirth: inputsarray[4].value,
        Age: inputsarray[5].value,
        Gender: inputsarray[6, 7].checked,
        Purpose: inputsarray[8, 9, 10].checked
    };
    array.push(users);
}

<div>
    <center>
        <form method="post" onsubmit="subm();">
            <label for="fname">First Name:</label>&emsp;
            <input type="text" id="fname" />
            <br/>
            <label for="lname">Last Name:</label>&emsp;
            <input type="text" id="lname" />
            <br/>
            <label for="uname">User Name:</label>&emsp;
            <input type="text" id="uname" />
            <br/>
            <label for="pass">Password:</label>&emsp;&ensp;&nbsp;
            <input type="text" id="pass" />
            <br/>
            <label for="dob">Date of Birth:</label>&emsp;&emsp;&nbsp;
            <input type="date" id="dob" />
            <br/>
            <label>Age:</label>&emsp;&emsp;&emsp;&emsp;&emsp;
            <input type="text" id="age" />
            <br/>
            <span>Gender:</span>&emsp;&emsp;&emsp;&emsp;&ensp;
            <input type="radio" name="gender" id="male" />
            <label for="male">Male</label>
            <input type="radio" name="gender" id="female" />
            <label for="female">Female</label>
            <br/>
            <p>For what purpose(s) you are making account?</p>
            <input type="checkbox" id="app" name="purpose" value="storingapps" />
            <label for="app">Storing Apps</label>
            <input type="checkbox" id="site" name="purpose" value="storingsites" />
            <label for="site">Storing Sites</label>
            <input type="checkbox" id="fun" name="purpose" value="fun" />
            <label for="fun">Fun</label>
            <br/>
            <input type="submit" value="Submit"  class="button" />
        </form>
    </center>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:3)

当您按下提交按钮时,您将开始表单提交过程。

首先运行onsubmit函数。这会修改你的数组。

然后表单提交并加载新页面。

这(可能)是用户已经在查看的页面。它虽然是一个新的副本,所以它不包含旧版本的数组。

您可以在return false;功能的末尾onsubmit来阻止表单提交。

现代代码将使用addEventListener(大约二十年前推出)并调用事件对象的preventDefault方法。

document.querySelector("form").addEventListener("submit", subm);
function subm(event) {
    event.preventDefault();
    // etc
}