Javascript 为什么不是';是否将一个类添加到加载的导航元素?
上面是加载类并将其添加到nav.html文件的代码。这会将元素更改为橙色。 但事实并非如此Javascript 为什么不是';是否将一个类添加到加载的导航元素?,javascript,html,css,Javascript,Html,Css,上面是加载类并将其添加到nav.html文件的代码。这会将元素更改为橙色。 但事实并非如此 感谢您的帮助 为什么不让jQuery做这项工作,或者不使用jQuery let currentPage=“someId”; $(“#nav”).load(“./nav.html”,函数(){ $(“#footer”).load(“./footer.html”,函数(){ $(“#”+currentPage).addClass(“当前页”); }) }) 为什么不让jQuery做这项工作,或者不使用jQue
感谢您的帮助 为什么不让jQuery做这项工作,或者不使用jQuery
let currentPage=“someId”;
$(“#nav”).load(“./nav.html”,函数(){
$(“#footer”).load(“./footer.html”,函数(){
$(“#”+currentPage).addClass(“当前页”);
})
})
为什么不让jQuery做这项工作,或者不使用jQuery
let currentPage=“someId”;
$(“#nav”).load(“./nav.html”,函数(){
$(“#footer”).load(“./footer.html”,函数(){
$(“#”+currentPage).addClass(“当前页”);
})
})
您没有等待.load()
函数完成
您可以使用$.get
为每个AJAX请求获得承诺。您可以使用$.when()
创建一个等待所有承诺的新承诺(这是jQuery中与promise.all()
等效的承诺)
this.loadTemplate=async(currentPage)=>{
让承诺=美元。什么时候(
$.get(“./nav.html”),函数(响应){
$(“#nav”).html(回复)
}),
$.get(“./footer.html”),函数(响应){
$(“#页脚”).html(响应)
})
);
让结果=等待承诺;
控制台日志(结果);
$(`${currentPage}`).addClass(“当前页”);
};代码>您没有等待.load()
函数完成
您可以使用$.get
为每个AJAX请求获得承诺。您可以使用$.when()
创建一个等待所有承诺的新承诺(这是jQuery中与promise.all()
等效的承诺)
this.loadTemplate=async(currentPage)=>{
让承诺=美元。什么时候(
$.get(“./nav.html”),函数(响应){
$(“#nav”).html(回复)
}),
$.get(“./footer.html”),函数(响应){
$(“#页脚”).html(响应)
})
);
让结果=等待承诺;
控制台日志(结果);
$(`${currentPage}`).addClass(“当前页”);
};
因此,就您的问题而言,所有异步代码基本上都可以省略,只需将当前页面
类添加到具有所提供当前页面
的id
的元素中?请向我们展示您的HTML$(
#${currentPage})
当然没有任何引用,因为您没有具有该id的元素……为什么要混合使用async和promise,为什么要在使任务异步之后等待它?。load()
是异步的。您正在解决承诺中的任何一个。@Barmar是对的,您应该使用jQuery内置回调参数。因此,就您的问题而言,所有异步代码基本上都可以省略,只关注将当前页面
类添加到具有所提供当前页面
的id
的元素中?请向我们展示您的HTML$(
#${currentPage})
当然没有任何引用,因为您没有具有该id的元素……为什么要混合使用async和promise,为什么要在使任务异步之后等待它?。load()
是异步的。你在任何一方完成承诺之前就解决了。@Barmar是对的,您应该使用jQuery内置回调参数。我不知道为什么这个答案被否决-来自@mplungjan的第二个解决方案需要更长的时间,因为一个请求等待另一个,这里是并行解决方案。我不知道为什么这个答案被否决-来自@mplungjan的第二个解决方案需要更长的时间,因为一个请求等待另一个,这里是并行解决方案。
this.loadTemplate = async(currentPage) => {
let promise = new Promise((resolve) => {
$(() => $("#nav").load("./nav.html"));
$(() => $("#footer").load("./footer.html"));
resolve("resolved");
});
let result = await promise;
console.log(result);
$(`#${currentPage}`).addClass("current-page");
};