慕妹6594235
2016-03-23 15:40
<!DOCTYPE html>
<html>
<head>
<title> 事件</title>
<script type="text/javascript">
function count(){
var num1=parseInt(document.getElementById("txt1").value);
var num2=parseInt(document.getElementById("txt2").value);
var counting=document.getElementById("select").value;
var result;
switch(counting){
case "+":
result=num1+num2;
break;
case "-":
result=num1-num2;
break;
case "*":
result=num1*num2;
break;
case "/":
result=num1/num2;
}
document.getElementById("fruit").value=parseInt(result);
/*这里改为:
var final1=document.getElementById("fruit").value;
final1=parseInt(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' onfocus="count()"/>
</body>
</html>
(1)var final1=document.getElementById("fruit").value;
(2)final1=parseInt(result);
为了叙述简便,设final为A,document.getElementById("fruit")为B,parseInt(result)为C;
简化如下:
(1)A=B.value;
(2)A=C;
可以看的出。整个过程中。只是A被两次附值。B并没有改变。
A和B是两个对象,value只是B的一个属性,你要改变B的属性值value,需要获得的是B这个对象。
所以你应该这样写:
(1)var final1=document.getElementById("fruit");
(2)final1.value=parseInt(result);
这样就可以了。
使用parseInt()函数可解析一个字符串,并返回一个整数.
你这样的结果是先给final1赋值了id.value,再给final1 赋值了result,并没有让 id"fruit"里面的value改变,
/*这里改为:
var final1=document.getElementById("fruit").value;
final1=parseInt(result);
这样就失效了 为什么呢?*/
等同于:
var final1;
final1 = document.getElementById("fruit").value; //final1和fruit.value的值都为空值,这句没有意义。
final1 = parseInt(result); //final1为计算结果。
只需添加一句就可以输出结果了。
document.getElementById("fruit").value=final1; //这样就可以在名为fruit的文本中显示了。
这种感觉比较像是:
var sourceValue = 3; // 把这个看做document.getElementById("fruit").value;
var result = sourceValue; // 将sourceValue的值赋值给result
result = 5; // 最后再把result的值改变 不会对原有的sourceValue产生任何影响
var final1=document.getElementById("fruit").value;
final1=parseInt(result);
你这两句代码的意思是把document.getElementById("fruit").value赋值给final1
但是题的意思是将最后的值传给id为fruit"的文本框
应该改成:
var final1=parseInt(result);
document.getElementById("fruit").value=final1;
1:定义num1和num2的时候进行一次parseInt()就足够了,为什么最后将result赋给fruit的时候又进行了一次呢?
2:final1失效是因为final1是空值。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题