Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вставка переменной в формулу (https://javascript.ru/forum/misc/59680-vstavka-peremennojj-v-formulu.html)

Becass 22.11.2015 16:31

Вставка переменной в формулу
 
Всем привет. Пишу калькулятор для расчета стоимости заказа.
-
Функционал написал, возникла проблема. Нужно в формулу расчета вставлять курс валюты.

Парсер валюты написал

Код:

<?php
$today = date("d/m/Y");
 $fp = fopen('cb.xml', 'w');
 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
      'http://www.cbr.ru/scripts/XML_daily.asp?date_req='.$today);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
fclose($fp);
curl_close ($ch);
?>

Получаю нужный курс

<script src="http://code.jquery.com/jquery-latest.js";></script>
	<SCRIPT>
$(document).ready(function () {
 $.ajax({
 type: "GET",
 async : false,
 url: "cb.xml",
 dataType: "xml",
 success: XmlKurs
 });
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
if($(this).attr('ID')=='R01239') {
p=$(this).find("Value").text();
$("p").append(document.getElementById('tcena').value()*$(this).find("Value"));

 }
 });
}
 });
</script>


Есть формула

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


Переменная Euro должна получаться автоматом из парсера


Объявляю функцию

var Euro = new function () {
		$(document).ready(function () {
 $.ajax({
 type: "GET",
 async : false,
 url: "cb.xml",
 dataType: "xml",
 success: XmlKurs
 });
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
if($(this).attr('ID')=='R01239') {
d=$(this).find("Value").text();
$("p").append(document.getElementById('Euro').value()*$(this).find("Value"));
 }
 });
}
 });

		}


-В итоге получаю ответ на расчет-
Общая стоимость -= Na руб.
Стоимость 1 экземпляра = Na руб.


Вопрос, что я не так делаю и как подставить число из функции в формулу?

Mess4me 22.11.2015 16:47

Цитата:

Сообщение от Becass
13
d=$(this).find("Value").text();

здесь точно получаете цифру а не строку?

Mess4me 22.11.2015 16:49

Becass,
игнорируйте комментарий)

Becass 22.11.2015 16:49

Цитата:

Сообщение от Mess4me (Сообщение 397138)
здесь точно получаете цифру а не строку?

Не уверен, пробовал убирать .text

d=$(this).find("Value");


Проблемы не решает

Mess4me 22.11.2015 16:51

Becass,
а XML файл можно сюда?

Becass 22.11.2015 16:52

<?xml version="1.0" encoding="windows-1251" ?>
<ValCurs Date="21/11/2015" name="Foreign Currency Market">
<Valute ID="R01010">
	<NumCode>036</NumCode>
	<CharCode>AUD</CharCode>
	<Nominal>1</Nominal>
	<Name>Австралийский доллар</Name>
	<Value>46,6590</Value>
</Valute>
<Valute ID="R01020A">
	<NumCode>944</NumCode>
	<CharCode>AZN</CharCode>
	<Nominal>1</Nominal>
	<Name>Азербайджанский манат</Name>
	<Value>61,9791</Value>
</Valute>
<Valute ID="R01035">
	<NumCode>826</NumCode>
	<CharCode>GBP</CharCode>
	<Nominal>1</Nominal>
	<Name>Фунт стерлингов Соединенного королевства</Name>
	<Value>99,0718</Value>
</Valute>
<Valute ID="R01060">
	<NumCode>051</NumCode>
	<CharCode>AMD</CharCode>
	<Nominal>100</Nominal>
	<Name>Армянских драмов</Name>
	<Value>13,4635</Value>
</Valute>
<Valute ID="R01090">
	<NumCode>974</NumCode>
	<CharCode>BYR</CharCode>
	<Nominal>10000</Nominal>
	<Name>Белорусских рублей</Name>
	<Value>36,1680</Value>
</Valute>
<Valute ID="R01100">
	<NumCode>975</NumCode>
	<CharCode>BGN</CharCode>
	<Nominal>1</Nominal>
	<Name>Болгарский лев</Name>
	<Value>35,3944</Value>
</Valute>
<Valute ID="R01115">
	<NumCode>986</NumCode>
	<CharCode>BRL</CharCode>
	<Nominal>1</Nominal>
	<Name>Бразильский реал</Name>
	<Value>17,2428</Value>
</Valute>
<Valute ID="R01135">
	<NumCode>348</NumCode>
	<CharCode>HUF</CharCode>
	<Nominal>100</Nominal>
	<Name>Венгерских форинтов</Name>
	<Value>22,3334</Value>
</Valute>
<Valute ID="R01215">
	<NumCode>208</NumCode>
	<CharCode>DKK</CharCode>
	<Nominal>10</Nominal>
	<Name>Датских крон</Name>
	<Value>92,8161</Value>
</Valute>
<Valute ID="R01235">
	<NumCode>840</NumCode>
	<CharCode>USD</CharCode>
	<Nominal>1</Nominal>
	<Name>Доллар США</Name>
	<Value>64,8673</Value>
</Valute>
<Valute ID="R01239">
	<NumCode>978</NumCode>
	<CharCode>EUR</CharCode>
	<Nominal>1</Nominal>
	<Name>Евро</Name>
	<Value>69,3886</Value>
</Valute>
<Valute ID="R01270">
	<NumCode>356</NumCode>
	<CharCode>INR</CharCode>
	<Nominal>100</Nominal>
	<Name>Индийских рупий</Name>
	<Value>97,9499</Value>
</Valute>
<Valute ID="R01335">
	<NumCode>398</NumCode>
	<CharCode>KZT</CharCode>
	<Nominal>100</Nominal>
	<Name>Казахстанских тенге</Name>
	<Value>21,1054</Value>
</Valute>
<Valute ID="R01350">
	<NumCode>124</NumCode>
	<CharCode>CAD</CharCode>
	<Nominal>1</Nominal>
	<Name>Канадский доллар</Name>
	<Value>48,6699</Value>
</Valute>
<Valute ID="R01370">
	<NumCode>417</NumCode>
	<CharCode>KGS</CharCode>
	<Nominal>100</Nominal>
	<Name>Киргизских сомов</Name>
	<Value>93,7321</Value>
</Valute>
<Valute ID="R01375">
	<NumCode>156</NumCode>
	<CharCode>CNY</CharCode>
	<Nominal>1</Nominal>
	<Name>Китайский юань</Name>
	<Value>10,1600</Value>
</Valute>
<Valute ID="R01500">
	<NumCode>498</NumCode>
	<CharCode>MDL</CharCode>
	<Nominal>10</Nominal>
	<Name>Молдавских леев</Name>
	<Value>32,4093</Value>
</Valute>
<Valute ID="R01535">
	<NumCode>578</NumCode>
	<CharCode>NOK</CharCode>
	<Nominal>10</Nominal>
	<Name>Норвежских крон</Name>
	<Value>75,1544</Value>
</Valute>
<Valute ID="R01565">
	<NumCode>985</NumCode>
	<CharCode>PLN</CharCode>
	<Nominal>1</Nominal>
	<Name>Польский злотый</Name>
	<Value>16,3024</Value>
</Valute>
<Valute ID="R01585F">
	<NumCode>946</NumCode>
	<CharCode>RON</CharCode>
	<Nominal>1</Nominal>
	<Name>Румынский лей</Name>
	<Value>15,5882</Value>
</Valute>
<Valute ID="R01589">
	<NumCode>960</NumCode>
	<CharCode>XDR</CharCode>
	<Nominal>1</Nominal>
	<Name>СДР (специальные права заимствования)</Name>
	<Value>89,5733</Value>
</Valute>
<Valute ID="R01625">
	<NumCode>702</NumCode>
	<CharCode>SGD</CharCode>
	<Nominal>1</Nominal>
	<Name>Сингапурский доллар</Name>
	<Value>45,9173</Value>
</Valute>
<Valute ID="R01670">
	<NumCode>972</NumCode>
	<CharCode>TJS</CharCode>
	<Nominal>1</Nominal>
	<Name>Таджикский сомони</Name>
	<Value>10,0914</Value>
</Valute>
<Valute ID="R01700J">
	<NumCode>949</NumCode>
	<CharCode>TRY</CharCode>
	<Nominal>1</Nominal>
	<Name>Турецкая лира</Name>
	<Value>22,8045</Value>
</Valute>
<Valute ID="R01710A">
	<NumCode>934</NumCode>
	<CharCode>TMT</CharCode>
	<Nominal>1</Nominal>
	<Name>Новый туркменский манат</Name>
	<Value>18,5335</Value>
</Valute>
<Valute ID="R01717">
	<NumCode>860</NumCode>
	<CharCode>UZS</CharCode>
	<Nominal>1000</Nominal>
	<Name>Узбекских сумов</Name>
	<Value>24,0695</Value>
</Valute>
<Valute ID="R01720">
	<NumCode>980</NumCode>
	<CharCode>UAH</CharCode>
	<Nominal>10</Nominal>
	<Name>Украинских гривен</Name>
	<Value>27,1411</Value>
</Valute>
<Valute ID="R01760">
	<NumCode>203</NumCode>
	<CharCode>CZK</CharCode>
	<Nominal>10</Nominal>
	<Name>Чешских крон</Name>
	<Value>25,6160</Value>
</Valute>
<Valute ID="R01770">
	<NumCode>752</NumCode>
	<CharCode>SEK</CharCode>
	<Nominal>10</Nominal>
	<Name>Шведских крон</Name>
	<Value>74,4634</Value>
</Valute>
<Valute ID="R01775">
	<NumCode>756</NumCode>
	<CharCode>CHF</CharCode>
	<Nominal>1</Nominal>
	<Name>Швейцарский франк</Name>
	<Value>63,8206</Value>
</Valute>
<Valute ID="R01810">
	<NumCode>710</NumCode>
	<CharCode>ZAR</CharCode>
	<Nominal>10</Nominal>
	<Name>Южноафриканских рэндов</Name>
	<Value>46,3835</Value>
</Valute>
<Valute ID="R01815">
	<NumCode>410</NumCode>
	<CharCode>KRW</CharCode>
	<Nominal>1000</Nominal>
	<Name>Вон Республики Корея</Name>
	<Value>56,1138</Value>
</Valute>
<Valute ID="R01820">
	<NumCode>392</NumCode>
	<CharCode>JPY</CharCode>
	<Nominal>100</Nominal>
	<Name>Японских иен</Name>
	<Value>52,7527</Value>
</Valute>
</ValCurs>


Пробовал менять
<Valute ID="R01239">
	<NumCode>978</NumCode>
	<CharCode>EUR</CharCode>
	<Nominal>1</Nominal>
	<Name>Евро</Name>
	<Value>69,3886</Value>
</Valute>


На
<Valute ID="R01239">
	<NumCode>978</NumCode>
	<CharCode>EUR</CharCode>
	<Nominal>1</Nominal>
	<Name>Евро</Name>
	[COLOR="Lime"]<Value>69</Value>[/COLOR]
</Valute>


Думал "давится" запятой, но нет

laimas 22.11.2015 17:08

А почему за курсом валют нужно постоянно обращаться к ЦБ, причем при каждом запросе клиентов?

Mess4me 22.11.2015 17:08

Цитата:

Сообщение от Becass
14
p=$(this).find("Value").text();
15
$("p").append(document.getElementById('tcena').val ue()*$(this).find("Value"));

а что эти строки должны сделать?

Becass 22.11.2015 17:10

Цитата:

Сообщение от laimas (Сообщение 397143)
А почему за курсом валют нужно постоянно обращаться к ЦБ, причем при каждом запросе клиентов?

Cкрипт для расчета стоимости заказа для типографии, все расчеты идут в Евро.

Becass 22.11.2015 17:11

Цитата:

Сообщение от Mess4me (Сообщение 397144)
а что эти строки должны сделать?

Гуглил по своей проблеме, в одной из тем форума был вариант вставить эту строку как запрет вывода текста и вывод конкретного числа
http://www.cyberforum.ru/php-beginne...ad1494550.html
вот отсюда


Часовой пояс GMT +3, время: 17:37.