Javascript图像转换器的问题

时间:2011-10-20 13:56:27

标签: javascript

我在页面上运行了一个脚本来更改图像。我想重复6次在同一页面上的其他地方使用,但是当我重复它时它不会工作。

  var delay = 2000 //set delay in miliseconds
  var curindex = 0

  var randomimages = new Array()

  randomimages[0] = "hhh200.jpg"
  randomimages[1] = "ray200.jpg"

  var preload = new Array()

   for (n = 0; n < randomimages.length; n++) {
      preload[n] = new Image()
      preload[n].src = randomimages[n]
  }

  document.write('<img name="defaultimage" src="' + randomimages[Math.floor(Math.random() * (randomimages.length))] + '">')

   function rotateimage() {

      if (curindex == (tempindex = Math.floor(Math.random() * (randomimages.length)))) {
          curindex = curindex == 0 ? 1 : curindex - 1
      } else curindex = tempindex

      document.images.defaultimage.src = randomimages[curindex]
  }

  setInterval("rotateimage()", delay)

谁能明白为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

如果您只是将其复制并粘贴到页面中的其他位置,那么您将覆盖您的变量值,并且您为两个图像赋予相同的名称,因此这些就是2个问题。你应该将它全部放在功能上并在你想要的2个地方调用该功能。

试试这个。

function randomImage(randomImages, imageName) {
    var delay = 2000 //set delay in miliseconds
    var curindex = 0  

    var preload = new Array()

    for (n = 0; n < randomImages.length; n++) {
        preload[n] = new Image()
        preload[n].src = randomImages[n]
    }

    document.write('<img name="' + imageName + '" src="' + randomImages[Math.floor(Math.random() * (randomImages.length))] + '">');

    function rotateimage() {
       var tempindex = Math.floor(Math.random() * (randomImages.length));
       if (curindex == tempindex) {
           curindex = curindex == 0 ? 1 : curindex - 1
       } else curindex = tempindex

       document.images[imageName].src = randomImages[curindex];
    }

    setInterval("rotateimage()", delay);
}



// and then to use it, create your image arrays outside of the function, and call the function.

var images1 = new Array();
images1[0] = "hhh200.jpg";
images1[1] = "ray200.jpg";

var images2 = new Array();
images2[0] = "hhh200.jpg";
images2[1] = "ray200.jpg";


randomImage(images1, 'imageOneName');



randomImage(images2, 'imageTwoName');

我没有测试过这段代码,但这是你应该遵循的一般想法。