写一个让有背景色的文本自动增加长度的js代码所遇到的问题

写一个让有背景色的文本自动增加长度的js代码所遇到的问题:

错误代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <style type="text/css">

p{background-color:blue;  width:100px;}

</style>
 </head>
 <body>
 <p id="f">我们都是好孩子</p>
 </body>
  <script type="text/javascript">
var len=document.getElementById("f").style.width;
var lenn=parseInt(len);
function move( ){

lenn+=10;
len=lenn+"px";

}
setInterval("move( )",1000);
 </script>
</html>

思路是,用style.width取到有px单位的宽度值,然后用parseInt去掉单位,然后每秒调用函数move(  ),给len赋予新值,重而改变文本的宽度。

错误有2个地方:

(1) 首先var len=document.getElementById("f").style.width的方式取不到width的值,因为alert出来啥都没有。这个问题的解决办法就是将内部样式写成行内样式,即将width为100px,写成 <p id="f" width="100px">我们都是好孩子</p>,这样var len=document.getElementById("f").style.width就能取到值,而且值为100px。所以有时候不妨先alert(  )进行调试,如果没取到值就要看看哪里需要调整。

(2)值引用和引用赋值(对象,数组都是引用赋值,所以改变其中之一,都会影响到其它)

var len=document.getElementById("f").style.width,将后者值赋予给了len,于是我认为只要len改变,document.getElementById("f").style.width就会相应改变,其实错误。

类似于var a=b,改变b不一定会改变a一样,赋值仅仅是相当于独立创建了另一个变量,所以一方的改变不会影响到另一方。所以:lenn+=10;  len=lenn+"px";这里还要加一句:  document.getElementById("f").style.width = len;否则p段落的宽度就是不会发生变化。

    我觉得误区主要来源于:var a=2,然后我们要给a的值,直接var a=3就好了,所以就有一种“改了就马上变化的思维”。而var a=2与var len=document.getElementById("f").style.width又有所不同,虽然都是赋值行为,但前者右边是常量,后者右边是变量,所以要特别注意后者改了其中一个都不会影响到另一个,因为是独立复制了一份,独立开辟了一个内存空间。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值