Member 12995525 Ответов: 1

Как я могу остановить вывод цикла, печатаемого дважды


Я хочу сделать программу, которая дает список людей в космосе.



Это то, что я хочу, чтобы выход был похож:

name1 name2 name3

но вот результат:

name1 name2 name3 name1 name2 name3

Что же мне делать?
спасибо

Что я уже пробовал:

<div id="space_astronauts">
    <span id="child_1"></span>
</div>

var space = new XMLHttpRequest();
space.open("GET", "http://api.open-notify.org/astros.json", "jsonp");
space.send(null);
space.onreadystatechange = function() {
	var res = JSON.parse(space.response);
	
	var totalPeople = res.number;
	for (i = 0; i < totalPeople; i++) {
		var pElement = document.getElementById("space_astronauts");
		var firstChild = pElement.firstChild;
		var astronautsElement = document.createElement("a");
   		var txt = document.createTextNode(res.people[i].name + " ");
   		astronautsElement.appendChild(txt);

   		pElement.insertBefore(astronautsElement, firstChild);
   	}
}

Peter Leow

покажите пример содержания пространства. а что такое res. number?

Karthik_Mahalingam

http://api.open-notify.org/astros.json

1 Ответов

Рейтинг:
6

Karthik_Mahalingam

if (this.readyState == 4 && this.status == 200) {
вышеприведенное условие отсутствует в ответе, что приводит к печати данных дважды.

var space = new XMLHttpRequest();
       space.open("GET", "http://api.open-notify.org/astros.json", "jsonp");
       space.send(null);
       space.onreadystatechange = function () {
           if (this.readyState == 4 && this.status == 200) {
               var res = JSON.parse(space.response);

               var totalPeople = res.number;
               for (i = 0; i < totalPeople; i++) {
                   var pElement = document.getElementById("space_astronauts");
                   var firstChild = pElement.firstChild;
                   var astronautsElement = document.createElement("a");
                   var txt = document.createTextNode(res.people[i].name + " ");
                   astronautsElement.appendChild(txt);

                   pElement.insertBefore(astronautsElement, firstChild);
               }
           }
       }


Peter Leow

5ед!

Karthik_Mahalingam

Спасибо Питер Леоу

Member 12995525

Спасибо, это сработало !

Karthik_Mahalingam

Добро пожаловать