Javascript.RU

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

Сложение чисел (прошу помощи)
Привет всем!
Повилась необходимость организовать на сайте подсчет всех введенных чисел из полей input , но тонкость в том, что нужно, чтобы сумма числел например 24 суммировалась еще между собой (2+4) и получалас цифра от 1 до 9. Это нужно для нумерологии.
Есть такой код, работающий , но не имеющий этой тонкости, которая так нужна.

<script>// <![CDATA[
function addition() {
var a = parseInt(document.getElementById('a').value);
var b = parseInt(document.getElementById('b').value);
var c = parseInt(document.getElementById('c').value);
var d = parseInt(document.getElementById('d').value);
var f = parseInt(document.getElementById('f').value);
var g = parseInt(document.getElementById('g').value);
var h = parseInt(document.getElementById('h').value);
var j = parseInt(document.getElementById('j').value);

if (isNaN(a)==true) a=0;
if (isNaN(b)==true) b=0;
if (isNaN(c)==true) c=0;
if (isNaN(d)==true) d=0;
if (isNaN(f)==true) f=0;
if (isNaN(g)==true) g=0;
if (isNaN(h)==true) h=0;
if (isNaN(j)==true) j=0;

var k = a + b + c + d + f + g + h + j;

document.getElementById('result').innerHTML = a + " + " + b + " + " + c + " + " + d + " + " + f + " + " + g + " + " + h + " + " + j + " = " + k;
}
// ]]></script>
<form><input id="a" value="1" type="text"> <input id="b" value="1" type="text"> <input id="c" value="1" type="text"> <input id="d" value="1" type="text"> <input id="f" value="1" type="text"> <input id="g" value="1" type="text"> <input id="h" value="1" type="text"> <input id="j" value="1" type="text"> <br><input value="Сложить 2 два числа" onclick="addition();" type="button"></form>
<div id="result"></div>


Подскажите, что нужно добавить в код, чтобы итог был в виде одной цифры.
P.S в javascript еще очень слаб, освоил только html
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2017, 19:01
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

//добавить функцию, которая бы это подсчитала
function getDigitSum(n) {
	var number = Array.from(n.toString()).reduce(function(sum, value) {
		return sum + Number(value);
	}, 0);

	return number >= 10 ? getDigitSum(number): number;
}

//использование 
var r = getDigitSum(24);
alert(r);
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2017, 19:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от jamesson
сумма числел например 24 суммировалась еще между собой (2+4) и получалас цифра от 1 до 9
Это как понимать?

Сообщение от jamesson
что нужно добавить в код
Форматировать нужно выставляемый код иначе читать его трудно.
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2017, 19:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

калькулятор для нумерологии
jamesson,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
  window.addEventListener("DOMContentLoaded", function() {
    var form = document.querySelector("form"),
        input = form.querySelectorAll("input"),
        result = document.querySelector("#result");

    function sum(out, el) {
        return out + (+el.value || +el || 0)
    }
    form.addEventListener("submit", function(event) {
        event.preventDefault();
        var res = [].reduce.call(input, sum, 0);
        for (; (res += "").length > 1;) res = res.split("").reduce(sum, 0);
        result.innerHTML = res
    })
});
  </script>
</head>

<body>
<form>
<input id="a" value="1" type="text">
<input id="b" value="1" type="text">
<input id="c" value="1" type="text">
<input id="d" value="1" type="text">
<input id="f" value="1" type="text">
<input id="g" value="1" type="text">
<input id="h" value="1" type="text">
<input id="j" value="1" type="text">
<br>
<input value="Сложить"  class="add" type="submit"></form>
<div id="result"></div>

</body>
</html>

Последний раз редактировалось рони, 02.07.2017 в 19:16.
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2017, 19:15
Новичок на форуме
Отправить личное сообщение для jamesson Посмотреть профиль Найти все сообщения от jamesson
 
Регистрация: 02.07.2017
Сообщений: 6

Спасибо большущее, сделал! Добавил ваш код, в иннер html вставил getDigitSum(k); и теперь все работает!
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2017, 20:17
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Вот еще вариант, но я не успел ))
var n="a,b,c,d,f,g,h,j".split(",").map(i=>document.getElementById(i).value);

function s(k){
 return k.map(i=>+i).reduce((a,b)=>a+b,0)
}

function h(v){
 while(v>9){
  v=s([...(v+"")])
 };
 return v
}

var r=h(s(n));

alert(r)

Последний раз редактировалось Teamur, 02.07.2017 в 20:21.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи с формой обратной связи markfostel jQuery 14 14.10.2015 00:29
Сложение чисел с погрешностью Atumis Общие вопросы Javascript 2 28.11.2014 00:40
прошу помощи с autocomplete uj query ramko AJAX и COMET 2 27.09.2013 20:35
Сложение дробных чисел demoniqus Общие вопросы Javascript 2 10.01.2012 21:15
Сложение случайных чисел user1111 Общие вопросы Javascript 14 08.11.2010 22:06