zoukankan      html  css  js  c++  java
  • javascript之进阶

    一 模态框

      1 什么是模态框

      模态框(Modal)是覆盖在父窗体上的子窗体。指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。

      2 模态框的简单示例。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding:0;
    
            }
            .back{
                 100%;
                height: 2000px;
    
            }
    
            .hide{
                display: none;
            }
            .shadow{
                position: fixed;
                top: 10px;
                bottom: 10px;
                left: 10px;
                right: 10px;
                background-color: lightblue;
                opacity: 0.5;
            }
            .model{
                position: fixed;
                top: 200px;
                left: 500px;
                 500px;
                height: 300px;
                background-color: gold;
            }
        </style>
    </head>
    <body>
    <div class="back">
        <button >添加</button>
        <div class="shadow hide item">
            <div class="model hide item">
                <form action="">
                    <p>姓名<input type="text"></p>
                    <p>年龄<input type="text"></p>
                    <p>班级<input type="text"></p>
                    <p>
                        <input type="button" value="取消" class="cancel">
                        <input type="button" value="确认" class="confirm">
                    </p>
                </form>
            </div>
        </div>
    </div>
    <script>
        var ele_add=document.getElementsByTagName('button')[0];
    
        var ele_item=document.getElementsByClassName('item');
        ele_add.onclick=function () {
            for (var i=0;i<ele_item.length;i++){
                ele_item[i].classList.remove('hide')
    
            }
        var ele_confirm=document.getElementsByClassName('confirm')[0];
        ele_confirm.onclick=function () {
            for (var j=0;j<ele_item.length;j++){
                ele_item[j].classList.add('hide')
    
            }
    
        }
        }
    </script>
    </body>
    </html>

    二 事件触发

      1 onfocus和onblur

      onfocus:事件在对象获得焦点时发生。

      onblur:事件会在对象失去焦点时发生

      示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <p >姓名<input type="text" class="c1"></p>
        <p >年龄<input type="text" class="c1"></p>
        <script>
            var ele=document.getElementsByClassName('c1');
    
            for(var i=0;i<ele.length;i++){
                ele[i].onfocus=function () {
                    this.style.backgroundColor='red';
                };
                ele[i].onblur=function () {
                    this.value=this.value.toUpperCase();
                }
            }
        </script>
    </body>
    </html>

      2 onchange 事件会在域的内容改变时发生。

      onchange 事件会在域的内容改变时发生。

      onchange 事件也可用于单选框与复选框改变后触发的事件。

      onchange 属性可以使用的对象: <input>, <select>, 和 <textarea>。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <select name="" id="pro">
        <option value="pro">省份</option>
        <option value="1">山东省</option>
        <option value="2">河南省</option>
    </select>
    <select name="" id="city">
        <option value="">城市</option>
    
    </select>
    <script>
        var date={'1':['济南','青岛'],'2':['阜阳','开封']};
        var ele_pro=document.getElementById('pro');
        var ele_city=document.getElementById('city');
    
        ele_pro.onchange=function () {
            ele_city.options.length=0;
            var citys=date[ele_pro.value];
            for (var i=0;i<citys.length;i++){
            var ele_option=document.createElement('option');
            ele_option.innerText=citys[i];
            ele_city.appendChild(ele_option);
        }
        }
    </script>
    </body>
    </html>

      3 onsubmit

      onsubmit 属性在提交表单时触发。

      onsubmit 属性只在 <form> 中使用。即时form对象调用onsubmit方法。

      PS :return false。用于阻止js方法继续执行。return false 一般用于判断条件不符合之后使用。

        return false 之后的所有相关的触发事件和动作都不会被执行。阻止事件继续传播,事件冒泡和默认行为都被阻止

        setTimeout:setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

      示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="">
        <p><input type="text" class="inp"><span class="error"></span></p>
        <input type="submit" value="提交">          //type='submit'
    </form>
    <script>
        function foo() {
            ele_error.innerText='';
        }
        var ele_error=document.getElementsByClassName('error')[0];
        var ele_input=document.getElementsByClassName('inp')[0];
        var ele_form=document.getElementsByTagName('form')[0];
        console.log(ele_error,ele_input,ele_form);
        ele_form.onsubmit=function () {            //是form对象调用onsubmit,form对象内一定要有input type=submit
    //        console.log(ele_input.value)
            var inp_value=ele_input.value;
            console.log(inp_value);
            if(inp_value.length<4){
    
    
            }
            else {
                ele_error.innerText='请重新输入!';    //span标签改值用innerTEXT或innerHTML。
                setTimeout(foo,3000);
                return false;
            }
        }
    </script>
    </body>
    </html>

       4 onselect

      onselect 事件会在文本框中的文本被选中时发生。

      支持该事件的 HTML 标签:<input type="text">, <textarea>

      5 onkeydown

      onkeydown 事件会在用户按下一个键盘按键时发生。

      示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <input type="text">
        <script>
            var ele_inp=document.getElementsByTagName('input')[0];
            ele_inp.onkeydown=function (event) {
                if (event.keyCode==13){
                    alert(123)
                }
            }
        </script>
    </body>
    </html>

      6 onmouseleave

       onmouseover

      示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="">
        <input type="text">
    </form>
    <script>
        var ele_inp=document.getElementsByTagName('input')[0]
        ele_inp.onmouseover=function () {
            this.value='over';
    
        }
        ele_inp.onmouseout=function () {
            this.value='leave'
        }
    </script>
    </body>
    </html>

      7checkbox对象的checked属性

      checked 属性设置或返回 checkbox 是否应被选中。

      checkboxObject.checked=true|false。

      

    三 事件委派

      1 什么是事件委派

      通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。

    也就是:利用冒泡的原理,把事件加到父级上,触发执行效果。

      2 应用场景

        1)为了解决后加入的元素没有绑定事件的问题。

        我们知道在js中,事件处理只能绑定在当前被选中的元素上,换句话也就是说,事件处理只能绑定在当前文档已经存在的元素上!但是,往往小伙伴们都会遇到一个问题就是,我的元素是后来动态添加到页面的,而我又想给该元素绑定事件,怎么处理?

        为了说明白这一问题,我们假设需要给后来添加到当前页面的元素添加click事件。解决这一问题的核心就是利用js的委托事件。委派事件的优势就是可以给未存在的元素绑定事件。

        2)为了简化操作。

        举一个最简单的例子:当页面上有1000个div的时候,如果直接给div绑定click事件,其会为1000个元素绑定事件。但是,如果用事件委托,只需要一个元素绑定事件即可。

        示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
            <li>444</li>
        </ul>
        <input type="button" value="创建">
        <script>
            var ele_ul=document.getElementsByTagName('ul')[0]
            ele_ul.addEventListener('click',function (e) {
                e.target.style.color='red';
            })
            var ele_btn=document.getElementsByTagName('input')[0]
            ele_btn.onclick=function () {
                var ele_li=document.createElement('li')
                ele_li.innerText=555
                ele_ul.appendChild(ele_li)
    
            }
        </script>
    </body>
    </html>

    四 Event对象

      1 什么是Event对象

       Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行!

      2 事件句柄 Event Handles

      事件句柄是指事件发生时要进行的操作。

      每一个事件均对应一个事件句柄,在程序执行时,将相应的函数或语句指定给事件句柄,则在该事件发生时,浏览器便执行指定的函数或语句,从而实现网页内容与用户操作的交互。当浏览器检测到某事件发生时,便查找该事件对应的事件句柄有没有被赋值,如果有,则执行该事件句柄。

      HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为。

      

      3 标准Event属性

      

      PS:

      target定义:

        target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口。

    语法:

        event.target

        event.target.nodeName    //获取事件触发元素标签name(li,p...)

        event.target.id       //获取事件触发元素id

        event.target.className  //获取事件触发元素classname

        event.target.innerHTML  //获取事件触发元素的内容(li)

        等。。。

  • 相关阅读:
    编译JDK12
    Hexo Next背景动画Canvas_nest:true设置无效
    素数
    Linux 命令行样式
    四种排序算法实现
    Java中的简单容器
    一个关于2的次方问题
    LeetCode--20.有效的括号
    Java中的注释
    关于Metasploitable的测试
  • 原文地址:https://www.cnblogs.com/654321cc/p/7833692.html
Copyright © 2011-2022 走看看