为了账号安全,请及时绑定邮箱和手机立即绑定

关于alert,以及全局变量调用的问题

关于alert,以及全局变量调用的问题

慕粉4366906 2017-03-13 20:49:30
<script>function myf(){ var t1=document.getElementById('text1'); var t2=document.getElementById('text2'); alert(t1.value+t2.value);}</script><body><input id="text1" type="text"/><input id="text2" type="text"/><input type="button" onclick="myf()" value="求和" /></body>这段代码中当var t1=document.getElementById('text1');var t2=document.getElementById('text2');放到函数外作为全局变量时,alert无法正常显示。全局变量在函数内不是都可以适用的么?
查看完整描述

1 回答

已采纳
?
习惯受伤

TA贡献885条经验 获得超1144个赞

因为,浏览器解析HTML代码时,遇到javascript时会停止渲染,执行脚本。

所以导致:在没有渲染出 input#text1 时执行了 var t1=document.getElementById('text1'); ,导致 t1 的值为 undefined。所以在点击按钮 alert 时,获取不到正确的值,JS报错。

解决方法:

将脚本放在 </body> 之前,保证元素已经渲染完毕,再执行脚本。

另外,你的代码有个逻辑错误:t1.value + t2.value 是字符串拼接,好像违背了求和的初衷,应该先转化为整数:

alert(parseInt(t1.value)+parseInt(t2.value));


查看完整回答
4 反对 回复 2017-03-13
  • 慕粉4366906
    慕粉4366906
    谢谢~补了一下功课,这个应该是渲染里面的js阻塞特性吧
  • 1 回答
  • 0 关注
  • 1706 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信