我有一个功能getSum()。在运行一段代码之前,我有两个日期输入,并且我试图进行验证。我有一个if语句,条件是输入数组上的.every。在执行代码之前,我需要将匹配两个输入值的函数传递给Regex。我很困惑var sumButton =document.querySelector(".sumNumbers");sumButton.addEventListener("click", getSum);var dateRegEx = /^(19|20)\d{2}-(0\d{1}|1[0-2])-([0-2]\d{1}|3[0-1])$/;var removeErrorMsg =document.querySelectorAll(".resetError");removeErrorMsg.addEventListener("click", function(){document.getElementById("errorMsg").textContent ="";})function getSum() {let inputs = ['dateInput1', 'dateInput2'];let outputs = ['result1', 'result2'];if (inputs.every(function(){})) { inputs.forEach(function(input, index) { const inputValue =document.getElementById(input).value; var sum = 0; for (var i = 0; i < inputValue.length; i++) { const num = parseInt(inputValue.charAt(i)); if (!isNaN(num)) { sum += num; } } const total = (sum - 1) % 9 + 1;document.getElementById(outputs[index]).textContent= "Your number is: " + total;});} else{ document.getElementById("errorMsg").textContent ="*error* please enter two dates and two names"}//} 最佳答案 every方法接受一个回调,该回调传递给调用every的数组的每个元素,如果该回调的所有返回值均为true,则every返回true,否则,返回every。因此,您只需要编写一个回调函数以传递给false即可,该函数接受every数组的单个元素并返回一个布尔值。要针对正则表达式进行测试,我们可以使用regex inputs方法,如果给定的字符串与regex模式匹配,则返回test,否则返回true。例如:function dateIsValid(dateString) { return dateRegEx.test(dateString);}在上下文中:if (inputs.every(dateIsValid)) { // ...}或使用内联定义:if (inputs.every(dateString => dateRegEx.test(dateString))) { // ...}
10-02 21:39