2013-05-09 42 views
0

我有一個每行包含一個時間的表。表格應該顯示一天中最近的時間。例如,如果當前時間是12:03,則表格上的第一行應該是12:00。基本上表格自動滾動取決於一天的時間。jQuery位置適用於本地主機Cassini,jsFiddle,但在IIS或IIS快速傳輸時始終返回0

我有一個在Visual Studio開發環境(Cassini)中運行時工作正常的代碼。該代碼也適用於jsFiddle here,但是當我將代碼安裝到服務器中或使用IIS Express運行時,位置總是返回0.我不明白爲什麼jQuery的位置不起作用,或者在IIS或IIS快車時返回0用來。

下面是jQuery代碼:

$(document).ready(function() { 

var tableID = $('.dcBooking')[0].id; //get the id of table. 
var layerID = $('#' + tableID).parent().closest('div').attr('id'); //get the id of the div created by .Net 

var currentdate = new Date(); 
var hour = currentdate.getHours(); 

var min = currentdate.getMinutes(); 
var mod = min % 10; 
min = (min - mod); //Rounded to the closest previous 10 minutes 

var id = getID(hour, min); 
var timeTag = $('#' + id); 

$('#' + layerID).animate({ scrollTop: timeTag.position().top }, 'slow'); 
}); 

HTML的例子:

<div id="id1" style="overflow-x:visible;overflow-y:scroll;height:350px;position:relative;"> 
<table class="dcBooking">   
<tr id="h08_00_0"><td>08:00</td><td>Joe</td></tr> 
<tr id="h12_10_0"><td>12:10</td><td>John</td></tr> 
       : 
       : 
<tr id="h17_00_0"><td>07_00</td><td>Anna</td></tr> 
</table> 
</div>     

我已經江郎才盡了爲什麼在卡西尼或的jsfiddle運行時代碼返回一個位置,但是它不當安裝在服務器上或運行在IIS Express中時。我考慮過安全問題,但它運行在我的電腦上與卡西尼,但沒有與IIS快遞,所以我認爲必須是一些IIS設置,但我不知道在哪裏看IIS。任何人都可以指出什麼或在哪裏尋找或有一個想法可能是什麼原因的問題?

回答

0

我仍然不知道是什麼導致了這個問題,但我能夠通過給javascript添加延遲來使它工作。我認爲也許等待加載而不是文檔準備就是解決方案,但它仍然無法與$(window).load()一起使用。我添加了300毫秒的延遲,並且位置返回的值不是零。如果有人有類似的問題,這是我做了什麼工作。

$(document).ready(function() { 
    setTimeout("setScrolling()", 300); 

}); 

function setScrolling() { 

    var currentdate = new Date(); 
    var hour = currentdate.getHours(); 

    var min = currentdate.getMinutes(); 
    var mod = min % 10; 
    min = (min - mod); //Rounded to the closest previous 10 minutes 

    var id = 'h' + hour + "_" + min; 
    var timeTag = $('#' + id); 


    $('#id1').animate({ scrollTop: timeTag.position().top }, 'slow'); 

} 
相關問題