Сложение чисел (прошу помощи)
Привет всем!
Повилась необходимость организовать на сайте подсчет всех введенных чисел из полей 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 |
//добавить функцию, которая бы это подсчитала 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); |
Цитата:
Цитата:
|
калькулятор для нумерологии
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> |
Спасибо большущее, сделал! Добавил ваш код, в иннер html вставил getDigitSum(k); и теперь все работает!
|
Вот еще вариант, но я не успел ))
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) |
Часовой пояс GMT +3, время: 14:58. |