单个数组[0]项返回undefined

时间:2018-04-26 09:34:04

标签: javascript jquery arrays

所有开发者都比我聪明,

所以基本上我有一个名字(第一个)输入字段,我想让用户在输入中输入他们的名字和姓氏。之后,我想获取第二个值(姓氏)并将值推送到另一个输入hidden(display:none)。所以理论上下面的代码应该这样做

var array = [];

var fullname = $("#firstName").value.split(" ");

array.push(fullname);

$("#lastName").value = array[1];

alert(array[1])

例如我输入" First Last"作为firstName输入中的名称值和拆分并推送到数组,如果我提醒它alert(array) or $("#lastName").value = array,它确实会推送正确的值,但是当我尝试提醒或仅设置数组的第2部分时[1]它不断变回未定义!?请各位朋友赐教。

4 个答案:

答案 0 :(得分:6)

首先,jQuery使用val()方法来检索表单元素的值。试图访问value属性将不返回任何内容。

除此之外,您的问题是因为您通过将split()(即数组)的结果推送到array来创建嵌套数组:

var fullname = $("#firstName").val().split(" ");

var array = [];
array.push(fullname);
console.log(array)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="firstName" value="Foo Bar" />

相反,只需直接使用split()的结果,而无需调用push()

var fullname = $("#firstName").val();

var array = fullname.split(' ');
console.log(array[1]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="firstName" value="Foo Bar" />

这显然是一个基本的例子。您还需要确保生成的数组中至少包含2个元素。

答案 1 :(得分:1)

你有一些语法问题:

var array = [];

var fullname = $("#firstName").val();
array=fullname.split(" ");
$("#lastName").val(array[1]);
alert(array[1]);

答案 2 :(得分:0)

您希望将数组值推送到数组,而不是array.push(fullname);,请使用

array.push.apply( array , fullname);

array = array.concat(fullName);

答案 3 :(得分:0)

在您的代码中,使用$("#lastName").val()代替$("#lastName").value。您正在使用array[]而不是数组构造函数()。例如:var a = array[1]返回1,表示a = 1的值。

请检查链接:Difference between new Array() and [ ]