将用户输入存储在数组中
storing user input in array
我需要执行以下操作(我是编程初学者,所以请原谅我的无知(:我必须要求用户在表单上的三个不同文本框上提供三条不同的信息。然后用户有一个名为"enter"的按钮,当他点击它时,他在三个字段上输入的文本应该存储在三个不同的数组中,在这个阶段我还想看到用户的输入检查数据实际上存储在数组中。我试图让应用程序在其中一个数组上存储或显示数据,但没有成功。我有 2 个文件:电影.html和功能.js。这是代码。任何帮助将不胜感激!
<html>
<head>
<title>Film info</title>
<script src="jQuery.js" type="text/javascript"></script>
<script src="functions.js" type="text/javascript"></script>
</head>
<body>
<div id="form">
<h1><b>Please enter data</b></h1>
<hr size="3"/>
<br>
<label for="title">Title</label> <input id="title" type="text" >
<br>
<label for="name">Actor</label><input id="name" type="text">
<br>
<label for="tickets">tickets</label><input id="tickets" type="text">
<br>
<br>
<input type="button" value="Save" onclick="insert(this.form.title.value)">
<input type="button" value="Show data" onclick="show()"> <br>
<h2><b>Data:</b></h2>
<hr>
</div>
<div id= "display">
</div>
</body>
</html>
var title=new Array();
var name=new Array();
var tickets=new Array();
function insert(val){
title[title.length]=val;
}
function show() {
var string="<b>All Elements of the Array :</b><br>";
for(i = 0; i < title.length; i++) {
string =string+title[i]+"<br>";
}
if(title.length > 0)
document.getElementById('myDiv').innerHTML = string;
}
你实际上并没有在值之后出去。您需要像这样收集它们:
var title = document.getElementById("title").value;
var name = document.getElementById("name").value;
var tickets = document.getElementById("tickets").value;
您可以将所有这些放在一个数组中:
var myArray = [ title, name, tickets ];
或许多数组:
var titleArr = [ title ];
var nameArr = [ name ];
var ticketsArr = [ tickets ];
或者,如果数组已经存在,则可以使用其.push()
方法将新值推送到该数组上:
var titleArr = [];
function addTitle ( title ) {
titleArr.push( title );
console.log( "Titles: " + titleArr.join(", ") );
}
您的保存按钮不起作用,因为您引用了this.form
,但是页面上没有表单。为了使其正常工作,您需要使用<form>
标签来包装您的字段:
我做了一些更正,并将更改放在jsbin上:http://jsbin.com/ufanep/2/edit
新表格如下:
<form>
<h1>Please enter data</h1>
<input id="title" type="text" />
<input id="name" type="text" />
<input id="tickets" type="text" />
<input type="button" value="Save" onclick="insert()" />
<input type="button" value="Show data" onclick="show()" />
</form>
<div id="display"></div>
还有一些改进的余地,例如删除onclick
属性(这些绑定应该通过JavaScript完成,但这超出了这个问题的范围(。
我还对你的 JavaScript 做了一些更改。我首先创建三个空数组:
var titles = [];
var names = [];
var tickets = [];
现在我们有了这些,我们需要对输入字段的引用。
var titleInput = document.getElementById("title");
var nameInput = document.getElementById("name");
var ticketInput = document.getElementById("tickets");
我还得到了对我们消息显示框的引用。
var messageBox = document.getElementById("display");
insert()
函数使用对每个输入字段的引用来获取其值。然后,它在相应的数组上使用 push()
方法将当前值放入数组中。
完成后,它会校准负责清除这些字段(使它们为下一轮输入做好准备(的 clearAndShow()
函数,并显示三个数组的组合结果。
function insert ( ) {
titles.push( titleInput.value );
names.push( nameInput.value );
tickets.push( ticketInput.value );
clearAndShow();
}
如前所述,此函数首先将每个输入的 .value
属性设置为空字符串。然后,它会清除消息框的.innerHTML
。最后,它对所有数组调用 join()
方法,将它们的值转换为逗号分隔的值列表。然后将此生成的字符串传递到消息框中。
function clearAndShow () {
titleInput.value = "";
nameInput.value = "";
ticketInput.value = "";
messageBox.innerHTML = "";
messageBox.innerHTML += "Titles: " + titles.join(", ") + "<br/>";
messageBox.innerHTML += "Names: " + names.join(", ") + "<br/>";
messageBox.innerHTML += "Tickets: " + tickets.join(", ");
}
最终结果可以在线使用 http://jsbin.com/ufanep/2/edit
您至少有以下 3 个问题:
- 您没有正确获取元素的值
- 您尝试用于显示值是否已保存的div 具有 id
display
,但在您的 javascript 中,您尝试获取甚至未在标记中定义的元素myDiv
。 - 永远不要在 javascript 中使用保留关键字命名变量。 使用"字符串"作为变量名称在我能想到的大多数语言上都不是一件好事。我将您的字符串变量重命名为"内容"。见下文。
您可以通过执行以下操作一次保存所有三个值:
var title=new Array();
var names=new Array();//renamed to names -added an S-
//to avoid conflicts with the input named "name"
var tickets=new Array();
function insert(){
var titleValue = document.getElementById('title').value;
var actorValue = document.getElementById('name').value;
var ticketsValue = document.getElementById('tickets').value;
title[title.length]=titleValue;
names[names.length]=actorValue;
tickets[tickets.length]=ticketsValue;
}
然后将显示功能更改为:
function show() {
var content="<b>All Elements of the Arrays :</b><br>";
for(var i = 0; i < title.length; i++) {
content +=title[i]+"<br>";
}
for(var i = 0; i < names.length; i++) {
content +=names[i]+"<br>";
}
for(var i = 0; i < tickets.length; i++) {
content +=tickets[i]+"<br>";
}
document.getElementById('display').innerHTML = content; //note that I changed
//to 'display' because that's
//what you have in your markup
}
这里有一个jsfiddle供你玩。
- 将数组存储到本地存储中,而不是替换
- 如何将数组存储
- 在 laravel 4 上使用循环将数据数组存储到单个数组中
- 将对象/数组存储在 jQuery Cookie 中
- 想要将数组存储为 JavaScript 映射中的值
- 在 mysql 中使用多维数组存储 $_POST
- 将php多维数组存储在localstorage中
- 将数组存储在jQuery cookie中
- 如何将php数组存储在一个cookie中,然后通过javascript读取它
- 如何用单引号将数组存储在javascript中?有可能吗
- 将数组存储在html数据属性中
- 使用javascript将数组存储为json中的密钥对
- 将数组存储在函数内部与存储在对象内部有什么好处吗
- 试图使用javascript将Object.keys(obj)的返回数组存储在数组中,但得到错误“ReferenceEr
- 在javascript中使用数组存储一组具有固定值的变量
- 如何在localStorage (Javascript)中使用数组存储JSON
- 数组存储javascript
- 我如何从数组存储访问JS函数
- 关于如何使用数组存储其他变量名称的任何想法
- 在chartJs中使用动态数组存储标签和数据