2011-03-04 87 views
0

我有一個相當複雜的視圖,涉及一個垂直線的背景網格,每個時間間隔爲5分鐘。這些線的間距與高度一樣是動態的。下面是如何我目前生成它們,創建一個動態間隔的垂直線的背景

**snip** 
outtxt_norm = '<div class="tl-td" style="width: ' + 
       (TIME_SECONDSPERHALFHOUR*_scale/6) + 
       'px; height: ' + (_table_height) + 'px;"></div>'; 
outarr = []; 
for(idx = 0, difference = 288*totaldays; idx < difference;){ 
    outarr[idx++] = outtxt_norm; 
} 
$('#parent').append(outarr.join('')); 
outarr = []; 

**snip** 

totaldays可以是從1至30在是30,.append()調用以在10秒內完成的情況下,我已經嘗試使用一張桌子和一個divs來創造它沒有時間差異。如果我刪除了樣式,那麼它們可以在1秒內創建,但隨後將樣式應用到它們會導致FF崩潰。

有沒有更快的方式來創建動態寬度垂直線的背景?

+0

您是否試過使用類而不是內聯CSS? – Vincent 2011-03-04 15:23:54

+0

@Vincent如何設置課程的高度和寬度?我不知道有什麼辦法做到這一點。 – Andrew 2011-03-04 15:33:24

+0

你可以做document.body.innerHTML + =「」。 – Vincent 2011-03-05 02:02:49

回答

1

我不確定你在用什麼。如果它是像圖形那樣用於數據可視化的東西,那麼SVG可能是一個不錯的選擇。請檢查raphaeljs

希望它可以幫助

1

服務器端

<?php 
header('Content-type: application/json'); 
$array = array(); 
for ($i = 0; $i <= 4000; $i++) { 
     array_push($array, array(rand(1,2) , (rand(1,30) * 5))); 
    }       
    echo json_encode($array); 
?> 

客戶端

$(function() { 
    $.getJSON('points.php',function(data) { 
     $.each(data,function(i, item) { 
      $('#points-map').append('<div class="inner" style="width:' + data[i][0] + 'px;height:' + data[i][1] + 'px"></div>'); 
     }); 
    }); 
}); 
+0

這和我現在正在做的一樣慢。我需要它擴大到8600〜divs。你的例子仍然需要5秒來做到這一點。即。 [修改](http://jsbin.com/utobe3/4) – Andrew 2011-03-04 16:21:09

+0

uhmm,用ajax調用做服務器端的工作,然後用js顯示它。 ;) – 2011-03-04 16:26:21

+0

這回到我的主要問題,所有的代碼執行速度非常快,它只是最後一次調用,.html(html),需要5秒鐘,這是我打電話將它添加到無論如何,ajax請求之後的DOM。 :( – Andrew 2011-03-04 16:31:20