2016-09-29 1 views
-1

Ich habe ein Array, das ich generiert habe und ich möchte es in html als vertikale Liste anzeigen, vorzugsweise als jedes einzelne Element.JavaScript-Array in vertikaler Liste anzeigen

Ich habe dies getan:

var a = _.intersection(viewedUserLikedUsersArray, loggedInLikedUsersArray); 
    for (var i=0; i < a.length; i++){ 
    displayListOfMatches.innerHTML = a[i]; 
    } 

aber offensichtlich diese Art und Weise wird die Innerhtml mit dem letzten Element in dem Array zu ersetzen, anstatt jeden einzelnen auf der jeweils anderen

+0

'displayListOfMatches.innerHTML + = "

" + a [i] + "

";' –

+1

@ChrisG: Mit '+ =' mit 'innerHTML' eine schlechte Idee ist. –

+0

'displayListOfMatches.innerHTML = a.join ("
");' wäre ein Weg; keine Schleife – Thomas

Antwort

1

Stapeln wahrscheinlich Sie erhalten Leute, die sagen, dies zu tun:

displayListOfMatches.innerHTML = "<p>" + a.join("</p><p>") + "</p>"; 

... die aber arbeitet Beachten Sie, dass der Inhalt der Array-Einträge als HTML analysiert wird.

Wenn das nicht in Ordnung ist, können Sie entweder eine HTML-Zeichenfolge erstellen, indem Sie diese Zeichen über map ersetzt:

displayListOfMatches.innerHTML = a.map(function(entry) { 
    return "<p>" + entry.replace(/&/g, "&amp;").replace(/</g, "&lt;") + "</p>"; 
}).join(""); 

... oder die Elemente bauen, wie Sie gehen, vielleicht mit forEach:

displayListOfMatches.innerHTML = ""; // You can leave this out if it's empty 
a.forEach(function(entry) { 
    var p = document.createElement("p"); 
    p.appendChild(document.createTextNode(entry)); 
    displayListOfMatches.appendChild(p); 
}); 

Natürlich können Sie in allen Fällen verschiedene Elemente/Markups verwenden.

+0

ok yeh denke, das macht Sinn. keine Ahnung, warum ich einen Syntaxfehler bekomme. Ich habe gerade Ihren Code in eine Funktion eingefügt und nun klagt er über die letzte Klammer ... –

+0

@Theworm: Das wäre, weil ich die '';; abbrach; das hätte am Ende des zweiten Codeblocks sein sollen. :-) Das tut mir leid. Es ist jetzt da. –

+0

großartig! Danke vielmals –