美文网首页
2018-11-07day8-动态添加删除元素作业

2018-11-07day8-动态添加删除元素作业

作者: MW演员 | 来源:发表于2018-11-07 21:42 被阅读0次

一、添加和删除元素

<!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">添&emsp;加</button>
            <button class="but2">闪&emsp;烁</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>

相关文章

网友评论

      本文标题:2018-11-07day8-动态添加删除元素作业

      本文链接:https://www.haomeiwen.com/subject/odpbxqtx.html