Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Программирование / Programming (https://forum.zone-game.info/forumdisplay.php?f=98)
-   -   JavaScript калькулятор (https://forum.zone-game.info/showthread.php?t=39593)

Antonio 22.11.2015 16:05

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

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

Код:

<?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"));
 }
 });
}
 });

                }

Код HTML:

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

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

PROGRAMMATOR 22.11.2015 16:25

Re: JavaScript калькулятор
 
UPDATE. Я понял, вы в файл сбрасываете.

Antonio 22.11.2015 16:27

Re: JavaScript калькулятор
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 403011)
Парсер, ничего не возвращает в вашем коде. Результат содержится в curl_exec().

По факту я могу вывести курс в HTML виде на страницу. Суть в том, что число я получаю. Но как мне его в формулу вставить?

PROGRAMMATOR 22.11.2015 16:53

Re: JavaScript калькулятор
 
Так а формула где находится?

Antonio 22.11.2015 17:01

Re: JavaScript калькулятор
 
Формула находится в HTML страничке
Скрипт:
Свернуть ↑Развернуть ↓

PROGRAMMATOR 22.11.2015 17:23

Re: JavaScript калькулятор
 
Это уже обфускацию прошло или такой стиль? :)

Пропишите после формулы:

console.log(Pbum, Ppec, Potd, Euro);
Code: Javascript
Сообщите что возвращает в консоль браузера. Очень похоже на то, что множится на строку.

Antonio 22.11.2015 17:25

Re: JavaScript калькулятор
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 403016)
Это уже обфускацию прошло или такой стиль? :)

Пропишите после формулы:

console.log(Pbum, Ppec, Potd, Euro);
Code: Javascript
Сообщите что возвращает в консоль браузера. Очень похоже на то, что множится на строку.

Возможно у меня мало опыта еще в JS, но код вроде чистый

Вот что пишет консоль
Код HTML:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.
jquery-latest.js:9183 Uncaught TypeError: Cannot read property 'value' of null

После запуска расчета

Код HTML:

jquery-latest.js:9592 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.
jquery-latest.js:9183 Uncaught TypeError: Cannot read property 'value' of null(anonymous function) @ test.htm:27jQuery.extend.each @ jquery-latest.js:383jQuery.fn.jQuery.each @ jquery-latest.js:136XmlKurs @ test.htm:24fire @ jquery-latest.js:3119self.fireWith @ jquery-latest.js:3231done @ jquery-latest.js:9275callback @ jquery-latest.js:9685send @ jquery-latest.js:9691jQuery.extend.ajax @ jquery-latest.js:9176(anonymous function) @ test.htm:16fire @ jquery-latest.js:3119self.fireWith @ jquery-latest.js:3231jQuery.extend.ready @ jquery-latest.js:3443completed @ jquery-latest.js:3474
test.htm:182 0.0540225 109.2 14.59 Object {}


PROGRAMMATOR 22.11.2015 17:37

Re: JavaScript калькулятор
 
Ну вот, вы умножаете на Euro, который является объектом.
Так же выше ругается на:

document.getElementById('Euro').value()
Code: Javascript

Да и не нужно смешивать код, раз используете jQuery то и пишите $('#Euro').val()

Antonio 22.11.2015 17:44

Re: JavaScript калькулятор
 
PHP код:

$(document).ready(function () {
 $.
ajax({
 
type"GET",
 
async false,
 
url"cb.xml",
 
dataType"xml",
 
successXmlKurs
 
});
function 
XmlKurs (xml) {
$(
xml).find("Valute").each(function(){
if($(
this).attr('ID')=='R01239') {
d=$(this).find("Value").text();
 $(
'#Euro').val()
 }
 });
}
 }); 

Cломался калькулятор совсем

PROGRAMMATOR 22.11.2015 17:59

Re: JavaScript калькулятор
 
Логично, ведь имелось ввиду так:

$("p").append($("#Euro").val() * $(this).find("Value"));
Code: Javascript

Но стоит учесть, что это умножение на строку. Данные полученные с DOM нужно привести к нужному типу, используя к примеру parseFloat(), parseInt(). Пример:

$.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);
		}
	});
});
Code: Javascript


Текущее время: 06:13. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot