你的错误至少有以下几个地方:
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。第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>但还是有问题,你自己看看把,细心一些,应该比较好改了
如果在这六个连接中,不运行<a>将右边界擦除到200</a>
这个连接其他连接都可以正常运行。
在运行了这个连接,会出现如下错误:
错误:'clip.split(...).1'不是对象。
其他连接此时不能正常运行,会出现同样的错误。
<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)"
加个空格分开一下就行了
我的E-mail:
[email protected]