我有一个图像数组,这些图像按降序排列。我想将该数组设置为我网站上的图像列表。在用于设置图像的for循环期间,它恰好进入for循环的一半,然后从中间开始反转循环,并一直返回到开始。
function sortBy(sort){
if (sort == "newold"){
var sortedImages = Array.from(document.getElementsByTagName("img"));
sortedImages.splice(-1,1);
sortedImages.sort(function(a,b){
var contentA =parseInt(a.dataset.added,10);
var contentB =parseInt(b.dataset.added,10);
return (contentB - contentA);
});
console.log(sortedImages);
var unsortedImages = Array.from(document.getElementsByTagName("img"));
unsortedImages.splice(-1,1);
console.log(unsortedImages);
for(i in sortedImages){
console.log(sortedImages[i].dataset.added);
unsortedImages[i].src = sortedImages[i].src;
unsortedImages[i].alt = sortedImages[i].alt;
unsortedImages[i].dataset.download = sortedImages[i].dataset.download;
unsortedImages[i].dataset.added = sortedImages[i].dataset.added;
unsortedImages[i].dataset.supports = sortedImages[i].dataset.supports;
unsortedImages[i].dataset.maker = sortedImages[i].dataset.maker;
}
}
}
它应该按降序列出dataset.added值,每个元素都有一个设置的整数,从1开始并从那里开始。list of the dataset.added values as it runs through the for loop该屏幕快照顶部的数组都以正确的顺序排列,第一个是sortedImages,第二个是unsortedImages。
问题在这里:
unsortedImages[i].dataset.added = sortedImages[i].dataset.added;
两个数组中的DOM节点相同,并且unsortedImages[i]
引用sortedImages
中的某个节点。