Сложение чисел (прошу помощи)
Привет всем!
Повилась необходимость организовать на сайте подсчет всех введенных чисел из полей 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, время: 18:26. |