0

我正在尝试显示从控制器发送到视图的图像。在视图页面上,我想显示图像,并且我有 2 个按钮“前进”和“后退”来遍历这些图像。

//controller:
var images= [path1 , path2, path3];
var currentImageIndex=0;
function goToNextImage() { // is called when forth button is clicked
   if (currentImageIndex +1 < images.length) {
      currentImageIndex ++;
       imageDisplay= ImageDisplay(images, currentImageIndex);
   }
}

$(document).ready(function() {
   imageDisplay= ImageDisplay(images, currentImageIndex);
   $('body').append(imageDisplay);
});

// 我的索引文件的主体是空的。我将所有内容都从 javascript 文件附加到正文

// view (javascript file)

function ImageDisplay(images,currentImageIndex) {
var me = $('<div/>');
   drawImage();


 function drawImage( ) {
      var windowWidth= $(window).width();
      var windowHeight=$(window).height();
      var imageSrc= images[currentImageIndex];
      var image = $ ('<img id="img" src="'+imageSrc+'" alt="NO IMAGE" width="'+windowWidth/2+ '" height= "'+windowHeight/2+'" class="image_display"/>');
      console.log("image source= "+imageSrc);

    me.append(image);
}
return me ;
}

问题是显示的图像始终相同(尽管图像源发生了变化)。我在这里阅读了使用我应该用来设置新源的 javascript 更改图像源。document.getElementById("img").src但由于我的 html 文件中没有任何 img id,因此出现此错误“无法设置属性 src of null”。

谢谢你的帮助!

4

1 回答 1

1

var me = $('<div/>');基本上(阅读:实际上)创建一个新节点。您正在向该节点添加内容,但实际上从未将其添加到 DOM。你的意思可能是这样的:

var newImage = ImageDisplay(images, currentImageIndex);
imageDisplay.replaceWith(newImage)
imageDisplay = newImage;

也就是说,我不知道您是否曾经imageDisplay在 DOM 中分配过值。如果没有,那么您可能需要初始化该值。

于 2013-08-19T17:18:10.423 回答