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

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

<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 回答

原因:因为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来重写覆盖掉它原来的值。

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

qq_aslongas_0 提问者

太谢谢了
2017-06-24 回复 有任何疑惑可以回复我~
#2

麓鹿不迷路

你好,那请问把这两行直接写成document.getElementById(x).value.toUpperCase() 可以吗?
2018-05-07 回复 有任何疑惑可以回复我~
#3

BlueMelody 回复 麓鹿不迷路

完全可行~也正因为可以这么写,所以我也有点疑惑原作者写第一行赋值y的用意何在...
2018-06-10 回复 有任何疑惑可以回复我~
#4

一叶红尘

把水倒进杯子然后从杯子倒进盆里跟直接倒进盆里有何不同??
2018-07-26 回复 有任何疑惑可以回复我~
查看1条回复

那里不能用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 本身完全没有被改变。

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

qq_aslongas_0 提问者

嗯嗯,懂了,谢谢
2017-06-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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