0

我正在尝试通过表单将元素添加到数组中。我正在使用 unshift() 方法。下面的代码不起作用,我想知道为什么。

<form>
<input id="input"> </input>
<input type = "button" id="button"> Click me </input>
</form>


<script>

var input = document.getElementById("input").value;
var button = document.getElementById("button");

var myArray = [];
myArray.unshift(input);



button.onclick = function alerted (){
alert(myArray);
};


</script>
4

3 回答 3

1

加载页面后,您引用的代码会立即运行。表单字段中将没有任何内容,因此其值为''. 当您发出警报时,toString将导致阵列上的默认操作,''并且警报将为空白。

您希望运行unshift代码以响应用户事件,例如单击按钮,而不是立即运行。您可以通过将其设置input为元素(.value从该行中删除)然后将您的行移动unshift到您分配给的函数中onclick,并在其中添加.value

button.onclick = function alerted (){
    myArray.unshift(input.value);
    alert(myArray);
};

其他注意事项:

  1. 你从不写</input>。通常你根本不会关闭input标签。如果你正在编写 XHTML(你可能不是),你可以/input这样把<input id="input" />. 但同样,您可能不是在编写 XHTML,而只是在编写 HTML。

  2. input按钮的值(标题)位于其value属性中,而不是开始和结束标记中的内容。(您可以在元素中使用开始和结束标签button,而不是input.)

综合所有这些,这是一个极简更新:Live copy | 来源

<form>
<input id="input"><!-- No ending tag -->
<input type = "button" id="button" value="Click me"><!-- No ending tag, move value where it should be -->
</form>
<script>

var input = document.getElementById("input"); // No .value here
var button = document.getElementById("button");

var myArray = [];

button.onclick = function alerted (){
    myArray.unshift(input.value); // Moved this line, added the .value
    alert(myArray);
};
</script>
于 2012-10-15T21:05:57.027 回答
1

演示

您需要 a) 在单击中获取值 b) 如果您希望按钮不提交,则返回 false。我改为按钮。替代方案是<input type="button" value="click me" id="button" />

您甚至可能想清空并将该字段集中在单击...

<form>
<input id="input" type="text"/>
<button id="button"> Click me </button>
</form>


<script>

var input = document.getElementById("input"); // save the object
var button = document.getElementById("button");

var myArray = [];




button.onclick = function alerted (){
    myArray.unshift(input.value); // get the value
    alert(myArray);
    return false;
};


</script>​
于 2012-10-15T21:07:30.743 回答
0

您没有在 onclick 函数中获得新值。

试试这个:http: //jsfiddle.net/SeqWN/4/

var button = document.getElementById("button");
var i = document.getElementById("input");
var myArray = [];

button.onclick = function alerted (){
  myArray.unshift(i.value);
  alert(myArray);
};​
于 2012-10-15T21:09:00.307 回答