Как вызвать строковый элемент и его индекс в Javscript? - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь создать таблицу, которая показывает массив для имен.

Таким образом, таблица будет содержать ячейки, одна для номера индекса, а другая для его имени.

независимо от того, когда имена помещаются в массив, массив не отображает все элементы, которые я нажал.

Массив, который я называю sh name .getElementById().value, не возвращает значение

var ex_array = ['name1', 'name2',..],

но это выглядит так:

var ex_array = ['n', 'a', 'm', 'e', '1', 'n', 'a', 'm', 'e', '2',...]

Я пытаюсь получить элементы

var ex_array[0] = "name1"

var ex_array[1] = "name2"

для создания ячейки для

здесь код.

namelist = [];

function push_name_list() {
  var name = document.getElementById('name').value;

  namelist.push(name);
  var total = parseInt(namelist.length, 10);

  var newnamelist = "";
  
  for(var i=0; i < namelist.length; i++) {
    newnamelist = newnamelist + namelist[i] + "<br/>";
  }

  document.getElementById('array').innerHTML = newnamelist;
  
  document.getElementById('total').innerHTML = total;
}
  <body>
    <h1>Create Name List</h1>
    <!--Push name into the list.-->
    <span>Write a name.</span>
    <br/>
    <input type="text" id="name"/>
    <button onclick="push_name_list();">add</button>    

    <!--show elements in the array on the table.-->
    <table border="1" id="table" width = '200px'>
      <thead width ='100%'>
        <tr>
          <th colspan="2">
            Name List
          </th>
        </tr>
      </thead>
      <tbody id="tableshow">
        <tr>
          <th id="number"></th>
          <td id="array"></td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <th colspan="1" width ='30%'>
            total number of names :
          </th>
          <td id='total' width ='70%' margin ='auto'>
            actual total number
          </td>
        </tr>
      </tfoot>
    </table>
  </body>
</html>

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Попробуйте использовать функцию indexOf (), чтобы получить индекс элемента. Я переписываю вашу функцию, надеюсь, она будет полезна.

namelist = [];

function push_name_list() {
  var name = document.getElementById('name').value;

  namelist.push(name);
  var total = parseInt(namelist.length, 10);

  document.getElementById('total').innerHTML = total;

    document.getElementById('tableshow').insertAdjacentHTML('beforeend', '<tr><th id="number">' + namelist.indexOf(name) +'</th><td id="array">' + name + '</td</tr>');

}
0 голосов
/ 19 января 2020

Все, что вам нужно сделать, это заменить namelist[i] + "<br/>" на "<tr><th>"+(i+1)+"</th><th>"+namelist[i]+"</th></tr>";

namelist = [];

function push_name_list() {
  var name = document.getElementById('name').value;

  namelist.push(name);
  var total = parseInt(namelist.length, 10);

  var newnamelist = "";
  
  for(var i=0; i < namelist.length; i++) {
    newnamelist = newnamelist + "<tr><th>"+(i+1)+"</th><th>"+namelist[i]+"</th></tr>";
  }

  document.getElementById('tableshow').innerHTML = newnamelist;
  
  document.getElementById('total').innerHTML = total;
}

function createRow(index, value){
  return "<tr><td>"+index+"</td><td>"+value+"</td></tr>";
}
<body>
    <h1>Create Name List</h1>
    <!--Push name into the list.-->
    <span>Write a name.</span>
    <br/>
    <input type="text" id="name"/>
    <button onclick="push_name_list();">add</button>    

    <!--show elements in the array on the table.-->
    <table border="1" id="table" width = '200px'>
      <thead width ='100%'>
        <tr>
          <th colspan="2">
            Name List
          </th>
        </tr>
      </thead>
      <tbody id="tableshow">
      
      </tbody>
      <tfoot>
        <tr>
          <th colspan="1" width ='30%'>
            total number of names :
          </th>
          <td id='total' width ='70%' margin ='auto'>
            actual total number
          </td>
        </tr>
      </tfoot>
    </table>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...