JavaScript不在从JavaScript加载创建HTML后添加类
我可以添加代码,但我认为没有必要。假设通过JavaScript生成的HTML代码是有效的(事实就是如此),为什么写得更远的JavaScript在该HTML中附加类却没有这样做 这是我的代码:JavaScript不在从JavaScript加载创建HTML后添加类,javascript,html,css,Javascript,Html,Css,我可以添加代码,但我认为没有必要。假设通过JavaScript生成的HTML代码是有效的(事实就是如此),为什么写得更远的JavaScript在该HTML中附加类却没有这样做 这是我的代码: let info = document.getElementById('info'); let week = document.getElementById('week'); /*Initializer Function*/ window.addEventListener('load',
let info = document.getElementById('info');
let week = document.getElementById('week');
/*Initializer Function*/
window.addEventListener('load', () => {
let long;
let lat;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(position => {
long = position.coords.longitude;
lat = position.coords.latitude;
const proxy = 'https://cors-anywhere.herokuapp.com/';
const api = `${proxy}https://api.darksky.net/forecast/d571a1e2483b31605b94edaae84c647e/${lat},${long}`;
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
let obj = JSON.parse(this.responseText);
console.log(obj);
document.getElementById('temperature-degree').innerHTML = obj.currently.apparentTemperature;
document.getElementById('location').innerHTML = obj.timezone;
document.getElementById('temperature-description').innerHTML = obj.currently.summary;
setIcons(obj.currently.icon, document.getElementById('currentDayIcon'));
for (let i = 0; i < obj.hourly.data.length; i++) {
info.innerHTML += `<div id='hour${i + 1}' class='hourly'>` + `<canvas id='hourIcon${i + 1}'></canvas>` + `<h3 id='hourTemp${i + 1}'></h3>` + `<p id='hourSummary${i + 1}'></p>` + '</div>';
setIcons(obj.hourly.data[i].icon, document.getElementById(`hourIcon${i + 1}`));
document.getElementById(`hourTemp${i + 1}`).innerHTML = obj.hourly.data[i].temperature;
document.getElementById(`hourSummary${i + 1}`).innerHTML = obj.hourly.data[i].summary;
}
for (let i = 0; i < 5; i++) {
week.innerHTML += `<div id='day${i + 1}' class='daily'>` + `<canvas id='dayIcon${i + 1}'></canvas>` + `<h2 id='dayTemp${i + 1}'></h2>` + `<p id='daySummary${i + 1}'></p>` + '</div>';
setIcons(obj.daily.data[i].icon, document.getElementById(`dayIcon${i + 1}`));
document.getElementById(`dayTemp${i + 1}`).innerHTML = obj.daily.data[i].temperatureMax;
document.getElementById(`daySummary${i + 1}`).innerHTML = obj.daily.data[i].summary;
}
}
};
xhr.open("GET", api, true);
xhr.send();
});
}
function setIcons(icon, iconId) {
const skycons = new Skycons({color: 'white'});
const currentIcon = icon.replace(/-/g, '_').toUpperCase();
skycons.play();
return skycons.set(iconId, Skycons[currentIcon]);
}
;
});
for (let i = 1; i < 6; i++) {
$(`#day${i}`).bind('mouseenter mouseleave', function () {
$(this).toggleClass('easeIn');
$(this).toggleClass('pointer');
});
};
let info=document.getElementById('info');
let week=document.getElementById('week');
/*初始化函数*/
window.addEventListener('load',()=>{
让我们继续;
让lat;
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(位置=>{
long=position.coords.longitude;
纬度=位置坐标纬度;
常量代理服务器https://cors-anywhere.herokuapp.com/';
常量api=`${proxy}https://api.darksky.net/forecast/d571a1e2483b31605b94edaae84c647e/${lat},${long}`;
设xhr=newXMLHttpRequest();
xhr.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
让obj=JSON.parse(this.responseText);
控制台日志(obj);
document.getElementById('temperature-degree')。innerHTML=obj.current.apparentTemperature;
document.getElementById('location').innerHTML=obj.timezone;
document.getElementById('temperature-description').innerHTML=obj.current.summary;
setIcons(obj.current.icon、document.getElementById('currentDayIcon');
for(设i=0;i`+';
setIcons(obj.hourly.data[i].icon,document.getElementById(`hourIcon${i+1}`));
document.getElementById(`hourTemp${i+1}`)。innerHTML=obj.hourly.data[i]。温度;
document.getElementById(`hourSummary${i+1}`)。innerHTML=obj.hourly.data[i]。摘要;
}
for(设i=0;i<5;i++){
week.innerHTML++=`++`++``+';
setIcons(obj.daily.data[i].icon,document.getElementById(`dayIcon${i+1}`));
document.getElementById(`dayTemp${i+1}`)。innerHTML=obj.daily.data[i]。temperatureMax;
document.getElementById(`DaySummmary${i+1}`)。innerHTML=obj.daily.data[i]。摘要;
}
}
};
xhr.open(“GET”,api,true);
xhr.send();
});
}
功能设置图标(图标,图标标识){
const skycons=新的skycons({color:'white'});
const currentIcon=icon.replace(/-/g,'.''.').toUpperCase();
天敌。play();
返回skycons.set(iconId,skycons[currentIcon]);
}
;
});
for(设i=1;i<6;i++){
$(`day${i}').bind('mouseenter mouseleave',function(){
$(this.toggleClass('easeIn');
$(this.toggleClass('pointer');
});
};
…正如您所看到的,last for循环旨在通过jQuery将侦听器附加到AJAX调用中创建的day div中,但它们没有得到应用,尽管我使AJAX调用同步,迫使脚本的其余部分等待完成。出什么问题了?解决了问题(与范围有关)。将jQuery函数添加到AJAX调用中可以在创建时添加所有内容。始终,始终添加代码-越多越好。添加代码以供参考。