大家帮忙看看,全局变量取不到——在先等解疑
<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文档最后。