需要帮助更改功能中SVG的颜色-Skycons

时间:2019-04-15 20:24:07

标签: javascript jquery css html5 ecmascript-6

我正在使用基于此youtube video

的天气应用程序

我有以下code,并且正在使用Skycons.js

我现在遇到的问题是我正在尝试在其中实施暗模式。并且大部分功能都在起作用,但是当我打开暗模式切换时,我找不到将Skycon从黑色更改为白色然后再重新更改为黑色的方法。

这是我的代码:

//pulls Skycons from skycons.js

function setIcons(icon, iconID) {
  const skycons = new Skycons({color: "black"});
  const currentIcon = icon.replace(/-/g, "_").toUpperCase();
  skycons.play();
  return skycons.set(iconID, Skycons[currentIcon]);
}

// Dark Mode Toggle Button
function darkMode(obj) {
  if ($(obj).is(":checked")){
    $("body").addClass("dark");
  } else {
    $("body").removeClass("dark"); 
  }
}

理想情况下,我希望按钮能够在暗模式下切换,这应该将我的SVG更改为白色,文本和背景的SVG则从蓝色渐变为紫色渐变。

1 个答案:

答案 0 :(得分:1)

需要重构代码以包含不同的功能。

let currentMode = 'light'

window.addEventListener("load", () => {
  getWeather();
});

function getWeather() {
 if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(position => {

const long = position.coords.longitude;       const lat = position.coords.latitude;

  const proxy = "https://cors-anywhere.herokuapp.com/";
  const api = `${proxy}https://api.darksky.net/forecast/3dfa731ae990c93b6909c90958e9bc36/${lat},${long}`;
  fetch(api)
    .then(response => {
      return response.json();
    })

    .then(data => {
      loadData(data)
    });
});
}
}...
// Dark Mode Toggle Button

function toggleMode(sourceCheckbox) {
  const newMode = currentMode === 'light' ? 'dark' : 'light'
  currentMode = newMode
  getWeather();
  if ($(sourceCheckbox).is(":checked")) {
    $("body").addClass("dark");
  } else {
    $("body").removeClass("dark");

  }
}