Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод курса валют (https://javascript.ru/forum/misc/72548-vyvod-kursa-valyut.html)

laimas 11.02.2018 12:16

spinastr,
лень не лучший помощник в написании сайта и вашу лень я обслуживать не буду. Не копировать один в один верстку и стили предлагаемые, а читать и вникать, что это и как работает. А поняв применять у себя.

Нет стрелки вверху потому, что стиль перекрывается другим стелем в шапке.

Хотите сами втыкать стрелочки, на здоровье, я комментирую, а делайте сами.

Этой хрени Value > Previous не требуется, сервер уже вернул готовое в rate: 1 - курс вырос, 0 - курс упал.

Всяких функций в JS и прочей бодяги тоже не требуется - адресом куда будет помещен курс служат ключи json. Элемент текущего курса имеет класс current, предыдущего previous.

Удалите все стили что я писал, оставив только это:

.up {
    color: #0f0; /*зеленый цвет*/
}
  
.down {
    color: #f00;
}


А для этих классов что будут в шапке - белый, что в чем в вашей шапке - самостоятельно разобраться.

$.getJSON("чего-то там", function(data) {
    $.each(data, function(k, o) {
        $('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>')
    })
});

spinastr 11.02.2018 16:01

laimas,

Спасибо, вам но я не лентяй, так как уже вторую неделю пытаюсь сделать курс. И в Вашем скрипте двое суток не спал и пытался понять. Просто говорю никогда не встречался с php и js. Знаю на 77% HTML и css.

<style>
.up {color: #0f0; /*зеленый цвет*/}
.down {color: #f00;}
</style>
 
<div class="ratehead">
<span class="current"></span>
</div>
 
<script>
$.getJSON("домен.ру", function(data) {
    $.each(data, function(k, o) {
        $('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>')
    })
});
</script>




Что значит эта надпись и стрелки нету?

Не поленился, почитал тут. Понял что две проблемы может быть.

1. Функция без директивы return возвращает undefined.
2. Обращение к несуществующему свойству объекта также даст undefined.

А как что исправить, я не понимаю, подскажите в чём тут ошибка?

laimas 11.02.2018 16:28

Цитата:

Сообщение от spinastr
Знаю на 77% HTML и css.

А что же тогда мечетесь, давно уже можно было разобраться со стрелкой.

.имя родительского_класса_в_шапке .up:after {
    dispaly: block; /*или block!important; или ... найти, понять изменить, отладчик бразуера в помощь*/
    color: #fff; /*белый цвет*/
}


Тоже самое и для .down:after который в шапке. Вы даже не добавили в CSS стиль цвета для стрелки в шапке, это разве не лень, если знать на 77% HTML и css?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
.ratehead {
    background-color: #0164C6;
    color: #fff;
}
.ratehead .up, .ratehead .down {
    color: #fff;
}
</style>

<div class="ratehead">
<span class="current"></span>
</div>

<script>
//именно такое и получит Ajax
var data = {"current":{"date":"11.2.2018","value":58.17,"rate":1},"previous":{"date":"10.2.2018","value":57.67,"rate":1}};

//и вот тут данные этого объекта помещаются на свои места 
    $.each(data, function(k, o) {
        $('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>')
    })
</script>


Все на месте?

spinastr 11.02.2018 16:56

laimas,

<style>
.up {color: #0f0; /*зеленый цвет*/}
.down {color: #f00;}
</style>

<div class="ratehead">
<span class="current"></span>
</div>

<script>
//именно такое и получит Ajax
var data = {"current":{"date":"11.2.2018","value":58.17,"rate":1},"previous":{"date":"10.2.2018","value":57.67,"rate":1}};

//и вот тут данные этого объекта помещаются на свои места 
    $.each(data, function(k, o) {
        $('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>')
    })
</script>




Да, спасибо сейчас выглядит как я хотел.

Ещё вопрос:

1. Можно в подсказку при наведении вывести дату курса? Что бы не лазить на хост и не проверять.

2. Куда пропала строка с кодом где написан домен и почему работает без него?

$.getJSON("домен.ру", function(data) {

spinastr 11.02.2018 16:59

Снова ошибка undefined

<script>
//именно такое и получит Ajax
$.getJSON("домен.ру", function(data) {


//и вот тут данные этого объекта помещаются на свои места 
    $.each(data, function(k, o) {
        $('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>')
    })
});
</script>

Nexus 11.02.2018 17:07

215+ сообщений в теме и так и не удалось решить 15-минутную задачу )

spinastr, undefined на месте "стрелочки" означает, что у вас "o.rate" не является целочисленным больше 0 и меньше или равно 1.
Ошибка в данных, выведите их в консоль и посмотрите, что вам вернул сервер.

spinastr 11.02.2018 17:12

Цитата:

Сообщение от Nexus (Сообщение 477682)
215+ сообщений в теме и так и не удалось решить 15-минутную задачу )

spinastr, undefined на месте "стрелочки" означает, что у вас "o.rate" не является целочисленным больше 0 и меньше или равно 1.
Ошибка в данных, выведите их в консоль и посмотрите, что вам вернул сервер.

Я не понимаю, какая консоль, какой сервер?

Я сижу в инвалидной коляски у меня спастика в ногах уже устал, что за мучения?

Простите!

laimas 11.02.2018 17:14

Цитата:

Сообщение от spinastr
1. Можно в подсказку при наведении вывести дату курса? Что бы не лазить на хост и не проверять.

Можно, и для этого на сервер лазить не надо, даты курса уже есть в json. Как по наведению их показать, насколько я помню пример приводили. HTML средствами это делается просто:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
.ratehead {
    background-color: #0164C6;
    color: #fff;
}
.ratehead .up, .ratehead .down {
    color: #fff;
}
</style>

<div class="ratehead">
<span class="current"></span>
</div>

<script>
//именно такое и получит Ajax
var data = {"current":{"date":"11.2.2018","value":58.17,"rate":1},"previous":{"date":"10.2.2018","value":57.67,"rate":1}};

//и вот тут данные этого объекта помещаются на свои места 
    $.each(data, function(k, o) {
        $('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>').attr("title", o.date)
    })
</script>


О "красивеньких подсказках" искать и читать в сети, в частности тут. Это можно сделать?

Цитата:

Сообщение от spinastr
2. Куда пропала строка с кодом где написан домен и почему работает без него?

Никуда ничего не пропало, это пример для того чтобы он работал здесь на форме, поэтому просто разбор самого объекта.

Те кто не знают JS, используют jQuery, и ничего, не страшно. Пора начинать изучать. За три дня все не получится, но так и должно быть, учение требует и времени, и упорства.

Цитата:

Сообщение от spinastr
Снова ошибка

Открывать отладчик браузера и ....

spinastr 11.02.2018 17:34

laimas,
1. tooltip - мне ненужно, просто вывести в

title="СЮДА ВЫВЕСТИ ДАТУ - Посмотреть курс валют"

.attr('title', data.Date +"- Посмотреть курс валют")


Совместить?


2. Открыл консоль и что там делать?

https://pp.userapi.com/c840434/v8404...OaNndEOmko.jpg

spinastr 11.02.2018 17:47

Про подсказку понял:

$('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>')
$('.'+k).html("$ " + o.value + ' <b class=' + ['down','up'][o.rate] +'>' + ['▼','▲'][o.rate] +'</b>').attr("title", o.date)

.attr("title", o.date)


Тут хранится дата из джексона o.date


Часовой пояс GMT +3, время: 05:57.