最近在做東西時候使用到了label標簽,由於之前很少使用label標簽,所以就遇到一個很奇怪的問題。什麼問題呢?下面來看一個效果
這個demo要實現的目的是在點擊登錄按鈕的時候校驗用戶輸入的用戶名、密碼是否合法,如果不合法就在用戶名輸入框下面提示錯誤信息。
提示錯誤信息的元素計劃用label實現。
通 過運行代碼打開demo頁面,點擊登錄按鈕,看會有什麼變化。如果使用的是Firefox、Chrome或者IE9+,則點擊登錄按鈕之後會提示 “用戶名錯誤”,這是想要的結果。如果使用的是IE6, 7, 8如何一個再看看會有什麼變化呢?這時候發現頁面沒有提示出來信息,打開開發人員工具,看下控制這時候會發現提示出來錯誤信息“SCRIPT600: 未知的運行時錯誤 ”。遇到這個問題的時候嘗試了innerText和innerHTML兩種方法,發現都會報這樣的錯誤,以為是使用方法不對去w3cschool上面查了 下發現也沒有說不支持innerText和innerHTML的。
到底為什麼會在IE6, 7, 8提示這樣的錯誤而Firefox, Chrome, IE9+(其他浏覽器沒有嘗試)運行正常呢。細心的人可能一下就看出問題在哪裡了,對於提示“用戶名錯誤”的元素開始標簽寫成了“lable”而不是 label。但是我當時就沒有發現這問題,一直以為是label標簽使用方式上出現了問題呢,至於為什麼IE6, 7, 8的JS引擎會在操作這種把標簽名寫錯的元素的innerText、innerHTMl屬性時出現錯誤,而Firefox、Chrome和IE9+沒有出 現錯誤,不是很清楚,如果有對這方面比較了解的朋友請解釋下吧。
這個問題其實挺低級的,把標簽名寫錯了嘛。但是當時自己就沒有發現,後來仔細研究了一下才發現這個問題,所以還是記錄一下。