可问题是,我调用不到zb的值,我的bb是个画点函数,zb储存坐标的值,我想调用zb的值然后画线,可是没有成功。请教达人。

解决方案 »

  1.   

    bb里的 zb[0]肯定为 undefined
    aa()函数要在 bb函数之前运行
      

  2.   

    请看以下实例代码:有没有方法可以使代码在onload后执行,这样就可以不用在之前调用aa()了。
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
    <title>js</title>
    <script language="JavaScript"> 
    var js1=new Array();
    js1.push(4);
    </script> 
    <script language="JavaScript">
    var per;
    per=5;
    </script>
    <script language="JavaScript">
    var zb=new Array();
    function hotTime1() 
    {
    if(js1[0]<per)
    {
    zb.push(337);
    zb.push(194);
    zb.push(370);
    zb.push(194);
    per++;

    }
    function makedot(x,y){ //画点函数
     document.write("<div style='height:1px;position:absolute;left:"+x+"px;top:"+y+"px;width:1px;background:#000;overflow:hidden'></div>")
    }/**
     函数功能:根据两点坐标画直线。
     函数思路:根据两点的坐标计算机斜率,然后根据第一个点坐标及斜率计算直线上所有点然后画线。垂直线特殊处理
    */
    function line(x1,y1,x2,y2){
     var slope=(y2-y1)/(x2-x1); //斜率
     var diff=x2-x1;
     if(x1<x2){
      for(var i=0;i<diff;i++){
       makedot(x1+i,y1+slope*i);
      }
     }else if(x1>x2){
      for(var i=0;i>diff;i--){
       makedot(x1+i,y1+slope*i);
      }
     }else{ //画垂直线
      var temp=y2-y1;
      if(temp>0){
       for(var i=0;i<temp;i++){
        makedot(x1,y1+i);
       }
      }else{
       for(var i=0;i>temp;i--){
        makedot(x1,y1+i);
       }
      }
     }
    }/**
     函数功能:根据给定的一系列坐标点画多边形
     函数思路:循环读取坐标点,在当前坐标点与下一坐标点之间连线
    */
    function polygon(){
     var args=arguments.length;
     if(args%2!=0) return -1;
     var realargs=args/2; //坐标个数
     for(var i=0;i<realargs-1;i++){
      line(arguments[i*2],arguments[i*2+1],arguments[i*2+2],arguments[i*2+3]);
     }
     line(arguments[i*2],arguments[i*2+1],arguments[0],arguments[1]);
    }
    //polygon(337,194,370,194);
    polygon(zb[0],zb[1],zb[2],zb[3]);
    </script>
    </head> 
    <body onLoad="hotTime1();">
      

  3.   

    在线等求答案,急~因为我在hotTime1()函数中的js1[]的值是从数据库中提出来的,如果直接在画线函数polygon前调用hotTime1()函数,此时数组zb[]里的值仍为空,因为此时js1[]中的值还未从数据库中被读取,所以需要用onload加载hotTime1函数,但加载完成后,怎么调用zb[]的值去做出画线函数。一定加分~希望有达人能耐心看看。