2010-07-16 3 views
6

...이미지 변화를 30 초마다 - 내가 30 초 후에 이미지 변경하고자하는 루프

코드 I는 다음과 같다을 사용하고 있습니다 :

스크립트 :

var images = new Array() 
images[0] = "image1.jpg"; 
images[1] = "image2.jpg"; 
images[2] = "image3.jpg"; 
setTimeout("changeImage()", 30000); 
var x=0; 

function changeImage() 
{ 
document.getElementById("img").src=images[x] 
x++; 
} 

그리고 신체 : 아직이 하나를 테스트하지 않았습니다 이제

<img id="img" src="startpicture.jpg"> 

하지만, 내 계산이 정확 경우 작동합니다 :)

이제 내가 원하는 것은 "페이딩 전환"을 만드는 것입니다. 그리고 나는 이미지를 루프로 바꾸고 싶습니다 (모든 이미지가 표시된 후에 다시 시작합니다). 너희들이 그 일을 어떻게하는지 안다? 나는 과거에이 jQuery 플러그인을 사용했습니다

+1

'setTimeout' 한 번만 호출; 당신은'setInterval'을 찾고있다. 또한 실행할 코드는 문자열이 아닌 함수 참조 여야합니다. 그래서'var timerid = setInterval (changeImage, 30000); ' – lincolnk

+0

당신은 그것에 대해 절대적으로 옳습니다! –

답변

12

나는 이런 식으로 프레임 워크를 사용하는 것에 동의합니다. 나는이 사실을 빠르게 해킹하고 그냥 이미지를 사라지게하고 스위치를 돌리면서 이전 버전의 IE에서는 작동하지 않을 것이다. 그러나 실제 페이드에 대한 코드는 KARASZI István이 게시 한 JQuery 구현보다 훨씬 길다.

function changeImage() 
{ 
    var img = document.getElementById("img"); 
    img.src = images[x]; 
    x++; 

    if(x >= images.length){ 
     x = 0; 
    } 

    fadeImg(img, 100, true); 
    setTimeout("changeImage()", 30000); 
} 

function fadeImg(el, val, fade){ 
    if(fade === true){ 
     val--; 
    }else{ 
     val ++; 
    } 

    if(val > 0 && val < 100){ 
     el.style.opacity = val/100; 
     setTimeout(function(){fadeImg(el, val, fade);}, 10); 
    } 
} 

var images = [], 
x = 0; 

images[0] = "image1.jpg"; 
images[1] = "image2.jpg"; 
images[2] = "image3.jpg"; 
setTimeout("changeImage()", 30000); 
+0

고마워요, 진짜 좋네요! – Latze

+2

몇 가지 간단한 대안을 사용하여 코드를 개선하고 공간을 절약 할 수 있습니다.''x = (x + 1) % images.length;''',''val = val + (fade? -1 : 1); ''','''var images = [ "image1.jpg", "image2.jpg", "image3.jpg"];'''. – eriksensei

5

:)하지 않습니다

CrossSlide

그것은 좋은 일하고 정확하게 당신이 원하는 않습니다.

+0

좋은 하나, 이거! 효과를 찾고있는 게 아니었지만 지금은 컨 번즈 효과를 사용할 수도 있다고 결정했습니다. 부분적으로 작은 파일 일 뿐이며 jquery를 이미 다른 스크립트에 사용하고 있기 때문입니다. 감사! –

+0

나는 "from"과 "to"attribute..help를 이해하려고 succed하지 않습니까? – user1932595

+0

시작/종료 속성은 애니메이션의 시작 및 끝 위치를 제어합니다 (CSS 배경 위치와 비슷 함). 'from : 'top left'와'to : 'bottom right'는 이미지가 왼쪽 상단에서 시작하고 오른쪽 하단에서 이미지가 시작됨을 의미합니다. 마지막에 추가 할 수있는 확대/축소 비율 (예 : '1.5x')도 있습니다. 팬 중에 이미지가 확대/축소됩니다. https://github.com/tobia/CrossSlide/blob/master/ HOWTO.md – Pat

1

innerfade을 살펴보십시오. Here's an example 나는 네가 한 일을 정확히하기 위해 그것을 사용했다.

당신은 다양한 자바 스크립트 라이브러리를 살펴한다
7

, 그들은 당신을 도울 수있을 것입니다 :

의 모든 그들에게는 튜토리얼이 있고, 페이드 인/페이드 아웃은 ab입니다. asic 사용법.

예 : jQuery에서 :

var $img = $("img"), i = 0, speed = 200; 
window.setInterval(function() { 
    $img.fadeOut(speed, function() { 
    $img.attr("src", images[(++i % images.length)]); 
    $img.fadeIn(speed); 
    }); 
}, 30000); 
0

setInterval 함수는 사용해야합니다. 다음은 멋진 페이딩 옵션이없는 예제입니다. 30 초마다 이미지를 변경하는 간단한 자바 스크립트. 필자는 이미지가 별도의 이미지 폴더에 보관되어 있으므로 모든 이미지의 시작 부분에 _images /가 있다고 가정했습니다. 필요에 따라 자신의 경로를 설정할 수 있습니다.

CODE :

var im = document.getElementById("img"); 

var images = ["_images/image1.jpg","_images/image2.jpg","_images/image3.jpg"]; 
var index=0; 

function changeImage() 
{ 
    im.setAttribute("src", images[index]); 
    index++; 
    if(index >= images.length) 
    { 
    index=0; 
    } 
} 

setInterval(changeImage, 30000); 
0

그냥 That.Its 쉬운을 사용합니다.

<script language="javascript" type="text/javascript"> 
    var images = new Array() 
    images[0] = "img1.jpg"; 
    images[1] = "img2.jpg"; 
    images[2] = "img3.jpg"; 
    setInterval("changeImage()", 30000); 
    var x=0; 

    function changeImage() 
    { 
       document.getElementById("img").src=images[x] 
       x++; 
       if (images.length == x) 
       { 
        x = 0; 
       } 
    } 
</script> 

그리고 몸에서이 코드 작성

는 : -

<img id="img" src="imgstart.jpg"> 
관련 문제