У меня проблема в этом коде. Когда я запускаю его и после этого вставляю двухзначный номер, скрипт разделяет его. Пример: введите 12, покажет 1 четный и 1 нечетный; введите 26 показывает 2 четных; Я хочу, чтобы он был смешанным, поэтому, если я введу двухзначное число или более (например, 432152), это должно быть 1 сумма, 1 значение и отображаться как 1 четное число. Спасибо за возможность обратиться за помощью здесь!
function countfromzero() {
if (document.getElementById("maintextbox").value ! = "") {
CalculateNumbers();
}
}
function CalculateNumbers() {
var arr = [];
var asd = 0;
var evn = 0;
arr = document.getElementById("maintextbox").value;
arr = arr.replace(/, | /g, "");
for (i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
asd++;
}
else {
evn++;
}
}
document.getElementById("eventextbox").value = evn;
document.getElementById("oddtextbox").value = asd;
}<input type = "text" name = "maintextbox" id = "maintextbox">
<input type = "button" id = "buttton" name = "Process" value = "Process" onclick = "countfromzero();"><br>
Even:<input type = "text" name = "eventextbox" id = "eventextbox"><br>
Odd:<input type = "text" name = "oddtextbox" id = "oddtextbox">


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


Рассмотрим ответ HerrSerker, поскольку он оптимизирован для поддержки последовательностей чисел, а мой - нет.
Вы рассматривали свой номер как массив, и ваш for-loop перебирал каждую цифру в вашем номере, чтобы проверить, четное оно или нечетное.
Вам просто нужно избавиться от цикла и изменить "arr", чтобы он больше не был массивом.
function countfromzero() {
if (document.getElementById("maintextbox").value != "") {
CalculateNumbers();
}
}
function CalculateNumbers() {
var arr;
var asd = 0;
var evn = 0;
arr = document.getElementById("maintextbox").value;
arr = arr.replace(/, | /g, "");
if (arr % 2 != 0) {
asd++;
} else {
evn++;
}
document.getElementById("eventextbox").value = evn;
document.getElementById("oddtextbox").value = asd;
}<input type = "text" name = "maintextbox" id = "maintextbox">
<input type = "button" id = "buttton" name = "Process" value = "Process" onclick = "countfromzero();"> Even:
<input type = "text" name = "eventextbox" id = "eventextbox"> Odd:
<input type = "text" name = "oddtextbox" id = "oddtextbox">Ваша переменная arr не является массивом, как вы, очевидно, хотели.
Измените метод replace на метод split (с немного другим RegEx), и все готово.
function countfromzero() {
if (document.getElementById("maintextbox").value ! = "") {
CalculateNumbers();
}
}
function CalculateNumbers() {
var arr = [];
var asd = 0;
var evn = 0;
var str = document.getElementById("maintextbox").value;
arr = str.split(/[^\d]+/g);
for (i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
asd++;
}
else {
evn++;
}
}
document.getElementById("eventextbox").value = evn;
document.getElementById("oddtextbox").value = asd;
}<input type = "text" name = "maintextbox" id = "maintextbox" value = "432152">
<input type = "button" id = "buttton" name = "Process" value = "Process" onclick = "countfromzero();"><br>
Even:<input type = "text" name = "eventextbox" id = "eventextbox"><br>
Odd:<input type = "text" name = "oddtextbox" id = "oddtextbox">Спасибо вам, ребята! В этом случае я могу добавить многозначные числа и порядковые номера, чтобы определить, четное или нечетное число!
Вы имеете в виду: ввод
432152должен давать результаты:1четный и0нечетный?