сначала у меня есть ввод с name="ot_jam['+ number +']" и onchange"otNormal(this.value)", во-вторых, у меня есть ввод с именем = "ot_uang ['+ число +']" так что теперь у меня есть несколько входных данных, и я хочу, чтобы каждый ot_jam просто изменил значение ot_uang с тем же именем, моя проблема в том, что я застрял, когда у меня есть несколько входных данных, и я меняю значение ot_jam, но я просто меняю последний ввод с именем ot_uang
Извините, мой английский так плох, что я все еще учусь.
Это мой HTML-код
<div class = "col-6 text-right mb-2">
<button type = "button" class = "btn btn-success ti-plus" id = "BarisBaru"></button>
</div>
<div class = "form-group" id = "tableLoop"></div>
Это мой код Js
<script type = "text/javascript">
$(document).ready(function() {
for (baris = 1; baris <= 1; baris++) {
Barisbaru();
}
$('#BarisBaru').click(function(e) {
e.preventDefault();
Barisbaru();
});
});
function otNormal(value) {
let a = 1.5 * (value / 173) * 3000000;
const b = Math.round(a);
const currency = b.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
var number = $("#tableLoop .row .num").length;
$('[name = "ot_uang[' + number + ']"]').val(currency);
// var xx = $('[name = "ot_jam[' + number + ']"]').val();
// if (xx == 0) {
// $('[name = "ot_uang[' + number + ']"]').val("kosong");
// } else {
// $('[name = "ot_uang[' + number + ']"]').val(currency);
// }
}
function Barisbaru() {
$(document).ready(function() {
$("[data-toggle='tooltip']").tooltip();
});
var number = $("#tableLoop .row .num").length + 1;
var Baris = '<div class = "row mb-2">';
Baris += '<div class = "num col-6 col-xl-2 my-auto">';
Baris += '<span>OT.<span class = "count_slip"></span></span>';
Baris += '</div>';
Baris += '<div class = "col-6 col-xl-3">';
Baris += '<input class = "form-control" type = "number" name = "ot_jam[' + number + ']" value = "0.0" onchange = "otNormal(this.value)">';
Baris += '</div>';
Baris += '<div class = "col-6 col-xl-3 my-auto">';
Baris += '<span>Jam => Rp.</span>';
Baris += '</div>';
Baris += '<div class = "col-6 col-xl-3">';
Baris += '<input class = "form-control" type = "text" name = "ot_uang[' + number + ']" value = "0" readonly>';
Baris += '</div>';
Baris += '<button class = "btn btn-sm btn-danger ti-close" data-toggle = "tooltip" id = "HapusBaris"></button>';
$("#tableLoop").append(Baris);
}
</script>



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


Причина, по которой вы получали только последний ввод, была связана с «номером var» внутри otNormal(). Он всегда собирался получить последнее число, используя длину. Вместо этого вы можете получить правильный номер, взяв его из имени элемента otjam.
Получить правильный номер Пример:
const number = e.target.name.replace(/[^0-9]/g, '');
Я немного отрефакторил ваш код, чтобы его было легче редактировать позже, и добавил пошаговые комментарии, чтобы помочь понять, что делает каждая строка.
Документ.готов()
otNormal()
БарисБару()
$(document).ready(function() {
Barisbaru();
const barisDiv = $('#BarisBaru');
const tableElement = $('#tableLoop');
//changed older click handler to on
barisDiv.on("click", (e)=>{
e.preventDefault();
Barisbaru();
});
//target any button (old or new) inside the table
tableElement.on("click", "button", (e)=>{
console.info("do tooltip for ", e.target);
});
//target any input inside the table. uAng is readonly so this will only trigger on jam
tableElement.on("change", "input", (e)=>{
const element = e.target; //get the changed input
const value = element.value; //get the value
const number = element.name.replace(/[^0-9]/g, ''); //strip the number from the element name
const uAngInput = $('input[name = "ot_uang['+number+']"]'); //get the uAng Input
uAngInput.val(otNormal(value)); //replace the value
});
});
function otNormal(value) {
let a = 1.5 * (value / 173) * 3000000;
const b = Math.round(a);
return b.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
}
function Barisbaru() {
var number = $("#tableLoop .row .num").length + 1;
var Baris = '<div class = "row mb-2">';
Baris += '<div class = "num col-6 col-xl-2 my-auto">';
Baris += '<span>OT.<span class = "count_slip"></span></span>';
Baris += '</div>';
Baris += '<div class = "col-6 col-xl-3">';
Baris += '<input class = "form-control" type = "number" name = "ot_jam[' + number + ']" value = "0.0">';
Baris += '</div>';
Baris += '<div class = "col-6 col-xl-3 my-auto">';
Baris += '<span>Jam => Rp.</span>';
Baris += '</div>';
Baris += '<div class = "col-6 col-xl-3">';
Baris += '<input class = "form-control" type = "text" name = "ot_uang[' + number + ']" value = "0" readonly>';
Baris += '</div>';
Baris += '<button class = "btn btn-sm btn-danger ti-close" data-toggle = "tooltip" id = "HapusBaris">HapusBaris</button>';
$("#tableLoop").append(Baris);
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "col-6 text-right mb-2">
<button type = "button" class = "btn btn-success ti-plus" id = "BarisBaru">BarisBaru</button>
</div>
<div class = "form-group" id = "tableLoop"></div>конечно, и я тоже сохраню этот ответ :)
Я рад, что помог. Если вы найдете этот ответ полезным, отметьте его как ответ. :)