对div循环。当tp=1时,按dt查找,将月份和年份相同的日期的amt相加;当tp=2时,将月份和年份相同的p相加。麻烦高手帮忙了。谢谢了先!
<div dt="2000-03-10" tp="1" amt="0.0555" p="1" />
<div dt="2000-06-16" tp="1" amt="0.0776" p="3" />
<div dt="2000-09-15" tp="1" amt="0.0712" p="2" />
<div dt="2000-12-15" tp="1" amt="0.0862" p="3" />
<div dt="2000-12-15" tp="2" amt="1.005" p="5" />
<div dt="2001-03-16" tp="1" amt="0.0579" p="4" />
<div dt="2001-06-15" tp="1" amt="0.0651" p="4" />
<div dt="2001-09-20" tp="1" amt="0.0629" p="3" />
<div dt="2001-09-20" tp="2" amt="0.352" p="5" />
<div dt="2001-12-21" tp="2" amt="0.019" p="3" />
<div dt="2001-12-21" tp="1" amt="0.0553" p="2" />
<div dt="2002-03-15" tp="1" amt="0.0414" p="1" />
<div dt="2002-06-14" tp="1" amt="0.0517" p="5" />
<div dt="2002-09-13" tp="1" amt="0.0496" p="3" />
<div dt="2002-12-20" tp="1" amt="0.054" p="2" />
<div dt="2003-03-14" tp="1" amt="0.031" p="3" />
<div dt="2003-06-13" tp="1" amt="0.0335" p="3" />
<div dt="2003-09-12" tp="1" amt="0.0316" p="4" />
<div dt="2003-12-19" tp="1" amt="0.0522" p="1" />
<div dt="2004-03-12" tp="1" amt="0.0274" p="1" />
<div dt="2004-06-14" tp="1" amt="0.0411" p="2" />
<div dt="2004-09-10" tp="1" amt="0.0397" p="2" />
<div dt="2004-12-17" tp="1" amt="0.0789" p="2" />
<div dt="2004-12-17" tp="2" amt="0.648" p="3" />
<div dt="2000-03-10" tp="1" amt="0.0555" p="1" />
<div dt="2000-06-16" tp="1" amt="0.0776" p="3" />
<div dt="2000-09-15" tp="1" amt="0.0712" p="2" />
<div dt="2000-12-15" tp="1" amt="0.0862" p="3" />
<div dt="2000-12-15" tp="2" amt="1.005" p="5" />
<div dt="2001-03-16" tp="1" amt="0.0579" p="4" />
<div dt="2001-06-15" tp="1" amt="0.0651" p="4" />
<div dt="2001-09-20" tp="1" amt="0.0629" p="3" />
<div dt="2001-09-20" tp="2" amt="0.352" p="5" />
<div dt="2001-12-21" tp="2" amt="0.019" p="3" />
<div dt="2001-12-21" tp="1" amt="0.0553" p="2" />
<div dt="2002-03-15" tp="1" amt="0.0414" p="1" />
<div dt="2002-06-14" tp="1" amt="0.0517" p="5" />
<div dt="2002-09-13" tp="1" amt="0.0496" p="3" />
<div dt="2002-12-20" tp="1" amt="0.054" p="2" />
<div dt="2003-03-14" tp="1" amt="0.031" p="3" />
<div dt="2003-06-13" tp="1" amt="0.0335" p="3" />
<div dt="2003-09-12" tp="1" amt="0.0316" p="4" />
<div dt="2003-12-19" tp="1" amt="0.0522" p="1" />
<div dt="2004-03-12" tp="1" amt="0.0274" p="1" />
<div dt="2004-06-14" tp="1" amt="0.0411" p="2" />
<div dt="2004-09-10" tp="1" amt="0.0397" p="2" />
<div dt="2004-12-17" tp="1" amt="0.0789" p="2" />
<div dt="2004-12-17" tp="2" amt="0.648" p="3" />
var divs = document.getElementByTagName("div");
for(i=0;i<divs.length;i++)
{
}
不过写到这,感觉没明白你的需求.
function sum()
{
var divs = document.getElementsByTagName("div");
var ary=new Array();
for(i=0;i<divs.length;i++)
{
var dt=divs[i].getAttribute("dt").split("-");
var tp=divs[i].getAttribute("tp");
var amt=eval(divs[i].getAttribute("amt"));
var flg=true;
for(var j=0;j<ary.length;j++)
{
var tmp=ary[j][0].split("-");
if(tmp[0]==dt[0] &tmp[1]==dt[1]& ary[j][1]==tp)
{
ary[j][2]+=amt;
flg=false;
break;
}
}
if(flg)ary[ary.length]=new Array(dt[0]+"-"+dt[1],tp,amt);
}
//输出结果
for(var i=0;i<ary.length;i++)
{
document.write("<br>"+ary[i][0]+"<-->"+ary[i][1]+"<-->"+ary[i][2]);
}}
</script>
//打印结果
2000-03<-->1<-->0.0555
2000-06<-->1<-->0.0776
2000-09<-->1<-->0.0712
2000-12<-->1<-->0.0862
2000-12<-->2<-->1.005
2001-03<-->1<-->0.0579
2001-06<-->1<-->0.0651
2001-09<-->1<-->0.0629
2001-09<-->2<-->0.352
2001-12<-->2<-->0.019
2001-12<-->1<-->0.0553
2002-03<-->1<-->0.0414
2002-06<-->1<-->0.0517
2002-09<-->1<-->0.0496
2002-12<-->1<-->0.054
2003-03<-->1<-->0.031
2003-06<-->1<-->0.0335
2003-09<-->1<-->0.0316
2003-12<-->1<-->0.0522
2004-03<-->1<-->0.0274
2004-06<-->1<-->0.0411
2004-09<-->1<-->0.0397
2004-12<-->1<-->0.0789
2004-12<-->2<-->0.648
<div dt="2002-03-15" tp="1" amt="0.0414" p="" />
<div dt="2002-06-14" tp="1" amt="0.0517" p="" />
<div dt="2002-09-13" tp="1" amt="0.0496" p="" />
<div dt="2002-12-20" tp="1" amt="0.054" p="" />
<div dt="2003-03-14" tp="1" amt="0.031" p="" />
<div dt="2003-06-13" tp="1" amt="0.0335" p="" />
<div dt="2003-09-12" tp="1" amt="0.0316" p="" />
<div dt="2003-12-19" tp="1" amt="0.0522" p="" />
<div dt="2004-03-12" tp="1" amt="0.0274" p="" />
<div dt="2004-06-14" tp="1" amt="0.0411" p="" />
<div dt="2004-09-10" tp="1" amt="0.0397" p="" />
<div dt="2004-12-17" tp="1" amt="0.0789" p="" />
<div dt="2004-12-17" tp="2" amt="0.648" p="" />
<div dt="2005-03-11" tp="1" amt="0.0308" p="" />
<div dt="2005-06-10" tp="1" amt="0.0413" p="" />
<div dt="2005-09-16" tp="1" amt="0.0409" p="" />
<div dt="2005-12-16" tp="1" amt="0.0497" p="" />
<div dt="2005-12-16" tp="2" amt="0.589" p="" />
<div dt="2006-03-10" tp="1" amt="0.0338" p="" />
<div dt="2006-06-16" tp="1" amt="0.0425" p="" />
<div dt="2006-09-15" tp="1" amt="0.0393" p="10.44" />
我做的部分的结果。还不完善。看id。它表示了月份的变化。没有的月份跳过也可以的。
<data id=\"1\">0.0414</data>
<data id=\"4\">0.0517</data>
<data id=\"7\">0.0496</data>
<data id=\"10\">0.054</data>
<data id=\"13\">0.031</data>
<data id=\"16\">0.0335</data>
<data id=\"19\">0.0316</data>
<data id=\"22\">0.0522</data>
<data id=\"25\">0.0274</data>
<data id=\"28\">0.0411</data>
<data id=\"31\">0.0397</data>
<data id=\"34\">0.0789</data>
<data id=\"37\">0.0308</data>
<data id=\"40\">0.0413</data>
<data id=\"43\">0.0409</data>
<data id=\"46\">0.0497</data>
<data id=\"49\">0.0338</data>
<data id=\"52\">0.0425</data>
那对于tp==2是从2000-03还是从2000-12开始打印?
然后就根据document.getElementsByTagName("div")来找值吧
如果满足条件的的为null,则说明没有值,赋予值0
具体前面的兄弟代码都写得差不多了
var syear=(ary[0][0].split("-"))[0];//起始年
var smonth=(ary[0][0].split("-"))[1];//起始月
var eyear=(ary[ary.length-1][0].split("-"))[0];//终止年
var emonth=(ary[ary.length-1][0].split("-"))[1];//终止月
var tmp=smonth;
document.write("-----------<br>起始年月"+syear+"-"+smonth+"<br>终止年月"+eyear+"-"+emonth+"<br>-----------");
for(var i=syear;i < eyear+1;i++)
{ for(var j=tmp;j<=12;j++)
{
var flg1=true;var flg2=true;
if(i>eyear)break;
if(i==eyear & j>emonth)break;
var tmon=((""+j).length==2)?j:"0"+j;
for(var k=0;k < ary.length;k++)
{
if(ary[k][1]==1&&ary[k][0]==(i+"-"+tmon))
{
document.write("<br>"+ary[k][0]+"<-->"+ary[k][1]+"<-->"+ary[k][2]);
//alert("<br>"+ary[k][0]+"<-->"+ary[k][1]+"<-->"+ary[k][2]);
flg1=false;
break;
}
if(ary[k][2]==1&&ary[k][0]==(i+"-"+tmon))
{
document.write("<br>"+ary[k][0]+"<-->"+ary[k][1]+"<-->"+ary[k][2]);
flg2=false;
break;
}}
if(flg1){document.write("<br>"+i+"-"+tmon+"<-->"+1+"<-->"+0);}
if(flg2){document.write("<br>"+i+"-"+tmon+"<-->"+2+"<-->"+0);}
}
tmp=1;
}
-----------
起始年月2000-03
终止年月2004-12
-----------
2000-03<-->1<-->0.0555
2000-03<-->2<-->0
2000-04<-->1<-->0
2000-04<-->2<-->0
2000-05<-->1<-->0
2000-05<-->2<-->0
2000-06<-->1<-->0.0776
2000-06<-->2<-->0
2000-07<-->1<-->0
2000-07<-->2<-->0
2000-08<-->1<-->0
2000-08<-->2<-->0
2000-09<-->1<-->0.0712
2000-09<-->2<-->0
2000-10<-->1<-->0
2000-10<-->2<-->0
2000-11<-->1<-->0
2000-11<-->2<-->0
2000-12<-->1<-->0.0862
2000-12<-->2<-->0
2001-01<-->1<-->0
2001-01<-->2<-->0
2001-02<-->1<-->0
2001-02<-->2<-->0
2001-03<-->1<-->0.0579
2001-03<-->2<-->0
2001-04<-->1<-->0
2001-04<-->2<-->0
2001-05<-->1<-->0
2001-05<-->2<-->0
2001-06<-->1<-->0.0651
2001-06<-->2<-->0
2001-07<-->1<-->0
2001-07<-->2<-->0
2001-08<-->1<-->0
2001-08<-->2<-->0
2001-09<-->1<-->0.0629
2001-09<-->2<-->0
2001-10<-->1<-->0
2001-10<-->2<-->0
2001-11<-->1<-->0
2001-11<-->2<-->0
2001-12<-->1<-->0.0553
2001-12<-->2<-->0
2002-01<-->1<-->0
2002-01<-->2<-->0
2002-02<-->1<-->0
2002-02<-->2<-->0
2002-03<-->1<-->0.0414
2002-03<-->2<-->0
2002-04<-->1<-->0
2002-04<-->2<-->0
2002-05<-->1<-->0
2002-05<-->2<-->0
2002-06<-->1<-->0.0517
2002-06<-->2<-->0
2002-07<-->1<-->0
2002-07<-->2<-->0
2002-08<-->1<-->0
2002-08<-->2<-->0
2002-09<-->1<-->0.0496
2002-09<-->2<-->0
2002-10<-->1<-->0
2002-10<-->2<-->0
2002-11<-->1<-->0
2002-11<-->2<-->0
2002-12<-->1<-->0.054
2002-12<-->2<-->0
2003-01<-->1<-->0
2003-01<-->2<-->0
2003-02<-->1<-->0
2003-02<-->2<-->0
2003-03<-->1<-->0.031
2003-03<-->2<-->0
2003-04<-->1<-->0
2003-04<-->2<-->0
2003-05<-->1<-->0
2003-05<-->2<-->0
2003-06<-->1<-->0.0335
2003-06<-->2<-->0
2003-07<-->1<-->0
2003-07<-->2<-->0
2003-08<-->1<-->0
2003-08<-->2<-->0
2003-09<-->1<-->0.0316
2003-09<-->2<-->0
2003-10<-->1<-->0
2003-10<-->2<-->0
2003-11<-->1<-->0
2003-11<-->2<-->0
2003-12<-->1<-->0.0522
2003-12<-->2<-->0
2004-01<-->1<-->0
2004-01<-->2<-->0
2004-02<-->1<-->0
2004-02<-->2<-->0
2004-03<-->1<-->0.0274
2004-03<-->2<-->0
2004-04<-->1<-->0
2004-04<-->2<-->0
2004-05<-->1<-->0
2004-05<-->2<-->0
2004-06<-->1<-->0.0411
2004-06<-->2<-->0
2004-07<-->1<-->0
2004-07<-->2<-->0
2004-08<-->1<-->0
2004-08<-->2<-->0
2004-09<-->1<-->0.0397
2004-09<-->2<-->0
2004-10<-->1<-->0
2004-10<-->2<-->0
2004-11<-->1<-->0
2004-11<-->2<-->0
2004-12<-->1<-->0.0789
2004-12<-->2<-->0
{
document.write("<br>"+ary[k][0]+"<-->"+ary[k][1]+"<-->"+ary[k][2]);
flg2=false;
break;
}
改成
if(ary[k][1]==2&&ary[k][0]==(i+"-"+tmon))
{
document.write("<br>"+ary[k][0]+"<-->"+ary[k][1]+"<-->"+ary[k][2]);
flg2=false;
break;
}
//打印结果
-----------
起始年月2000-03
终止年月2004-12
-----------
2000-03<-->1<-->0.0555
2000-03<-->2<-->0
2000-04<-->1<-->0
2000-04<-->2<-->0
2000-05<-->1<-->0
2000-05<-->2<-->0
2000-06<-->1<-->0.0776
2000-06<-->2<-->0
2000-07<-->1<-->0
2000-07<-->2<-->0
2000-08<-->1<-->0
2000-08<-->2<-->0
2000-09<-->1<-->0.0712
2000-09<-->2<-->0
2000-10<-->1<-->0
2000-10<-->2<-->0
2000-11<-->1<-->0
2000-11<-->2<-->0
2000-12<-->1<-->0.0862
2000-12<-->2<-->0
2001-01<-->1<-->0
2001-01<-->2<-->0
2001-02<-->1<-->0
2001-02<-->2<-->0
2001-03<-->1<-->0.0579
2001-03<-->2<-->0
2001-04<-->1<-->0
2001-04<-->2<-->0
2001-05<-->1<-->0
2001-05<-->2<-->0
2001-06<-->1<-->0.0651
2001-06<-->2<-->0
2001-07<-->1<-->0
2001-07<-->2<-->0
2001-08<-->1<-->0
2001-08<-->2<-->0
2001-09<-->1<-->0.0629
2001-09<-->2<-->0
2001-10<-->1<-->0
2001-10<-->2<-->0
2001-11<-->1<-->0
2001-11<-->2<-->0
2001-12<-->2<-->0.019
2001-12<-->1<-->0
2002-01<-->1<-->0
2002-01<-->2<-->0
2002-02<-->1<-->0
2002-02<-->2<-->0
2002-03<-->1<-->0.0414
2002-03<-->2<-->0
2002-04<-->1<-->0
2002-04<-->2<-->0
2002-05<-->1<-->0
2002-05<-->2<-->0
2002-06<-->1<-->0.0517
2002-06<-->2<-->0
2002-07<-->1<-->0
2002-07<-->2<-->0
2002-08<-->1<-->0
2002-08<-->2<-->0
2002-09<-->1<-->0.0496
2002-09<-->2<-->0
2002-10<-->1<-->0
2002-10<-->2<-->0
2002-11<-->1<-->0
2002-11<-->2<-->0
2002-12<-->1<-->0.054
2002-12<-->2<-->0
2003-01<-->1<-->0
2003-01<-->2<-->0
2003-02<-->1<-->0
2003-02<-->2<-->0
2003-03<-->1<-->0.031
2003-03<-->2<-->0
2003-04<-->1<-->0
2003-04<-->2<-->0
2003-05<-->1<-->0
2003-05<-->2<-->0
2003-06<-->1<-->0.0335
2003-06<-->2<-->0
2003-07<-->1<-->0
2003-07<-->2<-->0
2003-08<-->1<-->0
2003-08<-->2<-->0
2003-09<-->1<-->0.0316
2003-09<-->2<-->0
2003-10<-->1<-->0
2003-10<-->2<-->0
2003-11<-->1<-->0
2003-11<-->2<-->0
2003-12<-->1<-->0.0522
2003-12<-->2<-->0
2004-01<-->1<-->0
2004-01<-->2<-->0
2004-02<-->1<-->0
2004-02<-->2<-->0
2004-03<-->1<-->0.0274
2004-03<-->2<-->0
2004-04<-->1<-->0
2004-04<-->2<-->0
2004-05<-->1<-->0
2004-05<-->2<-->0
2004-06<-->1<-->0.0411
2004-06<-->2<-->0
2004-07<-->1<-->0
2004-07<-->2<-->0
2004-08<-->1<-->0
2004-08<-->2<-->0
2004-09<-->1<-->0.0397
2004-09<-->2<-->0
2004-10<-->1<-->0
2004-10<-->2<-->0
2004-11<-->1<-->0
2004-11<-->2<-->0
2004-12<-->1<-->0.0789
2004-12<-->2<-->0
{
var divs = document.getElementsByTagName("div");
var ary=new Array();
for(i=0;i<divs.length;i++)
{
var dt=divs[i].getAttribute("dt");
dt=dt.substr(0,dt.length-3);
var tp=divs[i].getAttribute("tp");
var amt=eval(divs[i].getAttribute("amt"));
var flg=true;
for(var j=0;j<ary.length;j++)
{
if(ary[j][0]==dt& ary[j][1]==tp)
{
ary[j][2]+=amt;
flg=false;
break;
}
}
if(flg)ary[ary.length]=new Array(dt,tp,amt);
}
//输出结果
var syear=(ary[0][0].split("-"))[0];//起始年
var smonth=(ary[0][0].split("-"))[1];//起始月
var eyear=(ary[ary.length-1][0].split("-"))[0];//终止年
var emonth=(ary[ary.length-1][0].split("-"))[1];//终止月
var tmp=smonth;
document.write("-----------<br>起始年月"+syear+"-"+smonth+"<br>终止年月"+eyear+"-"+emonth+"<br>-----------");
for(var i=syear;i < eyear+1;i++)
{ for(var j=tmp;j<=12;j++)
{
var flg1=true;
var flg2=true;
if(i>eyear)break;
if(i==eyear & j>emonth)break;
var tmon=((""+j).length==2)?j:"0"+j;
for(var k=0;k < ary.length;k++)
{
if(ary[k][1]==1&&ary[k][0]==(i+"-"+tmon))
{
document.write("<br>"+ary[k][0]+"<-->"+ary[k][1]+"<-->"+ary[k][2]);
flg1=false;
}
if(ary[k][1]==2&&ary[k][0]==(i+"-"+tmon))
{
document.write("<br>"+ary[k][0]+"<-->"+ary[k][1]+"<-->"+ary[k][2]);
flg2=false;
}
if(!flg1&!flg2)break;}
if(flg1){document.write("<br>"+i+"-"+tmon+"<-->"+1+"<-->"+0);}
if(flg2){document.write("<br>"+i+"-"+tmon+"<-->"+2+"<-->"+0);}
}
tmp=1;
}