<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));
添加回答
举报
0/150
提交
取消