1.剛接到不久的工作任務,其中包含一個解析json數組,然后讓解析后的數據顯示在用zrender畫出來的矩形上。效果如下所示(注:沒有實際意義)
2.至於zrender等空閑了一定寫上使用心得,東西很強大。
3.中間有一項是算計相鄰的兩個時間的時間差(所有這些時間都是在一個數組里),如圖所示,算計相鄰兩個矩形上時間的差值。延伸一下可以是算一個數組里相鄰兩個數字的差值。
貼上我的代碼 : for (var m = 0; m < dataObj.length - 1; m++) {
for (var j = m + 1; j < dataObj.length; j++) {
var time = GetDateDiff(dataObj[m].datetime, dataObj[j].datetime, "minute");
addShapeText(timexx, timeyy, time + "分鍾", 'normal 10px verdana');
timexx += 180;
break;
}
}
寫了一早上發現一直出錯,到后來才知道是for循環是先執行外層循環,再執行內存循環,內層循環,一直直到內層for循環不滿足條件才執行外層循環。問題就來了我希望的不是這樣而是內外層for循環交替執行。【靈光一現:在內層for循環最后加break;】果斷解決問題,哈哈。
4.中間有個addShapeText(timexx, timeyy, time + "分鍾", 'normal 10px verdana'); 其實addShapeText這個方法是網上當來的,主要用來計算js中兩個時間差值,具體地址記不清了,貼上代碼記錄下,以備以后使用: /*
* 獲得時間差,時間格式為 年-月-日 小時:分鍾:秒 或者 年/月/日 小時:分鍾:秒
* 其中,年月日為全格式,例如 : 2010-10-12 01:00:00
* 返回精度為:秒,分,小時,天
*/
function GetDateDiff(startTime, endTime, diffType) {
//將xxxx-xx-xx的時間格式,轉換為 xxxx/xx/xx的格式
startTime = startTime.replace(/\-/g, "/");
endTime = endTime.replace(/\-/g, "/");
//將計算間隔類性字符轉換為小寫
diffType = diffType.toLowerCase();
var sTime = new Date(startTime); //開始時間
var eTime = new Date(endTime); //結束時間
//作為除數的數字
var divNum = 1;
switch (diffType) {
case "second":
divNum = 1000;
break;
case "minute":
divNum = 1000 * 60;
break;
case "hour":
divNum = 1000 * 3600;
break;
case "day":
divNum = 1000 * 3600 * 24;
break;
default:
break;
}
return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(divNum));
}
5.解析json數組,示例代碼如下:
$(function () {
//json數組
var title = ["aa",
"bb", "cc",
"dd", "ee",
"ff"]
DrawText(title);
})
function DrawText(data) {
var dataObj = eval(data);
for (var i = 0; i < dataObj.length; i++) {
//循環輸出數組中每個值。
alert(dataObj[i]);
}
}