Javascript.RU

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

Подсчет суммы значений в импутах по id элементов
Добрый день. Есть веб форма для заказа товаров. Цель подсчитать итоговую сумму при формировании заказа.

Это скрипт формирования каталога из файла csv и подсчета сумм в строках при вводе количества:

Код:
    <?PHP
    $G=0;
    $fileZakaz = fopen ("images/catalog/zakaz.csv","r");
    while ($data = fgetcsv ($fileZakaz, 1000, ";"))
        {$G++;
          if ($data[0]=='head'){
          echo '<tr align="center" height="30px">';
           echo '<td colspan="5" class="zakazgroup">'.$data[1].'</td>';
           echo '</tr>';
          echo '<tr align="center" height="30px">';
            echo '<td width="40%" class="zakazhead">Наименование</td>';
            echo '<td width="15%" class="zakazhead">Заказ количество</td>';
            echo '<td width="15%" class="zakazhead">В упаковке</td>';
            echo '<td width="15%" class="zakazhead">Цена шт.</td>';
            echo '<td width="15%" class="zakazhead">Сумма</td>';
            echo '</tr>';
          }
          else {
          echo '<tr align="center" valign="middle" height="40px">';
           echo '<td width="40%" align="left" class="zakazrowname">'.$data[1].'</td>';
           echo '<td width="15%" class="zakazrow"><input onChange=f'.$G.'() id=i'.$G.'1 type="text" size="2" maxlength="3" class="zakaz"></td>';
           echo '<td width="15%" class="zakazrow"><input disabled id=i'.$G.'2 value='.$data[2].' type="text" size="2" maxlength="3" class="zakazdis"></td>';
           echo '<td width="15%" class="zakazrow"><input disabled id=i'.$G.'3 value='.$data[3].' type="text" size="3" maxlength="3" class="zakazdis"></td>';
           echo '<td width="15%" class="zakazrow"><input disabled id=i'.$G.'4 type="text" size="3" maxlength="3" class="zakazdis"></td>';
             echo '</tr>';
          echo '<script>';
          echo 'function f'.$G.'(){';
          echo 'var n1=document.getElementById("i'.$G.'1").value;';
          echo 'var n2=document.getElementById("i'.$G.'2").value;';
          echo 'var n3=document.getElementById("i'.$G.'3").value;';
          echo 'document.getElementById("i'.$G.'4").value=Number(n1)*Number(n2)*Number(n3);';
          echo 'alert($G);';
          echo 'sum();';
          echo '}';
          echo '</script>';
          }
       }
      fclose ($fileZakaz);
    ?>
Это функция подсчета итоговой суммы:

Код:
    <tr align="center" height="40px">
                <td colspan="4" class="zakazgroup" align="right" style="padding-right:10px">Заказ на сумму</td>
                <td width="15%" class="zakazgroup"><input disabled id=S1 type="text" size="3" maxlength="3" class="zakazdis"></td>
              <script>
          function sum(){
          $num=1;
          $sum=0;
          alert($G);
            while ($num <= $G) {
          var n4=document.getElementById(i.$G.4).value;
          alert(n4);
          $sum+=Number(n4);     
          alert($sum);
           $num++;
            }
          document.getElementById(S1).value=$sum;}
          </script> 
              </tr>
При отладке выходит ошибка " Uncaught ReferenceError: sum is not defined"

Почему не видна функция sum() ?
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2014, 14:35
qux qux вне форума
Новичок на форуме
Отправить личное сообщение для qux Посмотреть профиль Найти все сообщения от qux
 
Регистрация: 10.12.2014
Сообщений: 4

Тему закройте, неправильно передаю переменную из PHP в JS... Перепишу функцию sum() и будет все норм.
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2014, 15:11
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Омг, юзай шаблонизацию. Эти echo это же ужас.
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2014, 15:12
qux qux вне форума
Новичок на форуме
Отправить личное сообщение для qux Посмотреть профиль Найти все сообщения от qux
 
Регистрация: 10.12.2014
Сообщений: 4

Сделал так:

<script>
          function sum(){
          var sum=0;
          var elems = document.getElementsByName('itog');
           for (var i=0; i<elems.length; i++){
          var n4 = elems[i].value;
          sum+=Number(n4);
          }
          document.getElementById('S1').value=sum;
          }
          </script>
Ответить с цитированием
  #5 (permalink)  
Старый 10.12.2014, 15:12
qux qux вне форума
Новичок на форуме
Отправить личное сообщение для qux Посмотреть профиль Найти все сообщения от qux
 
Регистрация: 10.12.2014
Сообщений: 4

jsnb,
Шаблонизаторы? Дайте, плиз, наводку где почитать?
Ответить с цитированием
  #6 (permalink)  
Старый 10.12.2014, 15:15
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от qux
jsnb,
Шаблонизаторы? Дайте, плиз, наводку где почитать?
А гугл на что?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет суммы ewfes Javascript под браузер 6 12.05.2014 09:44
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов rjabijj Общие вопросы Javascript 6 06.07.2012 21:34
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов. Drimmer Серверные языки и технологии 0 02.07.2012 18:22
Суммирование значений всех элементов div frolvict jQuery 1 11.07.2011 17:05
Загрузка страницы, чтение значений элементов, загрузка следующей страницы sitestyler Events/DOM/Window 6 21.10.2009 12:20