天天看點

label标簽onclick的事件處理

今天碰到一個問題

<html>
<head>
<script type="text/javascript">
function change(){
    alert(111);
}
</script>
</head>
<body>
<label οnclick="change()">
<input type="checkbox" value="1">是
</label>
</body>
</html>
           

當單擊複選框時,change事件執行一次;但是當單擊‘是’時,change事件卻執行了兩次,這讓我十分糾結。經過各種百度前人的經驗,終于讓我找到的問題所在。

<label> 标簽為 input 元素定義标注(标記)。

label 元素不會向使用者呈現任何特殊效果。不過,它為滑鼠使用者改進了可用性。如果您在 label 元素内點選文本,就會觸發此控件。就是說,當使用者選擇該标簽時,浏覽器就會自動将焦點轉到和标簽相關的表單控件上。——摘自W3School

也就是當我單擊'是'的時候,浏覽器自動将焦點轉移到了複選框上又執行了一次單機。是以change事件執行了兩次。既然找到了問題所在,解決自然簡單。将代碼修改為

<label>
<input type="checkbox" value="1" οnclick="change()">是
</label>
           

問題解決

繼續閱讀