Fill HTML table with values from JS loop

General Tech Learning Aids/Tools 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Learning Aids/Tools related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I want my table 'scores' to be populated by the 'ability' values held in the object.

I believe my problems lie with the following lines:

var player = document.getElementById("player" + i + 1);
playerscore.innerText = playerList[i].ability;

I can get this to work by not using a value of 'i' to increment the ID's, I simply write a line of code for each ID. I'm sure this is not the best way of doing things and therefore want to cycle through the ID's using the loop already set up.

Where have I gone wrong with my code and what would be a better way of doing this?

Thanks in advance.

 

var playerList = [
  {name: "player1", highScore: 1, ability: 8},
  {name: "player2", highScore: 1, ability: 7},
  {name: "player3", highScore: 1, ability: 6},
  {name: "player4", highScore: 1, ability: 5},
  {name: "player5", highScore: 1, ability: 4},
  {name: "player6", highScore: 1, ability: 3},
  {name: "player7", highScore: 1, ability: 2},
  {name: "player8", highScore: 1, ability: 1}
];

for (var i = 0; i < playerList.length; i++) {
  console.log(i);
  var player = document.getElementById("player" + i + 1);
  var playerscore = document.getElementById('player' + i + 1 + "score")
  var progress=Math.random();
  progress=11*progress;
  progress=Math.floor(progress);
  playerList[i].ability=playerList[i].ability+progress;
  console.log(
                                                
                                                
0 views
0 shares
profilepic.png
manpreet 2 years ago

Wrap your i + 1 into paranthesis in your getElementById - see demo below:

 

var playerList = [
{name: "player1", highScore: 1, ability: 8},
{name: "player2", highScore: 1, ability: 7},
{name: "player3", highScore: 1, ability: 6},
{name: "player4", highScore: 1, ability: 5},
{name: "player5", highScore: 1, ability: 4},
{name: "player6", highScore: 1, ability: 3},
{name: "player7", highScore: 1, ability: 2},
{name: "player8", highScore: 1, ability: 1}
];

    for (var i = 0; i < playerList.length; i++) {
            var player = document.getElementById("player" + (i + 1));
            var playerscore = document.getElementById('player' + (i + 1) + "score")
    var progress=Math.random();
    progress=11*progress;
    progress=Math.floor(progress);
    playerList[i].ability=playerList[i].ability+progress;

            //add players score to the table//

            playerscore.innerText = playerList[i].ability;

    }
<table>
  
    Player
    Score
  
  
     id="player1">1
     id=
                                                    
                                                    
0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.