Не могу вытащить значение из формы

145
10 мая 2019, 13:40

При нажатии на кнопку solve у меня должны вытаскиваться значения из создаваемых в массиве inp полей.

Но вытаскивается только последняя строчка и заполняется весь массив тоже последней строчкой.

Где ошибка и как ее исправить?

decide = document.getElementById('decide'); 
inp = [, ]; 
m = [, ] 
decide.addEventListener('click', function(e) { 
  e.preventDefault(); 
  row = parseInt(document.getElementById('resurse').value); //строки(ресурсы) 
  column = parseInt(document.getElementById('pred').value); //столбцы(предприятия) 
  lab = document.getElementById('label'); 
  lab.innerHTML = 'Введите данные<br>'; 
  console.log('row = ', row, 'column = ', column); 
  for (var i = 0; i < row; i++) { 
    for (var j = 0; j < column; j++) { 
      inp[i, j] = document.createElement('input'); 
      inp[i, j].id = 'inp'; 
      inp[i, j].type = 'number'; 
      lab.appendChild(inp[i, j]); 
    } 
    br = document.createElement('br'); 
    lab.appendChild(br); 
  } 
 
  solve = document.createElement('button'); 
  solve.id = 'solve'; 
  solve.innerHTML = 'Решить'; 
  label.appendChild(solve); 
 
  solve.addEventListener('click', function(e) { 
    e.preventDefault(); 
    for (var i = 0; i < row; i++) { 
      for (var j = 0; j < column; j++) { 
        console.log('[', i, '][', j, '] = ', parseInt(inp[i, j].value)); 
      } 
    } 
  }) 
});
<form id="form" class="form"> 
    <label> 
        <p>Введите количество распределяемых ресурсов</p> 
        <input type="number" id='resurse'> 
        <p>Введите количество предприятий</p> 
        <input type='number' id="pred"> 
    </label> 
    <label> 
        <button id="decide">Вводить дальше</button> 
    </label> 
    <br> 
</form> 
<form id="form-data" class="form-data"> 
    <div id='form-data__button' class="form-data__button"> 
        <label id="label"></label> 
    </div> 
</form>

Answer 1

Двумерные массивы в js делаются так:

var inp = [];
...
  for (var i = 0; i < row; i++) {
    inp[i] = [];
    for (var j = 0; j < column; j++) {
      inp[i][j] = document.createElement('input');
      inp[i][j].id = 'inp';
      inp[i][j].type = 'number';
      lab.appendChild(inp[i][j]);
    }
    br = document.createElement('br');
    lab.appendChild(br);
  }
...
  solve.addEventListener('click', function(e) {
    e.preventDefault();
    for (var i = 0; i < row; i++) {
      for (var j = 0; j < column; j++) {
        console.log('[', i, '][', j, '] = ', parseInt(inp[i][j].value));
      }
    }
  })

Добавьте в Ваш код console.log(inp);, и Вы увидите в чем дело: массив inp у Вас - одномерный, а второй индекс просто игнорируется.

READ ALSO
Оптимизировать iframe внутри HTML

Оптимизировать iframe внутри HTML

Есть раздел сайта полон видео что грузит браузерЯ скрыл эти ролики display: none; и при наведении мышью отображаю

142
как доделать меню на чистом css?

как доделать меню на чистом css?

Помогите доделать меню на CSSПроблема в том что я не знаю как заставить все

187
jQuery filidownload - в failCallback не приходит ошибка из Asp Web Api метода

jQuery filidownload - в failCallback не приходит ошибка из Asp Web Api метода

На стороне сервера срабатывает catch блокЭто правильно, ожидаемый результат:

158