2015-01-10 2 views
1

Мне было интересно, есть ли способ настроить ползунок автоматически, например, когда я нажимаю кнопку воспроизведения, ползунок и значение будут увеличиваться автоматически. Вот мой ползунок: JSFiddleТаймер таймера JQuery для запуска события

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

Через мое исследование я знаю, что существует метод, называемый setInterval(), который автоматически повторит определенное событие, но я не уверен, как его реализовать.

И это мой Fiddle после того, как я добавил функцию автоматического воспроизведения, но моя ползунка не выходит.

+0

Привет, еще не видели решение, но ваша вторая скрипка имеет ошибки. Строка № 35: замените на '$ ('# btnPlay'). On ('click', function() {', (здесь вы не вызвали btnPlay правильно, так как для # требуется вызов по id), тогда строка заканчивается '.', что не требуется. Затем вы пытаетесь установить значения' setValue' с ':' между ними, пока это должно быть ',' (запятая). Это сделает ваш слайдер показ. – Cyberpks

+0

@Cyberpks Не могли бы вы чтобы дать мне ответ в jsfiddle? –

+0

Смотрите здесь, http://jsfiddle.net/0twk5L7y/11/. Я исправил вторую скрипку. Я не уверен, но это вам поможет? – Cyberpks

ответ

2

[ОБНОВЛЕНО ОТВЕТ]

Здесь ваше окончательное решение (я надеюсь), Fiddle

В основном вы использовали step метод приращение времени, но step вызывается при перемещении ползунка с помощью мыши , Вы должны использовать метод change для обновления значения времени.

$("#slider-range").slider({  
    min: 0, 
    max: 1380, 
    step: stepOne, 
    animate: "slow", 
    change: function(e,ui) 
    { 
     var hours = Math.floor(ui.value/60); 
     var minutes = ui.value - (hours * 60); 

     if(hours.length == 1) hours = '0' + hours; 
     if(minutes.length == 1) minutes = '0' + minutes; 
     if(minutes==0)minutes = '00'; 

     // Convert 24 hours format into 12 
     if(hours == 0){ 
      hours = 12; 
      ext = "AM"; 
     } 
     if(hours == 12){ 
      ext = "PM"; 
     } 
     if(hours > 12){ 
      hours = hours - 12; 
      ext = 'PM'; 
     } 

     $('#sliderValue').html(hours+':'+minutes + ext); 
    } 
}); 
+0

Я вижу большое спасибо! Он работал сейчас! :) –

+0

Но скажем, я хотел приостановить его после того, как я нажал на игру. Могу ли я его приостановить? –

+0

См. Это http://jsfiddle.net/0twk5L7y/14/, вы можете просто проверить для него значение boolean. – Cyberpks

1

http://jsfiddle.net/0twk5L7y/10/

$('#btnPlay').on('click', function(){ 
    // call a recursive function here... 
}); 

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

+0

Можете ли вы помочь мне взглянуть на второй скрипке? Я добавил коды и вызвал появление полосы слайдера –

+0

setValue (0:00) приведет к ошибке. Я думаю, что javascript не понимает 0:00 (это не строка и не число) –

+0

Итак, у вас есть идеи, как исправить это на основе этого jsfiddle? –