Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #451 (permalink)  
Старый 22.02.2018, 19:32
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

Manyasha,

вот и что это значит?

https://pp.userapi.com/c840336/v8403...9wLhL-PmFs.jpg
Ответить с цитированием
  #452 (permalink)  
Старый 22.02.2018, 19:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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> нет.

Вот и вся работа на клиенте. Все до безобразия просто.

А ошибки если есть, так с ними надо разбираться, хрен знает что у вас там творится. А гаданием ни кто заниматься не станет.
Ответить с цитированием
  #453 (permalink)  
Старый 22.02.2018, 19:42
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

эта ошибка говорит о том, что у вас где-то не закрыты скобки. Проверяйте, для каждой ли открытой скобки есть закрывающая.
Если вы пользуетесь каким-либо редактором (например notepade++), они обычно подсвечивают пары скобок.
Ответить с цитированием
  #454 (permalink)  
Старый 22.02.2018, 19:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от spinastr
вот и что это значит?
Это значит, что я для того чтобы пример работал на странице, закомментировал две строки кода - //комментарий.

Вы у этой строки $.getJSON("http://h116641.s08.test-hf.su/", function(data) { его убрали, а из этой //}); нет, и тело функции не закрыто!

Когда же вы изучать матчасть начнете.

Последний раз редактировалось laimas, 22.02.2018 в 19:46.
Ответить с цитированием
  #455 (permalink)  
Старый 22.02.2018, 19:46
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 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.
Ответить с цитированием
  #456 (permalink)  
Старый 22.02.2018, 19:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Nexus,
зачем? Ему код простого автомата дали, а вы наворотили еще кучу, чтобы он вообще запутался?

И зачем такие сложности городить?
Ответить с цитированием
  #457 (permalink)  
Старый 22.02.2018, 19:56
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

Я очень ценю всё что выше написано, это труд что бы мне объяснить.

Спасибо ВАМ, но как вы мне объясняете и я не понимаю!

Так и я объясняю, что не понимаю...

На той неделе сделали курс доллара, я немного что то запомнил, потом подумал про евро, прошло 5 дней и я уже забыл подробности js.

Вы в этой среде обитаете и шарите в этом и вам кажется что и другие с лёгкостью поймут.

У меня нету даже базового знания js

Я методом народного тыка 5 лет учил HTML и CSS- мне ни кто не помогал, а когда говорили я не понимал.

Так и тут я понял 37%

Буду сейчас подставлять снова методом народного тыка и задовать вопросы в форум.

До этого все скрипты были написано, спасибо за это и снова как неделю назад, осталось вывести из json в html и я не понимаю.

Даже если и пойму, забуду через неделю.

Почему нельзя сразу всё подсказать, можно казать 97% сделано, конечно не мной мне помогли, видите как мне тяжело даются оставшиеся 3 %?

Например я разбираюсь в сочетании цветов и легко могу что то подобрать, а другой в этом не понимает. Лучше сразу подсказать чем учить и смотреть как человек мучается.
Ответить с цитированием
  #458 (permalink)  
Старый 22.02.2018, 19:58
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

Nexus,

поместил на тестовой странице пусто
Ответить с цитированием
  #459 (permalink)  
Старый 22.02.2018, 20:06
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Сообщение от spinastr
Nexus,

поместил на тестовой странице пусто
Я привел пример того, как можно вывести информацию на страницу...
JS-код вы вставили, отлично, но что на счет вывода информации?

Читайте то, что ниже этого:
Сообщение от Nexus
Так можно вывести курсы:
Ответить с цитированием
  #460 (permalink)  
Старый 22.02.2018, 20:07
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

laimas, таки да, тут я затупил, тс не справился со столь "сложным" выводом информации...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод контента в модалном окне, чтобы к нему можно было обратиться по ссылке decadent42 jQuery 3 11.04.2016 15:12
Преключатель валют alexmixaylov jQuery 7 21.10.2014 13:10
Проблема с выводом курса валют bubanay Элементы интерфейса 0 20.12.2013 20:42
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41
Вывод данных в Друпал 6 из MySQL, небольшая работа torquemada Работа 1 22.05.2011 17:05