日期:2014-05-16  浏览次数:20469 次

还要请教一个问题!
test.js
function   a(){
            document.write( " <head> <script   language= 'javascript '   src= 'Emails.js '   type= 'text\/javascript '> <\/script> <\/head> ");

document.writeln( " <a   href= '# '   onclick= 'a() '> a <\/a> ");
}

2.html
<script   language= "javascript "   src= "test.js "   type= "text/javascript "> </script>
<a   href= '# '   onclick= 'a() '> a1 </a>

当运行2.html后点a1后,在点a1就会出现javascript错误,提示对象不存在。

请问那里错了?


------解决方案--------------------
因为document.writeln()函数是将整个页面清空然后写东西,相当于重写整个页面
而你第一次点下a1后,页面上就只有“ <a href= '# ' onclick= 'a() '> a <\/a> ”,没有原来引用外部脚本的那句话,因而,a()找不到,也就错了
------解决方案--------------------
你是这么写的
test.js
function a(){
document.write( " <head> <script language= 'javascript ' src= 'Emails.js ' type= 'text\/javascript '> <\/script> <\/head> ");

document.writeln( " <a href= '# ' onclick= 'a() '> a <\/a> ");
}
也就是说写了两遍document.write(),所以最后页面上留下的文字只有最后一句
因为document.write()是全部重写
即便前面写了引用外部脚本的,但实际等于没写上
------解决方案--------------------

在已完成的文档上使用write,writeln方法,不但清除内容,也清除所有脚本对象,你定义的a函数已经被清理了,除非重新加载test脚本
------解决方案--------------------
当引用test.js执行document.write后再点击就会调用Emials.js如果不存在Emails.js就会出错,如过有并且有一函数不会出错