Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';是否将一个类添加到加载的导航元素?_Javascript_Html_Css - Fatal编程技术网

Javascript 为什么不是';是否将一个类添加到加载的导航元素?

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

上面是加载类并将其添加到nav.html文件的代码。这会将元素更改为橙色。 但事实并非如此


感谢您的帮助

为什么不让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");
};