Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2020, 19:02
Новичок на форуме
Отправить личное сообщение для nikofedorov Посмотреть профиль Найти все сообщения от nikofedorov
 
Регистрация: 09.02.2020
Сообщений: 8

Не суммирует
Задача:
Взять дату, например 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>
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2020, 19:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

qwe - это не строка, нет у нее метода charAt(), только если привести к строке, а затем ... qwe.toString().charAt....
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2020, 19:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2020, 14:36
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

const d = '10.10.1991';
const r = eval(d.replace(/(\d)\D*/g, '+$1'));

console.log(r);
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2020, 20:20
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

еще вариант
<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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция суммирует значения флажков без сброса Agard Общие вопросы Javascript 3 22.01.2016 16:09
не суммирует Abraham jQuery 11 19.06.2011 13:33