2016-07-27 2 views
-2

Итак, вот проблема. Я хочу, чтобы пользователь вводил число индексов в текстовое поле для массива. После взятия индекса я хочу пользователя ввести значение от проворных коробок для хранения в этом массиве, но что безотлагательное ящик прихожу снова и снова, и я должен нажать на кнопке каждый раз, чтобы принять ввод Вот кодJava Script Получить номер индекса для массива из текстового поля

<!doctype html> 
    <html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Untitled Document</title> 
    </head> 

    <body> 
    <label> Enter Number of Records </label> 
    <input type="text" id="t1"> 
    <input type="button" value="Enter" onClick="record()"> 

    <h1 id="demo"></h1> 

    <script src="script.js" type="text/javascript"></script> 
    </body> 
    </html> 

Java Script:

var data = document.getElementById("t1").value; 
function record(){ 
    var crap = new Array(data); 
    for(var i=0;i<crap.length;i++){ 
     crap[i] = prompt("Add something in my array",""); 
    document.getElementById("demo").innerHTML += crap[i]+"<br>"; 
    } 
+0

Потому что вы используете его в петлю, так что 'prompt' будет выполняться для каждого элемента массива. Также вы хотите ввести что-то и поместить его в определенный индекс массива или просто нажать его в конце массива? –

+0

_I хочу, чтобы пользователь вводил число индексов в текстовое поле для array_, пожалуйста, уточните, что именно вы ищете. – brk

+0

@SpencerWieczorek. Я просто хочу ввести любую вещь в массив. –

ответ

0

В вашем случае вы получаете data вне функции. Таким образом, его значение будет «undefined», а crap станет массивом одного значения, которое равно undefined. Так crap.length будет всегда 1.

Попробуйте это:
function record(){ var data = document.getElementById("t1").value; var crap = [] if(crap != undefined) for(var i=0;i<data;i++){ var tmp = prompt("Add something in my array",""); crap.push(tmp); document.getElementById("demo").innerHTML += crap[i]+"<br>"; } }
Наслаждайтесь кодирования ....

0

Попробуйте это, Это позволит решить вашу проблему.

Вы просто объявить массив с именем crap, и вы пытаетесь получить crap.length еще до того, как массив заполняется, так что вы получаете вопрос. Поскольку данные имеют ваше значение, попробуйте выполнить цикл с data значением.

function record(){ 
 
      data = document.getElementById("t1").value; 
 
\t  var crap = new Array(parseInt(data)); // you should take data here, since crap is empty at this point. 
 
      console.log(data) 
 
\t  for(var i=0;i<data;i++){ 
 
\t \t crap[i] = prompt("Add something in my array",""); 
 
\t  document.getElementById("demo").innerHTML += crap[i]+"<br>"; 
 
\t  } 
 
\t }
<!doctype html> 
 
    <html> 
 
    <head> 
 
    <meta charset="utf-8"> 
 
    <title>Untitled Document</title> 
 

 
    </head> 
 

 
    <body> 
 
    <label> Enter Number of Records </label> 
 
    <input type="text" id="t1"> 
 
    <input type="button" value="Enter" onClick="record()"> 
 

 
    <h1 id="demo"></h1> 
 

 
    <script src="script.js" type="text/javascript"></script> 
 
    </body> 
 
    </html>

Пожалуйста, запустите фрагмент кода и проверить ответ.

+0

Почему вы помещаете 'data' в массив, а затем перезаписываете его в цикле? – Barmar

+0

данные находятся только в функции, но не в цикле, 'crap.length' не имеет ничего общего, поскольку в этой точке массив пуст, запустите фрагмент кода и проверьте. – Sravan

+0

'crap = new Array (data)' является разумным как 'crap = [data]', когда 'data' является чем-то отличным от целого. – Barmar