2017-02-22 1 views
2

Ich versuche, ein Textfeld anzubieten, in dem der Benutzer die Größe des zu erstellenden Arrays eingeben kann, drücken Sie Senden, dann erscheint eine Eingabeaufforderung mehrmals, wobei jedes Mal nach einer Ganzzahl gefragt wird, die in das Array eingefügt werden soll.Schleife einen Code n mal in Javascript, n von Benutzereingabe bestimmt?

Dies ist, was ich bisher:

http://codepen.io/sharryliang0730/pen/pRMqOm

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 

    window.onload = function() { 
     document.getElementById('ifYes').style.display = 'none'; 
     document.getElementById('ifNo').style.display = 'none'; 
      } 

function yesnoCheck() { 
if (document.getElementById('yesCheck').onclick) { 
    document.getElementById('ifYes').style.display = 'block'; 
    document.getElementById('ifNo').style.display = 'none'; 
} 
else if(document.getElementById('noCheck').onclick) { 
    document.getElementById('ifNo').style.display = 'block'; 
    document.getElementById('ifYes').style.display = 'none'; 
    } 
} 


      var submit = document.getElementById('submit'); 
    submit.onclick = function() { 
getTheData() ; 
} 



function getTheData() { 
    var sizeInput = document.getElementById("sizeInput"); 
    var inputValues = new Array(); 

    for (var i = 0; i < sizeInput; i++){ 
    inputValues.push(prompt('Enter the value')); 

    } 

} 
</script> 
</head> 
<body> 
Please choose what you wanna do:<br> 

<input type="button" onclick="javascript:yesnoCheck();" name="yesno" id="yesCheck" value="Create Array"/> 


<input type="button" onclick="javascript:yesnoCheck();" name="yesno" id="noCheck"value="Search Array"/> 


<br> 
<div id="ifYes" style="display:none"> 
<br> Please input the size of the array.<br><br> 
<input type="text" class="sizeInput" id="sizeInput" /> <br/><br> 
<input type="button" name="submit" id="submit" value="Submit"/> 
</div> 


<div id="ifNo" style="display:none"> 

<div id="showInputValues"> 
</div> 

EDIT: ich in der vorgeschlagenen Code hinzugefügt, aber es funktioniert immer noch nicht. Fehle ich etwas?

+0

Also, wo ist die Eingabeaufforderung? –

+0

Das ist, was ich versuche zu tun. Ich weiß nicht, wie ich es einrichten soll, so dass die Eingabeaufforderung für viele Male angezeigt wird, wie oft die Benutzereingabe dafür erfolgt. Oder meinen Sie die Eingabeaufforderung für die Größe des Arrays vor der Schleife? Ich habe Eingabe-Typ = Text anstelle einer neuen Fenster-Eingabeaufforderung verwendet. Beeinflusst das Dinge? – Sharry

Antwort

1

Ihr inputValues ​​ist leer. Sie müssen dies hinzufügen:

var inputValues = new Array(); 
    for (var i = 0; i < sizeInput; i++) 
    { 
     inputValues.push(prompt('Enter the value')); 

    } 

es gibt Ihnen ein Array wie folgt: [ "1", "2", "3"]

Aber wenn Sie möchten, dass Ihre Array int Werte tun dies hat:

for (var i = 0; i < 5; i++) 
    { 
     inputValues.push(parseInt(prompt('Enter the value')));//[1,2,3] 
    } 

Durch Ihre Erklärungen var sizeInput = document.getElementById("sizeInput");

sizeInput ist eine Zahl, die Benutzer eingegeben werden. Wenn es zum Beispiel 5 ist, und Sie mögen das Array [0,1,2,3,4] Sie müssen dies tun:

for (var i = 0; i < sizeInput; i++) 
    { 
    inputValues.push(i); 
    } 

Sie viele Probleme in Ihrem Code haben, bearbeiten ich alle in Code-Schnipsel unten:

<head> 
 
    <script type="text/javascript"> 
 
     window.onload = function() 
 
     { 
 
      document.getElementById('ifYes').style.display = 'none'; 
 
      document.getElementById('ifNo').style.display = 'none'; 
 
      var submit = document.getElementById('submit'); 
 
      submit.onclick = function() 
 
      { 
 
       getTheData(); 
 
      } 
 
     } 
 

 
     function yesnoCheck() 
 
     { 
 
      if (document.getElementById('yesCheck').onclick) 
 
      { 
 
       document.getElementById('ifYes').style.display = 'block'; 
 
       document.getElementById('ifNo').style.display = 'none'; 
 
      } 
 
      else if (document.getElementById('noCheck').onclick) 
 
      { 
 
       document.getElementById('ifNo').style.display = 'block'; 
 
       document.getElementById('ifYes').style.display = 'none'; 
 
      } 
 
     } 
 

 
     function getTheData() 
 
     { 
 
      var sizeInput = document.getElementById("sizeInput").value; 
 
      var inputValues = new Array(); 
 

 
      for (var i = 0; i < sizeInput; i++) 
 
      { 
 
       inputValues.push(prompt('Enter the value')); 
 

 
      } 
 

 
     } 
 
    </script> 
 
</head> 
 
<body> 
 
    Please choose what you wanna do:<br> 
 

 
    <input type="button" onclick="javascript: yesnoCheck();" name="yesno" id="yesCheck" value="Create Array" /> 
 

 

 
    <input type="button" onclick="javascript: yesnoCheck();" name="yesno" id="noCheck" value="Search Array" /> 
 

 

 
    <br> 
 
    <div id="ifYes" style="display: none"> 
 
     <br> 
 
     Please input the size of the array.<br> 
 
     <br> 
 
     <input type="text" class="sizeInput" id="sizeInput" /> 
 
     <br /> 
 
     <br> 
 
     <input type="button" onclick="javascript: loopFunction();" name="submit" id="submit" value="Submit" /> 
 
    </div> 
 

 

 
    <div id="ifNo" style="display: none"></div> 
 

 
    <div id="showInputValues"> 
 
    </div> 
 
</body>

+0

Vielen Dank für die Antwort! Ich habe meinen Code aktualisiert, aber die Eingabeaufforderungen werden nicht angezeigt ... Ich habe das Gefühl, dass es etwas mit meiner Größe zu tun hat. Das bewirkt, dass es nicht funktioniert ... – Sharry

+0

Ich habe ein Code-Snippet mit einigen Änderungen in Ihrem Code hinzugefügt. Bitte schauen Sie und lassen Sie mich das Ergebnis wissen. –

+0

Ich bemerkte, dass Sie die Übermittlungsinformationen in die erste Funktion verschoben, ".value" hinzugefügt und "onclick =" javascript: loopFunction(); "zum html hinzugefügt haben. Wenn es Ihnen nichts ausmacht zu erklären, warum ist das so? Onclick. Ich dachte, es in dem Skript zu haben war genug. Danke nochmal. Ich habe definitiv mehr ich muss über js recherchieren! – Sharry