Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: неработает суммирование

Сообщения:  [1-10]   [11-13] 

 
 автор: ilyaILF   (12.05.2007 в 12:54)   письмо автору
 
   для: m@rchello   (12.05.2007 в 12:41)
 

Действительно один важный момент, который вы обнаружили на собственном опыте - название переменных, используемых в функции, никогда не должны совпадать с названием самой функции!

   
 
 автор: m@rchello   (12.05.2007 в 12:41)   письмо автору
 
   для: ilyaILF   (12.05.2007 в 12:11)
 

спасибо вам большое.
разобрался
но на самом деле почемуто имя функции skid резирвировалось назвал функцию skids и всё заработало!

   
 
 автор: ilyaILF   (12.05.2007 в 12:39)   письмо автору
 
   для: m@rchello   (12.05.2007 в 12:25)
 

Для полного анализа только кода Javascript недостаточно, необходимо знать количество и наличие элементов формы.
И еще, вы выводите значение i средствами PHP на сервере ОДИН РАЗ при формировании вашей HTML странички, и если вы ее не сохраните в глобальной переменной в коде JavaScript, то ее значение будет утеряно.
Вынесите объявление
var formelement=<?=$col;?>;
за пределы всех функций (то есть тем самым объявите ее глобальной) и после этого уже используйте ее в цикле сколько угодно раз.

   
 
 автор: m@rchello   (12.05.2007 в 12:25)   письмо автору
 
   для: ilyaILF   (12.05.2007 в 11:53)
 

с округлением разобрался
а всё же почему вот эта функция касячит?

function skid()
   {
   mysumma2=0;
   for (i=<?=$col;?>;i>=0;i--)
      {
      iden = 'summa'+i;
      skid='sk'+i;
      mysumma2+=Number(document.getElementsByName(iden)[0].value) / 100 * Number(document.getElementsByName(skid)[0].value);

      }
      document.getElementsByName('skidka')[0].value=Math.round(mysumma2*100)/100;
   }

   
 
 автор: ilyaILF   (12.05.2007 в 12:11)   письмо автору
 
   для: m@rchello   (12.05.2007 в 10:57)
 

Ставьте в цикл alert(i) и проверяйте полученные значения и соответствующие им элементы формы на наличие.

   
 
 автор: ilyaILF   (12.05.2007 в 12:01)   письмо автору
 
   для: m@rchello   (12.05.2007 в 11:13)
 

Есть такая функция Math.round(0.50) http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_round которая округляет число до целого. В вашем случае можно сделать примерно сделующее, раз вам нужно получать только две цифры после запятой, то вы умножаете на 100 (если три цифры то на 1000 и так далее) свое число, применяете к полученной цифре эту функцию, результатом ее работы будет целое и делите обратно на 100 - это позволит вам получить искомый результат:
mynumb=15.3264; mynumbround=Math.round(mynumb*100)/100;
В результате должно получиться mynumbround=15.33

   
 
 автор: ilyaILF   (12.05.2007 в 11:53)   письмо автору
 
   для: m@rchello   (12.05.2007 в 11:02)
 

Функция Number() должна быть применена к каждому значению value каждого отдельного элемента, вы же складываете (делаете конкатенацию-объединение) значения строк, а потом уже их приводите к цифровому виду с помощью функции Number(). Изначально <input /> является строкой и автоматическое приведение ее к цифровому виду возможно только при перемножении, так как к строкам перемножение по просту не применимо, а сложение для значений <input /> приводит к обыкновенному объединению строк и нам надо принудительно объявить строковое значение <input /> цифрой.

   
 
 автор: m@rchello   (12.05.2007 в 11:13)   письмо автору
 
   для: m@rchello   (12.05.2007 в 11:02)
 

а как в яве округлять числа до 2 знаков после точки?

   
 
 автор: m@rchello   (12.05.2007 в 11:02)   письмо автору
 
   для: m@rchello   (12.05.2007 в 10:57)
 

А в этой функции

function summ2()
   {
   mysumma1=0;
     mysumma1=Number((document.getElementsByName('summa')[0].value-document.getElementsByName('skidka')[0].value)+document.getElementsByName('dost')[0].value);
      document.getElementsByName('itogo')[0].value=mysumma1;
   }

почему то просто склеивает результаты
тоесть допусти
(document.getElementsByName('summa')[0].value-document.getElementsByName('skidka')[0].value) = 66.1
а
document.getElementsByName('dost')[0].value = 100

то в результате получается 66.11
почему так?

   
 
 автор: m@rchello   (12.05.2007 в 10:57)   письмо автору
 
   для: m@rchello   (12.05.2007 в 09:08)
 

у меня опять ворос


function skid()
   {
   mysumma2=0;
   for (i=<?=$col;?>;i>=0;i--)
      {
      iden = 'summa'+i;
      skid='sk'+i;
      mysumma2+=Number(document.getElementsByName(iden)[0].value/100)*Number(document.getElementsByName(skid)[0].value);

      }
      document.getElementsByName('skidka')[0].value=mysumma2;
   }
</script>
при первом вызове работает, а при последующих выдаёт ошибку Обьект не потдерживает это свойство или метод

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования