<!DOCTYPE html>
<html>
<head>
<title> 事件</title>
<script type="text/javascript">
var txta=document.getElementById("txt1").value;
var txtb=document.getElementById("txt2").value;
var txtc=document.getElementById("select").value;
var result;
function count(){
switch(txtc){
case "+":result=parseInt(txta)+parseInt(txtb);break;
case "-":result=txta-txtb;break;
case "*":result=txta*txtb;break;
case "/":result=txta/txtb;break;
}
}
document.getElementById("fruit").value=result;
</script>
</head>
<body>
<input type='text' id='txt1' />
<select id='select'>
<option value='+'>+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type='text' id='txt2' />
<input type='button' value=' = ' onclick="count()"/> <!--通过 = 按钮来调用创建的函数,得到结果-->
<input type='text' id='fruit' />
</body>
</html>
我知道开头var txta=document.等等和结尾document.getElementById("fruit").value=result;这两东西必须写在函数代码{}里才是对的,我想知道为什么这样子它就错了,触犯了哪个原理?
写在外面,没点击按钮就运行函数之外的代码,此时那些框框里没有任何用户输入的数据,value为空,同理,result尚未被赋值。
靠网友是不行的,还是得自己摸索。
我大概知道原因了,是不是浏览器是按照先后顺序执行代码的,函数里的代码需要点击才能执行,那两个东西在外面的话,早就被执行了
代码的执行是有先后顺序的,先执行script里面的(函数是调用时才执行),所以你写在函数外面的部分会比body部分先执行,由于body部分还没有执行,所以还没有id为txt1的标签,所以document.getElementById("txt1").value根本得不到,所以会错误。
写在外面函数switch就没办法获取到txt1 txt2 selec的值了,个人是这么理解的,初学者勿喷