Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сложить/разделить 2 цифры? (https://javascript.ru/forum/misc/62943-kak-slozhit-razdelit-2-cifry.html)

monsterito 08.05.2016 15:49

Как сложить/разделить 2 цифры?
 
Всем привет. Подскажите, как в числе, допустим, a = 12, сложить между собой 1 и 2, чтобы получилось 3?
И как разделить цифру на 2 числа? Допустим, b = 13. Тогда нужно получить 1 и 3.

рони 08.05.2016 16:13

monsterito,
function foo(a) {
    return [].reduce.call(a + "", function(a, b) {
        return a + +b
    }, 0)
};
 alert(foo(12));
 alert(foo(13));

monsterito 08.05.2016 16:28

рони, спасибо, но мне функция не совсем подходит.
У меня есть 4 строки и 4 ряда в таблица. В 4-й cтроке мне нужно записывать сумму первых трех строк(допустим, 4+5+6 = 15. 15 я записываю в 4-ую строку. И у меня условие, если конечное число не равно 12, то мне нужно сложить 1+5 и получить 6. А так как у меня 4 ряда, то для каждой 4-й строки мне нужно просчитывать все.
Как сделать это?

ruslan_mart 08.05.2016 16:32

var n = '456';

alert( eval(n.split('').join('+')) );

рони 08.05.2016 16:34

Цитата:

Сообщение от monsterito
Как сделать это?

не осилил ваше описание.

monsterito 08.05.2016 16:46

рони,
Есть строка - tr. В ней находится 3 ячейки - td. В каждой ячейке td есть цифры. Пускай будет: 1 ячейка = цифра 1, 2 ячейка - цифра 10, 3 ячейка = цифра 4. В сумме мы получаем 15.
И так, у нас в сумме получилась цифра 15. По моему условию, если сумма превысила значение 12, то мы 15 сложим как 1+5 и в конечной сумме получим 6. Вот и вся суть. Как такое сделать?

EmperioAf 08.05.2016 17:01

Вы уже можете самостоятельно это сделать. Как разбить число на цифры вам показали.
Но конечно же рони в ближайшее время что-нибудь смастерит для вас...скорее всего)

рони 08.05.2016 17:08

monsterito,
рисуйте вашу таблицу

monsterito 08.05.2016 17:27

рони, https://jsfiddle.net/u3fk50uu
И еще, числ, например, 99 складывается с собой = 9+9. Т.е., если число больше 12 в ячейке = оно складывается между собой

рони 08.05.2016 17:35

monsterito,
а если числа нет?

monsterito 08.05.2016 17:39

рони, значит 0.

рони 08.05.2016 17:44

monsterito,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>

<body>
<table rules="all" cellspacing="10" cellpadding="10" style="margin-top:20px; border: 1px solid rgba(81, 71, 71, 0.24);">
							<tbody>
								<tr align="center">
									<td width="120px" height="110px">
										<p class="pifagor-char">111</p>
										<p class="stp">характер,</p>
										<p class="stp">сила воли</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">22</p>
										<p class="stp">энергетика,</p>
										<p class="stp">харизма</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">333</p>
										<p class="stp">познание,</p>
										<p class="stp">творчество</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char"></p>
									</td>
								</tr>
								<tr align="center">
									<td width="120px" height="110px">
										<p class="pifagor-char">—</p>
										<p class="stp">здоровье,</p>
										<p class="stp">красота</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">5</p>
										<p class="stp">логика,</p>
										<p class="stp">интуиция</p>
									</td>
										<td width="120px" height="110px">
										<p class="pifagor-char">—</p>
										<p class="stp">трудолюбие,</p>
										<p class="stp">мастерство</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char"></p>
									</td>
								</tr>
								<tr align="center">
									<td width="120px" height="110px">
										<p class="pifagor-char">—</p>
										<p class="stp">удача,</p>
										<p class="stp">везение</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">8</p>
										<p class="stp">чувство</p>
										<p class="stp">долга</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">99</p>
										<p class="stp">память,</p>
										<p class="stp">ум</p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">-</p>
									</td>
								</tr>
								<tr align="center">
									<td width="120px" height="110px">
										<p class="pifagor-char">10</p>
										<p class="stp"></p>
										<p class="stp"></p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">—</p>
										<p class="stp"></p>
										<p class="stp"></p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char">—</p>
										<p class="stp"></p>
										<p class="stp"></p>
									</td>
									<td width="120px" height="110px">
										<p class="pifagor-char"></p>
									</td>
								</tr>
							</tbody>
						</table>
<table>


  <script>
(function() {
    function d(b) {
        return [].reduce.call(b + "", function(a, b) {
            return a + +b
        }, 0)
    }
  [].forEach.call(document.querySelectorAll("tr"), function(b) {
        var a = [].slice.call(b.querySelectorAll(".pifagor-char"));
        b = a.pop();
        a = a.reduce(function(a, b) {
            var c = +b.innerHTML || 0;
            12 < c && (c = d(c));
            return a + c
        }, 0);
        b.innerHTML = 12 < a ? d(a) : a
    })
})();

 </script>
</table>
</body>
</html>

monsterito 08.05.2016 17:58

рони, спасибо, но у меня-что не работает. У меня эта сумма должна складываться после нажатия по кнопке, а не изначально. Изначально там по нулям. Я вешаю событие на id, но ничего не считает и не показывает

рони 08.05.2016 18:02

Цитата:

Сообщение от monsterito
Я вешаю событие на id

где код?

monsterito 08.05.2016 18:06

рони, прошу https://jsfiddle.net/u3fk50uu/1/

рони 08.05.2016 18:13

monsterito,
ой а у меня работает :lol:https://jsfiddle.net/u3fk50uu/3/
и даже так работает :lol:
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>

<body>
<table rules="all" cellspacing="10" cellpadding="10" style="margin-top:20px; border: 1px solid rgba(81, 71, 71, 0.24);">
              <tbody>
                <tr align="center">
                  <td width="120px" height="110px">
                    <p class="pifagor-char">111</p>
                    <p class="stp">характер,</p>
                    <p class="stp">сила воли</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">22</p>
                    <p class="stp">энергетика,</p>
                    <p class="stp">харизма</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">333</p>
                    <p class="stp">познание,</p>
                    <p class="stp">творчество</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char"></p>
                  </td>
                </tr>
                <tr align="center">
                  <td width="120px" height="110px">
                    <p class="pifagor-char">—</p>
                    <p class="stp">здоровье,</p>
                    <p class="stp">красота</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">5</p>
                    <p class="stp">логика,</p>
                    <p class="stp">интуиция</p>
                  </td>
                    <td width="120px" height="110px">
                    <p class="pifagor-char">—</p>
                    <p class="stp">трудолюбие,</p>
                    <p class="stp">мастерство</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char"></p>
                  </td>
                </tr>
                <tr align="center">
                  <td width="120px" height="110px">
                    <p class="pifagor-char">—</p>
                    <p class="stp">удача,</p>
                    <p class="stp">везение</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">8</p>
                    <p class="stp">чувство</p>
                    <p class="stp">долга</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">99</p>
                    <p class="stp">память,</p>
                    <p class="stp">ум</p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">-</p>
                  </td>
                </tr>
                <tr align="center">
                  <td width="120px" height="110px">
                    <p class="pifagor-char">10</p>
                    <p class="stp"></p>
                    <p class="stp"></p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">—</p>
                    <p class="stp"></p>
                    <p class="stp"></p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char">—</p>
                    <p class="stp"></p>
                    <p class="stp"></p>
                  </td>
                  <td width="120px" height="110px">
                    <p class="pifagor-char"></p>
                  </td>
                </tr>
              </tbody>
            </table>
<table>
<input id="tuk" name="" type="button" value="go">

  <script>
(function() {
    function d(b) {
        return [].reduce.call(b + "", function(a, b) {
            return a + +b
        }, 0)
    }
window.addEventListener('DOMContentLoaded', function() {
document.querySelector("#tuk").addEventListener("click", function() {
  [].forEach.call(document.querySelectorAll("tr"), function(b) {
        var a = [].slice.call(b.querySelectorAll(".pifagor-char"));
        b = a.pop();
        a = a.reduce(function(a, b) {
            var c = +b.innerHTML || 0;
            12 < c && (c = d(c));
            return a + c
        }, 0);
        b.innerHTML = 12 < a ? d(a) : a
    })
});
});
})();

 </script>
</table>
</body>
</html>

monsterito 08.05.2016 18:27

рони, хм.... но почему у меня не работает)
Так, я вроде понял почему не работает. Это из-за кода, который находится в return в моем коде.
https://jsfiddle.net/u3fk50uu/4/ - посмотрите всего. Да, он очень плохой по виду, но помогите разобраться почему не работает

рони 08.05.2016 18:35

monsterito,
потому что нужна готовность страницы и загруженная библиотека jquery, либо вариант выше без jquery.

monsterito 08.05.2016 18:38

рони, посмотрите выше. Обновил. Была загружена библиотека на локали. Не работало. Почему? Выше написал

рони 08.05.2016 18:55

monsterito,
вы убрали из последней ячейки всё куда вставлялся результат.
поэтому так
$("#go-pif").click(function(){
$("#out").html(mainFunction());
  function d(b) {
        return [].reduce.call(b + "", function(a, b) {
            return a + +b
        }, 0)
    }
  [].forEach.call(document.querySelectorAll("tr"), function(b) {
        var a = [].slice.call(b.querySelectorAll(".pifagor-char"));
        b = b.querySelector("td:last-child");
        a = a.reduce(function(a, b) {
            var c = +b.innerHTML || 0;
            12 < c && (c = d(c));
            return a + c
        }, 0);
        b.innerHTML = 12 < a ? d(a) : a
    });

});

monsterito 08.05.2016 19:17

рони, еще раз спасибо огромное!

рони 08.05.2016 19:22

monsterito,
я пас

monsterito 08.05.2016 19:32

рони, я понял. в любом случае спасибо


Часовой пояс GMT +3, время: 12:06.