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)

        等。。。

  • 相关阅读:
    修复PLSQL Developer 与 Office 2010的集成导出Excel 功能
    Using svn in CLI with Batch
    mysql 备份数据库 mysqldump
    Red Hat 5.8 CentOS 6.5 共用 输入法
    HP 4411s Install Red Hat Enterprise Linux 5.8) Wireless Driver
    变更RHEL(Red Hat Enterprise Linux 5.8)更新源使之自动更新
    RedHat 5.6 问题简记
    Weblogic 9.2和10.3 改密码 一站完成
    ExtJS Tab里放Grid高度自适应问题,官方Perfect方案。
    文件和目录之utime函数
  • 原文地址:https://www.cnblogs.com/654321cc/p/7833692.html
Copyright © 2011-2022 走看看