我有一个数组,其中包含我在线存储的图像列表:
var imgs = ["img1","img2","img3"...];
它们显示如下:
var child, i;
for (i = 0; i < imgs.length; i++) {
child.style.backgroundImage = 'url(https://mywebsite/images/' + imgs[i] + '.jpg)';
$('body').append(child);
}
但是,我希望尝试根据属性显示图片,这些图片会根据用户操作而改变。
此属性如下所示:
child.setAttribute("class", 0);
比如说,用户决定点击图像,然后他点击的图像的属性将递增。所以课程将不再是&#39; 0&#39; 0但是&#39; 1&#39;。因此,图像将放在数组中的其他图像之前。
假设&#39; img2&#39;单击,然后数组看起来像:
imgs = ["img2","img1","img3"...];
我觉得我所经历的方法效率低下,我考虑过使用对象甚至二维数组,但我不知道从哪里开始,缺乏经验。但是,如果这不是一个糟糕的方式&#34;要开始,那么如果有人向我展示如何移动阵列中的元素,我会很感激。
提前致谢。
答案 0 :(得分:0)
您可以将array.sort
与比较功能结合使用。这里的getClass
方法是一种通过它返回图像的当前类属性的方法
imgs.sort(function(img1, img2){
var class1 = getClass(img1);
var class2 = getClass(img2);
return class1 - class2;
})
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
答案 1 :(得分:0)
你可以试试这个:
Gecko.DOM.GeckoLinkElement next = new Gecko.DOM.GeckoLinkElement(geckoWebBrowser1.Document.GetElementsByClassName("resetPrice").ElementAt(1).DomObject);
next.Click();
Fiddle。在这里,我使用$('body').find("img").on("click", function()
{
$(this).data("count", (Number($(this).data("count")) + 1));
reOrderImages();
});
function reOrderImages()
{
var imgs = $('body').find("img");
for (var i = 0; i < imgs.length; i++)
{
var img1 = $(imgs[i]);
var img2 = (imgs.length > (i + 1) ? $(imgs[(i + 1)]) : false);
if (img2 && Number(img1.data("count")) < Number(img2.data("count")))
{
img1.before(img2);
}
}
};
属性而不是data
属性,这不是针对您的情况设计的。它只是用before()
方法交换元素。