62 lines
2.1 KiB
HTML
62 lines
2.1 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<meta charset="utf-8">
|
|||
|
<title></title>
|
|||
|
<style>
|
|||
|
#buttons>button {
|
|||
|
border: none;
|
|||
|
outline: none;
|
|||
|
width: 120px;
|
|||
|
height: 40px;
|
|||
|
font: 22px/40px Arial;
|
|||
|
background-color: red;
|
|||
|
color: white;
|
|||
|
}
|
|||
|
</style>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<div id="buttons">
|
|||
|
<button><input type="checkbox">苹果</button>
|
|||
|
<button><input type="checkbox">香蕉</button>
|
|||
|
<button><input type="checkbox">草莓</button>
|
|||
|
<button><input type="checkbox">蓝莓</button>
|
|||
|
<button><input type="checkbox">榴莲</button>
|
|||
|
<button><input type="checkbox">西瓜</button>
|
|||
|
<button><input type="checkbox">芒果</button>
|
|||
|
<button><input type="checkbox">柠檬</button>
|
|||
|
</div>
|
|||
|
<script>
|
|||
|
var buttons = document.querySelectorAll('#buttons>button');
|
|||
|
for (var i = 0; i < buttons.length; i += 1) {
|
|||
|
buttons[i].firstChild.addEventListener('click', function(evt) {
|
|||
|
var checkbox = evt.target || evt.srcElement;
|
|||
|
if (checkbox.checked) {
|
|||
|
checkbox.parentNode.style.backgroundColor = 'lightseagreen';
|
|||
|
} else {
|
|||
|
checkbox.parentNode.style.backgroundColor = 'red';
|
|||
|
}
|
|||
|
evt.stopPropagation();
|
|||
|
});
|
|||
|
buttons[i].addEventListener('click', function(evt) {
|
|||
|
// 通过事件对象的target属性可以获取事件源(谁引发了事件)
|
|||
|
// 但是有的浏览器是通过srcElement属性获取事件源的
|
|||
|
// 可以通过短路或运算来解决这个兼容性问题
|
|||
|
var button = evt.target || evt.srcElement;
|
|||
|
// 当获取到一个元素之后可以通过它的属性来获取它的父元素、子元素以及兄弟元素
|
|||
|
// parentNode - 父元素
|
|||
|
// firstChild / lastChild / children - 第一个子元素 / 最后一个子元素 / 所有子元素
|
|||
|
// previousSibling / nextSibling - 前一个兄弟元素 / 后一个兄弟元素
|
|||
|
var checkbox = button.firstChild;
|
|||
|
checkbox.checked = !checkbox.checked;
|
|||
|
if (checkbox.checked) {
|
|||
|
button.style.backgroundColor = 'lightseagreen';
|
|||
|
} else {
|
|||
|
button.style.backgroundColor = 'red';
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
</script>
|
|||
|
</body>
|
|||
|
</html>
|