JavaScript 在数组中加载图像并在图像源中显示

新手上路,请多包涵

我创建了一组图像

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 文件中创建一个与 a 链接的函数:

 <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?

原文由 Warz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 757
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 (在某些浏览器中有怪癖)相比,跨浏览器直接访问元素属性更可靠并且输入更少。

原文由 RobG 发布,翻译遵循 CC BY-SA 3.0 许可协议

加载多个图像听起来像是您可能希望在不同项目中使用的功能。我建议创建一个可以处理图像数组并将图像对象附加到 <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){
    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);

您还可以从按钮调用 loadImage() 函数:

 <button onclick="loadImages(images)">Start</button>

原文由 appcropolis 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题