label標(biāo)簽使用過程中遇到的問題分析及解決思路

字號(hào):


    由于之前很少使用label標(biāo)簽,所以今天就遇到一個(gè)很奇怪的問題:使用的是IE6, 7, 8這時(shí)候發(fā)現(xiàn)頁面沒有提示出來信息,具體的分析思路及解決方法如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    最近在做東西時(shí)候使用到了label標(biāo)簽,由于之前很少使用label標(biāo)簽,所以就遇到一個(gè)很奇怪的問題。什么問題呢?下面來看一個(gè)效果 
    代碼如下:
    <!DOCTYPE html> 
    <html> 
    <head> 
    <meta charset="utf-8" /> 
    <title>HTML label tag 學(xué)習(xí) by Typeof</title> 
    <style type="text/css"> 
    html, body { 
    margin: 0; 
    padding: 0; 
    } 
    .title { 
    margin: 10px; 
    } 
    .login-item, .login-button { 
    margin: 20px; 
    height: 30px; 
    } 
    .clearfix { 
    clear: both; 
    content: ""; 
    display: block; 
    } 
    .login-item label { 
    float: left; 
    width: 70px; 
    } 
    .login-item .text { 
    height: 18px; 
    width: 200px; 
    float: left; 
    } 
    </style> 
    </head> 
    <body> 
    <div> 
    label標(biāo)簽使用過程中遇到的問題 
    </div> 
    <div> 
    <label for="username">用戶名:</label> 
    <input type="text" id="username" name="username" /> 
    <lable id="J_usernameError"></label> 
    </div> 
    <div> 
    <label for="password">密&nbsp;&nbsp;碼:</label> 
    <input type="text" id="password" name="username" /> 
    <label id="J_passwordError"></label> 
    </div> 
    <div> 
    <input type="submit" value="登錄" id="J_submitLogin" /> 
    </div> 
    <script> 
    document.getElementById('J_submitLogin').onclick = function() { 
    var usernameError = document.getElementById('J_usernameError'); 
    usernameError.innerHTML = '用戶名錯(cuò)誤'; 
    }; 
    </script> 
    </body> 
    </html> 
    提示:您可以先修改部分代碼再運(yùn)行
    這個(gè)demo要實(shí)現(xiàn)的目的是在點(diǎn)擊登錄按鈕的時(shí)候校驗(yàn)用戶輸入的用戶名、密碼是否合法,如果不合法就在用戶名輸入框下面提示錯(cuò)誤信息。 
    提示錯(cuò)誤信息的元素計(jì)劃用label實(shí)現(xiàn)。 
    通過運(yùn)行代碼打開demo頁面,點(diǎn)擊登錄按鈕,看會(huì)有什么變化。如果使用的是Firefox、Chrome或者IE9+,則點(diǎn)擊登錄按鈕之后會(huì)提示 “用戶名錯(cuò)誤”,這是想要的結(jié)果。如果使用的是IE6, 7, 8如何一個(gè)再看看會(huì)有什么變化呢?這時(shí)候發(fā)現(xiàn)頁面沒有提示出來信息,打開開發(fā)人員工具,看下控制這時(shí)候會(huì)發(fā)現(xiàn)提示出來錯(cuò)誤信息“SCRIPT600: 未知的運(yùn)行時(shí)錯(cuò)誤 ”。遇到這個(gè)問題的時(shí)候嘗試了innerText和innerHTML兩種方法,發(fā)現(xiàn)都會(huì)報(bào)這樣的錯(cuò)誤,以為是使用方法不對(duì)去w3cschool上面查了下發(fā)現(xiàn)也沒有說不支持innerText和innerHTML的。 
    到底為什么會(huì)在IE6, 7, 8提示這樣的錯(cuò)誤而Firefox, Chrome, IE9+(其他瀏覽器沒有嘗試)運(yùn)行正常呢。細(xì)心的人可能一下就看出問題在哪里了,對(duì)于提示“用戶名錯(cuò)誤”的元素開始標(biāo)簽寫成了“l(fā)able”而不是label。但是我當(dāng)時(shí)就沒有發(fā)現(xiàn)這問題,一直以為是label標(biāo)簽使用方式上出現(xiàn)了問題呢,至于為什么IE6, 7, 8的JS引擎會(huì)在操作這種把標(biāo)簽名寫錯(cuò)的元素的innerText、innerHTMl屬性時(shí)出現(xiàn)錯(cuò)誤,而Firefox、Chrome和IE9+沒有出現(xiàn)錯(cuò)誤,不是很清楚,如果有對(duì)這方面比較了解的朋友請(qǐng)解釋下吧。 
    這個(gè)問題其實(shí)挺低級(jí)的,把標(biāo)簽名寫錯(cuò)了嘛。但是當(dāng)時(shí)自己就沒有發(fā)現(xiàn),后來仔細(xì)研究了一下才發(fā)現(xiàn)這個(gè)問題,所以還是記錄一下。