Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Тернарный оператор при выводе API данных (https://javascript.ru/forum/dom-window/78722-ternarnyjj-operator-pri-vyvode-api-dannykh.html)

DVV 25.10.2019 21:46

Тернарный оператор при выводе API данных
 
Сайт получает данные крипто рынка через API. Нужно сделать так, что изменение курса в % (число) в ячейке таблицы было зеленого цвета, если он положительный и красный, если отрицательный


Также надо заменить на прочерк (-) данные, если они отсутствуют (равны Null).

По идее тут надо через тернарный оператор, но не могу понять, куда и как его прописывать.
Еще есть вопрос, почему подчеркивается красным вот такая запись. Ему не нравится, что получаемый через API параметр начинается с числа


рони 25.10.2019 21:59

DVV,
код можно а не картинку, где строка 12?

DVV 25.10.2019 22:05

(function() {

    function exchangeDataShow() {
        fetch('https://api.coinmarketcap.com/v1/ticker/?limit=20')
        .then( (responce) => {
            return responce.json();
        })
        .then( (data) => {
            let output = ' ';
            
            data.forEach(coin => {

                output += `
                    <tr>
                        <td>${coin.rank}</td>
                        <td>${coin.name}</td>
                        <td>${coin.price_usd}</td>
                        <td>${coin.24h_volume_usd}</td>
                        <td>${coin.market_cap_usd}</td>
                        <td>${coin.total_supply}</td>
                        <td>${coin.max_supply}</td>
                        <td>${coin.percent_change_1h}%</td>
                        <td>${coin.percent_change_24h}%</td>
                        <td>${coin.percent_change_7d}%</td>
                    </tr>
                `; 
            });

            document.getElementById('market-data').innerHTML = output;
            
        })
        .catch( (err) => {
            console.log(err);
        });
    }

    window.onload = exchangeDataShow();

    setInterval(() => {
        console.log('reload');
        exchangeDataShow();
    }, 5000);

})();

laimas 25.10.2019 22:10

${coin['24h_volume_usd']}

А для цвета условие меньше нуля то иначе ...

рони 25.10.2019 22:10

DVV,
css сами пропишите.
(function() {

    function exchangeDataShow() {
        fetch('https://api.coinmarketcap.com/v1/ticker/?limit=20')
        .then( (responce) => {
            return responce.json();
        })
        .then( (data) => {
            let output = ' ';

            data.forEach(coin => {
                let cls = coin.percent_change_1h < 0 ? 'red' : 'green';
                output += `
                    <tr>
                        <td>${coin.rank}</td>
                        <td>${coin.name}</td>
                        <td>${coin.price_usd}</td>
                        <td>${coin['24h_volume_usd']}</td>
                        <td>${coin.market_cap_usd}</td>
                        <td>${coin.total_supply}</td>
                        <td>${coin.max_supply}</td>
                        <td class="${cls}">${coin.percent_change_1h}%</td>
                        <td>${coin.percent_change_24h}%</td>
                        <td>${coin.percent_change_7d}%</td>
                    </tr>
                `;
            });

            document.getElementById('market-data').innerHTML = output;

        })
        .catch( (err) => {
            console.log(err);
        });
    }

    window.onload = exchangeDataShow();

    setInterval(() => {
        console.log('reload');
        exchangeDataShow();
    }, 5000);

})();

DVV 25.10.2019 22:15

Спасибо большое. Заработало))

laimas 25.10.2019 22:16

рони,
исправить надо, coin.24h_volume_usd - это ошибка.

DVV 25.10.2019 22:16

Супер. Вот понимаю, что надо прописать тернарный оператор, но так и не дошло, куда именно. Спасибо за помощь))

рони 25.10.2019 22:18

laimas,
добавил

laimas 25.10.2019 22:22

Цитата:

Сообщение от DVV
не дошло, куда именно

Да можно было прямо в тег и без тернарного оператора, ведь какой-то из этих цветов ячейка все равно будет иметь. :)


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