这是html部分:
<form>
<input id="input" type="text"/>
<button id="button"> Add! </button>
</form>
<div class="list"></div>
脚本是这样的:
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
return myArray;
};
alerted();
document.write(myArray);
问题是无论我做什么,myArray总是保持原始的空数组。我想要开悟,谢谢!
答案 0 :(得分:1)
您必须使用您为该函数指定的变量的名称,在这种情况下button.onclick()
将执行此操作。命名函数表达式允许您在正文中使用名称 ,但您必须使用引用名称而不是函数名称来将其调用到其他位置。
button.onclick = function alerted() {
myArray.unshift(input.value); // get the value
return myArray;
};
button.onclick();
以这种方式思考 - 您将函数对象分配给变量 - 该函数对象可能有也可能没有名称(匿名)。因此,如果您的函数有一个名称,您可以这样显示它:
button.onclick.name //=> alerted
答案 1 :(得分:0)
我包含window.onload,以便我们可以假设输入和按钮不为空
window.onload = function(){
var input = document.getElementById("input"); // save the object
var button = document.getElementById("button");
var myArray = ["hello"];
button.onclick = function(){
myArray.unshift(input.value); // get the value
document.write(myArray);
};
}
答案 2 :(得分:0)
以下内容:
button.onclick = function alerted (){
myArray.unshift(input.value); // get the value
return myArray;
};
将指定的函数表达式分配给按钮的单击处理程序。 功能只能通过函数中的 alert 名称使用。不幸的是IE is broken(实际上jScript已被打破)并且可以作为全局变量使用。
您应该使用函数表达式:
function alerted (){
myArray.unshift(input.value); // get the value
return myArray;
}
button.onclick = alerted;
成员只会在单击按钮时添加到数组中,然后才会为空。最初输入没有值,因此单击按钮(或调用函数)将只添加空字符串。