Javascript动态字符串数组

won*_*rer 36 javascript arrays

有没有办法在Javascript上创建动态字符串数组?我的意思是,在页面上,用户可以输入一个数字或30个数字,然后他/她按下OK按钮,下一页按照输入的顺序显示数组,一次一个元素.

代码表示赞赏.

nic*_*ckf 57

我的意思是,在页面上,用户可以输入一个数字或30个数字,然后他/她按下OK按钮,下一页按照输入的顺序显示数组,一次一个元素.

好的,所以你首先需要一些用户输入?有几种方法可以做到这一点.

  1. 首先是prompt()显示弹出窗口的功能,询问用户输入的内容.
    • 优点:简单.缺点:难看,不能轻易回去编辑.
  2. 第二是使用html <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);
Run Code Online (Sandbox Code Playgroud)

(是的,这不是最漂亮的循环,但已经很晚了,我累了....)

另一种方法需要更多的努力.

  1. 在页面上放置一个输入字段.
  2. onfocus为它添加一个处理程序.
    1. 在此之后检查是否有另一个输入元素,如果有,请检查它是否为空.
      • 如果有,不要做任何事情.
      • 否则,创建一个新输入,将其放在此输入之后并将相同的处理程序应用于新输入.
  3. 当用户单击"确定"时,遍历<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);
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,无论您采集输入的方法如何,您都可以通过多种方式将数字打印回屏幕.一个简单的方法是这样的:

var div = document.createElement('div');
for (var i = 0, l = input.length; i < l; ++i) {
    div.innerHTML += input[i] + "<br />";
}
document.body.appendChild(div);
Run Code Online (Sandbox Code Playgroud)

我把它放在一起所以你可以看到它在jsbin工作
提示方法:http
://jsbin.com/amefu输入法:http://jsbin.com/iyoge

  • 一次一个?那么什么时候应该向用户显示每个后续的内容呢?每次点击后?一定的时间后? (2认同)

Jar*_*ard 16

var junk=new Array();
junk.push('This is a string.');
Run Code Online (Sandbox Code Playgroud)

等等.


Man*_*nha 9

据我所知,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
Run Code Online (Sandbox Code Playgroud)

你甚至可以添加像

var myArray = new Array()
myArray[0] = 10
myArray[1] = 20
myArray[2] = 30
Run Code Online (Sandbox Code Playgroud)

你甚至可以改变价值观

myArray[2] = 40
Run Code Online (Sandbox Code Playgroud)

印刷订单

如果你想以相同的顺序,这就足够了.Javascript按键值的顺序打印值.如果您在数组中以单调递增的键值插入值,则除非您要更改顺序,否则它们将以相同的方式打印.

页面提交

如果您使用的是JavaScript,则甚至无需将值提交到其他页面.您甚至可以通过操作DOM在同一页面上显示数据.


and*_*lzo 6

您可以使用插入数据推送,这将按顺序进行

var arr = Array();
function arrAdd(value){
    arr.push(value);
}
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 5

这是一个例子.您在文本框中输入一个数字(或其他),然后按"添加"将其放入数组中.然后按"show"将数组项显示为元素.

<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>
Run Code Online (Sandbox Code Playgroud)