[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: 2 javascript на одной странице
vagon
Здравствуйте!
Возникла проблема с подсчетом на JavaScript при прокрутке нижеприведенного кода в цикле while. Кручу в цикле все это, потому что нужно каждый раз передавать в JavaScript новые php переменные.
Теперь описание проблемы: в первом обороте все считается как нужно, никаких багов нет. Во втором обороте рассчитывать упорно отказывается, выводит "NaN". Как решить проблему?


<script type="text/javascript" language="JavaScript">
function gebi_<?php echo $id; ?>(id<?php echo $id; ?>)
{
return document.getElementById(id<?php echo $id; ?>)
}
function obsch_<?php echo $id; ?>()
{
var plan<?php echo $id; ?> = gebi_<?php echo $id; ?>('plan<?php echo $id; ?>').value;
var cenaclick<?php echo $id; ?> = <?php echo $cena_click; ?>;
var color<?php echo $id; ?> = '<?php echo $color; ?>';
var standartcolor<?php echo $id; ?> = '<?php echo $standart_color; ?>';
var planbase<?php echo $id; ?> = <?php echo $plan_base; ?>;
var members<?php echo $id; ?> = <?php echo $members; ?>;
var active<?php echo $id; ?> = <?php echo $active; ?>;
var vip<?php echo $id; ?> = <?php echo $vip; ?>;

// активное окно
if(active<?php echo $id; ?> == 0) { var cenaactive<?php echo $id; ?> = 0; } else { var cenaactive<?php echo $id; ?> = parseFloat(<?php echo $cena_active; ?>); };
// если цвет стандартный - стоимость 0. Если нестандартный и ссылка остановлена cenacolor = cenacolor
if(color<?php echo $id; ?> == standartcolor<?php echo $id; ?>) { var cenacolor<?php echo $id; ?> = 0; } else { if(planbase<?php echo $id; ?> <= members<?php echo $id; ?>) {var cenacolor<?php echo $id; ?> = <?php echo $hldyn; ?>;}; };

if(vip<?php echo $id; ?> == 0)
{
var vipprice<?php echo $id; ?> = 0;
}
else
{
if(planbase<?php echo $id; ?> <= members<?php echo $id; ?>)
{
var vipprice<?php echo $id; ?> = <?php echo $vipprice; ?>;
};
};

gebi_<?php echo $id; ?>('ads_price_<?php echo $id; ?>').innerHTML = Math.round(((plan<?php echo $id; ?> * cenaactive<?php echo $id; ?>) + (plan<?php echo $id; ?> * cenaclick<?php echo $id; ?>) + (cenacolor<?php echo $id; ?> + vipprice<?php echo $id; ?>))*10000)/10000 + ' руб.';
}
</script>

Форма:

<form method="post" action="" name="formzakaz" id="<?php echo $id; ?>" onsubmit="return SbmForm(); return false;">
Введите кол-во визитов: <input type="text" size="5" value="" maxlength="7" name="plan<?php echo $id; ?>" id="plan<?php echo $id; ?>" onChange="obsch_<?php echo $id; ?>();" onKeyUp="obsch_<?php echo $id; ?>();">
<input
type="hidden" value="<?php echo $id; ?>" name="id">
<input
type="hidden" value="<?php echo md5($id.$user.$s_salt); ?>" name="cnt">
<input
type="submit" value="Добавить" style="height:25px; color:blue;" onclick="this.disabled=true,this.form.submit();">

</form>

Вывод результата:

<span id="ads_price_<?php echo $id; ?>" style="color:#00cc00; font-weight: bold;"></span>




Спустя 32 минуты, 45 секунд (13.05.2012 - 17:11) redreem написал(а):
не в даваясь в суть


function gebi (id) {
return document.getElementById(id);
}

function obsch() {
var plan<?php echo $id; ?> = gebi ('plan<?php echo $id; ?>').value;
var cenaclick<?php echo $id; ?> = <?php echo $cena_click; ?>;
var color<?php echo $id; ?> = '<?php echo $color; ?>';
var standartcolor<?php echo $id; ?> = '<?php echo $standart_color; ?>';
var planbase<?php echo $id; ?> = <?php echo $plan_base; ?>;
var members<?php echo $id; ?> = <?php echo $members; ?>;
var active<?php echo $id; ?> = <?php echo $active; ?>;
var vip<?php echo $id; ?> = <?php echo $vip; ?>;

// активное окно
if(active<?php echo $id; ?> == 0) { var cenaactive<?php echo $id; ?> = 0; } else { var cenaactive<?php echo $id; ?> = parseFloat(<?php echo $cena_active; ?>); };
// если цвет стандартный - стоимость 0. Если нестандартный и ссылка остановлена cenacolor = cenacolor
if(color<?php echo $id; ?> == standartcolor<?php echo $id; ?>) { var cenacolor<?php echo $id; ?> = 0; } else { if(planbase<?php echo $id; ?> <= members<?php echo $id; ?>) {var cenacolor<?php echo $id; ?> = <?php echo $hldyn; ?>;}; };

if(vip<?php echo $id; ?> == 0)
{
var vipprice<?php echo $id; ?> = 0;
}
else
{
if(planbase<?php echo $id; ?> <= members<?php echo $id; ?>)
{
var vipprice<?php echo $id; ?> = <?php echo $vipprice; ?>;
};
};

gebi ('ads_price_<?php echo $id; ?>').innerHTML = Math.round(((plan<?php echo $id; ?> * cenaactive<?php echo $id; ?>) + (plan<?php echo $id; ?> * cenaclick<?php echo $id; ?>) + (cenacolor<?php echo $id; ?> + vipprice<?php echo $id; ?>))*10000)/10000 + ' руб.';
}


будет точно так же работать как и твой вариант
думается если повыкидывать все эти таскания $id за идентификаторами, то ошибка всплывет сама собой визуально. а так - это адъ! :)

Спустя 2 минуты, 46 секунд (13.05.2012 - 17:14) bodja написал(а):
vagon
1 покажите ,что выводит в ХТМЛ ,а то прочитать невозможно.
2 делайте хотя бы так

var a=<?php echo $a ?>
var
b=<?php echo $b ?>
var
c=<?php echo $c ?>


а потом нормальный код без вставок

Спустя 50 минут, 26 секунд (13.05.2012 - 18:04) vagon написал(а):
В общем, убрал приклеенные id приклеенные к названиям переменных от безысходности, - стало попроще. У названий функций оставил,
т.к. они все же должны быть уникальными. Результат тот же...

function gebi<?php echo $id; ?>(id)
{
return document.getElementById(id)
}
function obsch_<?php echo $id; ?>()
{
var plan = gebi<?php echo $id; ?>('plan').value;
var cenaclick = <?php echo $cena_click; ?>;
var color = '<?php echo $color; ?>';
var standartcolor = '<?php echo $standart_color; ?>';
var planbase = <?php echo $plan_base; ?>;
var members = <?php echo $members; ?>;
var active = <?php echo $active; ?>;
var vip = <?php echo $vip; ?>;

if(active == 0) { var cenaactive = 0; } else { var cenaactive = parseFloat(<?php echo $cena_active; ?>); };
if(color == standartcolor) { var cenacolor = 0; } else { if(planbase <= members) {var cenacolor = <?php echo $hldyn; ?>;}; };
if(vip == 0)
{
var vipprice = 0;
}
else
{
if(planbase <= members)
{
var vipprice = <?php echo $vipprice; ?>;
};
};
gebi<?php echo $id; ?>('ads_price<?php echo $id; ?>').innerHTML = Math.round(((plan * cenaactive) + (plan * cenaclick) +
(
cenacolor + vipprice))*10000)/10000 + ' руб.';
}


HTML код:

function gebi1341950(id)
{
return document.getElementById(id)
}
function obsch_1341950()
{
var plan = gebi1341950('plan').value;
var cenaclick = 0.01;
var color = '#0094FF';
var standartcolor = '#0000FF';
var planbase = 3012;
var members = 2361;
var active = 0;
var vip = 0;

if(active == 0) { var cenaactive = 0; } else { var cenaactive = parseFloat(0.01); };
if(color == standartcolor) { var cenacolor = 0; } else { if(planbase <= members) {var cenacolor = 1;}; };
if(vip == 0)
{
var vipprice = 0;
}
else
{
if(planbase <= members)
{
var vipprice = 1;
};
};
gebi1341950('ads_price1341950').innerHTML = Math.round(((plan * cenaactive) + (plan * cenaclick) +
(cenacolor + vipprice))*10000)/10000 + ' руб.';

}



Спустя 17 часов, 34 минуты, 48 секунд (14.05.2012 - 11:39) bodja написал(а):
vagon
Тихий ужасть,да и сами знаете ,что тихий :D
Будете для 100 товаров -100 функций генерить? :rolleyes:
Делаем так,вот это генерим.

var product=[];
product[0]=['ид1','артикул','цена','хрень','еще хрень'];
product[1]=['ид2','артикул','цена','хрень','еще хрень'];
product[2]=['ид3','артикул','цена','хрень','еще хрень'];
product[3]=['ид4','артикул','цена','хрень','еще хрень'];
product[4]=['ид5','артикул','цена','хрень','еще хрень'];


Потом ничего не генерим.Определяем размер массива и крутим в цикле,передавая счетчик аргументом функции.

for(var i=0;i<product.length;i++){
fun(i);
}


Ловим в функции и делаем что нам нужно.и располагаем в DOM

function fun(i) {
//product[i][0]-здесь ид
//product[i][1]-здесь артикул
//product[i][2]-здесь цена

document.getElementById('content').innerHTML=document.getElementById('content').innerHTML+'<div id='+product[i][0]+'>'+product[i][1]+' '+product[i][2]+'</div>';
}


Приведите примерно к такому виду,запустите без ПХП,
если не получится - выкладываем,если получится но не получится генерить массив- это не проблемы яваскрипта.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.