22.02.2018, 19:32
|
Профессор
|
|
Регистрация: 02.05.2016
Сообщений: 390
|
|
|
|
22.02.2018, 19:40
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
spinastr,
куда поместить курсы и дату из полученного ответа определяется ключами самого объекта. А для этого имена ключей дают элементам на странице как имена классов.
<span class="previous date"></span> - это составное имя класса, и к этому элементу можно обратиться по любому из имени класса (как селектору). Если же обращаться по двум именам, то их пишут через точку - previous.date.
Полученный объект (курсы) обходят двумя циклами, в первом $.each(data, function(k, o) значением аргумента "k" будут первичные ключи объекта, то есть "current" и "previous", а аргумент "о" принимает объекты с датой и курсами валют.
Второй цикл $.each(o, function(a, r) - обходит курсы и его аргументами будут: "a" - ключи "date", "USD", "EUR", а "r" будет иметь значения этих ключей, то есть даты и курсов.
Метод $('.'+k+'.'+a) соединяя первичные ключи объекта со вторичными формирует селектор составного имени класса, и они будут равны:
.current.date
.current.USD
.current.EUR
.previous.date
.previous.USD
.previous.EUR
и jQuery по этим селекторам выбирает элементы на странице. Я и показал в примере и таблицу, и параграфы, а можно было всю страницу заклеить элементами с классами, в которые jQ и поместит данные.
.html() - метод который помещает сами данные плюс стрелки.
.attr('title', function() {
return $(this).hasClass('title') ? data[k].date : ''
}) - этот метод добавит и дату в title значение элемента, если у элемента есть имя класса title. Поэтому у <span class="previous USD title"></span> будет подсказка с датой, а у <span class="previous EUR"></span> нет.
Вот и вся работа на клиенте. Все до безобразия просто.
А ошибки если есть, так с ними надо разбираться, хрен знает что у вас там творится. А гаданием ни кто заниматься не станет.
|
|
22.02.2018, 19:42
|
Профессор
|
|
Регистрация: 21.09.2015
Сообщений: 196
|
|
эта ошибка говорит о том, что у вас где-то не закрыты скобки. Проверяйте, для каждой ли открытой скобки есть закрывающая.
Если вы пользуетесь каким-либо редактором (например notepade++), они обычно подсвечивают пары скобок.
|
|
22.02.2018, 19:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от spinastr
|
вот и что это значит?
|
Это значит, что я для того чтобы пример работал на странице, закомментировал две строки кода - //комментарий.
Вы у этой строки $.getJSON("http://h116641.s08.test-hf.su/", function(data) { его убрали, а из этой //}); нет, и тело функции не закрыто!
Когда же вы изучать матчасть начнете.
Последний раз редактировалось laimas, 22.02.2018 в 19:46.
|
|
22.02.2018, 19:46
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
Это нужно поместить перед "</body>":
$(function(){
$.getJSON('http://h116641.s08.test-hf.su/',function(data){
$('[data-currency]').each(function(){
var currency=this.dataset.currency.toUpperCase(),
type=this.dataset.currencryType.toLowerCase()||'current',
prefix=this.dataset.currencryPrifex||'';
if(!data[type] || !data[type][currency])
return;
var item=data[type][currency],
html=(prefix?prefix.trim()+' ':'')+item.value.toFixed(2)+' '+
'<b class="'+['down','up'][item.rate-1]+'">'+
['▼','▲'][item.rate-1]+
'</b>';
$(this).html(html);
});
});
});
Так можно вывести курсы:
<div data-currency="usd"
data-currency-type="current"
data-currency-prefix="$">Тут будет курс доллара на сегодня</div>
<div data-currency="usd"
data-currency-type="previous"
data-currency-prefix="$">Тут будет курс доллара на вчера</div>
<div data-currency="eur"
data-currency-type="current"
data-currency-prefix="€">Тут будет курс евро на сегодня</div>
<div data-currency="eur"
data-currency-type="previous"
data-currency-prefix="€">Тут будет курс евро на вчера</div>
Доллар вчера стоил <span data-currency="usd" data-currency-type="previous"></span> рублей,
а евро <span data-currency="eur" data-currency-type="previous"></span>
Если я нигде не ошибся, то будет работать.
Последний раз редактировалось Nexus, 22.02.2018 в 19:49.
|
|
22.02.2018, 19:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Nexus,
зачем? Ему код простого автомата дали, а вы наворотили еще кучу, чтобы он вообще запутался?
И зачем такие сложности городить?
|
|
22.02.2018, 19:56
|
Профессор
|
|
Регистрация: 02.05.2016
Сообщений: 390
|
|
Я очень ценю всё что выше написано, это труд что бы мне объяснить.
Спасибо ВАМ, но как вы мне объясняете и я не понимаю!
Так и я объясняю, что не понимаю...
На той неделе сделали курс доллара, я немного что то запомнил, потом подумал про евро, прошло 5 дней и я уже забыл подробности js.
Вы в этой среде обитаете и шарите в этом и вам кажется что и другие с лёгкостью поймут.
У меня нету даже базового знания js
Я методом народного тыка 5 лет учил HTML и CSS- мне ни кто не помогал, а когда говорили я не понимал.
Так и тут я понял 37%
Буду сейчас подставлять снова методом народного тыка и задовать вопросы в форум.
До этого все скрипты были написано, спасибо за это и снова как неделю назад, осталось вывести из json в html и я не понимаю.
Даже если и пойму, забуду через неделю.
Почему нельзя сразу всё подсказать, можно казать 97% сделано, конечно не мной мне помогли, видите как мне тяжело даются оставшиеся 3 %?
Например я разбираюсь в сочетании цветов и легко могу что то подобрать, а другой в этом не понимает. Лучше сразу подсказать чем учить и смотреть как человек мучается.
|
|
22.02.2018, 19:58
|
Профессор
|
|
Регистрация: 02.05.2016
Сообщений: 390
|
|
Nexus,
поместил на тестовой странице пусто
|
|
22.02.2018, 20:06
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
Сообщение от spinastr
|
Nexus,
поместил на тестовой странице пусто
|
Я привел пример того, как можно вывести информацию на страницу...
JS-код вы вставили, отлично, но что на счет вывода информации?
Читайте то, что ниже этого:
Сообщение от Nexus
|
Так можно вывести курсы:
|
|
|
22.02.2018, 20:07
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
laimas, таки да, тут я затупил, тс не справился со столь "сложным" выводом информации...
|
|
|
|