我创建了一个图像数组
function initialize(){
//add our 10 images to our array
imgArray[imageNum++] = new imageItem(imageDir + "img1.jpg");
imgArray[imageNum++] = new imageItem(imageDir + "img2.jpg");
imgArray[imageNum++] = new imageItem(imageDir + "img3.jpg");
}
var totalImgs = imgArray.length;
然后我创建了一个与我的html文件中链接的函数:
<button id="startButton" onclick="startImage()">Start</button>
function startImage(){
document.getElementById("pic").setAttribute("src", imgArray[0].src);
}
我的图片代码:<img id="pic" src="" height="300" width="500" border="0" alt="image">
这无法更新我的img对象,我使用firebug查看DOM并且我的数组正在正确填充但是img src没有被设置?
答案 0 :(得分:2)
你的例子不完整。您需要显示imageItem
构造函数的作用(以及为构造函数中的第一个字符使用大写字母的约定),所以:
function ImageItem(src) {
this.image = new Image();
this.src = src.
}
应该在这里完成工作。您似乎也希望imgArray
作为全局,因此将其声明为一个:
var imgArray;
function initialize(){
//add our 10 images to our array
imgArray[imageNum++] = new imageItem(imageDir + "armory.jpg");
分配数组文字更容易:
imgArray = [ new ImageItem(imageDir + "armory.jpg"),
new ImageItem(imageDir + "eddy.jpg"),
...
new ImageItem(imageDir + "...")
];
}
var totalImgs = imgArray.length;
虽然我不明白为什么你不直接分配数组文字而不打扰包装函数。 startImage
函数可能有点整洁:
function startImage(){
document.getElementById("pic").src = imgArray[0].src;
}
直接访问元素属性在浏览器中更可靠,而且比使用setAttribute
(在某些浏览器中有怪癖)更少的类型。
答案 1 :(得分:1)
加载多个图像听起来就像您可能希望在不同项目中使用的功能。我建议创建一个可以处理图像数组并将图像对象附加到DIV的函数:
var images = [
'path/to/image1.png',
'path/to/image2.png',
'path/to/image3.png',
'path/to/image4.png',
'path/to/image5.png'
];
function loadImages(imgArr, targetId){
for(var i=0; i< imgArr.length; i++) {
console.log(imgArr[i]);
var img = new Image();
img.src = imgArr[i];
document.getElementById('output').appendChild(img);
}
}
loadImages(images);
您还可以从yout按钮调用loadImage()函数:
<button onclick="loadImages(images)">Start</button>
答案 2 :(得分:0)
像这样修改你的javascript函数,然后看看。
function startImage(){
document.getElementById("pic").src = imgArray[0].src;
}