2013-05-06 32 views
0

我是新來的JS和課堂作業,需要工作:鍵,循環3狀態改變

當用戶點擊該按鈕高亮顯示應用CSS類所有其他li元素,所以你得到的顏色交替,並使圖像出現。

我無法使顏色更改切換到正常工作狀態,我也無法將圖像顯示出來。

<script> 

     var colors = new Array() 
     colors[0] = "#cc0099"; 
     colors[1] = "#a4c400"; 
     colors[2] = "#9900cc"; 

     var counter = 0; 

     window.onload = function() 
     { 
      var highlightBtn= document.getElementById("highlight_btn"); 
      highlightBtn.onclick = switchColors; 
     } 

     function switchColors() 
     { 
      var imgSrc = "images/" + [i]; 
      var changeLI = document.getElementsByClassName("change"); 
      changeLI.innerHTML = counter; 
      counter++;    
     } 

    </script> 

    <h1>Happy Mothers Day!</h1> 
    <h2>Things to get Mom:</h2> 

    <ul> 
     <li class="change">New Plants</li> 
     <li>Flowers</li> 
     <li class="change">A Day at the Spa</li> 
     <li>A Picture of Yourself</li> 
     <li class="change">New Shoes!</li> 
     <li>Anything with a Heart on It</li> 
     <li class="change"> Chocolate</li> 
    </ul> 

    <input id="highlight_btn" type="button" value="Highlight"> 
+0

我是從我的筆記複製和那是我的document.getElementsbyClassName簡寫。我已經修好了。 – 2013-05-06 13:49:09

+0

var imgSrc =「images /」+ [i];應該是var imgSrc =「images /」+ images [counter];然後你也需要一個圖像數組。此外,您嘗試將計數器的值分配給LI數組 – mplungjan 2013-05-06 13:57:32

回答

0

使用getElementsByClassName而不是getClass,它甚至沒有在文檔中定義。要更改顏色,請使用Element.style.color屬性。

var changeLi = document.getElementsByClassName("change"); 

for(var i = 0; i < changeLi.length; i ++) { 
    changeLi[i].style.color = colors[i]; 
}); 
+0

我將getClass更改爲getByCLassName,但它似乎仍然沒有工作。 – 2013-05-06 12:27:08

0

你可以這樣做(它不清楚你想要的東西),但是這會告訴你原則。

HTML

<h1>Happy Mothers Day!</h1> 
<h2>Things to get Mom:</h2> 
<img id="mom" src=""> 
<ul> 
    <li class="change">New Plants</li> 
    <li>Flowers</li> 
    <li class="change">A Day at the Spa</li> 
    <li>A Picture of Yourself</li> 
    <li class="change">New Shoes!</li> 
    <li>Anything with a Heart on It</li> 
    <li class="change">Chocolate</li> 
</ul> 
<input id="highlight_btn" type="button" value="Highlight"> 

的Javascript

var colors = []; 
var images = []; 
var counter1 = 0; 
var counter2 = 0; 

colors.push("#cc0099"); 
colors.push("#a4c400"); 
colors.push("#9900cc"); 

images.push("http://imageshack.us/scaled/thumb/104/9071003006mini2lpl0.jpg"); 
images.push("http://imageshack.us/scaled/thumb/121/spirra.jpg"); 
images.push("http://imageshack.us/scaled/thumb/123/s4020001ret9qr.jpg"); 

function switchColors() { 
    var changes = document.getElementsByClassName("change"); 

    Array.prototype.forEach.call(changes, function (change) { 
     change.style.backgroundColor = colors[counter1]; 
    }); 

    counter1 += 1; 
    if (counter1 > colors.length - 1) { 
     counter1 = 0; 
    } 

    document.getElementById("mom").src = images[counter2]; 
    counter2 += 1; 
    if (counter2 > images.length - 1) { 
     counter2 = 0; 
    } 
} 

window.addEventListener("load", function() { 
    document.getElementById("highlight_btn").addEventListener("click", switchColors, false); 
}, false); 

jsfiddle

+0

更清楚的是,當您第一次按下按鈕時,colorA應該應用於其他li,並且imageA應該顯示出來。當您再次單擊它時,將應用colorB,並顯示imageB等。直到您已經通過colorsA-C循環並返回到默認狀態。 – 2013-05-06 13:30:50

+0

以上演示瞭如何循環訪問您原始問題和標題中指定的3個州。 – Xotic750 2013-05-06 13:56:23