前几天看了Jmtek 的 http://www.cnblogs.com/jmtek/archive/2006/02/23/336073.html 这篇文章,写得的确不错,控件也非常好。只是只能供我们使用 DotNet 的朋友们使用。最近在网上比较流行 AJAX 技术,于是萌生了在 AJAX 下实现这种效果的想法。最终决定采用一个文本文件作为数据源,Javascript 动态生成 VML 代码。实现后的效果还比较可以,生成的图表效果和 Jmtek 的控件效果差不多,并且能够在文本数据内容发生改变时无刷新的更新图表,更新数据也非常方便。
这段代码的最大特点是:移植性非常好,只需将两个文件放在任意一个目录下即可运行,这样爱好 JAVA 的朋友也可实现这种效果了。
使用说明:将代码分别保存为相应的文件,放在同一个目录下,浏览网页即可看到生成的三维图表。
欢迎大家与我交流,我的QQ号是:512754784
代码文件下载:/Files/Infinity/成绩三维报表.rar
示例图片如下:
------------------------------------------------------------------------------------------------------------
成绩三维报表.htm
------------------------------------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<!--
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ 摘 要: 统计图--饼图 ┃
┃ 作 者: 无涯 ┃
┃ 创建日期:2006年02月28日 ┃
┃ 完成日期:2006年02月28日 ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-->
<HTML xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<HEAD>
<title></title>
<Meta http-equiv="Refresh" Content="3">
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<STYLE> v\:* {}{ Behavior: url(#default#VML) }
o\:* {}{ behavior: url(#default#VML) }
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
var onit=true;
var num=0;
var stat_array = new Array();
function moveup(iteam,top,txt,rec)
{
temp = eval(iteam);
tempat = eval(top);
temptxt = eval(txt);
temprec = eval(rec);
at = parseInt(temp.style.top);
temprec.style.display = "";
if (num > 27)
{
temptxt.style.display = "";
}
if(at>(tempat-28) && onit)
{
num++;
temp.style.top = at-1;
Stop=setTimeout("moveup(temp,tempat,temptxt,temprec)",10);
}
else
{
return;
}
}
function movedown(iteam,top,txt,rec)
{
temp = eval(iteam);
temptxt = eval(txt);
temprec = eval(rec);
clearTimeout(Stop);
temp.style.top = top;
num = 0;
temptxt.style.display = "none";
temprec.style.display = "none";
}
function ontxt(iteam,top,txt,rec)
{
temp = eval(iteam);
temptxt = eval(txt);
temprec = eval(rec);
if (onit)
{
temp.style.top = top-28;
temptxt.style.display = "";
temprec.style.display = "";
}
}
function movereset(over)
{
if (over==1)
{
onit=false;
}
else
{
onit=true;
}
}
function createXMLHttp()
{
var xmlObj;
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
if(xmlObj.overrideMimeType)
xmlObj.overrideMimeType('text/xml');
}
else if(window.ActiveXObject)
{
try
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
return xmlObj;
}
catch(e)
{
try
{
xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
return xmlObj;
}
catch(e)
{
try
{
xmlObj=new ActiveXObject("MSXML2.ServerXMLHTTP");
return xmlObj;
}
catch (e)
{
return false;
}
}
}
}
else
{
return false;
}
}
function readFile(url)
{
if (createXMLHttp())
{
xmlUrl = createXMLHttp();
}
xmlUrl.Open("GET",url);
xmlUrl.Send();
while (xmlUrl.readyState == 4)
{
return bytes2BSTR(xmlUrl.ResponseBody);
}
}
function table(num,table_left,table_top,all_width,all_height,table_title,unit)
{
var allvalues=0;
var color = new Array();
var bg_color = new Array(num);
var pie = new Array(num);
color[0]="#ff8c19";
color[1]="#ff1919";
color[2]="#ffff19";
color[3]="#1919ff";
color[4]="#19ff19";
color[5]="#fc0000";
color[6]="#3cc000";
color[7]="#ff19ff";
color[8]="#993300";
color[9]="#f60000";
for (i
<!--
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ 摘 要: 统计图--饼图 ┃
┃ 作 者: 无涯 ┃
┃ 创建日期:2006年02月28日 ┃
┃ 完成日期:2006年02月28日 ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-->
<HTML xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<HEAD>
<title></title>
<Meta http-equiv="Refresh" Content="3">
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<STYLE> v\:* {}{ Behavior: url(#default#VML) }
o\:* {}{ behavior: url(#default#VML) }
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
var onit=true;
var num=0;
var stat_array = new Array();
function moveup(iteam,top,txt,rec)
{
temp = eval(iteam);
tempat = eval(top);
temptxt = eval(txt);
temprec = eval(rec);
at = parseInt(temp.style.top);
temprec.style.display = "";
if (num > 27)
{
temptxt.style.display = "";
}
if(at>(tempat-28) && onit)
{
num++;
temp.style.top = at-1;
Stop=setTimeout("moveup(temp,tempat,temptxt,temprec)",10);
}
else
{
return;
}
}
function movedown(iteam,top,txt,rec)
{
temp = eval(iteam);
temptxt = eval(txt);
temprec = eval(rec);
clearTimeout(Stop);
temp.style.top = top;
num = 0;
temptxt.style.display = "none";
temprec.style.display = "none";
}
function ontxt(iteam,top,txt,rec)
{
temp = eval(iteam);
temptxt = eval(txt);
temprec = eval(rec);
if (onit)
{
temp.style.top = top-28;
temptxt.style.display = "";
temprec.style.display = "";
}
}
function movereset(over)
{
if (over==1)
{
onit=false;
}
else
{
onit=true;
}
}
function createXMLHttp()
{
var xmlObj;
if(window.XMLHttpRequest)
{
xmlObj = new XMLHttpRequest();
if(xmlObj.overrideMimeType)
xmlObj.overrideMimeType('text/xml');
}
else if(window.ActiveXObject)
{
try
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
return xmlObj;
}
catch(e)
{
try
{
xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
return xmlObj;
}
catch(e)
{
try
{
xmlObj=new ActiveXObject("MSXML2.ServerXMLHTTP");
return xmlObj;
}
catch (e)
{
return false;
}
}
}
}
else
{
return false;
}
}
function readFile(url)
{
if (createXMLHttp())
{
xmlUrl = createXMLHttp();
}
xmlUrl.Open("GET",url);
xmlUrl.Send();
while (xmlUrl.readyState == 4)
{
return bytes2BSTR(xmlUrl.ResponseBody);
}
}
function table(num,table_left,table_top,all_width,all_height,table_title,unit)
{
var allvalues=0;
var color = new Array();
var bg_color = new Array(num);
var pie = new Array(num);
color[0]="#ff8c19";
color[1]="#ff1919";
color[2]="#ffff19";
color[3]="#1919ff";
color[4]="#19ff19";
color[5]="#fc0000";
color[6]="#3cc000";
color[7]="#ff19ff";
color[8]="#993300";
color[9]="#f60000";
for (i