Javascript jQuery的行为';s在for循环中追加
我对for循环中jQuery的Javascript jQuery的行为';s在for循环中追加,javascript,jquery,Javascript,Jquery,我对for循环中jQuery的.append()方法的行为感到困惑 此代码附加并显示div元素上的文件名。它工作得很好,但我正在阅读代码,我理解文件名在循环时会按顺序/一个接一个地追加。但循环完成后,它们似乎会一起显示。我还试图用警报来拦截它 为什么会这样 $("#fileInput").on("change", function() { $(".input-feedback").html(''); for(var i = 0; i < this.files.length
.append()
方法的行为感到困惑
此代码附加并显示div元素上的文件名。它工作得很好,但我正在阅读代码,我理解文件名在循环时会按顺序/一个接一个地追加。但循环完成后,它们似乎会一起显示。我还试图用警报来拦截它
为什么会这样
$("#fileInput").on("change", function() {
$(".input-feedback").html('');
for(var i = 0; i < this.files.length; i++) {
var file = this.files[i];
console.log(file.name);
alert('test');
$(".input-feedback").append("<p>"+ file.name +"</p>");
}
});
$(“#文件输入”)。关于(“更改”,函数(){
$(“.input feedback”).html(“”);
对于(var i=0;i”);
}
});
文件一次添加一个,但
通常浏览器会等到js代码运行完全完成,js空闲等待事件,以便执行dom渲染(这取决于浏览器、您运行的事件类型以及应用的dom更改)
如果您想确定每个项目是如何添加的,那么最好的方法是使用setTimeout或setInterval异步运行代码。文件一次添加一个,但 通常浏览器会等到js代码运行完全完成,js空闲等待事件,以便执行dom渲染(这取决于浏览器、您运行的事件类型以及应用的dom更改)
如果您想确定每个项目是如何添加的,那么最好的方法是使用setTimeout或setInterval异步运行代码。事实并非如此。它们一次附加一个。由于加载时间非常短,浏览器不会在每次调用append时重新呈现页面,因此您看不到这两者之间的差异。它等待脚本完成,然后重新绘制页面。否则它会非常慢,没有实际的好处。是的jquery也可能只在帧渲染之前追加,以减少重新渲染。@JoelHarkes hum不。jquery不会这样做。当您对DOM进行修改时,它们是同步进行的。否则会是一片混乱。。。延迟的是回流(即所有布局、盒子尺寸等的重新校准),在某些情况下,回流和重新喷漆也可能同步进行。但除了同步回流,这些都是由浏览器处理的,而不是由jQuery处理的。事实并非如此。它们一次附加一个。由于加载时间非常短,浏览器不会在每次调用append时重新呈现页面,因此您看不到这两者之间的差异。它等待脚本完成,然后重新绘制页面。否则它会非常慢,没有实际的好处。是的jquery也可能只在帧渲染之前追加,以减少重新渲染。@JoelHarkes hum不。jquery不会这样做。当您对DOM进行修改时,它们是同步进行的。否则会是一片混乱。。。延迟的是回流(即所有布局、盒子尺寸等的重新校准),在某些情况下,回流和重新喷漆也可能同步进行。但除了同步回流,这些都是由浏览器处理的,而不是由jQuery处理的。