2013-03-28 76 views
0

我有这样的代码JS加载图像

var a = new Image(); 
    a.src = objects.a.image; 

    var b = new Image(); 
    b.src = objects.b.image; 

    var x = new Image(); 
    x.src = objects.x.image; 

我有大约10相似图片,有没有更好的办法将其加载到变量?

+2

什么对象? – 2013-03-28 09:00:01

+0

可使用数组风格 – 2013-03-28 09:00:34

+0

VAR对象= { \t \t \t 'A':{ \t \t \t \t '形象': '1.png' \t \t \t}} – dontHaveName 2013-03-28 09:01:24

回答

1

这应该工作

for(var i in objects) 
{ 
    if(objects[i].image) 
    { 
     var oImage = new Image(); 
     oImage.src = objects[i].image; 
     // if you need the Image object you can store it somewhere 
     objects[i].oImgObject = oImage; 
    } 
} 
+0

这看起来像对我来说最好的方式谢谢 – dontHaveName 2013-03-28 09:08:05

0

假设objects只包含图片,试试这个:

var imageList = []; 
for (var i in objects) { 
    var obj = objects[i]; 
    var img = new Image(); 
    img.src = obj.image; 
    imageList.push(img); 
} 
+0

或者,如果它包含超过图像,添加一个'if(obj.image){/ *设置img.src * /}' – Tetaxa 2013-03-28 09:03:34

0

您通常会使用一个数组来存储您的图像。

例如:

var arr = []; 
for (var c='a'.charCodeAt(0); c<='x'.charCodeAt(0); c++) { 
    var img = new Image(); 
    img.src = objects[String.fromCharCode(c)].image; 
    arr.push(img); 
} 

如果你真的需要它们作为变量添加到全球范围内,你可以这样做:

for (var c='a'.charCodeAt(0); c<='x'.charCodeAt(0); c++) { 
    var img = new Image(); 
    var name = String.fromCharCode(c); 
    img.src = objects[name].image; 
    window[name] = img; // better use somthing's else than window... 
} 

需要注意的是根据什么真的是objects,有可能是更直接的解决方案。

0

您可以遍历对象对象的属性。每次迭代创建一个新图像,并为其提供对象上属性的来源。然后将其添加到阵列:

Demo

var arrayOfImg = []; 

for(var propt in objects){ 
    var image = new Image(); 
    image.src = objects[propt].image; 
    arrayOfImg.push(image) 
} 

console.log(arrayOfImg);