2011-10-20 3 views
0

Попытка сделать что-то простое в JS. Предположим, у меня есть два изображения, я хочу, чтобы страница загружала каждое изображение случайно. Я хочу, чтобы два изображения менялись местами, когда его щелкают, он должен измениться на другое изображение. Как я могу это сделать? БлагодаряФункция SImple в JS

ответ

2

Вот обычный яваскрипта код (без рамки, используемые), которые случайным образом загружает одно из изображений в массиве ГИМ в качестве исходного изображения, а затем циклы через различные образы при каждом нажатии кнопки и jsfiddle, где вы можете увидеть его работы: http://jsfiddle.net/jfriend00/R7nUa/:

var imgs = [ 
    "http://photos.smugmug.com/photos/344291068_HdnTo-Th.jpg", 
    "http://photos.smugmug.com/photos/344290962_h6JjS-Th.jpg", 
    "http://photos.smugmug.com/photos/344290515_bWVzK-Th.jpg" 
]; 

// select a random image from the img URL array 
function getRandomImage() { 
    var index = Math.floor(Math.random() * imgs.length); 
    return(imgs[index]); 
} 

// create image tag with random image 
function initImage() { 
    var img = new Image(); 
    img.id = "dynImage"; 
    img.src = getRandomImage(); 
    var o = document.getElementById("imageHolder"); 
    o.appendChild(img); 
} 

// given the current URL, get the next URL in the array, 
// wrapping back to beginning if needed 
function nextImage(current) { 
    for (var i = 0; i < imgs.length; i++) { 
     if (imgs[i] == current) { 
      i++; 
      if (i >= imgs.length) { 
       i = 0; 
      } 
      return(i); 
     } 
    } 
    return(0); 
} 

// put a different image into the image tag 
function swapImage() { 
    var o = document.getElementById("dynImage"); 
    var next = nextImage(o.src); 
    o.src = imgs[next]; 
} 

// initialize the button event handler 
function initButton() { 
    var o = document.getElementById("swap"); 
    if (o.addEventListener) { 
     o.addEventListener("click", swapImage); 
    } else { 
     o.attachEvent("onclick", swapImage); 
    } 
} 

initImage(); 
initButton(); 

вы можете поместить столько URL-адресов в массив ГИМ, как вы хотите. Вы можете видеть, как это работает здесь: http://jsfiddle.net/jfriend00/R7nUa/, где я также добавил предварительную загрузку, чтобы обмен мгновенно при нажатии кнопки.

+0

Ницца! Хотя у меня такое чувство, что он находится на уровне понимания OP. ': s' –

+0

Эта особенность была одной из первых вещей, которые я когда-либо делал в Javascript, еще в 2002-2003 годах. Ах, хорошие дни. –

+0

@JaredFarrish - я считаю, что лучший способ узнать - это посмотреть на код, связанный с вашей проблемой, который немного продвинулся вперед, чем вы знаете, как писать. – jfriend00

2

Вам нужна эта линия где-то в сценарии

var IMG1 = document.getElementById("IMG1"); 
+0

Там также синтаксические ошибки в разметке ... –

+0

http://jsfiddle.net/2YVPd/ –

+0

@ Rich2233 - Конечно, см: http://jsfiddle.net/2YVPd/1/ –

Смежные вопросы