2016-08-06 24 views
1

經過研究:
Changing images on hover 是最接近發現的東西,幫助我。它沒有多大幫助。我沒有任何正式的網絡體驗。所以,任何人都會這樣做:a)解決我的問題,但b)真正知道爲什麼這個東西不是在洗牌圖像..如何在徘徊的情況下定期洗牌圖片

所以這就是我在我的HTML:

<div class="navBar" id="myNavBar">  
    <ul id="navOptions"> 

     <li> <img id="logo" 
       src="images/logo.png" 
       onmouseover="hoverFunction(this);" ></li> 

     <li class="active"><a href="default.asp">Home</a></li> 
     <li><a href="news.asp">News</a></li> 
     <li><a href="contact.asp">Contact</a></li> 
     <li><a href="about.asp">About</a></li> 
    </ul> 
</div> 

我的javascript:

function hoverFunction(element) { 
    var images = ["images/logo.png", 
        "images/logo_2.png", 
        "images/logo_3.png", 
        "images/logo_4.png", 
        "images/logo.png"]; 

    for(var i=0; i < images.length; i++){ 
     $(element).attr("src",images[i]); 
    } 
    //element.setAttribute('src', 'images/logo_2.png'); 
} 

有什麼建議?

+0

看起來你是通過所有的人改變從第一個圖像並回首先儘可能快。這將足夠快,這樣你就不會感覺到變化(在同一圖像上開始和結束)。 – Makyen

+0

良好的分析。我想到了這樣的事情。或者我在函數中訪問它的方式有問題。我想我喜歡的功能是「懸停做這個」類型的功能。知道這樣的事情嗎? – bmc

+0

順便說一句:如果答案是好的/有幫助的,請高調回答。如果答案解決了您的問題,請接受它。如果它既有幫助又解決了您的問題,請同時做兩件事。這是如何在StackExchange/stackoverflow上顯示的。你應該在你所有的問題上這樣做。你也應該提高你閱讀的任何你認爲是好的問題或答案,即使它們不是你自己的問題。 – Makyen

回答

1

爲了達到預期的結果,使用計數器

var counter=1; 
function hoverFunction(element) { 
    counter++ 
    var images = ["http://www.w3schools.com/css/img_fjords.jpg", 
       "http://www.w3schools.com/css/img_forest.jpg", 
       "http://www.w3schools.com/css/img_lights.jpg", 
       "http://www.w3schools.com/css/img_fjords.jpg", 
       "http://www.w3schools.com/css/img_forest.jpg"]; 

    $(element).attr("src",images[counter]); 
    if(counter ==5){ 
    counter=1; 
    } 

//element.setAttribute('src', 'images/logo_2.png'); 
} 

http://codepen.io/nagasai/pen/jAZogO

選項2:更新codepen

http://codepen.io/nagasai/pen/WxYwvK

+0

這是一個很好的迴應,但我唯一的問題是,它不像一個圖像洗牌流,它只是在我盤旋時洗牌一次。我希望它不斷拖垮它們,直到它不再徘徊。 – bmc

+0

@bmc更新了codepen- http:// codepen。io/nagasai/pen/jAZogO –

+0

@bmc希望這對你有用:) –

2

你似乎需要的是,當<img>盤旋,定期更改圖像。一般情況下,當您收到mouseenter事件時,將通過啓動間隔計時器,使用setInterval()來完成此操作。每次間隔觸發時都會調用的函數將更改爲下一個圖像。當您收到mouseout事件時,您將使用clearInterval()停止間隔計時器。

通過圖片下面的代碼將循環當鼠標懸停<div>在:

var images = ["http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a", 
 
       "http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/se/se-icon.png?v=93426798a1d4", 
 
       "http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/sf/sf-icon.png?v=6c3100d858bb", 
 
       "http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/su/su-icon.png?v=0ad5b7a83e49" 
 
]; 
 
var curImageIndex = 0; // 0 is displayed by default 
 
var intervalId; //Remember the ID of the interval so we can stop it later. 
 

 
function startImageCycle(el){ 
 
    cycleImage(el); //Cycle the image now so feels responsive. Remove if not wanted. 
 
    intervalId = setInterval(cycleImage,1000,el); //Change image every 1000ms (1s) 
 
} 
 
function stopImageCycle(el){ 
 
    clearInterval(intervalId); 
 
} 
 
function cycleImage(element){ 
 
    curImageIndex++; 
 
    if(curImageIndex >= images.length) { 
 
     curImageIndex = 0; 
 
    } 
 
    $(element).attr("src", images[curImageIndex]); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="navBar" id="myNavBar"> 
 
     <ul id="navOptions"> 
 
     <li> 
 
      <img id="logo" src="http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a" 
 
       onmouseenter="startImageCycle(this);" onmouseout="stopImageCycle(this);" 
 
     </li> 
 
     <li class="active"><a href="default.asp">Home</a> 
 
     </li> 
 
     <li><a href="news.asp">News</a> 
 
     </li> 
 
     <li><a href="contact.asp">Contact</a> 
 
     </li> 
 
     <li><a href="about.asp">About</a> 
 
     </li> 
 
     </ul> 
 
    </div>

+0

除了有用的,真正讚賞的隊友。 – bmc

+0

很乾淨,也很容易理解,很多道具。看到setInterval函數也很酷,它使用一個函數(它增加和設置圖像),一個時間和一個img對象。 – bmc

+0

@bmc,謝謝。我很高興得到了幫助。 – Makyen