一、添加和删除元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
* {
margin: 0;
padding: 0;
}
#container {
margin: 20px 50px;
}
#fruits li {
list-style: none;
width: 200px;
height: 50px;
font-size: 20px;
line-height: 50px;
background-color: cadetblue;
color: white;
text-align: center;
margin: 2px 0;
}
#fruits>li>a {
float: right;
text-decoration: none;
color: white;
position: relative;
right: 5px;
}
#fruits~input {
border: none;
outline: none;
font-size: 18px;
}
#fruits~input[type=text] {
border-bottom: 1px solid darkgray;
width: 200px;
height: 50px;
text-align: center;
}
/*兄弟选择择器 ~ */
#fruits~input[type=button] {
width: 80px;
height: 30px;
background-color: coral;
color: white;
vertical-align: bottom;
cursor: pointer; /*改变状态(当鼠标放在标签上时变成小手形状)*/
}
</style>
</head>
<body>
<div id="container">
<ul id="fruits">
<!-- a标签有默认的跳转页面行为,有两种方法可以阻止这种行为:
方法一:<a href="javascript:void(0);"></a>
javascript:void(0); 不做任何事(取消a标签的默认行为)
a标签的链接类型: 跳转链接、锚链接、功能性链接(执行某种功能或者执行js代码)
方法二:
在JavaScript代码中用事件源加preventDefault()去掉事件a、form表单等标签的默认行为;
evt.preventDefault();
-->
<li>苹果<a href="">×</a></li>
<li>香蕉<a href="">×</a></li>
<li>火龙果<a href="">×</a></li>
<li>西瓜<a href="">×</a></li>
<!-- 这里有一个回车文本节点 -->
</ul>
<input type="text" name="fruit">
<input id="ok" type="button" value="确定">
</div>
<script type="text/javascript">
// 获取所有的a标签
var anchors = document.querySelectorAll('#fruits a');
// 获取按钮对象
var okButton = document.getElementById('ok');
var ul = document.getElementById('fruits');
// 用属性选择器获取input对象
var input = document.querySelector('#container input[type=text]');
for(var i = 0; i < anchors.length; i += 1) {
anchors[i].addEventListener('click', removeItem);
}
// =========================添加回调函数=================
function removeItem(evt){
// 阻止a标签的默认行为
evt.preventDefault();
var a = evt.target || evt.srcElement;
// 获取父节点元素
var li = a.parentNode;
// 移除子节点removeChild(li)
li.parentNode.removeChild(li);
}
// =================为button绑定点击事件=================
okButton.addEventListener('click', addItem);
// ========================增加子节点项=================
function addItem(evt) {
// 获取input里面的value并用trim()去掉字符串两边的空格
var fruitName = input.value.trim();
if (fruitName.length > 0) {
// 创建一个新元素(创建li标签)
// createElement(标签名)
var li = document.createElement('li');
var a = document.createElement('a');
// 绑定事件回调函数
a.addEventListener('click', removeItem);
//修改标签的内容
li.textContent = fruitName;
a.textContent = '×';
// 修改a标签的属性
a.href = '';
// 创建一个孩子节点(元素)
// 追加appendChild(需添加新标签) :在指定的父元素内追加一个子节点(元素)
li.appendChild(a);
//ul.appendChild(li);
// insertBefore(需添加的元素, 位置) : 在指定的位置之前添加子节点(元素)
// 注意:用insert添加元素时注意标签前后的文本节点(父元素获取的firstchild或lastchild可能有回车等文本节点)
ul.insertBefore(li, ul.firstChild);
}
// 清空文本框内容
input.value = '';
// 让input输入框一直获取焦点
input.focus();
}
// =====================给文本框绑定事件===============
// keydown/keyup/keypress : 按下/弹起/敲击(按下弹起)
input.addEventListener('keypress', function(evt) {
// 获取事件源的键码keyCode/which都可以获取键码
var key = evt.keyCode || evt.which;
if (key == 13) {
addItem();
}
});
</script>
</body>
</html>
二、随机图片颜色替换
```java
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#box {
width: 800px;
height: 400px;
margin: 50px auto 0 auto;
border: solid #00 5px;
border: solid #000000 1px;
overflow: hidden;
}
#but {
width: 200px;
margin: 10px auto;
text-align: center;
}
#but button {
width: 80px;
height: 30px;
margin-right: 5px;
background-color: lightblue;
color: white;
border: none;
outline: none;
cursor: pointer;
}
.small {
width: 50px;
height: 50px;
float: left;
}
</style>
</head>
<body>
<div id="box"></div>
<div id="but">
<button class="but1">添 加</button>
<button class="but2">闪 烁</button>
</div>
<script src="js/mylib.js"></script>
<script type="text/javascript">
var box = document.querySelector('#box');
var but1 = document.querySelector('.but1');
var but2 = document.querySelector('.but2');
// ===========================添加按钮=======================
but1.addEventListener('click', function() {
var div = document.createElement('div');
//div.style.width = '80px';
//div.style.height = '80px';
div.style.backgroundColor = randomColor();
// 用css控制div颜色,所以设置类名为相应的css
div.className = 'small';
div.style.float = 'left';
box.appendChild(div)
});
// =================================闪烁效果=========================
var timeId = 0;
function showTime() {
timeId = window.setInterval(function(){
var divs = document.querySelectorAll('#box div');
for (var i = 0; i < divs.length; i += 1) {
divs[i].style.backgroundColor = randomColor();
}
}, 200);
}
// ========================停止闪烁=====================
function stopShow() {
if (timeId) {
window.clearInterval(timeId);
}
}
but2.addEventListener('click', function() {
if (but2.textContent == '闪 烁') {
but2.textContent = '暂 停';
showTime();
} else {
but2.textContent = '闪 烁';
stopShow();
}
});
</script>
</body>
</html>
网友评论