Javascript达人请进。

来源:百度知道 编辑:UC知道 时间:2024/05/27 09:57:59
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" type="text/javascript">
//url=encodeURIComponent(document.URL;);
dizhi=escape(document.URL);
alert(dizhi);
document.getElementById("dizhi").value=dizhi;
</script>
<title>无标题文档</title>
</head>
<body>
<form action="" method="get">
<input name="dizhi" id="dizhi" type="hidden">
</form>
</body>
</html>
<%
DIM dizhi

又一次说道这个问题了,不知道说了多少回了。。。。。

载入到JS的时候,JS就被执行,注意你的代码,这个时候那个input还没有出现,你设置它的value属性当然会失败。你可以看IE左下角有个错误提示(如果你打开了显示错误提示)。

解决办法就是把JS放在input后面执行
可以把这段JS移至input的后边
或者也可以把这JS写成函数,在input后边调用

浏览器解析页面时按顺序解释执行的(从上到下),所以dizhi=escape(document.URL);
alert(dizhi);
这之前是没有错的,但是因为<input name="dizhi" id="dizhi" type="hidden">还没创建,所以
document.getElementById("dizhi").value=dizhi;会出错,找不到该空间!
解决的方法1:放在window.onload 里:(或者是放在body的onload里)
window.onload = function(){
dizhi=escape(document.URL);
alert(dizhi);
document.getElementById("dizhi").value=dizhi;
}
方法2:把document.getElementById("dizhi").value=dizhi;放在创建dizhi控件之后,或直接放在</html>标签之后,这样就不会出现问题了!

看看HTML和JS的执行顺序吧。