hinzufügen mehrerer Werte an ein array in javascript
Ich habe ein Problem mit der Ausgabe eines array, denke ich.
Was ich würde, wie die Ausgabe Aussehen wird:
1. FirstName LastName DOB
aber was ich am Ende mit ist:
1. FirstName
2. LastName
3. DOB
Hier ist was ich habe, so weit, aber ich bin nicht zu sehen, was ich falsch mache.
//global variable:
var tasks = [];
//Function called when the form is submitted.
//Function adds a task to the global array.
function addTask() {
'use strict';
//Get the task:
var firstName = document.getElementById('firstName');
var lastName = document.getElementById('lastName');
var dob = document.getElementById('dob');
//numerical value of dob
var dateofBirth = new Date(dob.value);
//Reference to where the output goes:
var output = document.getElementById('output');
//For the output:
var message = '';
if (firstName.value && lastName.value && dob.value) {
//Add the item to the array:
tasks.push(firstName.value, lastName.value, dateofBirth.toString());
//Update the page:
message = '<h2>Persons Entered</h2><ol>';
for (var i = 0, count = tasks.length; i < count; i++) {
message += '<li>' + tasks[i] + '</li>';
}
message += '</ol>';
output.innerHTML = message;
} //End of IF.
//Return false to prevent submission:
return false;
} //End of addTask() function.
//Initial setup:
function init() {
'use strict';
document.getElementById('theForm').onsubmit = addTask;
} //End of init() function.
window.onload = init;
Dank, ich hoffe das hilft Euch mir zu helfen.
- Weil <li> vertikal aufgestellt sind standardmäßig. Sie eine änderung an der css über die <ol> <li> Attribut display: inline; list-style-type: none; wenn Sie wollen, dass es waagerecht ohne Punkt. Oder, setzen Sie in der gleichen <li>
- Sie sollten Ihr Konzept zu ändern, um mit zu beginnen. Das ist ein typischer Missbrauch der
.innerHTML
. Jedes mal, wenn Sie eine neue Aufgabe hinzufügen, Sie zerstören die alten und neu zu erstellen Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dann
etc..
Bearbeiten
Anhand dieser können Sie dann erstellen Sie Ihre messasge wie diese :
Natürlich die span-tags sind optionnal aber dies wird Ihnen ermöglichen, einen Stil, um jedem Teil der Informationen, die in Ihren css (width, padding, usw..), und Sie werden immer in der Lage, leicht wählen Sie eine Eigenschaft einer Aufgabe, die durch den index
Dein problem ist, dass Sie hinzufügen
li
Elemente zu jedem element in deinem array, sondern nur hinzufügen teh li einmalWarum setzen Sie jedes element in seinem eigenen
<li>
?Wenn Sie nicht setzen es in verschiedenen
<li>
aber in eine Allgemeine, alles wird gutfirstNamelastNameDOB
alles DurcheinanderBenutzen, Umfassen. Sie können Arrays verwendet werden.join
Sie möchten, fügen Sie Sie als array an das array, nicht als Werte an das array
Was Sie haben, ist dies:
was ich denke, Sie wollen, ist dies:
Die Antwort oben ist die gleiche, aber mit ein Objekt, kein array.
Was Sie tun ist, drücken Sie mehrere Werte in das array. Was Sie wollen, zu tun ist, um die verschiedenen Werte zu einem einzigen Wert, und drücken Sie dann diesen Wert in das array. Um den genauen Ausgang, wie Sie angefordert wurden, können Sie diese mehrere Werte in einem durch die Verkettung in einen string:
Ändern:
In diesem:
Das bedeutet doch, verlieren Sie den Zugriff auf die einzelnen Werte. Wenn Sie möchten, den Zugang zu diesen, könnten Sie stattdessen versammeln Sie sich in ein Objekt:
Sein ein wenig verwirrend, was Sie Fragen. Wenn Sie wollen einfach nur dies:
über diese:
Dann ist dein Problem nicht mit dem array, aber mit, wie Sie bei der Definition der code der Schleife. Versuchen Sie dies:
Diese Weise sind Sie setzen die array-Elemente in einer einzigen Liste-element, sondern über drei von Ihnen.
BEARBEITEN - für Multi-dimensionalen Arrays-traversal
Dies ist unter der Annahme, dass das array ist so definiert (pro Dan Steingart ist Antwort):
Wir dann die folgende:
Hier sind Sie durchqueren jedes element von
tasks
wenn sich jedes element vontasks
ist auch selbst ein array. DietoString()
auf ein inneres array zeigt die Werte in einer Komma-separierten Mode, dann diereplace()
Funktion ersetzt einfach das Komma mit Leerzeichen.