请求大神指教, 如下写不累赘吗 var y=document.getElementById(x).value; document.getElementById(x).value=y.toUpperCase()

来源:6-8 文本框内容改变事件(onchange)

qq_aslongas_0

2017-06-24 20:02

<html>

  <head>

    <script type="text/javascript">

      function upperCase(x)

       {

         var y=document.getElementById(x).value  

        document.getElementById(x).value=y.toUpperCase()  

    //此处的 document.getElementById(x).value为什么不能用y代替

     }

    </script>

  </head>

<body>

Enter your name: <input type="text" id="fname" onchange="upperCase(this.id)">

</body>

</html>


写回答 关注

2回答

  • youarenotalone2
    2017-06-24 21:06:33
    已采纳

    原因:因为y=document.getElementById(x).value中的=表示的是赋值;

    解释:

    1、把document.getElementById(x).value的值赋给y但并不是说变量y就能代表document.getElementById(x).value;

    2、按照之前的课程里讲的变量只是容器,你放进容器里的东西并不能代表容器本身(水不能代表杯子);

    3、document.getElementById(x).value=y.toUpperCase()的意思是说把y转换成大写字母,再把这个转换后的值赋给document.getElementById(x).value,这时候document.getElementById(x).value原来的值就被重写覆盖了,变成转换后的值了;

    4、如果把document.getElementById(x).value=y.toUpperCase()换成y=y.toUpperCase(),那就是重写覆盖掉y的值,但是document.getElementById(x).value的值还是没有变;

    5、所以如果你将这里的document.getElementById(x).value换成y的话,那你还得再赋值一次把y的值再赋给document.getElementById(x).value来重写覆盖掉它原来的值。

    一叶红尘

    把水倒进杯子然后从杯子倒进盆里跟直接倒进盆里有何不同??

    2018-07-26 15:08:52

    共 4 条回复 >

  • 熊猫兔击队
    2017-06-24 21:06:59

    那里不能用y代替的。

    我先给个行号:

    1.  var y=document.getElementById(x).value;

    2. document.getElementById(x).value=y.toUpperCase();

    3. alert(y); //这是我加的


    因为第一行的意义是“把等号右边的值赋予给左边的y变量”,而不是“让左边和右边相等”。所以要是你第二行如果把等号左边改成y,那只能让y的值变大写(可以通过第三行验证),但document.getElementById(x).value 本身完全没有被改变。

    qq_asl...

    嗯嗯,懂了,谢谢

    2017-06-24 21:32:22

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题