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