决定该收起懒惰的心了
今天一个同事问我一个奇怪的问题:一段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的代码后面增加内容。这就是上面的问题造成的原因。

相关文章:

  • 2021-10-11
  • 2022-01-16
  • 2022-12-23
  • 2021-10-31
  • 2021-10-10
  • 2021-08-15
  • 2021-08-24
  • 2022-12-23
猜你喜欢
  • 2022-01-07
  • 2021-08-30
  • 2021-09-29
  • 2021-06-21
  • 2021-07-18
  • 2021-07-01
  • 2021-04-20
相关资源
相似解决方案