【发布时间】:2009-08-31 14:03:17
【问题描述】:
有没有办法在 Javascript 上创建一个动态的字符串数组? 我的意思是,在一个页面上,用户可以输入一个数字或三十个数字,然后他/她按下 OK 按钮,下一页将按照输入的顺序显示数组,一次一个元素。
感谢代码。
【问题讨论】:
标签: javascript arrays
有没有办法在 Javascript 上创建一个动态的字符串数组? 我的意思是,在一个页面上,用户可以输入一个数字或三十个数字,然后他/她按下 OK 按钮,下一页将按照输入的顺序显示数组,一次一个元素。
感谢代码。
【问题讨论】:
标签: javascript arrays
我的意思是,在一个页面上,用户可以输入一个数字或三十个数字,然后他/她按下 OK 按钮,下一页以与输入相同的顺序显示数组,一次一个元素.
好的,所以您首先需要一些用户输入?有几种方法可以做到这一点。
prompt() 函数,它显示一个弹出窗口,要求用户输入一些内容。
<input type="text">字段。
对于prompt 方法,收集你的字符串是轻而易举的事:
var input = []; // initialise an empty array
var temp = '';
do {
temp = prompt("Enter a number. Press cancel or leave empty to finish.");
if (temp === "" || temp === null) {
break;
} else {
input.push(temp); // the array will dynamically grow
}
} while (1);
(是的,这不是最漂亮的循环,但已经很晚了,我累了......)
另一种方法需要更多的努力。
onfocus 处理程序。
<input>s 并将它们存储到一个数组中。例如:
// if you put your dynamic text fields in a container it'll be easier to get them
var inputs = document.getElementById('inputArea').getElementsByTagName('input');
var input = [];
for (var i = 0, l = inputs.length; i < l; ++i) {
if (inputs[i].value.length) {
input.push(inputs[i].value);
}
}
之后,无论您采用何种方式收集输入,您都可以通过多种方式将数字打印回屏幕。一个简单的方法是这样的:
var div = document.createElement('div');
for (var i = 0, l = input.length; i < l; ++i) {
div.innerHTML += input[i] + "<br />";
}
document.body.appendChild(div);
我把它放在一起,以便你可以在 jsbin 中看到它的工作原理
提示方法:http://jsbin.com/amefu
输入法:http://jsbin.com/iyoge
【讨论】:
var junk=new Array();
junk.push('This is a string.');
等等。
【讨论】:
据我所知,Javascript 有动态数组。您可以即时添加、删除和修改元素。
var myArray = [1,2,3,4,5,6,7,8,9,10];
myArray.push(11);
document.writeln(myArray); // Gives 1,2,3,4,5,6,7,8,9,10,11
var myArray = [1,2,3,4,5,6,7,8,9,10];
var popped = myArray.pop();
document.writeln(myArray); // Gives 1,2,3,4,5,6,7,8,9
你甚至可以添加类似的元素
var myArray = new Array()
myArray[0] = 10
myArray[1] = 20
myArray[2] = 30
您甚至可以更改值
myArray[2] = 40
如果你想要相同的顺序,这就足够了。 Javascript 按键值的顺序打印值。如果您在数组中以单调递增的键值插入值,那么除非您想更改顺序,否则它们将以相同的方式打印。
如果您使用的是 JavaScript,您甚至不需要将值提交到不同的页面。您甚至可以通过操作 DOM 在同一页面上显示数据。
【讨论】:
你可以插入数据推送,这是按顺序进行的
var arr = Array();
function arrAdd(value){
arr.push(value);
}
【讨论】:
这是一个例子。您在文本框中输入一个数字(或其他),然后按“添加”将其放入数组中。然后按“显示”将数组项显示为元素。
<script type="text/javascript">
var arr = [];
function add() {
var inp = document.getElementById('num');
arr.push(inp.value);
inp.value = '';
}
function show() {
var html = '';
for (var i=0; i<arr.length; i++) {
html += '<div>' + arr[i] + '</div>';
}
var con = document.getElementById('container');
con.innerHTML = html;
}
</script>
<input type="text" id="num" />
<input type="button" onclick="add();" value="add" />
<br />
<input type="button" onclick="show();" value="show" />
<div id="container"></div>
【讨论】:
以下代码创建一个名为 myCars 的 Array 对象:
var myCars=new Array();
向数组添加值有两种方法(您可以添加任意数量的值来定义所需的任意数量的变量)。
1:
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
你也可以传递一个整数参数来控制数组的大小:
var myCars=new Array(3);
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
2:
var myCars=new Array("Saab","Volvo","BMW");
注意:如果您在数组中指定数字或真/假值,则变量的类型将是数字或布尔而不是字符串。
访问数组
您可以通过引用数组的名称和索引号来引用数组中的特定元素。索引号从 0 开始。
以下代码行:
document.write(myCars[0]);
将产生以下输出:
Saab
修改数组中的值
要修改现有数组中的值,只需将新值添加到具有指定索引号的数组中:
myCars[0]="Opel";
现在,以下代码行:
document.write(myCars[0]);
将产生以下输出:
Opel
【讨论】:
现场测试请查看http://jsfiddle.net/GEBrW/。
您可以使用类似的方法来创建动态数组。
var i = 0;
var a = new Array();
a[i++] = i;
a[i++] = i;
a[i++] = i;
a[i++] = i;
a[i++] = i;
a[i++] = i;
a[i++] = i;
a[i++] = i;
结果:
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
a[5] = 6
a[6] = 7
a[7] = 8
【讨论】:
只需初始化一个数组并将元素压入数组即可。 它会自动缩放数组。
var a = [ ];
a.push('Some string'); console.log(a); // ['Some string']
a.push('another string'); console.log(a); // ['Some string', 'another string']
a.push('Some string'); console.log(a); // ['Some string', 'another string', 'Some string']
【讨论】: