請(qǐng)求大神指教, 如下寫不累贅嗎 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>
2017-06-24
原因:因?yàn)閥=document.getElementById(x).value中的=表示的是賦值;
解釋:
1、把document.getElementById(x).value的值賦給y但并不是說(shuō)變量y就能代表document.getElementById(x).value;
2、按照之前的課程里講的變量只是容器,你放進(jìn)容器里的東西并不能代表容器本身(水不能代表杯子);
3、document.getElementById(x).value=y.toUpperCase()的意思是說(shuō)把y轉(zhuǎn)換成大寫字母,再把這個(gè)轉(zhuǎn)換后的值賦給document.getElementById(x).value,這時(shí)候document.getElementById(x).value原來(lái)的值就被重寫覆蓋了,變成轉(zhuǎn)換后的值了;
4、如果把document.getElementById(x).value=y.toUpperCase()換成y=y.toUpperCase(),那就是重寫覆蓋掉y的值,但是document.getElementById(x).value的值還是沒(méi)有變;
5、所以如果你將這里的document.getElementById(x).value換成y的話,那你還得再賦值一次把y的值再賦給document.getElementById(x).value來(lái)重寫覆蓋掉它原來(lái)的值。
2017-06-24
那里不能用y代替的。
我先給個(gè)行號(hào):
?var y=document.getElementById(x).value;
document.getElementById(x).value=y.toUpperCase();
alert(y); //這是我加的
因?yàn)榈谝恍械囊饬x是“把等號(hào)右邊的值賦予給左邊的y變量”,而不是“讓左邊和右邊相等”。所以要是你第二行如果把等號(hào)左邊改成y,那只能讓y的值變大寫(可以通過(guò)第三行驗(yàn)證),但document.getElementById(x).value 本身完全沒(méi)有被改變。