Как отобразить изменения цены акций компании в процентах и цвете?

#javascript

Вопрос:

Я получаю данные для профиля компании, и я хотел бы отобразить изменение цены в процентах и красным цветом, если оно отрицательное, или зеленым, если положительное, до 2 знаков после запятой.

 // fetch for company profile
const companyTitle = document.getElementById("company-title");
const companyLogo = document.getElementById("company-logo");
const price = document.getElementById("price");
const companyDescription = document.getElementById("company-description");
const changesPercentage = document.getElementById("changesPercentage");

const symbol = window.location.search.replace("?symbol=", "");
// console.log(titleText);

if (symbol) {
  getCompanyProfile(symbol);
} else {
  alert("nothing is passed");
}

function getCompanyProfile(symbol) {
  const url = `https://appspot.com/api/v3/company/profile/${symbol}`;
  fetch(url)
    .then((response) => response.json())
    .then((data) => {
      const profile = data.profile;
      companyTitle.textContent = profile.companyName;
      companyDescription.textContent = profile.description;
      price.textContent = "Stock Price: $"   profile.price;
      changesPercentage.textContent = profile.changesPercentage;

      // set logo
      let img = document.createElement("img");
      img.src = profile.image;
      companyLogo.appendChild(img);
      console.log(data);
    })
    .catch((err) => {
      console.warn("Something went wrong.", err.message);
    });
}
 

Комментарии:

1. пожалуйста, включите ваши файлы HTML и CSS.

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

Ответ №1:

мне пришлось добавить оператор if в функцию, которая сначала изменила конкретную точку данных на число, а затем посмотрела, больше ли она и равна или меньше 0. В первом он добавил класс (зеленый), а во втором-класс (красный). функция toFixed(2) сокращает число до двух десятичных знаков.

 let profileChangesPercent = Number(profile.changesPercentage);

if (profileChangesPercent >= 0) {
    changesPercentage.classList.add("green");
} else if (profileChangesPercent < 0) {
    changesPercentage.classList.add("red");
}
changesPercentage.textContent = profileChangesPercent.toFixed(2)   "%";