javascript給輸入框賦值的一個誤區


一. 錯誤的示范

如下代碼所示,如果需要用javascript獲取id為username1, password1的輸入框的值,將其寫入id為username2, password2的輸入框,那么紅線區域的代碼是不可取的

這樣看到的結果是,alert依次彈出username1, password1的輸入框的值,事實上並沒有成功的賦值

這是為什么?因為var username2 = document.getElementById("username2").value; 這行代碼中username2的值是一個空字符串,舉個例子,如果username1 = "123", 那么username2 = username1;就等價於""="123",把一個字符串賦值給空字符串,沒有意義。同理,password2 = password1;也是一個道理

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>html表單作業</title>
    <script type="text/javascript">
        function myFunc(){
            var username1 = document.getElementById("username1").value;
            var password1 = document.getElementById("password1").value;
            alert("您的賬號是: " + username1);
            alert("您的密碼是: " + password1);    
            var username2 = document.getElementById("username2").value;
            var password2 = document.getElementById("password2").value;
            username2 = username1;
            password2 = password1;    
        }
    </script>
</head>
<body>
    <form>
        用戶名:<input type="text" id="username1" />
        <br />
        密碼:<input type="password" id="password1" />
        <br />
        性別:<input type="radio" name="sex" value="male" />男
        <input type="radio" name="sex" value="female" />女
        <br />
        頭像:<input type="file" name="file" />
        <br />
        住址:<select id="city" name="city">
                <option>選擇</option>
                  <option>廣東</option>
                  <option>湖南</option>
                  <option>江西</option>
              </select>省&nbsp;&nbsp;
              <select>
                  <option>選擇</option>
                  <option>深圳</option>
                  <option>長沙</option>
                  <option>南昌</option>
              </select>市
        <br />
        <br />
        愛好:<input type="checkbox" value="1" />籃球
              <input type="checkbox" value="2" />足球
              <input type="checkbox" value="3" />看書
        <br />
        <br />
        備注信息:<textarea rows="3" cols="15">這是我的第一個網頁</textarea>
        <br />
        <br />
        <br />
        <br />
        <br />
        用戶名:<input type="text" id="username2" />
        <br />
        密碼:<input type="password" id="password2" />
        <br />
        <input type="button" value="登錄" onclick="myFunc()" />&nbsp;&nbsp;
        <input type="reset" />
        </form>
</body>
</html>

這段代碼的結果是:我們可以看到,我們在上方的用戶名框輸入123,密碼框輸入567,alert依次彈出123,567,然而,獲得的值並沒有寫入到下方的用戶名和密碼框中

 

 

 

二. 如何解決

只需改動上面紅色的四行代碼。如下所示,username2.value有兩個含義,1. 它的值是空字符串;2. 它表示元素對象的屬性,username2.value = username1; 就是把id為username1的輸入框的值賦值給id為username2的對象的屬性

var username2 = document.getElementById("username2");
var password2 = document.getElementById("password2");
username2.value = username1;
password2.value = password1;

為了讓代碼更清晰,可以這樣改:

function myFunc(){
            var username1 = document.getElementById("username1"); var password1 = document.getElementById("password1"); alert("您的賬號是: " + username1.value); alert("您的密碼是: " + password1.value); var username2 = document.getElementById("username2"); var password2 = document.getElementById("password2"); username2.value = username1.value; password2.value = password1.value;  
        }

驗證結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM