我正在使用基于此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则从蓝色渐变为紫色渐变。
答案 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");
}
}