Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
JavaScript калькулятор
#1
Всем привет. Пишу калькулятор для расчета стоимости заказа.
-
Функционал написал, возникла проблема. Нужно в формулу расчета вставлять курс валюты.

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

Код:
<?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 руб.


Вопрос, что я не так делаю и как подставить число из функции в формулу?
Ответ
#2
UPDATE. Я понял, вы в файл сбрасываете.
Ответ
#3
PROGRAMMATOR Написал:Парсер, ничего не возвращает в вашем коде. Результат содержится в curl_exec().
По факту я могу вывести курс в HTML виде на страницу. Суть в том, что число я получаю. Но как мне его в формулу вставить?
Ответ
#4
Так а формула где находится?
Ответ
#5
Формула находится в HTML страничке
Скрипт
Ответ
#6
Это уже обфускацию прошло или такой стиль? Smile

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

[SRC="javascript"]console.log(Pbum, Ppec, Potd, Euro);[/SRC]

Сообщите что возвращает в консоль браузера. Очень похоже на то, что множится на строку.
Ответ
#7
PROGRAMMATOR Написал:Это уже обфускацию прошло или такой стиль? Smile

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

[SRC="javascript"]console.log(Pbum, Ppec, Potd, Euro);[/SRC]

Сообщите что возвращает в консоль браузера. Очень похоже на то, что множится на строку.

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

Вот что пишет консоль
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


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

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 {}
Ответ
#8
Ну вот, вы умножаете на Euro, который является объектом.
Так же выше ругается на:

[SRC="javascript"]document.getElementById('Euro').value()[/SRC]


Да и не нужно смешивать код, раз используете jQuery то и пишите $('#Euro').val()
Ответ
#9
PHP код:
<?php 
$(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();
$(
'#Euro').val()
}
});
}
});

Cломался калькулятор совсем
Ответ
#10
Логично, ведь имелось ввиду так:

[SRC="javascript"]$("p").append($("#Euro").val() * $(this).find("Value"));[/SRC]


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

[SRC="javascript"]$.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);
}
});
});[/SRC]
Ответ


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

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


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