I can not add value in Array

1

I want to add the name entered at the prompt into an array and display the names in a table but when adding it it displays the null value in the table.

 var nomes=[];
var indice=[];
    var i=1;

    window.onload=function(){


            do{
         var nome=  prompt("Digite o nome");    
             cadastrarProduto(nome);


                 }while (nome != null );
        listarProdutos();
      console.log("nome"+nome);



    }



function cadastrarProduto(nome){

    nomes[i]=nome;


   indice[i]=i;



}



function listarProdutos(){
    var conteudo="<table border='2'>";
     conteudo+="<tr>";
     conteudo+="<th>";
    conteudo+="<div class='indice'><p>Indice</p></div>";
      conteudo+="</th>";
    conteudo+="<th>";
    conteudo+="<div class='nome'><p>Nome</p></div>";
      conteudo+="</th>";
     conteudo+="</tr>";
    //pos contator
    for(var pos=1;pos<indice.length;pos++){
        conteudo+="<tr>";

        conteudo+="<td>"+indice[pos]+"</td>";


        conteudo+="<td>"+nomes[pos]+"</td>";

        conteudo+="</tr>";
    }
    conteudo+="</table>";
    document.getElementById("txtrelatorio").innerHTML=conteudo;
}
    
asked by anonymous 29.09.2017 / 00:09

2 answers

2

There are some things you need to fix:

  • Failed to increase the value of i in cadastrarProduto which causes it to always be in position 1 with only one name.
  • When you cancel the prompt re null that is also being added to the array
  • Being the i for the position in the array must begin in 0 .

In fact, you do not even need an array to store the indexes.

See how your code can look simpler:

//agora sem os indices
var nomes = []; 

window.onload = function() {

  do {
    var nome = prompt("Digite o nome");
    if (nome){ //so adiciona se não for null
      cadastrarProduto(nome);
    }
  } while (nome != null);
  
  listarProdutos();
  console.log("nome" + nome);
}

function cadastrarProduto(nome) {
  nomes.push(nome); //para adicionar ao array basta chamar a função push
}

function listarProdutos() {
  var conteudo = "<table border='2'>";
  conteudo += "<tr>";
  conteudo += "<th>";
  conteudo += "<div class='indice'><p>Indice</p></div>";
  conteudo += "</th>";
  conteudo += "<th>";
  conteudo += "<div class='nome'><p>Nome</p></div>";
  conteudo += "</th>";
  conteudo += "</tr>";
  
  for (var pos = 0 /*agora começa em 0*/; pos < nomes.length; pos++) {
    conteudo += "<tr>";
    conteudo += "<td>" + (pos+1) + "</td>"; //aqui escreve o índice correto
    conteudo += "<td>" + nomes[pos] + "</td>";
    conteudo += "</tr>";
  }

  conteudo += "</table>";
  document.getElementById("txtrelatorio").innerHTML = conteudo;
}
<div id="txtrelatorio"></div>
    
29.09.2017 / 00:14
0
<script>
var nomes=[];
var i=1;

window.onload=function(){
    do{
        var nome=prompt("Digite o nome para o indice " + i + ":");
        if(nome){
            console.log("nome[" + i + "]: " + nome);
            cadastrarProduto(nome);
        }
    }while(nome!=="");

    listarProdutos();
}

function cadastrarProduto(nome){
    nomes[i]=nome;
    i++;
}

function listarProdutos(){
    var conteudo="<table border='2'>";
    conteudo+="<tr>";
    conteudo+="<th>";
    conteudo+="<div class='indice'><p>Indice</p></div>";
    conteudo+="</th>";
    conteudo+="<th>";
    conteudo+="<div class='nome'><p>Nome</p></div>";
    conteudo+="</th>";
    conteudo+="</tr>";

  //pos contator
    for(var pos=1;pos<nomes.length;pos++){
        conteudo+="<tr>";
        conteudo+="<td>"+pos+"</td>";
        conteudo+="<td>"+nomes[pos]+"</td>";
        conteudo+="</tr>";
    }
    conteudo+="</table>";
    document.getElementById("txtrelatorio").innerHTML=conteudo;
}
</script>

<div id="txtrelatorio"></div>
    
29.09.2017 / 00:26