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

大家帮忙看看,全局变量取不到——在先等解疑
<html   xmlns= "http://www.w3.org/1999/xhtml ">
<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 "   />
<title> 无标题文档 </title>
<script   type= "text/javascript ">
<!--
var   t1=document.getElementById( "t1 ");
var   t2=document.getElementById( "t2 ");
function   enc(){
t2.value=(encodeURI(t1.value));
}
function   esc(){
t2.value=escape(t1.value);
}
function   une(){
t2.value=unescape(t1.value);
}
//-->
</script>
</head>
<body>
<p> <a   href= "QQ骂人宝典.txt "> 打开文件 </a> </p>
<p>    
<form   id= "form1 "   name= "form1 "   method= "post ">
    <input   type= "text "   name= "t1 "   id= "t1 "   value= "这里是测试 "/>
    <input   type= "button "   name= "Submit "   value= "encodeURI "   onclick= "enc() "/>
    <input   type= "button "   name= "Submit2 "   value= "escape "   onclick= "esc() "/>
    <input   type= "button "   name= "Submit3 "   value= "unescape "   onclick= "une() "/>
    <input   type= "text "   name= "t2 "   id= "t2 "   value= " <%=server.URLEncode( "这里是测试 ")%> "   />
</form>
</body>
</html>
系统总是提示找不到对象,于是我把t1,t2   的定义放到任意一个函数中,那个函数就好了,不过我就使不明白为什么,因为我以前也用过全局变量,但是不回出现这种情况,请高手指教一二,谢谢!

------解决方案--------------------
js写在页面上是顺序执行的
var t1=document.getElementById( "t1 ");

还没有
<input type= "text " name= "t1 " id= "t1 " value= "这里是测试 "/>

而当onclick事件触发时在调用
var t1=document.getElementById( "t1 ");
就有值了。
事实就这么简单


------解决方案--------------------
页面在load的时候,从文档开始顺序的,

var t1=document.getElementById( "t1 ");
var t2=document.getElementById( "t2 ");

这段代码执行的时候,你的t1,t2文本框还没加载,所有t1,t2对象肯定是空。

你可以把t1,t2对象的初始化过程写到body的onload方法里。也可以写到html文档最后。