невозможно перебрать объект - PullRequest
0 голосов
/ 07 мая 2019

У меня есть литерал объекта с различными объектами, но я не могу отобразить значения на веб-странице. Я пробовал метод «для цикла», но он показывает только одно значение. Я хочу отобразить все свойства вопроса в объекте вопросов, но с помощью этого кода я могу отображать только одно свойство.

let questions = [{
    question: "Jinnah's first salary",
    choice1: 'Rs-1',
    choice2: 'Rs-1000',
    choice3: 'Rs-10000',
    choice4: 'Rs-100,000',
    correct: 'A'
  },
  {
    question: "First recognised Pakistan",
    choice1: 'USA',
    choice2: 'Iran',
    choice3: 'China',
    choice4: 'None',
    correct: 'B'
  },
  {
    question: "National bird",
    choice1: 'Bee',
    choice2: 'Parrot',
    choice3: 'Chokor',
    choice4: 'Peagon',
    correct: 'C'
  },
];


for (let i = 0; i <= questions.length; i++) {
  document.querySelector('.p').innerText = questions[i].question;
}
<!DOCTYPE html>
<html lang="en">
<body>
  <div class="p"></div>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 07 мая 2019
  1. Удалите = из цикла for, так как массив основан на нуле , поэтому вы хотите запустить от 0 до длины массива. В вашем случае длина массива равна 3, поэтому последний элемент будет questions[2]. Таким образом, цикл должен работать от 0 до 2, а не 3.

  2. Добавьте + перед присвоением innerText, чтобы новый текст был добавлен к уже существующему тексту (Подробнее о Добавление присвоения ).

let questions = [{
    question: "Jinnah's first salary",
    choice1: 'Rs-1',
    choice2: 'Rs-1000',
    choice3: 'Rs-10000',
    choice4: 'Rs-100,000',
    correct: 'A'
  },
  {
    question: "First recognised Pakistan",
    choice1: 'USA',
    choice2: 'Iran',
    choice3: 'China',
    choice4: 'None',
    correct: 'B'
  },
  {
    question: "National bird",
    choice1: 'Bee',
    choice2: 'Parrot',
    choice3: 'Chokor',
    choice4: 'Peagon',
    correct: 'C'
  },
];


for (let i = 0; i < questions.length; i++) {
  document.querySelector('.p').innerText += questions[i].question;
}
<!DOCTYPE html>
<html lang="en">
<body>
  <div class="p"></div>
</body>
</html>
0 голосов
/ 07 мая 2019

Если вы хотите иметь один абзац на вопрос, вы должны будете сгенерировать каждый абзац в виде HTML, например, следующим образом:

for (var i = 0; i < questions.length; i++) {  
   document.querySelector('body').innerHTML += "<p>"+questions[i].question+"</p>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...