你的错误至少有以下几个地方:
1。第16行的return写错了
2。javascript的转化为整数函数是parseInt,不是number,
3。settimeout的正确写法是setTimeout,大小写不能错,parseInt也是一样,更改过的源程序如下:<html>
<head><title>my web</title>
<script language=javascript>
<!--
  var block;
  function init()
  {
    block=blockdiv.style;
  }
  function clipvalues(obj,which)
  {
    var clipv=obj.clip.split("rect(")[1].split(")")[0].split("px");
    if (which=="t") return parseInt(clipv[0]);
    if (which=="r") return parseInt(clipv[1]);
    if (which=="b") return parseInt(clipv[2]);
    if (which=="l") return parseInt(clipv[3]);
  }
  function clipto(obj,t,r,b,l)
  {
    obj.clip="rect("+t+"px"+r+"px"+b+"px"+l+"px)"
  }
  function clipby(obj,t,r,b,l)
  { 
    obj.clip="rect("+(this.clipvalues(obj,'t')+t)+"px"+(this.clipvalues(obj,'r')+r)+"px"+parseInt(this.clipvalues(obj,'b')+b)+"px"+parseInt(this.clipvalues(obj,'l')+l)+"px)";
  }
  function wipe1()
  {
      if(clipvalues(block,'r')<200)
      {
        clipby(block,0,5,0,0);
        setTimeout("wipe1()",30);
      }
  }
  function wipe2()
  {
    if(clipvalues(block,'r')>50) 
    {
        clipby(block,0,-5,0,0);
        setTimeout("wipe2()",30);
    }

//-->
</script>
</head>
<body onload="javascript:init();"><div id="blockdiv" style="position:absolute;left:150;top:80;width:200;height:100;clip:rect(0,50,100,0);background-color:#ff0000;">
</div>
<p>查看各边的剪切值:
<a href="javascript:alert(clipvalues(block,'t'))">顶端</a>
<a href="javascript:alert(clipvalues(block,'r'))">右端</a>
<a href="javascript:alert(clipvalues(block,'b'))">底端</a>
<a href="javascript:alert(clipvalues(block,'l'))">左端</a>
</p>
<p><a href="javascript:wipe1()">将右边界擦除到200</a>
<br>
<a href="javascript:wipe2()">将右边界擦除到50</a>
</p>
</body>
</html>但还是有问题,你自己看看把,细心一些,应该比较好改了

解决方案 »

  1.   

    我在运行修改过的程序以后,出现如下问题:
    如果在这六个连接中,不运行<a>将右边界擦除到200</a>
    这个连接其他连接都可以正常运行。
    在运行了这个连接,会出现如下错误:
    错误:'clip.split(...).1'不是对象。
    其他连接此时不能正常运行,会出现同样的错误。
      

  2.   

    运行下面的:
    <html>
    <head><title>my web</title>
    <script language=javascript>
    <!--
      var block;
      function init()
      {
        block=blockdiv.style;
      }
      function clipvalues(obj,which)
      {
        var clipv=obj.clip.split("rect(")[1].split(")")[0].split("px");
        if (which=="t") return parseInt(clipv[0]);
        if (which=="r") return parseInt(clipv[1]);
        if (which=="b") return parseInt(clipv[2]);
        if (which=="l") return parseInt(clipv[3]);
      }
      function clipto(obj,t,r,b,l)
      {
        obj.clip="rect("+t+"px "+r+"px "+b+"px "+l+"px)"
      }
      function clipby(obj,t,r,b,l)
      { 
        obj.clip="rect("+(this.clipvalues(obj,'t')+t)+"px "+(this.clipvalues(obj,'r')+r)+"px "+parseInt(this.clipvalues(obj,'b')+b)+"px "+parseInt(this.clipvalues(obj,'l')+l)+"px)";
      }
      function wipe1()
      {
          if(clipvalues(block,'r')<200)
          {
            clipby(block,0,5,0,0);
            setTimeout("wipe1()",30);
          }
      }
      function wipe2()
      {
        if(clipvalues(block,'r')>50) 
        {
            clipby(block,0,-5,0,0);
            setTimeout("wipe2()",30);
        }

    //-->
    </script>
    </head>
    <body onload="javascript:init();"><div id="blockdiv" style="position:absolute;left:150;top:80;width:200;height:100;clip:rect(0,50,100,0);background-color:#ff0000;">
    </div>
    <p>查看各边的剪切值:
    <a href="javascript:alert(clipvalues(block,'t'))">顶端</a>
    <a href="javascript:alert(clipvalues(block,'r'))">右端</a>
    <a href="javascript:alert(clipvalues(block,'b'))">底端</a>
    <a href="javascript:alert(clipvalues(block,'l'))">左端</a>
    </p>
    <p><a href="javascript:wipe1()">将右边界擦除到200</a>
    <br>
    <a href="javascript:wipe2()">将右边界擦除到50</a>
    </p>
    </body>
    </html>
    其实你查查msdn之类的,就会发现问题了
    <div>.style.clip = "100px 200px ..."原来的格式
    obj.clip="rect("+t+"px"+r+"px"+b+"px"+l+"px)"
    不对,改为
    obj.clip="rect("+t+"px "+r+"px "+b+"px "+l+"px)"
    加个空格分开一下就行了
      

  3.   

    非常感谢。可以常联系吗?
    我的E-mail:
       [email protected]