|
|
|
|
|
для: m@rchello
(12.05.2007 в 12:41)
| | Действительно один важный момент, который вы обнаружили на собственном опыте - название переменных, используемых в функции, никогда не должны совпадать с названием самой функции! | |
|
|
|
|
|
|
|
для: ilyaILF
(12.05.2007 в 12:11)
| | спасибо вам большое.
разобрался
но на самом деле почемуто имя функции skid резирвировалось назвал функцию skids и всё заработало! | |
|
|
|
|
|
|
|
для: m@rchello
(12.05.2007 в 12:25)
| | Для полного анализа только кода Javascript недостаточно, необходимо знать количество и наличие элементов формы.
И еще, вы выводите значение i средствами PHP на сервере ОДИН РАЗ при формировании вашей HTML странички, и если вы ее не сохраните в глобальной переменной в коде JavaScript, то ее значение будет утеряно.
Вынесите объявление
var formelement=<?=$col;?>;
| за пределы всех функций (то есть тем самым объявите ее глобальной) и после этого уже используйте ее в цикле сколько угодно раз. | |
|
|
|
|
|
|
|
для: 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;
}
|
| |
|
|
|
|
|
|
|
для: m@rchello
(12.05.2007 в 10:57)
| | Ставьте в цикл alert(i) и проверяйте полученные значения и соответствующие им элементы формы на наличие. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: m@rchello
(12.05.2007 в 11:02)
| | Функция Number() должна быть применена к каждому значению value каждого отдельного элемента, вы же складываете (делаете конкатенацию-объединение) значения строк, а потом уже их приводите к цифровому виду с помощью функции Number(). Изначально <input /> является строкой и автоматическое приведение ее к цифровому виду возможно только при перемножении, так как к строкам перемножение по просту не применимо, а сложение для значений <input /> приводит к обыкновенному объединению строк и нам надо принудительно объявить строковое значение <input /> цифрой. | |
|
|
|
|
|
|
|
для: m@rchello
(12.05.2007 в 11:02)
| | а как в яве округлять числа до 2 знаков после точки? | |
|
|
|
|
|
|
|
для: 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 в 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>
при первом вызове работает, а при последующих выдаёт ошибку Обьект не потдерживает это свойство или метод
|
| |
|
|
|
|