You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
5.3 KiB
JavaScript

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

function isInArray(arr, value) {
for (var k = 0; k < arr.length; k++) {
if (value == arr[i]) {
return true;
}
}
return false;
}
// 数组升序排序
function ascSort(a, b) {
return a - b;
}
const this_url = document.currentScript.src;
$(document).ready(function () {
var parsedUrl = new URL(this_url);
var cid = (parsedUrl.searchParams.get("cid"));
cid = cid ? cid : document.getElementById('cid').value;
$.get("https://api.openweathermap.org/data/2.5/weather?id=" + cid + "&appid=d79a45c23a77a304b8fd2cca3590b89d&units=metric", function (data, status) {
var cityName = document.getElementById('location');
cityName.innerHTML = data.name;
var times = new Date(data.dt * 1000);
var dates = (times.getDate() < 10 ? '0' + times.getDate() : times.getDate());
var weeks = times.getDay();
var cityTime = document.getElementById('time');
cityTime.innerHTML = times.toDateString().split(" ")[0];
var cityWeeks = document.getElementById('weeks');
var sys_time = new Date();
var sys_weeks = sys_time.getDay();
var week = "";
if (true) { };
if (weeks == sys_weeks) week = "Today";
cityWeeks.innerHTML = times.toDateString().split(" ")[1] + '.' + dates;
//天气类型
var cityWeather = document.getElementById('weatherCondition');
cityWeather.innerHTML = data.weather[0].main;
cityWeather.style.color = '#3b7fb0';
var max_temp = document.getElementById('tempSign');
var currentImg = "https://www.chinahighlights.com/pic/weather/big/" + data.weather[0].icon + ".png";
max_temp.innerHTML = "<img src=" + currentImg + " />";
max_temp.style.fontSize = "25px";
var humiditys = document.getElementById('weatherInfo');
var sunrizes = new Date(data.sys.sunrise * 1000);
var sunsets = new Date(data.sys.sunset * 1000);
var sunrize_hours = (sunrizes.getHours() < 10 ? '0' + sunrizes.getHours() : sunrizes.getHours()) + ':';
var sunrize_minutes = (sunrizes.getMinutes() < 10 ? '0' + sunrizes.getMinutes() : sunrizes.getMinutes());
var sunset_hours = (sunsets.getHours() < 10 ? '0' + sunsets.getHours() : sunsets.getHours()) + ':';
var sunset_minutes = (sunsets.getMinutes() < 10 ? '0' + sunsets.getMinutes() : sunsets.getMinutes());
var currentTemp = document.getElementById('todayTemperature');
currentTemp.innerHTML = Math.round(data.main.temp_max) + '°C';
var currentDesc = document.getElementById('descr');
currentDesc.innerHTML = data.weather[0].main;
var currentHumility = document.getElementById('humiditys');
currentHumility.innerHTML = "humidity: " + data.main.humidity + '%';
var currentWind = document.getElementById('winds');
currentWind.innerHTML = "wind: " + data.wind.speed + 'km/h';
});
//未来五天天气预报
$.get("https://api.openweathermap.org/data/2.5/forecast?id=" + cid + "&appid=d79a45c23a77a304b8fd2cca3590b89d&units=metric", function (data, status) {
var
rangeTmpture = [], // 获取一天的温度,排序,获得最大温度值和最小温度值
nowDate = new Date(data.list[0].dt_txt).getDate(); // 当天日期 用来和 dailyDay 比较,判断是否到了第二天
var futureForest = document.getElementsByClassName('futureWeather');
var futureTime = document.getElementById('futureTime');
var futureDays = document.getElementById('futureDays');
var futureImg = document.getElementById('futureImg');
var futureTemp = document.getElementById('futureTemp');
for (var j = 0, i = 0; j < data.list.length; j++) {
if (i > futureForest.length - 1) {
break;
}
var dailyTime = new Date(data.list[j].dt_txt);
var dailyDay = dailyTime.getDate();
var dailyMonth = (dailyTime.getMonth() + 1) + '-';
var daily_month_day = dailyMonth + dailyDay;
if (nowDate != dailyDay) {
// 到了第二天
rangeTmpture.sort(ascSort); // 将昨天的温度从小到大排列
var futureTimeLi = "<span>" + dailyTime.toDateString().split(" ")[1] + ' ' + dailyDay + "</span>";
futureTime.innerHTML = futureTimeLi;
var futureDaysLi = "<span>" + dailyTime.toDateString().split(" ")[0] + "</span>";
futureDays.innerHTML = futureDaysLi;
var urlFutureImg = "https://www.chinahighlights.com/pic/weather/small/" + data.list[j + 1].weather[0].icon + ".png";
var futureImgNew = "<img src=" + urlFutureImg + " />";
futureImg.innerHTML = futureImgNew;
var futureTempLi = "<span>" + parseInt(rangeTmpture[0]) + '°C' + '-' + parseInt(rangeTmpture[rangeTmpture.length - 1]) + '°C' + "</span>";
futureTemp.innerHTML = futureTempLi;
futureForest[i].innerHTML = futureTime.innerHTML + futureDays.innerHTML + futureImg.innerHTML + futureTemp.innerHTML;
i++;
nowDate = dailyDay;
rangeTmpture = []; // 清空温度数组
rangeTmpture.push(data.list[j].main.temp_max);
continue;
}
rangeTmpture.push(data.list[j].main.temp_max);
}
});
});