Javascript侦错手记

决定该收起懒惰的心了
今天一个同事问我一个奇怪的问题:一段javascript放在Function外可以正常的执行完,而放在一个function里由Button触发却总出错!
我看了一下他的代码(如下代码为仿原代码制作,原代码非为textbox,而是一个不可视的activex的object):

< input type = " text "  id = " txt01 "  value = " 0001 " >
< input type = " text "  id = " txt02 "  value = " 0002 " >
< input type = " button "  value = " test "  onclick = " test() " >
< script language = " javascript " >
// function test()
//
{
   alert(document.all.txt01.value);
   document.write(document.all.txt01.value);
   alert(document.all.txt02.value);
   document.write(document.all.txt02.value);
// }
</ script >

按照他的方式执行了两次,果然加上上述的注释符时,运行正常;而取消上述注释时,就在alert(document.all.txt02.value)时,总提示document.all.txt02.value为空或不是对象。
初时我也百思不得其解,甚至以为是那个ActiveX的object因为安全性,在读第二次时已经过期了,但我又想,如果是这样,那不加上Function为什么又正常呢?我一再地检查代码,就是不能发现问题。直到我忽然看到了"document.write"才似乎想起了什么,把所有的document.write屏蔽后,一切正常。
原来一切都是document.write在搞鬼,如果当前页面已经load完成,它的执行会把网页第一次load的所有网页元件清理掉;而如果当前页面正在load中,则它的执行只会在当前load的代码后面增加内容。这就是上面的问题造成的原因。

转载于:https://www.cnblogs.com/HappyMan/archive/2005/05/26/163152.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值