2015-05-20 2 views
1

В настоящее время я пытаюсь закодировать массив в функции. Эта функция должна использоваться для кнопки, которая дает при каждом нажатии другое значение из массива при нажатии.Каждый раз, когда пользователь нажимает на кнопку, мне нужно следующее значение из массива в Javascript.

var list=['DEFAULT','ADVANCED','DEVELOPMENT']; 

Каждый раз, когда пользователь нажимает на кнопку, мне нужно следующее значение из массива. (когда его «РАЗВИТИЕ», далее должно быть «ПО УМОЛЧАНИЮ»). Можно ли это сделать без использования глобальной переменной?

+0

Что случилось с использованием глобальной переменной? – Maxqueue

+1

@Maxqueue: Может быть, ничего, но я думаю, он не совсем понимает, что вы имеете в виду. Мне лично не нравится использование глобалов в Javascript; слишком много заразок. –

+0

Эта ссылка должна быть полезной https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator –

ответ

3

Если вы хорошо с изменением массива chiliNUT's answer будет работать (shift/push реализовать кольцевой буфер).

В качестве альтернативы вы можете сохранить текущий выбор и цикл, который с %. Чтобы избежать переноса глобальных переменных в функцию для сбора значения.

образца (при условии использования JQuery, вы можете найти эквивалентный addEventListener код самостоятельно):

$(function() 
    { 
     // outside of click handler to be able to preserve values between clicks 
     var current = 0; 
     $("button.next").click(function() 
     { 
      alert(list[current]); 
      current = (current + 1) % list.length; 
     }); 
    } 

    <button class="next">Next</button> 
1

что-то вроде этого. shift снимает первый элемент. push отправляет его обратно.

var list=['DEFAULT','ADVANCED','DEVELOPMENT']; 
function nextWord() { 
var word=list.shift(); 
list.push(word); 
console.log(word); 
return word; 
} 

nextWord();//DEFAULT 
nextWord();//ADVANCED 
nextWord();//DEVELOPMENT 
nextWord();//DEFAULT 
nextWord();//ADVANCED 
nextWord();//DEVELOPMENT 
//... 

<button onclick=nextWord()>Next Word</button>

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