С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
11 / 11 / 0
Регистрация: 12.06.2017
Сообщений: 24

Как заставить это работать?

04.11.2017, 11:07. Показов 1285. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сам скрипт (Заточен под Drupal), хотелось бы его переделать под обычный, т.е. насколько я понимаю удалить из него не нужные Drupal-овские строки:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
(function ($) {
  Drupal.behaviors.Airtravel_currencies = {
    attach : function(context, settings) {
 
      var currencies_block = $('#airtravel_currencies:not(".underline")');
 
      if (currencies_block.length > 0) {
        $.ajax({
          type: 'GET',
          url: Drupal.settings.basePath + 'airtravel_currencies/get_currencies',
          dataType: 'json',
          success: function(data) {
 
            var usd = parseFloat(data['usd']);
            var euro = parseFloat(data['euro']);
 
            var correction = parseFloat(currencies_block.attr('correction'));
 
            if (usd) {
              if (correction) usd = usd + (usd*correction/100); //usd = Math.round(usd + (usd*correction/100));
 
              usd = '<span class="airtravel_currencies_usd">$ '+usd.toFixed(4)+'</span>';
            }
            if (euro) {
              if (correction) euro = euro + (euro*correction/100); //euro = Math.round(euro + (euro*correction/100));
 
              euro = '<span class="airtravel_currencies_euro">€ '+euro.toFixed(4)+'</span>';
            }
 
            currencies_block.append(usd+euro);
            currencies_block.addClass('underline');
          },
        });
 
      }
 
    }
  };
}) (jQuery);
Вывод данных из скрипта:

HTML5
1
2
3
4
<div id="airtravel_currencies" correction="1.7" class="underline">
<span class="airtravel_currencies_usd"></span>
<span class="airtravel_currencies_euro"></span>
</div>
URL массива с данными в скрипте :
JavaScript
1
url: Drupal.settings.basePath + 'airtravel_currencies/get_currencies',
Ссылка откуда берутся данные:
http://airtravel.by/airtravel_... currencies

Пытался переделать как то так и не работает(
HTML5
1
2
3
4
<div id="airtravel_currencies" correction="1.7" class="underline">
<span class="airtravel_currencies_usd"></span>
<span class="airtravel_currencies_euro"></span>
</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<script>
function ($) {
 
      var currencies_block = $('#airtravel_currencies:not(".underline")');
 
      if (currencies_block.length > 0) {
        $.ajax({
          type: 'GET',
          url: '//airtravel.by/airtravel_currencies/get_currencies',
          dataType: 'json',
          success: function(data) {
 
            var usd = parseFloat(data['usd']);
            var euro = parseFloat(data['euro']);
 
            var correction = parseFloat(currencies_block.attr('correction'));
 
            if (usd) {
              if (correction) usd = usd + (usd*correction/100); //usd = Math.round(usd + (usd*correction/100));
 
              usd = '<span class="airtravel_currencies_usd">$ '+usd.toFixed(4)+'</span>';
            }
            if (euro) {
              if (correction) euro = euro + (euro*correction/100); //euro = Math.round(euro + (euro*correction/100));
 
              euro = '<span class="airtravel_currencies_euro">€ '+euro.toFixed(4)+'</span>';
            }
 
            currencies_block.append(usd+euro);
            currencies_block.addClass('underline');
          },
        });
 
      }
 
};
</script>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2017, 11:07
Ответы с готовыми решениями:

Как заставить скрипты работать по очереди?
Всем привет. Есть скрипт, в первой его части я обращаюсь к странице стороннего сайта, собираю информацию и записываю в массив. Во второй -...

Как заставить функцию работать от нажатия кнопки?
Задание сделать справочник. Код написал но не знаю как заставить функцию работать от нажатия кнопки. &lt;p&gt;&lt;input...

Как заставить это работать в FireFox?
В IE и Opera работает, а в FireFox нет. Такой вот код (насилу сообразил как его сюда вставить): &lt; td &gt; &lt; input...

6
 Аватар для evikza
968 / 530 / 244
Регистрация: 20.05.2015
Сообщений: 776
04.11.2017, 13:59
frommax, это Ваш сайт? Просто, на нем всё прекрасно работает Если нет, у Вас не получится средствами JS получить данные. Так как сервер запрещает делать кросс-доменные запросы. Об этом говорит ошибка в консоли браузера:

Code
1
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Что делать в таком случае?
  1. Делать запрос к данным нужно исключительно с сервера, т.е с помощь PHP. Сохранять этот файл у вас на сервере, а дальше уже получать его через JS.
  2. Воспользоваться открытыми API банков.
0
11 / 11 / 0
Регистрация: 12.06.2017
Сообщений: 24
04.11.2017, 14:10  [ТС]
Не мой! Просто мне нужно сделать похожее. Чтобы был вывод курса + процент = результат. В идеале бы парсить данные отсюда http://www.nbrb.by/API/ExRates/Rates?Periodicity=0. Только вот не соображаю как поправить код

Добавлено через 6 минут
На данный момент у меня работает вот так:

PHP
1
2
3
4
5
6
7
8
9
10
$kursi = @simplexml_load_file('http://www.nbrb.by/Services/XmlExRates.aspx');
if ($kursi != FALSE) {
    foreach ($kursi->Currency as $Currency) {
    if ($Currency->NumCode == '840') 
           {echo '<p style="color:#fff">$   '.$Currency->Rate.'</p>';}
    if ($Currency->NumCode == '978')
           {echo '<p style="color:#fff">€   '.$Currency->Rate.'</p>';}}
           {echo '<font style="color:#fff">ОПЛАТА ПРОИЗВОДИТСЯ ПО КУРСУ</font> <font style="color:#ff0000">НБРБ +2%</font>';}
    }
  else {echo '<p>Курсы валют пока недоступны</p>';}
Хотелось бы перейти на API и автоматизировать, вариант с этого сайта меня вполне бы устраивал!
0
 Аватар для evikza
968 / 530 / 244
Регистрация: 20.05.2015
Сообщений: 776
04.11.2017, 15:37
Лучший ответ Сообщение было отмечено frommax как решение

Решение

frommax, ну, сейчас у вас пример на PHP. Чем он вас не устраивает?

Я сделал вам рабочий пример на JS. Считаем валюту + данные из атрибута correction.

Запустите пример и посмотрите в консоль разработчика, я вывел в массив 2-е валюты без добавления процентов.

Code
1
(2) [1.9806, 2.3068]
На выходе же (странице) имеем готовый результат с процентами.

Code
1
2.0143 2.3460
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
  <div id="currencies" correction="1.7" class="underline">
    <span class="currencies_USD"></span>
    <span class="currencies_EUR"></span>
  </div>
  <script>
    var correction = $('#currencies').attr('correction');
 
    $.ajax({
      type: "GET",
      url: "http://www.nbrb.by/API/ExRates/Rates?Periodicity=0",
      success: function(db) {
        var currencies = [];
        $.each(db, function(i) {
          if (this.Cur_Abbreviation === 'USD' || this.Cur_Abbreviation === 'EUR') { 
            currencies.push(this.Cur_OfficialRate);
          }
        });
 
        $('.currencies_USD').text((currencies[0] + (currencies[0] * correction / 100)).toFixed(4));
        $('.currencies_EUR').text((currencies[1] + (currencies[1] * correction / 100)).toFixed(4));
 
        console.log(currencies);
      }, 
      error: function(jqXHR) {
        $('#currencies').text('request failed ...');
      }
    });
</script>
</body>
</html>
1
11 / 11 / 0
Регистрация: 12.06.2017
Сообщений: 24
04.11.2017, 18:11  [ТС]
Вот огромное человеческое СПАСИБО!!! Прикрутил все работает. Может еще кому то актуально будет. Перерыл все, нигде для белорусского нац. банка в открытом доступе подобного нету. Еще раз спасибо!

Добавлено через 23 минуты
Правда после подключения библиотеки jquery.min.js слайдер перестал работать и каких то ошибок в консоле повыскакивало.
0
 Аватар для evikza
968 / 530 / 244
Регистрация: 20.05.2015
Сообщений: 776
04.11.2017, 18:13
frommax, какие ошибки? Или киньте в ЛС, где можно посмотреть.
0
11 / 11 / 0
Регистрация: 12.06.2017
Сообщений: 24
04.11.2017, 18:16  [ТС]
http://www.holidayclub.by
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2017, 18:16
Помогаю со студенческими работами здесь

Как заставить работать скрипт
Добрый день! Имеется скрипт проверки совместимости версии iOS для репозитория Cydia. const VERSION_CHECK_SUPPORTED=&quot;Ваша версия iOS...

Как заставить работать javascript в Google Chrome?
Знаю, что нужно сохранить что-то на диске, а потом как т о вставить в консоль JS в Chrome через инструменты, но когда открывается консоль...

Как заставить работать код в разных браузерах?
Ребята, есть код: &lt;a href=&quot;http://xxxxxx&quot; id=&quot;spam&quot;&gt;Продолжить&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt; window.setTimeout(function() {...

Как заставить работать JS в модальных окнах bootstrap 3?
Как заставить работать JS в модальных окнах bootstrap 3? Гуглил, решения не нашел

Как javascript-ий unescape заставить работать так же как и perl ?
есть страничка со следующим фрагментом: &lt;SCRIPT LANGUAGE='JavaScript'&gt; var content = '%80%81%82%83%84'; content =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru