function a()
{
var e2 = document.getElementById("fid");
var strUser2 = e2.options[e2.selectedIndex].text;
document.getElementById("fid2").value=strUser2;
}<table>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
<tr>
<td><input type = "text" name = "id1" form = "form2" id = "id1" class = "form-control input-sm" ></td>
<td><select class = "form-control" id = "fid" name = "fid" form = "form2" required>
<option value = "" selected>Select</option>
<c:forEach var = "b" items = "${model.list2}">
<option value = "${b.id}">${b.name}</option>
</c:forEach>
</select></td>
<td ><input class = "form-control" id = "fid2" name = "fid2" required></td>
</tr>
</table>Строки таблицы динамические. Строки будут заполнены на основе выполненного поиска. Доступны для редактирования только второй и третий столбцы. Столбец 3 должен содержать значение, которое было выбрано в столбце 2. Этот код работает только для 1-й строки. Но это должно работать для всего ряда. Как этого добиться.
вы используете один и тот же идентификатор для нескольких элементов, попробуйте изменить его
На самом деле эти строки таблицы динамические. Я отредактировал свой фрагмент, поэтому, пожалуйста, проверьте один раз и дайте мне знать, где я ошибаюсь



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать это так, потому что никакие два элемента на одной веб-странице не могут иметь одинаковый идентификатор. Вы также можете сделать это с помощью селекторов классов.
function a()
{
var e1 = document.getElementById("id1");
var strUser2 = e1.options[e1.selectedIndex].text;
document.getElementById("id2").value=strUser2;
}
function b()
{
var e2 = document.getElementById("id3");
var strUser2 = e2.options[e2.selectedIndex].text;
document.getElementById("id4").value=strUser2;
}<table>
<tr>
<th>A</th>
<th>B</th>
</tr>
<tr>
<td><select class = "form-control select" id = "id1" name = "id1" onchange = "a()" required>
<option selected>Select</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
</select></td>
<td><input type = "text" name = "id2" id = "id2" class = "texts"></td>
</tr>
<tr>
<td><select class = "form-control" id = "id3" name = "id3" onchange = "b()" required>
<option selected>Select</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
</select></td>
<td><input type = "text" name = "id4" id = "id4"></td>
</tr>
</table>Попробуйте передать select вашей функции, чтобы предотвратить один запрос DOM, и сопоставьте select с вводом с именем свойства для id.
Таким образом, он чище, быстрее и пригоден для повторного использования.
<table>
<tr>
<th>A</th>
<th>B</th>
</tr>
<tr>
<td><select class = "form-control" name = "id1" onchange = "a( this )" required>
<option selected>Select</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
</select></td>
<td><input type = "text" id = "id1"></td>
</tr>
<tr>
<td><select class = "form-control" name = "id2" onchange = "a( this )" required>
<option selected>Select</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
</select></td>
<td><input type = "text" id = "id2"></td>
</tr>
</table>
<script>
function a( select ) {
var target = document.getElementById( select.name );
target.value = select.value;
}
</script>
Не полагайтесь на идентификаторы, я бы решил это так функция a теперь принимает 2 аргумента, первый - это текущий элемент выбора, второй - это идентификатор входных данных для обновления (он должен быть другим и не дублироваться)
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<meta http-equiv = "X-UA-Compatible" content = "ie=edge">
<title>Document</title>
</head>
<body>
<table>
<tr>
<th>A</th>
<th>B</th>
</tr>
<tr>
<td><select class = "form-control" id = "id1" name = "id1" onchange = "a(this, 'id2')" required>
<option selected>Select</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
</select></td>
<td><input type = "text" name = "id2" id = "id2"></td>
</tr>
<tr>
<td><select class = "form-control " id = "id1" name = "id1" onchange = "a(this, 'id3')" required>
<option selected>Select</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
</select></td>
<td><input type = "text" name = "id3" id = "id3"></td>
</tr>
</table>
<script>
function a(select, inputId) {
var input = document.getElementById(inputId)
input.value = select.value;
}
</script>
</body>
</html>
два элемента никогда не могут иметь одинаковый идентификатор