Lorsque je tente cela, la page HMTL affiche uniquement le dernier objet, au lieu de tous les objets.
Voici mon fichier JavaScript
var family = { aaron: { name: 'Aaron', age: 30 }, megan: { name: 'Megan', age: 40 }, aaliyah: { name: 'Aaliyah', age: 2 } } var list = function(family) { for (var prop in family) { var elList = document.getElementById('aaron-family').innerHTML = prop; } } list(family);
Et voici mon fichier HTML
<html> <head> <title>Aaron's Test With Objects</title> </head> <li id="aaron-family">Hey, this is where it goes</li> <footer> <script src="objects.js"></script> </footer> </html>
Eh bien, vous avez quelques problèmes là-bas ( <li>
tag sans parent <ol>
ou <ul>
, entre autres) … mais je dirais que l'erreur principale est que vous remplacez chaque sortie suivante avec Chaque affectation à innerHTML
.
Solution: affectez un tableau compilé à innerHTML
(en utilisant join
pour inclure des espaces entre les valeurs)
var list = function(family) { var names = []; for (var prop in family) { names.push(prop.name); } document.getElementById('aaron-family').innerHTML = names.join(' '); } list(family);
Supprimez elList
parce qu'il n'y a aucun intérêt à l'avoir …
Ensuite, changez
document.getElementById('aaron-family').innerHTML = prop;
À
document.getElementById('aaron-family').innerHTML += prop;
De cette façon, vous ne définissez pas constamment l' innherHTML
à prop
. Aussi, vous pourriez trouver mieux de changer la fonction à la suivante afin d'éviter de constamment obtenir l'élément.
function list(family) { var elList = document.getElementById('aaron-family'); for (var prop in family) { elList.innerHTML += prop; } }
J'espère que cela t'aides:)
Merci les gars! Voici la solution finale avec laquelle j'ai rencontré:
JS
var family = { aaron: { name: 'Aaron', age: 30 }, megan: { name: 'Megan', age: 40 }, aaliyah: { name: 'Aaliyah', age: 2 } } var list = function(family) { for (var prop in family) { document.getElementById('aaron-family').innerHTML += '<li>' + prop + '</li>'; console.log(prop); } }
HTML
<html> <head> <title>Aaron's Test With Objects</title> </head> <ul id="aaron-family"> </ul> <footer> <script src="objects.js"></script> </footer> </html>
Je suis sûr que cela peut être refacturé, mais cela fonctionne, visuellement.