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>
 | 
