2010-12-20 64 views
0

前段時間我張貼了關於一個jQuery滑塊問題here幫我換了一個滑塊到一個功能我可以打電話給

這現在工作一種享受,但我現在需要把它包起來的函數的每一天的一週,所以我可以傳入值,因爲一些值是硬編碼的。我試過這樣做,Firebugs告訴我這個滑塊是未定義的。

我想要做的就是每週爲每一天調用函數七次,並傳入滑塊的id,保存時間的div的id,保存生成表的div的id,表格本身的ID和按鈕的ID。

當前的代碼是這樣的:

var startTime; 
var endTime; 

$("#slider-range").slider({ 
    range: true, min: 0, max: 1439, values: [540, 1020], step:5, slide: slideTime, /*change: */}); 
function slideTime(event, ui){ 
    var minutes0 = parseInt($("#slider-range").slider("values", 0) % 60); 
    var hours0 = parseInt($("#slider-range").slider("values", 0)/60 % 24); 
    var minutes1 = parseInt($("#slider-range").slider("values", 1) % 60); 
    var hours1 = parseInt($("#slider-range").slider("values", 1)/60 % 24); 
    startTime = getTime(hours0, minutes0); 
    endTime = getTime(hours1, minutes1); 
    $("#time").html('<p>Opening time: ' + startTime + '</p><p>Closing time: ' + endTime + '</p>'); 
function getTime(hours, minutes) { 
    minutes = minutes + ""; 
    if (hours == 12) { 
    hours = 12; 
} 
if (hours > 12) { 
    hours = hours; 
} 
if (minutes.length == 1) { 
    minutes = "0" + minutes; 
} 
return hours + ":" + minutes ; 

function getTimeloop(minutesloop) { 
    minutesloop = minutesloop + ""; 
    if (minutesloop.length == 1) { 
     minutesloop = "0" + minutesloop; 
    } 
returnminuetsloop; 
}         } 
             slideTime(); 
             $('#btnUpdatetable').click(function(){ 
var startLoop = parseInt($("#slider-range").slider("values", 0)); 
var endLoop = parseInt($("#slider-range").slider("values", 1)); 
$('#bookingTimesTable').remove(); 
$('<table id="bookingTimesTable">').appendTo('#generatedResultTable'); 
for(i = startLoop; i < endLoop; i+=5) 
{ 
$('<tr><td style="width:145px; padding-left: 10px;">' + parseInt(i/ 60 % 24) + ':' + getTimeloop(parseInt(i % 60)) + '</td><td style="padding-left: 10px;" ><input class="chx" name="' + parseInt(i/ 60 % 24) + ':' + getTimeloop(parseInt(i % 60)) + '" type="checkbox" value="' + parseInt(i/ 60 % 24) + ':' + getTimeloop(parseInt(i % 60)) + '" /></td></tr>').appendTo('#bookingTimesTable'); 
} 
var i=0; 
var period = $('#cboBooking').val();   

$('.chx').each(function(){ 
    $(this).attr('checked',(i % period ==0)); 
    i++; 
}); 
$('#bookingTimesTable tr:odd').css('background','#dedede'); 
}); 

如果你能幫助我在這,將是偉大的!它被實施了一週七天的標籤式界面上,我真的想要得到它快速啓動和運行

回答

1

只是一個快速的音符援助......裹在一個構造函數整個事情,它將在所有包含的變量和函數上形成一個閉包。然後,通過在你想重新定義作爲函數的參數是什麼:

function BookingSlider (sliderId, timesDivId, tableDivId, tableId, buttonId) { 
    // your code 
} 

使用此構造函數來實例BookingSlider的新實例,通過適當的值:

var bsMonday = new BookingSlider('slider-range', 'time', 'generatedResultTable', 'bookingTimesTable', 'btnUpdatetable'); 

確保你替換所有的字符串常量在你的函數適當的參數:

'#btnUpdatetable' 

成爲

'#' + buttonId 
+0

太棒了!謝謝你,它工作的一種享受。 – 2010-12-21 16:40:09

相關問題