Не суммирует
Задача:
Взять дату, например 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, время: 08:48. |