JS函数调用函数外的变量为啥是undefined
代码是这样的:<script>varrequestUrl="http://www.url.com/request";varmobile=document.getEleme...
代码是这样的:
<script>
var requestUrl = "http://www.url.com/request";
var mobile = document.getElementById("pn").value;
function show(){
alert(requestUrl);
alert(mobile);
}
show();//弹第一个requestUrl正常,弹第二个mobile时就是undefined,为什么?
</script>
<input type="telephone" id="pn" />
奇怪的是,当我把这行
var mobile = document.getElementById("pn").value;
放到function里面,另一行还在外面,即:
var requestUrl = "http://www.url.com/request";
function show(){
var mobile = document.getElementById("pn").value;
alert(requestUrl);
alert(mobile);
}
show();//这回弹两次都正确弹出了,这两个声明有什么区别吗?
看了前辈的解答,我把<input>那些东西都弄到脚本前面去了,现在倒是不出undefined了。而是无论在input输入框里输什么数字,弹出来的都是空白一片。。。 展开
<script>
var requestUrl = "http://www.url.com/request";
var mobile = document.getElementById("pn").value;
function show(){
alert(requestUrl);
alert(mobile);
}
show();//弹第一个requestUrl正常,弹第二个mobile时就是undefined,为什么?
</script>
<input type="telephone" id="pn" />
奇怪的是,当我把这行
var mobile = document.getElementById("pn").value;
放到function里面,另一行还在外面,即:
var requestUrl = "http://www.url.com/request";
function show(){
var mobile = document.getElementById("pn").value;
alert(requestUrl);
alert(mobile);
}
show();//这回弹两次都正确弹出了,这两个声明有什么区别吗?
看了前辈的解答,我把<input>那些东西都弄到脚本前面去了,现在倒是不出undefined了。而是无论在input输入框里输什么数字,弹出来的都是空白一片。。。 展开
3个回答
展开全部
文档加载是自顶向下的,javascript代码的执行也是自顶向下执行的,所以第一次执行时文档还没有加载到<input type...id="pn">那个地方,所以document.getElementById("pn")是获取不到对象的,因为对那个时刻而言这个对象还不存在。下面执行正确,你也就知道为什么了,希望可以帮到你。
追问
//此处省略原题代码
不直接在脚本里执行show();了,下面另搞一个按钮onclick,页面刷新结束应该就是全加载了吧,点按钮,一样是undefined
追答
关键是看你那个mobile变量赋值的时刻在页面加载之前还是之后,而不是看show调用的时刻
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-05-24
展开全部
我觉得你这样写是会出错了,或许你用的浏览区没有报错,但是会出现这样的错误
document.getElementById(...) is null
原因是会先编译脚本,就会找不到id为“pn”的
应把<input type="telephone" id="pn" />
放在脚本前面
document.getElementById(...) is null
原因是会先编译脚本,就会找不到id为“pn”的
应把<input type="telephone" id="pn" />
放在脚本前面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在用 document.getElementById 获取页面元素的时候,要确保 document 已经载入完毕,否则会出现取不到元素的情况。
<body onload="init()"> <input type="telephone" id="pn" /> <input type="button" value="test" onclick="show()" />
</body>
var requestUrl = "http://www.url.com/request",mobile;
function init(){
mobile = document.getElementById("pn").value;
}
function show(){ alert(requestUrl); alert(mobile);}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询