js4.11

增加删除水果表格

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            #fruits {
                width: 120px;
                margin: 20px 20px;
            }
            #fruits>li {
                list-style-type: none;
                height: 40px;
                color: white;
                background-color: #009966;
                line-height: 40px;
                text-align: center;
                margin-top: 2px;
            }
            #fruits>li>a {
                float: right;
                color: white;
                text-decoration: none;
            }
            #fruits~input {
                border: none;
                outline: none;
                text-align: center;
                margin: 20px 15px;
            }
            input[type=text] {
                border-bottom: 1px solid gray !important;
            }
            #ok {
                width: 80px;
                height: 30px;
                background-color: #CC3333;
                color: white;
            }
        </style>
    </head>
    <body>
        <div id="container">
            <ul id="fruits">
                <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>
            function addListItem() {
                let name = input.value.trim()
                if (name) {
                    // 通过document对象的createElement方法创建新元素
                    let li = document.createElement('li')
                    // 可以用textContent或innerHTML属性来修改标签的内容
                    li.innerHTML = name
                    let a = document.createElement('a')
                    a.innerHTML = '&times;'
                    a.href = ''
                    a.addEventListener('click', removeListItem)
                    li.appendChild(a)
                    // 通过父元素的appendChild或insertBefore可以添加子元素
                    ul.appendChild(li)
                    input.value = ''
                    // 元素的focus和blur方法可以让元素获得或失去焦点
                    input.focus()
                }
            }
            
            function removeListItem(evt) {
                // evt.stopPropagation()
                // 通过事件对象的preventDefault方法阻止事件的默认行为
                evt.preventDefault()
                // 通过元素获取父元素 - parentNode
                // 通过元素获取子元素 - children / firstElementChild / lastElementChild
                // 通过元素获取兄弟元素 - previousElementSibling / nextElementSibling
                let li = evt.target.parentNode
                // 通过父元素的removeChild方法可以删除指定的子元素
                ul.removeChild(li)
            }
            
            const ul = document.querySelector('#fruits')
            const input = ul.nextElementSibling
            input.addEventListener('keypress', (evt) => {
                let code = evt.keyCode || evt.which
                if (code == 13) {
                    addListItem()
                }
            })
            const ok = input.nextElementSibling
            ok.addEventListener('click', addListItem)
            let anchors = document.querySelectorAll('#fruits>li>a')
            for (let i = 0; i < anchors.length; i += 1) {
                // addEventListener方法有三个参数
                // 第一个参数是事件的名称,例如: click / dbclick / mouseover / mouseout 
                // 第二个参数是事件发生时要执行的回调函数,函数的参数是事件对象:
                //  ~ 传入一个已有函数的名字
                //  ~ 写一个匿名函数 function(evt) {}
                //  ~ 写一个箭头函数 (evt) => {}
                // 第三个参数表示使用事件捕获还是事件冒泡,如果不写表示事件冒泡(从里向外传播事件)
                //  ~ 如果设置为true表示事件捕获(从外向里传播事件)
                //  ~ 如果希望阻止事件的传播行为可以调用事件对象的stopPropagation方法
                anchors[i].addEventListener('click', removeListItem)
            }
        </script>
    </body>
</html>


jQuery

<!-- 引入jQuery -->
        <script src="js/jquery.min.js"></script>
        <!-- <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> -->
        <script>
            // $('选择器') --> jQuery对象 --> 封装了很多的方法
            $('#pretty').on('click', () => {
                $('#data>tbody>tr:odd').css('background-color', 'lightgray')
                $('#data>tbody>tr:even').css('background-color', 'lightgreen')
            })
            $('#clear').on('click', () => {
                $('#data>tbody>tr>td').empty()
            })
            $('#remove').on('click', () => {
                $('#data>tbody>tr:last-child').remove()
            })
            $('#hide').on('click', () => {
                let title = $('#hide').text()
                if (title == '表格淡出') {
                    $('#data').fadeOut(1000, () => {
                        $('#hide').text('表格淡入')
                    })
                } else {
                    $('#data').fadeIn(2000, () => {
                        $('#hide').text('表格淡出')
                    })
                }
            })
        </script>

闪烁的马赛克

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            div{
                margin:10px auto;
                text-align: center;
            }
            #box{
                width: 800px;
                height: 400px;
                border: 2px #000000 solid;
                overflow: hidden;
            }
/*          .blockage{
                width: 80px;
                height: 80px;
                float: left;
                margin: 0;
            } */
        </style>
    </head>
    <body>
        <div id="box">

        </div>
        <div id="">
            <button id="addBox" type="button">添加</button>
            <button type="button">闪烁</button>
        </div>
        <script>
            function randomColor(){
                let r = parseInt(Math.random()*256)
                let g = parseInt(Math.random()*256)
                let b = parseInt(Math.random()*256)
                return `rgb(${r}, ${g}, ${b})`
            }
            const addBoxs = document.querySelectorAll('div>button')
            const box = document.getElementById('box')
            var times, listBox = [], num = 0, falg = false
            addBoxs[0].addEventListener('click', () => {
                let div = document.createElement('div')
                listBox[num]= div
                num += 1
                // div.class='blockage'
                div.style.width='80px'
                div.style.height='80px'
                div.style.margin='0'
                div.style.float='left'
                div.style.backgroundColor=randomColor()
                box.appendChild(div)
            })
            addBoxs[1].addEventListener('click',() => {
                falg = !falg
                if(falg){
                    addBoxs[1].textContent = '暂停'
                    times = setInterval(flicker,100)
                }else{
                    addBoxs[1].textContent = '闪烁'
                    clearInterval(times)
                }
            })
            function flicker() {
                for(let i = 0;i < listBox.length; i += 1){
                    listBox[i].style.backgroundColor=randomColor()
                }
            }
        </script>
    <!--    <script src="js/jquery.min.js"></script> -->
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
        <script>
            alert($)
        </script>
    </body>
</html>


重要

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            #fruits {
                width: 120px;
                margin: 20px 20px;
            }
            #fruits>li {
                list-style-type: none;
                height: 40px;
                color: white;
                background-color: #009966;
                line-height: 40px;
                text-align: center;
                margin-top: 2px;
            }
            #fruits>li>a {
                float: right;
                color: white;
                text-decoration: none;
            }
            #fruits~input {
                border: none;
                outline: none;
                text-align: center;
                margin: 20px 15px;
            }
            input[type=text] {
                border-bottom: 1px solid gray !important;
            }
            #ok {
                width: 80px;
                height: 30px;
                background-color: #CC3333;
                color: white;
            }
        </style>
    </head>
    <body>
        <div id="container">
            <ul id="fruits">
                <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 src="js/jquery.min.js"></script>
        <script>
            function removeListItem(evt) {
                evt.preventDefault()
                // $函数的参数是一个原生的JavaScript对象,返回与原生JavaScript对象对应的jQuery对象
                $(evt.target).parent().remove()
            }
            // $函数的四种用法:
            // $函数的参数是一个匿名函数或箭头函数,传入的函数是页面加载完成后要执行的回调函数
            $(() => {
                // $函数的参数是一个样式表选择器字符串,获取页面元素得到一个jQuery对象(伪数组 - 数组中装的是原生JavaScript对象)
                $('#fruits>li>a').on('click', removeListItem)
                
                $('#ok').on('click', (evt) => {
                    let input = $('#ok').prev();
                    let name = input.val().trim()
                    if (name) {
                        $('#fruits').append(
                            // $函数的参数是一个标签字符串,创建一个新的元素并获得对应的jQuery对象
                            $('<li>').text(name).append(
                                $('<a href="">').html('&times;').on('click', removeListItem)
                            )
                        )
                    }
                    input.val('').get(0).focus()
                })
            })
        </script>
    </body>
</html>


重要2

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #data {
                border-collapse: collapse;
            }
            #data td, #data th {
                width: 120px;
                height: 40px;
                text-align: center;
                border: 1px solid black;
            }
            #buttons {
                margin: 10px 0;
            }
            #adv {
                width: 200px;
                height: 200px;
                position: absolute;
                top: 10px;
                right: 10px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <table id="data">
            <caption>数据统计表</caption>
            <thead>
                <tr>
                    <th>姓名</th>
                    <th>年龄</th>
                    <th>性别</th>
                    <th>身高</th>
                    <th>体重</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Item1</td>
                    <td>Item2</td>
                    <td>Item3</td>
                    <td>Item4</td>
                    <td>Item5</td>
                </tr>
                <tr>
                    <td>Item1</td>
                    <td>Item2</td>
                    <td>Item3</td>
                    <td>Item4</td>
                    <td>Item5</td>
                </tr>
                <tr>
                    <td>Item1</td>
                    <td>Item2</td>
                    <td>Item3</td>
                    <td>Item4</td>
                    <td>Item5</td>
                </tr>
                <tr>
                    <td>Item1</td>
                    <td>Item2</td>
                    <td>Item3</td>
                    <td>Item4</td>
                    <td>Item5</td>
                </tr>
                <tr>
                    <td>Item1</td>
                    <td>Item2</td>
                    <td>Item3</td>
                    <td>Item4</td>
                    <td>Item5</td>
                </tr>
                <tr>
                    <td>Item1</td>
                    <td>Item2</td>
                    <td>Item3</td>
                    <td>Item4</td>
                    <td>Item5</td>
                </tr>
            </tbody>
        </table>
        <div id="buttons">
            <button id="pretty">隔行换色</button>
            <button id="clear">清除数据</button>
            <button id="remove">删除一行</button>
            <button id="hide">表格淡出</button>
        </div>
        <div id="adv"></div>
        <script>
            const pretty = document.querySelector('#pretty')
            pretty.addEventListener('click', (evt) => {
                let rows = document.querySelectorAll('#data>tbody>tr')
                rows.forEach((row, i) => {
                    let color = (i % 2 == 0 ? 'lightgray' : 'lightseagreen')
                    row.style.backgroundColor = color
                })
            })
            
            const clear = document.querySelector('#clear')
            clear.addEventListener('click', (evt) => {
                let cols = document.querySelectorAll('#data>tbody>tr>td')
                cols.forEach((col) => {
                    col.innerHTML = ''
                })
            })
            const remove = document.querySelector('#remove')
            remove.addEventListener('click', (evt) => {
                let tbody = document.querySelector('#data>tbody')
                let lastRow = tbody.lastElementChild
                if (lastRow) {
                    tbody.removeChild(lastRow)
                }
            })
            
            var opacity = 100
            var delta = -5
            const table = document.querySelector('#data')
            const hide = document.querySelector('#hide')
            hide.addEventListener('click', (evt) => {
                let button = evt.target
                setTimeout(function() {
                    opacity += delta
                    table.style.opacity = opacity / 100
                    if (opacity == 0 || opacity == 100) {
                        delta = -delta
                        button.textContent = opacity == 0? '表格淡入' : '表格淡出'
                    } else {
                        setTimeout(arguments.callee, 50)
                    }
                }, 50)
            })  
            
            let adv = document.querySelector('#adv')
            adv.addEventListener('click', (evt) => {
                // 读取样式
                let currentStyle = document.defaultView.getComputedStyle(adv)
                let top = parseInt(currentStyle.top) + 5
                // 修改样式
                adv.style.top = top + 'px'
                let right = parseInt(currentStyle.right) + 5
                adv.style.right = right + 'px'
            })
        </script>
    </body>
</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容

  • 1.埋点是做什么的 2.如何进行埋点 3.埋点方案的设计 近期常被问到这个问题,我担心我的答案会将一些天真烂漫的孩...
    lxg阅读 2,018评论 0 1
  • 洛克的这本名著,虽然创作于17世纪,距今已经300多年了,但是今天读来,仍然觉得很有意义。很多思想并没有过时。 这...
    知乐行阅读 3,776评论 1 7
  • 书籍导图: 文字版: 《穷查理宝典》 1 第一章 查理·芒格传略 1.1 歌颂长者:芒格论晚年 1.2 忆念:晚辈...
    子东笔记阅读 2,913评论 3 16
  • 今年我22岁,但是我一点都不认同,虽然户口本上是这么写的。再加上考了两年的高考,因此我也变成了寝室里面的老二。 在...
    风重阅读 1,031评论 11 22
  • 回顾目标:1.制定每日计划2.高质量完成每日学习打卡复盘3.熟练录制视频,剪辑在15秒内上传抖音4.每日复盘,重点...
    沐沐jessica阅读 91评论 0 0