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

请问为什么在赋值给一个节点的value属性时,不能先用一个变量装,而只能直接赋值?(请看注释)

<!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>

正在回答

6 回答

(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);

这样就可以了。

0 回复 有任何疑惑可以回复我~
#1

慕妹6594235 提问者

我错把value值当成属性元素了 感谢回答。
2016-03-23 回复 有任何疑惑可以回复我~
#2

蝎子126 回复 慕妹6594235 提问者

哈哈,不客气~还怕我叙述的不清楚呢~共同进步哈~
2016-03-24 回复 有任何疑惑可以回复我~

使用parseInt()函数可解析一个字符串,并返回一个整数.

你这样的结果是先给final1赋值了id.value,再给final1 赋值了result,并没有让 id"fruit"里面的value改变,

0 回复 有任何疑惑可以回复我~
#1

慕妹6594235 提问者

感谢回答!
2016-03-23 回复 有任何疑惑可以回复我~

/*这里改为:

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的文本中显示了。


0 回复 有任何疑惑可以回复我~
#1

慕妹6594235 提问者

感谢回答!
2016-03-23 回复 有任何疑惑可以回复我~

这种感觉比较像是:

var sourceValue = 3;        // 把这个看做document.getElementById("fruit").value;

var result = sourceValue;    // 将sourceValue的值赋值给result

result = 5;        // 最后再把result的值改变 不会对原有的sourceValue产生任何影响


0 回复 有任何疑惑可以回复我~
#1

慕妹6594235 提问者

感谢回答!
2016-03-23 回复 有任何疑惑可以回复我~

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;

0 回复 有任何疑惑可以回复我~
#1

慕妹6594235 提问者

感谢回答!
2016-03-23 回复 有任何疑惑可以回复我~

1:定义num1和num2的时候进行一次parseInt()就足够了,为什么最后将result赋给fruit的时候又进行了一次呢?

2:final1失效是因为final1是空值。

0 回复 有任何疑惑可以回复我~
#1

慕妹6594235 提问者

感谢回答!
2016-03-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问为什么在赋值给一个节点的value属性时,不能先用一个变量装,而只能直接赋值?(请看注释)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信