问答详情
源自:6-11 编程练习

请问为什么在赋值给一个节点的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>

提问者:慕妹6594235 2016-03-23 15:40

个回答

  • 蝎子126
    2016-03-23 17:27:27
    已采纳

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

    这样就可以了。

  • Mr_sosann
    2016-03-23 20:15:36

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

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

  • 一二得二
    2016-03-23 16:59:54

    /*这里改为:

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


  • ios_clq
    2016-03-23 16:24:42

    这种感觉比较像是:

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

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

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


  • Wzzzz
    2016-03-23 16:22:50

    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;

  • 慕雪9857665
    2016-03-23 16:22:37

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

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