2017-02-08 139 views
1

我正在使用Javascript的網頁上工作,我想實現一個按鈕,以便無論何時單擊它,按鈕內的文本都會變爲下一個文本。當點擊按鈕時執行不同的功能

目前我正在做這樣的(也演示來說明我的意思):

CodePen.io

var textCount = 0; 
function changeText() { 
    var myText = document.getElementById("demo"); 
    switch (textCount) { 
    case 0:{ 
     myText.innerHTML = "This is the second text"; 
     textCount++; 
    } 
    break; 
    case 1: { 
     myText.innerHTML = "This is the third text"; 
     textCount++; 
    } 
    break; 
    case 2: { 
     myText.innerHTML = "It keeps going on like this"; 
     textCount++; 
    } 
    break; 
    } 
} 

基本上我用switch語句和計數器通過走一步步。

另一種方式我能想到的做,這是由具有陣列保存所有的文字和我的功能只是通過它(似乎更有效)


  • 但我還是想要知道是否有任何其他出路(雖然很明顯),你可以用純Javascript實現這一點。

在此先感謝。

+0

如果你的代碼工作,這個問題更適合的[代碼評審組交換(HTTP ://codereview.stackexchange.com/)。 – SimpleJ

+0

謝謝,但我想我得到了一個答案,我正在尋找:) –

回答

3

你是正確的,你可以把它清潔&通過使用陣列,例如更高效:

let list = ['Message one', 'Message two', 'Message three', 'Message four']; 

let counter = 0; 

function clickHandler() { 
    element.textContent = list[counter]; 
    counter = (counter + 1) % list.length; // If you want to loop messages, otherwise ++ 
} 
+0

謝謝你回答:) –

+0

@DanielD。別客氣!如果它解決了你的問題,不要忘記接受它。謝謝! – Hatchet

+0

是的,我標記爲接受,只是一個方面的問題。 '%list.length'究竟做了什麼,它將如何循環我的列表? –