猿问

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

<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无法正常显示。全局变量在函数内不是都可以适用的么?

慕粉4366906
浏览 1707回答 1
1回答

习惯受伤

因为,浏览器解析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));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答