Не суммирует
Задача:
Взять дату, например 10.10.1991 Сложить все числа даты и получить 22 А потом сложить 2+2 = 4 22 получаю без проблем, а с получением 4 проблема. Прошу помочь, с JS сталкивался редко, думаю для многих вопрос будет примитивным. Не могу понять в чем загвоздка.
<h1>Введи дату рождения</h1>
<input type="date" id="myDate" value="2001-01-01">
<button onclick="MyFunction()"> Submit </button>
<h1>Дата рождения</h1> <p id="demo"></p>
<h1>Сумма даты рождения</h1> <p id="demo2"></p>
<h1>Сумма суммы даты рождения</h1> <p id="demo3"></p>
<script>
function MyFunction() {
var x = document.getElementById("myDate").value;
document.getElementById("demo").innerHTML = x;
var y1 = parseInt(x.charAt(0));
var y2 = parseInt(x.charAt(1));
var y3 = parseInt(x.charAt(2));
var y4 = parseInt(x.charAt(3));
var m1 = parseInt(x.charAt(5));
var m2 = parseInt(x.charAt(6));
var d1 = parseInt(x.charAt(8));
var d2 = parseInt(x.charAt(9));
var qwe = y1+y2+y3+y4+m1+m2+d1+d2;
document.getElementById("demo2").innerHTML = qwe;
var s1 = parseInt(qwe.charAt(0));
var s2 = parseInt(qwe.charAt(1));
var zaq = s1+s2;
document.getElementById("demo3").innerHTML = zaq;
}
</script>
|
qwe - это не строка, нет у нее метода charAt(), только если привести к строке, а затем ... qwe.toString().charAt....
|
nikofedorov,
<!DOCTYPE html>
<html>
<head lang="ru">
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<h1>Введи дату рождения</h1>
<input type="date" id="myDate" value="1991-10-10" >
<button onclick="MyFunction()"> Submit </button>
<h1>Дата рождения</h1> <p id="demo"></p>
<h1>Сумма даты рождения</h1> <p id="demo2"></p>
<h1>Сумма суммы даты рождения</h1> <p id="demo3"></p>
<script>
function MyFunction() {
var x = document.getElementById("myDate").value;
document.getElementById("demo").innerHTML = x;
var f = a => [...a.toString()].filter(a => a == +a).reduce((a,b) => a + +b, 0);
var qwe = f(x);
document.getElementById("demo2").innerHTML = qwe;
var zaq = f(qwe);
document.getElementById("demo3").innerHTML = zaq;
}
</script>
</body>
</html>
|
const d = '10.10.1991'; const r = eval(d.replace(/(\d)\D*/g, '+$1')); console.log(r); |
еще вариант :)
<script>
const stringSumNumber = value => {
do {
value = [...String(value)].reduce((p, c) => p + (/\d/.test(c) ? Number(c) : 0), 0)
}
while (value > 9)
return value
}
alert(stringSumNumber('10.10.1991'))
</script>
|
| Часовой пояс GMT +3, время: 21:13. |