今天刚开始看javascript的教材,边看边自己写,写到一个函数的时候实在不知道错在哪里了,只差字符一个一个拆开来看了,代码如下,请查看:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <script type="text/javascript" >
  function AD(){
var banners = new Array(3);
for(var i=0;i<banners.length;i++)
{
banners[i]=new Array(2);
banners[0][0]="http://www.baidu.com";
banners[0][1]="PICTURE/1.Jpg";
banners[1][0]="http://www.163.com";
banners[1][1]="PICTURE/2.jpg";
banners[2][0]="http://www.google.com";
banners[2][1]="PICTURE/3.jpg";
var current =Math.round(2*Math.random());
document.write("<center><a href='"+banners[current][0]+"'>");
document.write("<img src='"+banners[current][1]+"'width=500 height=100></a>");
document.write("<br><a href='"+banners[current][0]+"'>CLICK HERE</a></center>");
}
   
  </script>
    <base href="<%=basePath%>">
     <title>TEST</title>
</head>
  <body>
   <input type="button" value="CLICK"  onclick="AD();">
  </body>
</html>
错误提示:SCRIPT5007: 属性“AD”的值为 null、未定义或不是 Function 对象 

解决方案 »

  1.   

    已经单独赋值就不需要循环了<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" >
    function AD(){
    var banners = new Array(3);
    banners[0] = new Array(2);
    banners[0][0]="http://www.baidu.com";
    banners[0][1]="PICTURE/1.Jpg";
    banners[1] = new Array(2);
    banners[1][0]="http://www.163.com";
    banners[1][1]="PICTURE/2.jpg";
    banners[2] = new Array(2);
    banners[2][0]="http://www.google.com";
    banners[2][1]="PICTURE/3.jpg";
    var current = Math.round(2*Math.random());
    document.write("<center><a href='"+banners[current][0]+"'>");
    document.write("<img src='"+banners[current][1]+"'width=500 height=100></a>");
    document.write("<br><a href='"+banners[current][0]+"'>CLICK HERE</a></center>");
    }
      </script>
      <title>TEST</title>
    </head>
      <body>
      <input type="button" value="CLICK" onclick="AD();">
      </body>
    </html>
      

  2.   

    document.write, 在你点击触发事件的时候,整个文档流已经被重写,原来的脚本已经不复存在,之后就出现你这样的错误。
      

  3.   

    AD函数结尾少了}符号,如果不是你贴错了的话 
    function AD(){
    var banners = new Array(3);
    for(var i=0;i<banners.length;i++)
    {
    banners[i]=new Array(2);
    banners[0][0]="http://www.baidu.com";
    banners[0][1]="PICTURE/1.Jpg";
    banners[1][0]="http://www.163.com";
    banners[1][1]="PICTURE/2.jpg";
    banners[2][0]="http://www.google.com";
    banners[2][1]="PICTURE/3.jpg";
    var current =Math.round(2*Math.random());
    document.write("<center><a href='"+banners[current][0]+"'>");
    document.write("<img src='"+banners[current][1]+"'width=500 height=100></a>");
    document.write("<br><a href='"+banners[current][0]+"'>CLICK HERE</a></center>");
    }
    }
      

  4.   

    昨天一下看太多内容,脑子有点不好使了,今天检查发现,其实确实有点问题,我的循环范围扩大了,只要循环banners[i]=new Array(2);这一句即可,大括号放错地方了。但按照一楼,三楼说的话会报错,因为没有申明banners中的每个变量为二维数组。感谢四楼,确实少了个大括号。