Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
JavaScript калькулятор
#11
Привел к нужному виду

PHP код:
<?php 
<script src="http://code.jquery.com/jquery-latest.js";></script>
<
SCRIPT>
$(
document).ready(function () {
$.
ajax({
url: 'cb.xml',
dataType: 'xml'
}).done(function (xml) {
$(
xml).find('Valute').each(function () {
if ($(
this).attr('ID') == 'R01239') {
var
currency = parseFloat($(this).find('Value')
.
text().replace(',', '.'));
var
price = parseFloat($('#Euro').val());

$(
'p').append(price * currency);
}
});
});
function
calc1() {


var
Li = new Number(list.Li.value);

var
Si = new Number(list.Si.value);

var
Ti = new Number(list.Ti.value);

var
Cf = new Number(list.Cf.value);

var
Cb = new Number(list.Cb.value);

var
F = new Number(list.F.checked);

var
B = new Number(list.B.checked);

var
Pf = new Number(list.Pf.checked);

var
N = new Number(list.N.checked);

var
V = new Number(list.V.checked);

var
Lg = new Number(list.Lg.checked);

var
Lm = new Number(list.Lm.checked);



if (
Li.toString() == "NaN" || Li <= 0) {

alert('Введено неверное значение формата!');

list.
Li.focus();

return
false;

}

if (
Si.toString() == "NaN" || Si <= 0) {

alert('Введено неверное значение формата!');

list.
Si.focus();

return
false;

}

if ( (
Li < 20 || Li > 430) || (Si < 20 || Si > 430) ) {

alert('Формат задается в пределах от 20 до 430!');

return
false;

}

if (
Ti.toString() == "NaN" || Ti <= 0) {

alert('Введено неверное значение тиража!');

list.
Ti.focus();

return
false;

}

else {

Nil1 = Math.floor(438/ (Li + 1) );

Nis1 = Math.floor(306/ (Si + 1) );

Ni1 = Nil1 * Nis1;

Nil2 = Math.floor(438/ (Si + 1) );

Nis2 = Math.floor(306/ (Li + 1) );

Ni2 = Nil2*Nis2;

Ni = Math.max(Ni1,Ni2);

Na3 = Ti / Ni;

Rb = list.RbK.value.substring(0, list.RbK.value.indexOf('_'));

K = list.RbK.value.substring(list.RbK.value.indexOf('_')+1);

Phs = Math.floor(0.999+(Na3*Rb/70));

if (
Ni1 > Ni2 ) {

Prz=(6+(Nil1-1)+(Nis1-1))*0.37*Phs;

}

else {

Prz=(6+(Nil2-1)+(Nis2-1))*0.37*Phs;

}

Pbum=(0.6 * Rb * K *( Na3 + 100))/4;

if (!(
Cf-Cb) && ((Li<310 && Si<=240) || (Li<=310 && Si<240) || (Si<310 && Li<=240) || (Si<=310 && Li<240))) {

Pl = 1.5*(Cf+Cb);

Ppec = 2*(Cf+Cb)+(Cf+Cb)*(10.0+0.0033*Na3);

}

else {

Pl = 3*(Cf+Cb);

Ppec = 2*(Cf+Cb)+(Cf+Cb)*(20+0.0033*Na3);

}

//alert(Ppec);

Potd = Pl + F*(0.0022*Ti+500) + B * (20 + Na3 * 0.01) + Pf * Na3 * 0.01 + V*(Na3 * 0.05)+N*(30+Ti*0.003) + Lg * Na3 * 0.25 + Lm * Na3 * 0.5 + Prz;

//Общая стоимость тиража

S = (Pbum + Ppec + Potd)*Euro;

S1 = S / list.Ti.value;

S = S.toString().substring(0,S.toString().indexOf(".")+3);

S1 = S1.toString().substring(0,S1.toString().indexOf(".")+3);

list.
result.value = "Общая стоимость тиража = " + S + " руб.\nСтоимость 1 экземпляра = " + S1 + " руб.";

return
true;

}

}

function
format(dx,dy){

document.list.Si.value = dx;

document.list.Li.value = dy;

}

</
SCRIPT>
Работать не начал
Ответ
#12
Исправили только то, где была первая ошибка, но все так же оставили * Euro.
Калькуляция происходит автоматически или её нужно производить по какому-то действию пользователя?
Ответ
#13
PROGRAMMATOR Написал:Исправили только то, где была первая ошибка, но все так же оставили * Euro.
Калькуляция происходит автоматически или её нужно производить по какому-то действию пользователя?

Пользователь выбирает нужные параметры расчета
http://joxi.ru/v29lEyqSEl7JmG
И нажимает кнопку "Посчитать"

Цитата:но все так же оставили * Euro.
Вы про это?
PHP код:
<?php 
S
= (Pbum + Ppec + Potd)*Euro;
Если да, то именно этот момент мне и нужно умножать на курс

Добавлено через 17 минут
Сложная однако задача. Мне предложили другой вариант, получать единоразово одно число

PHP код:
<?php
$client
= new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl");
$curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d', strtotime('now -1 day'))]);
$rate = new SimpleXMLElement($curs->GetCursOnDateResult->any);
$result = $rate->xpath('ValuteData/ValuteCursOnDate[VchCode="EUR"]');
//сохраняем у себя на сутки, что и возвращаем клиенту при запросах
$eur = (float)$result[0]->Vcurs/(int)$result[0]->Vnom;
?>
Только вот не обозначили куда оно должно записываться и откуда его потом тянуть.
Ответ
#14
Antonio;403028 Написал:Вы про это?
Про это, чем должна быть переменная Euro? Если нужна просто глобальная цена 1 евро, то проще прописать вне $(document).ready():

[SRC="javascript"]// Глобальная переменная с курсом евро
var currency;

$(document).ready(function() {

$.ajax({
url: 'cb.xml',
dataType: 'xml'
}).done(function (xml) {
$(xml).find('Valute').each(function() {
if ($(this).attr('ID') == 'R01239') {
currency = parseFloat($(this).find('Value')
.text().replace(',', '.'));
}
});
});
});

function calculate() {

// CODE HERE

S = (Pbum + Ppec + Potd) * currency;

// CODE HERE
}[/SRC]

Опять же, это пример, а не готовое решение.
Ответ
#15
PROGRAMMATOR Написал:Про это, чем должна быть переменная Euro? Если нужна просто глобальная цена 1 евро, то проще прописать вне $(document).ready():

[SRC="javascript"]// Глобальная переменная с курсом евро
var currency;

$(document).ready(function() {

$.ajax({
url: 'cb.xml',
dataType: 'xml'
}).done(function (xml) {
$(xml).find('Valute').each(function() {
if ($(this).attr('ID') == 'R01239') {
currency = parseFloat($(this).find('Value')
.text().replace(',', '.'));
}
});
});
});

function calculate() {

// CODE HERE

S = (Pbum + Ppec + Potd) * currency;

// CODE HERE
}[/SRC]

Опять же, это пример, а не готовое решение.

Спасибо за подсказки. Раздуплился, все отлично работает
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Уроки по JavaScript для начинающих webguru 5 3,825 01-19-2021, 08:41 PM
Последний пост: BITru
  Нужен программист javascript secondpro 0 2,201 02-28-2019, 03:46 AM
Последний пост: secondpro
  Javascript сортировка массива Virt 5 2,057 05-04-2013, 01:47 PM
Последний пост: PROGRAMMATOR
  Калькулятор ( js +html ) gorodetskiy 1 2,745 08-02-2012, 03:04 PM
Последний пост: gorodetskiy
  JavaScript nelegal 1 2,073 09-11-2011, 10:10 AM
Последний пост: Azagthtot

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)