日期:2014-05-16  浏览次数:20512 次

这样的甘特图怎么用Javascript画?
jQuery可以画甘特图,但我要画的甘特图有点特殊。
下面的例子里,有4个task。

1)左边的2个,上短下长,短的部分表示已经完成的部分。
这个还不是很难。
2)要求各个task尽可能画在一行里,例如:各个task的开始和结束时间没有重叠的话就可以画在一行里。
有重叠的,也尽量画在2行里。 
这个jQuery好像更不行。



达人们。。。求救啊。。

------解决方案--------------------
给你个例子 自己改改就行了

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>test</title>
<style type="text/css">
.tableMain{ border-left:solid 1px #cdcdcd;border-top:solid 1px #cdcdcd; font-size:10.5pt;}
.tableMain td{ padding:1px 5px; border-bottom:solid 1px #cdcdcd;border-right:solid 1px #cdcdcd}
.td1{ background:url(/2/1/images/temp/Column_bg.jpg) #00ff00; border:0 !important;}
</style>
<script type="text/javascript">
function Drawing() {
var arrRow=new Array("调研","数据库","底层","代码编写","阶段测试","交付测试","问题反馈","修改","测试","上线");
var arrColumn=new Array(5,8,2,4,2,3,3,2,2,1);
var ColumnSum=ArraySum(arrColumn);
var str = "<table class=\"tableMain\" cellpadding=\"0\" cellspacing=\"0\">";
var startNumber = 0;
str += "<tr>";
for (k = 0; k < ColumnSum; k++) {
str += "<td>" + (k == 0 ? "项目\\时间" : k) + "</td>";
}
str += "</tr>";
for (i = 0; i < arrRow.length; i++) {
str += "<tr>";
str += "<td>"+arrRow[i]+"</td>";
for (k = 1; k < ColumnSum; k++) {
if (k > startNumber && k <= arrColumn[i]+startNumber)
str += "<td class=\"td1\">" + (k == startNumber+1 ? arrColumn[i] : "&nbsp;") + "</td>";
else
str += "<td>&nbsp;</td>";
}
str += "</tr>";
startNumber += arrColumn[i];
}
str += "</table>";
return str;
}

function ArraySum(arr) {
var sum = 0;
for (i = 0; i < arr.length; i++) {
sum+=arr[i];
}
return sum;
}
</script>
</head>
<body><script type="text/javascript">
document.write(Drawing());
</script>
</body>
</html>
------解决方案--------------------
jquery可以做的,就是并排算法要自己稍微想下