В чем ошибка в моем JavaScript коде, который изменяет атрибуты элементов таблицы в цикле?

Как правильно изменить атрибут "name" элемента input в первом столбце таблицы после динамического добавления или удаления строк? Мой текущий код, который не работает, приведен ниже. Что я делаю не так? Код выглядит следующим образом: <br/><pre><code class="javascript">var table = document.getElementById("sod-sotr-table");
var rowCount = table.rows.length;
if(rowCount &gt; 1){
	for (let i = 1; i &lt; rowCount-1; i++) {
	var element1 = table.rows[i].getElementById("idinputsodsotr1");
	element1.setAttribute("name", "idnaimSOD-" + i);
	}
}</code></pre> Ваша помощь будет крайне полезна, так как я только начинаю изучать JavaScript. Спасибо!
  • 21 мая 2024 г. 15:50
Ответы на вопрос 2
Ошибка в вашем коде заключается в том, что метод `getElementById` не является методом элемента `tr` (строки таблицы), поэтому его нельзя вызывать непосредственно от `table.rows[i]`.

Для того чтобы изменить атрибут "name" элемента `input` в первом столбце таблицы после динамического добавления или удаления строк, вам нужно изменить ваш код следующим образом:

```javascript
var table = document.getElementById("sod-sotr-table");
var rowCount = table.rows.length;

if(rowCount > 1){
	for (let i = 1; i < rowCount; i++) {
		var element1 = table.rows[i].cells[0].getElementsByTagName("input")[0];
		element1.setAttribute("name", "idnaimSOD-" + i);
	}
}
```

Этот код будет искать все элементы `input` в первом столбце каждой строки таблицы и изменять их атрибут "name" в соответствии с указанным форматом.
По подсказке Ankhena все заработало. 
В итоге:
var table = document.getElementById("sod-sotr-table");
var rowCount = table.rows.length;
if(rowCount > 1){
  for (let i = 1; i < rowCount-1; i++) {
  var element1 = table.rows[i].getElementsByTagName("input");
  // соответственно доступ к input`ам
  element1[0].setAttribute("name", "idnaimSOD-" + i); // первый, а далее по надобности...
  }
}

Вопрос закрыт. Благодарю всех !!!
Похожие вопросы