2013-08-20 2 views
1

У меня есть массив изображений с функцией изменения изображения в javascript. Функция вызывается изображением, связанным с ссылкой с (href = "javascript: change_image (1) в html.Как добавить эффект затухания в функцию change_image

Сценарий отлично работает при загрузке в html, но я хотел бы добавить эффект затухания к нему так, что каждое изображение исчезает и новый выцветает Может кто-нибудь поставить меня в правильном направлении

Я действительно ценю это ..

сценарий:.?

var Image = new Array("Img/1.jpg","Img/2.jpg","Img/3.jpg","Img/4.jpg","Img/5.jpg","Img/6.jpg"); 

var Image_Number = 0; 
var Image_Length = Image.length - 1; 

function change_image(num){ 

Image_Number = Image_Number + num; 

if (Image_Number>Image_Length){ 

    Image_Number = 0; 
} 
if (Image_Number<0){ 

    Image_Number = Image_Length; 
} 


document.slideshow.src= Image[Image_Number]; 

return false; 
} 
+0

JQuery разрешена или только требуется JavaScript? – Arpit

+0

Как @Arpit предлагает, [jQuery] (http://api.jquery.com/fadeToggle/) было бы очень простым способом реализовать это. Есть также способы реализовать это с переходами CSS, которые будут работать лучше, но вам, возможно, придется изменить способ обмена изображениями, чтобы сделать эту работу. – raddevon

+0

JQuery разрешен. Есть идеи? –

ответ

0

Как насчет это?

HTML:

<img id="image" src="Img/1.jpg"><br> 
<span id="change_image">Change image!</span> 

JS:

var images = ["Img/1.jpg", "Img/2.jpg", "Img/3.jpg", "Img/4.jpg"]; 

$(document).ready(function(){ 
    var image_number = 0; 
    // Click handler for "change image" link 
    $("#change_image").click(function(){ 
     // Get number of next image (loop) 
     image_number = (image_number + 1) % images.length; 
     // Make sure the image is loaded (if not, preload it) 
     $("<img>").attr("src", images[image_number]).load(function(){ 
      // As soon as the next image is loaded, fade out the current one... 
      $("#image").fadeOut(function(){ 
       // ...and fade in the new image :) 
       $(this).attr("src", images[image_number]).fadeIn(); 
      }); 
     }); 
    }); 
}); 

DEMO (JSFiddle)

+0

Да, это выглядит правильно! Есть две вещи, которые еще нужно решить: (1) загрузка функции должна быть загружена изображением, а не промежутком (2) Я заметил, что логотип руки не отображается при наведении на мышь диапазона (скоро это будет изображение) , Мне бы хотелось это шоу. –

+0

(1) Вы можете прикрепить обработчик кликов к любому элементу HTML, который вы хотите, вам нужно только настроить селектор CSS, который передается в jQuery. Теперь я обновил свой ответ и JSFiddle, так что он работает без 'span'. Кроме того, вы можете заменить обработчик кликов (строка с '$ (" # change_image "). Click ...') с регулярной функцией и использовать атрибут 'onclick' (аналогично исходному коду). (2) Это можно сделать с помощью CSS: 'cursor: pointer' – Aletheios

+0

Загрузите свой первый ответ: функция должна быть загружена другим изображением (а не изображением самого массива). Поэтому ваш ответ, предлагающий диапазон для запуска функции, более полезен для меня. Большое спасибо –

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