2011-07-19 2 views
1

グリッドを作成し、次の "showCoordinates"関数を使用して、ドラッグ可能な要素のグリッド上の位置を計算しました。上/左オフセット座標を日/時間に変換する

私はセルが一日に座標変換したい
function showCoordinates(divId) 
{ 
var leftParent= $("#"+divId).parent().offset().left; 
var topParent= $("#"+divId).parent().offset().top; 
var left= $("#"+divId).offset().left; 
var top= $("#"+divId).offset().top; 

var leftTableParent =$("#tableId").parent().offset().left; 
var topTableParent =$("#tableId").parent().offset().top; 
var leftTable =$("#tableId").offset().left; 
var topTable =$("#tableId").offset().top; 

var cellWidth =160; 
var cellHeight =120; 
var offsetDifferenceTop =41; 
var offsetDifferenceLeft = -84; 
var actualLeft =left-offsetDifferenceLeft; 
var actualTop =top-offsetDifferenceTop; 
var cellRow =actualTop /cellHeight; 
var cellColumn =actualLeft/cellWidth; 
var Day = ?? 
var Time = ?? 

$("#displayCoordinates").html("cell row: "+cellRow+" | cell column: "+cellColumn+"  |  Time: "+Time+" | Day: "+Day+" <br />"); 
} 

(7日 - 土曜日に日曜日)と時刻(これ多分もっと複雑イムcellColumn =場合(当日はif..elseステートメントを使用して、より簡単なことだろうと考え。 1その後、日=日曜日、等...)

提案

+0

関数を呼び出すのは、参照にアクセスするよりもずっと遅いです。例えば。 '$("#tableId ")'は常に** showCoordinatesの呼び出しごとに** ** **同じ値を返します。 – Saxoier

答えて

0

についてどのように:?

var days = ['Sat', 'Sun', 'Mon', 'Tues', 'Wed', 'Thu', 'Fri']; 
var selected = days[offset-1]; 
+0

ありがとう、それは日中完璧に働いた。時間の変換はもっと複雑に思えます... – Dhiraj

0

は、それを考え出した時間での時間を計算するには、次の追加:分(マイルを時事通信時)

var totalMinutes = cellRow * 60; 
var hours = Math.floor(totalMinutes/60); 
var minutes = totalMinutes % 60; 

$("#displayCoordinates").html("Time: "+hours+":"+minutes+" | Day: "+selected+"</ br>); 
関連する問題