개인 프로젝트에서 작업 중이며 해결할 수 없었던 문제가 발생했습니다.일반 자바 스크립트를 사용하여 입력 필드 값의 합계를 얻기 위해 keyup 함수를 가져 오는 문제
function addNewRow(){
var tableEl = document.getElementById("tableData");
var newLine = '<tr class="newEntry">';
var classArray = ["classA", "classB", "classC", "classD"];
for (var i = 0; i < classArray.length; i++){
newLine += '<td><input class="' + classArray[i] + '"></td>';
}
newLine += '</tr>';
tableEl.insertAdjacentHTML("beforeend", newLine);
}
document.getElementById("addRow").addEventListener("click", addNewRow, false);
//the element with id="addRow" is a button
나는 이익을 위해 위의 함수의 코드를 단순화했습니다 : 여기
은 버튼을 클릭하면 ("tableData"의 ID로) 테이블에 새 테이블 행을 생성하는 기능입니다 문제의 초점이 아니기 때문에 가독성을 높일 수 있습니다. 버튼을 클릭하면 새 행이 성공적으로 추가됩니다.문제가있는 부분에는 각 행의 각 클래스의 합계를 사용하여 div에 표시하는 또 다른 기능이 있습니다.
목표는 일치하는 클래스 이름으로 모든 입력 필드 값의 합계를 얻는 것입니다. 예를 들어, addNewRow 함수를 사용하여 여섯 개의 행을 얻는다 고 가정 해 봅시다. 그런 다음 모든 입력 필드 값의 합계를 클래스 이름 "classA"로 표시하는 div를 원합니다. 해당 div의 숫자는 값을 입력하거나 클래스 이름이 "ClassA"인 입력 필드의 기존 값을 변경하면 업데이트되는 6 개의 값의 합계가되어야합니다. 솔루션을 웹을 수색하고 하나를 찾기 위해 실패한 후, 난 그냥 버튼에 이벤트 리스너를 추가,
document.input.addEventListener("keyup", sumValues("genericDivId", "classA"), false);
document.getElementsByClassName("classA").onkeyup = function(){sumValues("genericDivId", "classA");}
불행하게도 : 여기
function sumValues(divId, inputClass){
var sumVal = document.getElementsByClassName(inputClass);
var addedUp = 0;
for (var j = 0; j < sumVal.length; j++){
addedUp += Number(sumVal[j].value);
}
document.getElementById(divId).innerHTML = addedUp;
}
는 (여러 점 만점) 부부가 시도 실패하다 클릭하면 값의 합계를 표시하도록 div가 업데이트됩니다. 또한 인수를 받아들이 기보다는 배열에서 값을 취하도록 sumValues 함수를 수정해야했습니다.
내 질문은 : 순수 값 Javascript (vanilla JS)를 사용하여 새 값을 입력하거나 기존 값을 변경하면 합계 값이 업데이트되도록 코드를 어떻게 수정할 수 있습니까?