Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
1

Вывести сумму переменных цикла в html

17.01.2019, 11:04. Просмотров 224. Ответов 21
Метки нет (Все метки)

Есть две формулы:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<script type="text/javascript">
 
            function registerSubmitForm(formSelector, resultSelector, url) {
             
                $(formSelector).submit(function(e) {
                    e.preventDefault();
                    var data = $(this).serialize();
        
                    $.ajax({
             
                        type: "POST",
                        url: url,
                        data: data,
                        success: function(result) {
                            $(resultSelector).html(result);
                        }
             
                    });
             
                });
             
            }
             
            function minusOrPlus(id, kosz, amount) {
             
                var inc = +$(".result" + id).data("inc");
                inc = Math.max(0, inc + amount);
             
                document.getElementById("inc" + id).innerHTML = inc;
             
                var sum = inc * kosz;
                document.getElementById("summ" + id).innerHTML = sum;
             
                $(".result" + id).data("inc", inc);
                
                 
            }
             
        </script>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
while (($cat = mysqli_fetch_assoc($products))){
                $id=$cat['id'];
                
                $order = mysqli_query($connection, "SELECT * FROM `order` WHERE `id`=1"); //// products
                $zamowienie = mysqli_fetch_assoc($order);
                
                if($zamowienie[$id]>0){
                $x++;
                $y=$x%2;
                if($y==1){
                    $color='czemny';
                    }else{$color='szwetly';}
                    
                
                    
                $summ_of+=$zamowienie[$id]*$cat['price'];
                echo '<tr class="'.$color.'">
                        <td class="t_title">'.$cat['name'].'</td>
 
                        <td>'.$cat['characteristic'].'</td>
 
                        <td>
                            <form method="POST" onsubmit="" id="minus'.$id.'" style="float:right">
                 
                                <input class="serle" name="test" value="'.$id.'">
                 
<input onclick="minusOrPlus(\''.$id.'\', '.$cat['price'].', -1)" data-inc="'.$zamowienie[$id].'" class="result'.$id.'" type="submit" value=" – ">
                            </form> 
 
                            <script>registerSubmitForm("#minus'.$id.'", "#result'.$id.'", "minus.php");</script>
 
                            <span style ="margin-left:3px" id="inc'.$id.'">'.$zamowienie[$id].'</span> шт.
 
                            <form method="POST" id="plus'.$id.'" style="float:left">
                 
                                <input class="serle" name="test" value="'.$id.'">
                 
<input onclick="minusOrPlus(\''.$id.'\', '.$cat['price'].', 1)" data-inc="'.$zamowienie[$id].'" class="result'.$id.'" type="submit" value=" + " id="pulse">
                 
                            </form>
 
                            <script>registerSubmitForm("#plus'.$id.'", "#result'.$id.'", "plus.php");</script>
 
                            </td>
 
                            <td>'.$cat['price'].' р</td>
 
                            <td class="nie_maly"><span id="summ'.$id.'">'.$zamowienie[$id]*$cat['price'].'</span> р</td>
 
                        </tr>';
 
                }
            }
В каждой строке цикла есть кнопки + и - при нажатии на них выполняются js формулы
Мне нужно чтобы по нажатию на эти кнопки переменная $summ_of(сумма переменных в цикле) выводилась в <span id="ryczalt"> </span>, подскажите как это реализовать
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2019, 11:04
Ответы с готовыми решениями:

Вывести с помощью цикла и функции document.write() в HTML документ текст
Вывести с помощью цикла и функции document.write() в HTML документ текст по следующему образцу:

Использование переменных javascript в HTML
Имеется код на HTML: .Sheet margin-left: 120 px; margin-right: 120 px; min-height:...

Область видимости. Не могу вызвать переменную вне цикла For, т.е. вывести в цикле могу, а вне цикла нет. Почему?
Привет, не могу вызвать переменную вне цикла for, тоесть вывести в цикле могу, а вне цикла нет...

Запятая между элементами цикла в шаблоне html
Добрый день! Прошу помощи: В шаблоне есть код типа: {% for user in users %} {{ user.full_name }},...

Передача переменных между html - страницами
Доброго времени суток, подскажите пожалуйста как можно осуществить передачу двух переменных с одной...

21
shsv382
11 / 9 / 3
Регистрация: 14.11.2016
Сообщений: 100
Завершенные тесты: 1
17.01.2019, 21:40 2
Как вариант - добавить в echo-блок скрипт следующего содержания
Javascript
1
2
3
4
<script>
  let ryczalt = document.getElementById("ryczalt");
  ryczalt.innerHTML = $summ_of;
</script>
по идее скрипт будет каждый раз добавляться новый, соответственно и выполняться он будет заново, подставляя новое значение
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
17.01.2019, 23:23  [ТС] 3
Цитата Сообщение от shsv382 Посмотреть сообщение
Как вариант - добавить в echo-блок скрипт следующего содержания
это не работает
насколько я понимаю скрипт должно что то запускать а данном случае его ничто не запускает
0
shsv382
11 / 9 / 3
Регистрация: 14.11.2016
Сообщений: 100
Завершенные тесты: 1
17.01.2019, 23:27 4
Скрипт запускается браузером автоматически. Не работает, скорее всего, потому что вы забыли про кавычки - вам надо вставить этот скрипт в вывод echo вашего php-кода в каждой итерации, т.е. код будет выглядеть примерно так:
PHP
1
2
3
4
echo '<script>
  let ryczalt = document.getElementById("ryczalt");
  ryczalt.innerHTML = '.$summ_of.';
</script>'
насколько я могу разобраться в синтаксисе php
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
17.01.2019, 23:36  [ТС] 5
Цитата Сообщение от shsv382 Посмотреть сообщение
Скрипт запускается браузером автоматически. Не работает, скорее всего, потому что вы забыли про кавычки - вам надо вставить этот скрипт в вывод echo вашего php-кода в каждой итерации, т.е. код будет выглядеть примерно так:
Не работает даже так
0
shsv382
11 / 9 / 3
Регистрация: 14.11.2016
Сообщений: 100
Завершенные тесты: 1
17.01.2019, 23:54 6
Внимание вопрос: а у вас вообще создан элемент с id="ryczalt" ???
А то спрашиваете, спрашиваете...
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
18.01.2019, 10:32  [ТС] 7
Цитата Сообщение от shsv382 Посмотреть сообщение
Внимание вопрос: а у вас вообще создан элемент с id="ryczalt" ???
Да, создан
0
shsv382
11 / 9 / 3
Регистрация: 14.11.2016
Сообщений: 100
Завершенные тесты: 1
18.01.2019, 10:37 8
Попробуйте выводить переменную в скрипте в alert или в консоль. Да и вообще, что у вас в консоли выводится? Может там ошибка какая, и выполнение всех скриптов блокируется, не?
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
18.01.2019, 12:10  [ТС] 9
Цитата Сообщение от shsv382 Посмотреть сообщение
Попробуйте выводить переменную в скрипте в alert или в консоль. Да и вообще, что у вас в консоли выводится? Может там ошибка какая, и выполнение всех скриптов блокируется, не?
В том виде в котором скрипт сейчас есть он работает отлично
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
18.01.2019, 15:32  [ТС] 10
Вывести сумму переменных цикла в html

у меня есть три столбца в одном есть две кнопки '+' и '-'
по нажатию на плюс в число в ревом столбце увеличивается на 1 (грубо говоря) умножается на второй столбец и записывается в третий
по нажатию на - число в первом столбце уменьшается на 1, умножается на второй и также записывается в третий
Мне необходимо чтобы и при нажатию на '+' и по нажатию на '-' внизу под таблицей (черное большое число) отображалась актуальная сумма третьих столбцов. Всего-то-навсего)))
0
shsv382
11 / 9 / 3
Регистрация: 14.11.2016
Сообщений: 100
Завершенные тесты: 1
18.01.2019, 23:39 11
Ну можно в тупую, конечно, попробовать: собирать значения из последних td каждого ряда в массив чисел, парня их с помощью parseFloat, а потом сумму массива выводить в div id="ryczalt"... но вообще у вас тут какая-то мутота я вам скажу - непонятный javascript, непонятно как (и главное - зачем) переплетен с php... Вы сделайте все вычисления в одном месте: либо в JS, либо в PHP, тогда будет понятнее и вам, и остальным
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
20.01.2019, 12:47  [ТС] 12
Цитата Сообщение от shsv382 Посмотреть сообщение
собирать значения из последних td каждого ряда в массив чисел, парня их с помощью parseFloat, а потом сумму массива выводить в div id="ryczalt
это возможно сделать в рамках функции minusOrPlus?
Цитата Сообщение от shsv382 Посмотреть сообщение
мутота я вам скажу - непонятный javascript, непонятно как (и главное - зачем) переплетен с php...
я только начинаю рзбираться в JS, это для меня новая тема

Добавлено через 1 минуту
мне например совсем непонятно, что запускаяет скрипт
Javascript
1
<script>registerSubmitForm("#plus'.$id.'", "#result'.$id.'", "plus.php");</script>
0
SkyderTM
10 / 8 / 2
Регистрация: 23.01.2017
Сообщений: 31
20.01.2019, 13:46 13
Богдан_94, если найти решение в том, как все есть сейчас, то:
Опять же, если смог в этом правильно разобраться: в файле php скрипта перед while обнулите переменную $sum_of
PHP
1
2
3
$sum_of=0;
while (($cat = mysqli_fetch_assoc($products))){
...
а после того, как цикл закончиться сделайте так:
PHP
1
echo("<tr><td colspan='3'>$sum_of</td></tr>");
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
21.01.2019, 09:14  [ТС] 14
Цитата Сообщение от SkyderTM Посмотреть сообщение
Опять же, если смог в этом правильно разобраться: в файле php скрипта перед while обнулите переменную $sum_of
Цитата Сообщение от SkyderTM Посмотреть сообщение
а после того, как цикл закончиться сделайте так:
это все понятно и оно у меня так и есть, но в таком случае переменная обновляется только при перезагрузке страницы , а мне нужно чтобы переменная $sum_of обновлялась при нажатии на кнопки + и -
0
SkyderTM
10 / 8 / 2
Регистрация: 23.01.2017
Сообщений: 31
21.01.2019, 11:29 15
Богдан_94, а, тогда все еще проще.
Пишем отдельную функцию в JS
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
function totalSum(){
  var lastCol=document.querySelectorAll('nie_maly');// Находим все селекторы nie_maly(это блоки td из последнего столбца)
  var totalSumFloat=0; // Обнуляем счетчик                
  for(var i=0;i<lastCol.length;i++){
     lastColSpan=document.getElementsByTagName('span')[0].innerHTML;// У каждого последнего столбца есть span
                                                                       // Содержащий сумму по строке
     totalSumFloat=totalSumFloat+parseFloat(lastColSpan); // Прибавляем сумму к общему числу
  }
  document.getElementById('ryczalt').innerHTML=totalSumFloat;// Находим элемент с id=ryczalt и присваиваем ему конечную сумму
}
 
//и запускаем ее внутри функции minusOrPlus()
//в конце кода, чтобы каждый раз исполнялась.
Пишу без проверки, так что где-то очепятки могут быть)

А вообще, конечно, лучше всего переписать все, чтобы js все делал и отправлял результат единожды, в конце всего запроса. А PHP его просто записал и возвращал true или false, или следующую страницу запроса.
А то получается, что оба скрипта делают примерно одно и то же. Много бестолковых запросов в конечном счете.
Опять же, ИМХО, сужу по тому, что вижу)

Можно использовать куки, чтобы результат при случайно перезагрузке не улетел, например.
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
21.01.2019, 11:51  [ТС] 16
Цитата Сообщение от SkyderTM Посмотреть сообщение
Пишем отдельную функцию в JS
А чем эта функция будет запускаться?
0
SkyderTM
10 / 8 / 2
Регистрация: 23.01.2017
Сообщений: 31
21.01.2019, 12:12 17
Богдан_94, смотрите, что я писал.
При нажатии на плюс или минус - запускается функция minusOrPlus(),
а в конце нее вставьте запуск той, что написал я. получится примерно так в конечном счете:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function minusOrPlus(id, kosz, amount) {             
                var inc = +$(".result" + id).data("inc");
                inc = Math.max(0, inc + amount);
             
                document.getElementById("inc" + id).innerHTML = inc;
             
                var sum = inc * kosz;
                document.getElementById("summ" + id).innerHTML = sum;
             
                $(".result" + id).data("inc", inc);
                
//////////////////// !!!!!!!!!!!! ///////////////////
// Вот тут запуск моей функции
               totalSum(); 
            }
 
function totalSum(){
  var lastCol=document.querySelectorAll('nie_maly');// Находим все селекторы nie_maly(это блоки td из последнего столбца)
  var totalSumFloat=0; // Обнуляем счетчик                
  for(var i=0;i<lastCol.length;i++){
     lastColSpan=document.getElementsByTagName('span')[0].innerHTML;// У каждого последнего столбца есть span
                                                                       // Содержащий сумму по строке
     totalSumFloat=totalSumFloat+parseFloat(lastColSpan); // Прибавляем сумму к общему числу
  }
  document.getElementById('ryczalt').innerHTML=totalSumFloat;// Находим элемент с id=ryczalt и присваиваем ему конечную сумму
}
P.S. еще раз - тестируйте мой код, т.к. у меня не было возможности проверить)

Добавлено через 5 минут
Богдан_94, Вы, я так понял, только-только начали с JS разбираться?)
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
21.01.2019, 12:48  [ТС] 18
Цитата Сообщение от SkyderTM Посмотреть сообщение
Богдан_94, Вы, я так понял, только-только начали с JS разбираться?)
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function minusOrPlus(id, kosz, amount) {
 
    //var summ_of = +$("#ryczalt").data("ryczalt");
 
    var inc = +$(".result" + id).data("inc");
 
    var normalizedInc = Math.max(0, inc + amount);
 
    var sum = normalizedInc * kosz;
 
 
 
    //summ_of = Math.max(0, summ_of + (normalizedInc - inc) * kosz);
 
 
 
    $("#inc" + id).html(normalizedInc);
 
    $("#summ" + id).html(sum);
 
    $(".result" + id).data("inc", normalizedInc);
 
    //$("#ryczalt").html(summ_of).data("ryczalt", summ_of);
    function totalSum(){
        var lastCol=document.querySelectorAll('nie_maly');// Находим все селекторы nie_maly(это блоки td из последнего столбца)
        var totalSumFloat=0; // Обнуляем счетчик                
        for(var i=0;i<lastCol.length;i++){
            lastColSpan=document.getElementsByTagName('span')[0].innerHTML;// У каждого последнего столбца есть span
                                                                               // Содержащий сумму по строке
            totalSumFloat=totalSumFloat+parseFloat(lastColSpan); // Прибавляем сумму к общему числу
            }
          document.getElementById('ryczalt').innerHTML=111;// Находим элемент с id=ryczalt и присваиваем ему конечную сумму
        }
 
}
сделал

HTML5
1
Всего: <?echo '<span id="ryczalt">' . $summ_of . '</span>в‚Ѕ';?>
в спан вообще ничего не попадает, в чем моя ошибка?
0
SkyderTM
10 / 8 / 2
Регистрация: 23.01.2017
Сообщений: 31
21.01.2019, 12:54 19
Богдан_94, мою функцию вы разместили внутри своей и не запустили.
Еще раз. общий шаблон таков:
Javascript
1
2
3
4
5
6
7
function minusOrPlus(id, kosz, amount) {
    // ... тут код функции плюс минус, оригинальный ..//
 
     totalSum(); // название функции и скобки запускают работу функции.
}
 
function totalSum(){ } // тут моя функция целиком.
Если не получится - пришлите мне исходники обоих файлов.
Посмотрю вечером.
0
Богдан_94
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 20
21.01.2019, 13:36  [ТС] 20
Цитата Сообщение от SkyderTM Посмотреть сообщение
Если не получится - пришлите мне исходники обоих файлов.
Посмотрю вечером.
куда прислать?
0
21.01.2019, 13:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2019, 13:36

Использование переменных в html обьявленых в JavaScript
Добрый день. Есть такой код &lt;html&gt; &lt;head&gt; &lt;title&gt;Простая страница&lt;/title&gt; &lt;script...

С помощью цикла найдите сумму чисел от 1 до 100
Добрый день в школе задали написать код. Прошу подсказать правильно ли я создал, а то что-то не...

Вывести первый id элемент цикла while
Хотела этот вопрос задать в алгоритмы, но мне нужно подсказка именно на javascript. Например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru