• python之路 JavaScript基础


    一、JavaScript简介

    JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为 浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

    二、组成部分

    ECMAScript,描述了该语言的语法和基本对象

    文档对象模型(DOM),描述处理网页内容的方法和接口。

    浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

    三、一些简单案例

    注:显示结果请自行测试

    1.简单的html输出

    <script>
        document.write('<h1>我是你耀哥</h1>')
    </script>
    此脚本请在开头测试,如果在尾部测试,那么会覆盖整个html页面

    2.简单的点击按钮弹出提示

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        function func(){
            alert('欢迎点击按钮') #alert是JavaScript用来测试用的函数 可以在浏览器中弹出信息
        }
    </script>
    </head>
    <body>
        <button value="按钮" onclick="func()">按钮</button> #当我点击按钮的时候 onclick事件调用函数
    </body>
    </html>
    当我点击按钮的时候,整个页面会弹出欢迎点击按钮信息

    3.改变页面元素内容

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        function  func(){
            var x = document.getElementById('demo');   #获取id
            x.innerHTML='我被改变了';                       #innerHTML是用来改变标签中的内容                    
        }
    </script>
    </head>
    <body>
    <p id="demo">我的是你耀哥</p>
    <button value="按钮" onclick="func()">按钮</button> #onclick事件调用func函数
    </body>
    </html>

    4.点击改变指定div的背景颜色

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>       #定义样式 高宽100px;颜色是aquamarine;
        #demo{           
            100px;
            height:100px;
            background-color:aquamarine;
        }
    </style>
    </head>
    <body>
        <div id="demo" onclick="func()"></div>
        <script>
            function func(){
                var x = document.getElementById('demo');    #获取id
                x.style.backgroundColor='gray';             #使用style函数改变背景颜色
        </script>
    </body>
    </html>

    5.验证表单,是否输入值

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <form>
    <p>用户名:</p><input id="demotext" type="text"/>
    <p>密 码:</p><input  id="demopass" type="password"/></br>
    <button  onclick="func()">提交</button>
    </form>
    <script>
    function func(){
        var x = document.getElementById('demotext').value;
        if(x.length==0){
            alert('用户名不能为空');
        }else{
            alert(x);
        }
        var y = document.getElementById('demopass').value;
        if(y.length==0){
            alert('密码不能为空');
        }else{
            alert(y);
        }
    }
    </script>
    </body>
    </html>

    四、存在方式

    HTML中的脚本必须位于 标签之间。

    脚本可被放置在 HTML 页面的 和 部分中。

    1.head中存放

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        alert('我是head中的脚本')
    </script>
    </head>
    <body>
    </body>
    </html>

    2.body中存放

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <script>
        alert('我是body中的脚本')
    </script>
    </body>
    </html>

    3.引入外部js文件

    <!DOCTYPE html>
    <html lang="en">
    <body>
    <script src="外部的js文件.js"></script>
    </body>
    </html>

    注:
    由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。

    五、基本语法

    1.注释

    单行注释 使用 “//”
    
    //            var x = document.getElementById('demo');
    
    多行注释 使用 “/*和*/结尾”
     /*   
    function func(){
        var x = document.getElementById('demotext').value;
        if(x.length==0){
            alert('用户名不能为空');
        }else{
            alert(x);
        }*/

    2.变量

    变量定义要求:

    1).变量必须以字母开头
    2).变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
    3).变量名称对大小写敏感(y 和 Y 是不同的变量)

    变量声明:

    var 变量名 = 赋值
    var 定义的是局部变量 js中用的最多的方法
    如果不加var 那么是全局变量。js用的较少。
    var a=1,b=2,c=3,

    在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。

    3.数据类型

    1).数字类型

    var a = 1;
    var b = 1.1;

    2).布尔类型

    布尔(逻辑)只能有两个值:true 或 false。  
    var x=true
    var y=false

    3)数组类型

    第一种:
    var arr=new Array();
    arr[0]="mayun";
    arr[1]="mahuateng";
    arr[2]="liuyao";
    第二种:
    var arr=['mayun','mahuateng','liuyao'];
    第三种:
    var arr=new Array('mayun','mahuateng','liuyao');
    用for循环打印数组内容
    <script>
        var arr=new Array();
        arr[0]="mayun";
        arr[1]="mahuateng";
        arr[2]="liuyao";
        for(i=0;i<arr.length;i++){
            alert(arr[i])
        }
    </script>

    4)undefined

    undefined表示未定义值

    5)null类型

    null是一个特殊值

    5)字符串类型

    var name = 'liuyao';
    var name = String("liuyao");
    var name_age = String(18);

    6)字典

    var items = {'k1': v2, 'k2': 'v2'}

    4.运算符

    运算符 = 用于赋值。

    运算符 + 用于加值。

    1.算术运算符

    2.赋值运算符

    案例:

    字符串拼接打印
    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
        txt1="liu yao";
        txt2="  da sha bi";
        txt3=txt1+txt2;
        alert(txt3)
    </script>
    </body>
    </html>

    3.比较运算符

    4.逻辑运算符

    4.条件语句

    1)if else

    if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
    if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
    if...else if....else 语句 - 使用该语句来选择多个代码块之一来执行

    语法:

    if (条件)
    {
    只有当条件为 true 时执行的代码
    }
    或者:
    if (条件){
    只有当条件为 true 时执行的代码
    }

    案例:

    <script>
    var num2 = 3
    if(num2>num1){
        alert('num1大于num2');
    }else{
        alert('num2小于num1');
    }
    </script>

    2) if else if else

    语法:

    if (条件 1)
    {
    当条件 1 为 true 时执行的代码
     }
    else if (条件 2)
    {
    当条件 2 为 true 时执行的代码
    }
    else
    {
    当条件 1 和 条件 2 都不为 true 时执行的代码
    }

    案例:

    <script>
    var num = 5;
    if(num>6){
        alert('num大于6');
    }else if(num<7){
        alert('num小于7');
    }else{
        alert('以上都不对');
    }

    3)switch语句

    switch 语句来选择要执行的多个代码块的其中一个。

    语法:

    switch(n)
    {
    case 1:
    执行代码块 1
    break;
    case 2:
    执行代码块 2
    break;
    default:
    n   与 case 1 和 case 2 不同时执行的代码
    }

    首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。

    案例:

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <input  id="demo" type="text"/>
    <button  onclick="func()">数字查询</button>
    <script>
        function func(){
            var x = document.getElementById('demo').value;
            var y = Number(x);
            switch(y){
                case 1:
                    alert('你输入的是1');
                    break;
                case 2:
                    alert('你输入的是2');
                    break;
                case 3:
                    alert('你输入的是3');
                    break;     
                default:
                alert('你输入的数不存在');       
            }
        }
    
    </script>
    
    </body>
    </html>

    4)循环语句

    JavaScript 支持不同类型的循环:

    for - 循环代码块一定的次数

    for/in - 循环遍历对象的属性

    语法:

    for (语句 1; 语句 2; 语句 3)
    {
     被执行的代码块
    }
    语句 1 在循环(代码块)开始前执行
    语句 2 定义运行循环(代码块)的条件
    语句 3 在循环(代码块)已被执行之后执行

    案例:

    循环打印十个数字
    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
        for(i=0;i<10;i++){
            document.write("<h1>"+i+"</h1>");
        }   
    </script>
    </body>
    </html>
    
    循环数组打印内容
    <!DOCTYPE html>
    <html>  
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
        var key = ['1','2','3','4','5'];
        for(i in key){
            document.write('<h1>'+i+'</h1>');
        }   
    </script>
    </body>
    </html>

    案例:循环数组

    var names = ["liuyao", "mayun", "aoteman"];
    
    
    // 数组:方式一
    for(var i=0;i<names.length;i++){
        console.log(i);
        console.log(names[i]);
    }
    
    
    // 数组:方式二
    for(var index in names){
        console.log(index);
        console.log(names[index]);
    }
    
    var names = {"name": "liuyao", "age": 18};
    
    
    // 字典:方式一
    for(var index in names){
        console.log(index);
        console.log(names[index]);
    }

    5)while语句

    while - 当指定的条件为 true 时循环指定的代码块

    do/while - 同样当指定的条件为 true 时循环指定的代码块

    语法:

    while (条件)
    {
    需要执行的代码
    }

    案例:

    循环打印
    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
        var i = 1;
        while(i<5){
            document.write('<h1>'+i+'</h1>');
            i++;
        }
    </script>
    </body>
    </html>

    do/while 循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。

    语法:

    do
     {
     需要执行的代码
     }
    while (条件);

    6)break和Continue 语句

    break 语句可用于跳出循环。如果之后有代码,那么继续执行:

    案例:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
        for (i=0;i<10;i++)
        {
            if (i==3)
            {
                document.write('break跳出了');
            break;
        }
            document.write('<h1>'+i+'</h1>');
        }
    </script>
    </body>
    </html>

    Continue 语句
    continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。

    案例:

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
    for (i=0;i<10;i++)
    {
        if (i==3)
        {
            document.write('break跳出了');
        continue;
    }
        document.write('<h1>'+i+'</h1>');
    }
    </script>
    </body>
    </html>

    5.异常操作

    try 语句测试代码块的错误。
    catch 语句处理错误。
    throw 语句创建自定义错误。

    语法:

    try
    {
     //在这里运行代码
     }
    catch(err)
     {
    //在这里处理错误
    }

    案例:

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
    try {
        adddlert("我是刘耀");
        }
    catch(err){
        alert('错误')
    }
    </script>
        </body>
    </html>

    6.函数

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

    案例:

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <button onclick="func()">点击按钮执行函数</button>
    <script>
    function func(){
        alert('func的函数')
    }
    </script>
    </body>
    </html>

    语法

    函数就是包裹在花括号中的代码块,前面使用了关键词 function:
    function functionname()
    {
    这里是要执行的代码
    }
    注:提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,
        并且必须以与函数名称相同的大小写来调用函数。

    不带参数函数:

    function func(){
        alert('func的函数')
    }

    自执行函数:

    (function(arg){
        alert(arg);
    })('123');

    调用带参数函数:

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <button onclick="func(1,2)">点击执行</button>
    <script>
        function func(num1,num2){
    
            alert(num1);
            alert(num2);
        }
    
    </script>
    </body>
    </html>

    带有返回值的函数:

    在使用 return 语句时,函数会停止执行,并返回指定的值。
    
    <!DOCTYPE html>
    <html>  
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
    function func()
    {
        var x = 5;
        return x;
    }
    var me = func();
    alert(me);
    </script>
    </body>
    </html>

    7.js标准库

    JavaScript 中的所有事物都是对象:字符串、数值、数组、函数..

    1.数组对象

    创建一个数组:

    var arr = ['liu','yao','18']

    length属性可设置或返回数组中元素的数目。

    <script>
    var arr = ['liu','yao','18'];
    num = arr.length;
    alert(num);
    </script>
    结果:3

    constructor 属性返回对创建此对象的数组函数的引用。

    <body>
    <script>
    var arr = ['liu','yao','18'];
    con = arr.constructor;
    alert(con);
    </script>

    concat()
    方法用于连接两个或多个数组。

    增加新元素
    <script>
    var arr = ['liu','yao','18'];
    document.write(arr.concat('1','2','3'));
    </script>
    两个数组链接
    <script>
    var num1 = ['1','2','3'];
    var num2 = ['4','5','6'];
    document.write(num1.concat(num2));
    </script>

    join()方法用于把数组中的所有元素放入一个字符串。可以按照分隔符存放

    <script>
    var arr = new Array(3);
    arr[0] = "liu";
    arr[1] = "yao";
    arr[2] = "yao";
    document.write(arr.join())
    </script>
    按照分隔符
    <script>
    var arr = new Array(3);
    arr[0] = "liu";
    arr[1] = "yao";
    arr[2] = "yao";
    document.write(arr.join('----'))
    </script>
    显示结果:
    liu----yao----yao

    pop()删除并返回数组的最后一个元素

    <script>
    var num = ['liu','yao','18'];
    document.write(num.pop())
    </script>

    push()向数组的末尾添加一个或更多元素,并返回新的长度。

    <script>
    var num = ['liu','yao','18'];
    document.write(num.push('22102107'))
    </script>

    reverse()颠倒数组中元素的顺序。

    <script>
    var num = ['liu','yao','18'];
    document.write(num.reverse())
    </script>

    shift() 删除并返回数组的第一个元素

    <script>
    var num = ['liu','yao','18'];
    document.write(num.shift())
    </script>

    unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

    <script>
        var arr = ['1','2','3'];
        alert(arr.unshift('4'));
    </script>

    slice()方法用于提取原数组的一部分,返回一个新数组,原数组不变。

    它的第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)。
    如果省略第二个参数,则一直返回到原数组的最后一个成员。

    <script>
    var arr = ['1','2','3','4','5','6','7'];
        alert(arr.slice(1,3));
    </script>

    splice方法用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员。它的返回值是被删除的元素。该方法会改变原数组。

    splice的第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素。

    // 格式
    arr.splice(index, count_to_remove, addElement1, addElement2, ...);
    
    <script>
    var arr = ['1','2','3','4','5','6','7'];
    alert(arr.splice(1,2,a,b));
    </script>

    sort() 对数组的元素进行排序

    var arr = ['1','2','3'];
    alert(arr.sort())

    valueOf()方法返回数组本身。

    var a = [1, 2, 3];
    a.valueOf();

    toString 方法返回数组的字符串形式。

    var a = [1, 2, 3];
    a.toString() 
    
    var a = [1, 2, 3, [4, 5, 6]];
    a.toString() 

    2.字符串对象

    创建

    var s = new String("abc");
    
    new String("abc")

    将任意类型的值转为字符串。

    String(true) 
    String(5) 

    fromCharCode()。该方法根据Unicode编码,生成一个字符串。

    <script>
    alert(String.fromCharCode(104, 101, 108, 108, 111));
    </script>

    charAt方法返回一个字符串的给定位置的字符,位置从0开始编号。

    <script>
    var arr = 'abcde';
    alert(arr.charAt(1));
    </script>

    charCodeAt方法返回给定位置字符的Unicode编码(十进制表示)。

    <script>
    var arr = 'abcde';
    alert(arr.charCodeAt(1));
    </script>

    concat方法用于连接两个字符串。

    <script>
    var s1 = 'abc';
    var s2 = 'def';
    alert(s1.concat(s2));
    </script>   

    substring()方法的第一个参数表示子字符串的开始位置,第二个位置表示结束结果。因此,第二个参数应该大于第一个参数。如果出现第一个参数大于第二个参数的情况,substring方法会自动更换两个参数的位置。

    <script>
    var arr = 'abcde';
    alert(arr.substring('1','2'));
    </script>

    substr方法的第一个参数是子字符串的开始位置,第二个参数是子字符串的长度。

    <script>
    var arr = 'abcdefghi';
    alert(arr.substr('2','5'));
    </script>

    slice方法的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置。与substring方法不同的是,如果第一个参数大于第二个参数,slice方法并不会自动调换参数位置,而是返回一个空字符串。

    <script>
    var arr = 'abcdefghi';
    alert(arr.slice('2','5'));
    </script>

    indexOf 和 lastIndexOf 方法

    indexOf从字符串头部开始匹配,lastIndexOf从尾部开始匹配。

    <script>
    var arr = 'abcdefghi';
    alert(arr.indexOf('b'));
    </script>
    
    <script>
    var arr = 'abcdefghi';
    alert(arr.lastIndexOf('h'));
    </script>

    toLowerCase 和 toUpperCase 方法

    toLowerCase用于将一个字符串转为小写,toUpperCase则是转为大写。

    <script>
    var arr = 'liuyao';
    alert(arr.toUpperCase());
    </script>
    
    <script>
    var arr = 'LIUYAO';
    alert(arr.toLowerCase());
    </script>

    trim()方法去除空格

    <script>
    var x = ' liuyao ';
    document.write('|');
    document.write(x);
    document.write('|');
    document.write(x.trim());#去除两边空格
    </script>

    查找和替换
    match方法

    match方法返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null。返回数组还有index属性和input属性,分别表示匹配字符串开始的位置(从0开始)和原始字符串。

    <script>
    var matches = "cat, bat, sat, fat".match("at");
    document.write(matches);
    document.write(matches.index);
    document.write(matches.input);
    </script>

    search方法

    search方法的用法等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1。

    <script>
    var matches = "cat, bat, sat, fat".search("at");
    document.write(matches);
    </script>

    replace方法

    replace方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)。

    <script>
    var matches = "cat, bat, sat, fat".replace("at","liuyao");
    document.write(matches);
    </script>

    split方法

    split方法按照给定规则分割字符串,返回一个由分割出来的各部分组成的新数组。
    
    <script>
    var matches = "cat|bat,|sat|fat".split("|");
    document.write(matches);
    </script>

    Date对象

    提供的日期和时间的操作接口。它有多种用法。

    Date对象可以直接调用,返回一个当前日期和时间的字符串

    <script>
     document.write(Date());
    </script>

    等待更新。。。

    JSON

    JavaScript Object Notation的缩写,它是一种数据交换格式。

    在JSON中,一共就这么几种数据类型:

    number: 和JavaScript的number完全一致;
    boolean:就是JavaScript的true或false;
    string:就是JavaScript的string;
    null:  就是JavaScript的null;
    array: 就是JavaScript的Array表示方式——[];
    object:就是JavaScript的{ ... }表示方式。

    1.序列化

    <script>
        var info = {
        name: '刘耀',
        age: 18,
        gender: true,
        height: 1.65,
        grade: null,
        'middle-school': 'IT',
        skills: ['JavaScript', 'Java', 'Python', 'Lisp']
    };
        document.write(JSON.stringify(info));
    </script>
    
    结果:
    {"name":"刘耀","age":18,"gender":true,"height":1.65,"grade":null,"middle-school":"IT","skills":["JavaScript","Java","Python","Lisp"]} 

    2.反序列化

    JSON.parse('[1,2,3,true]'); 
    JSON.parse('{"name":"刘耀","age":18}'); 
    JSON.parse('true'); 
    JSON.parse('123.45'); 

    8.面向对象编程

    面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装、继承、多态的特性!但 JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义JS中对象:无序属性的集合,其属性可以包含基本值、对象或者函数。可以简单理解为JS的 对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法)。

    基于Object对象

    <script>
    var person = new Object();
    person.name = 'liuyao';
    person.age = 18;
    person.getName = function(){
        return this.name;
    };
    var x = person.name;
    alert(x);
    </script>

    1.工厂模式创建

    <script>
    function createPerson(name, age, job) {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.getName = function () {
            return this.name;
        };
        return o;//使用return返回生成的对象实例
    }
    
    var x = createPerson('liuyao','18','IT'); #实例化
    alert(x.name);
    </script>

    注: 创建对象交给一个工厂方法来实现,可以传递参数,但主要缺点是无法识别对象类型,
    因为创建对象都是使用Object的原生构造函数来完成的。

    2、构造函数模式

    <script>
    function Person(name,age,job){
        this.name = name;
        this.age = age;
        this.job = job;
        this.getName = function () {
            return this.name;
        }
    }
    obj = new Person('liuyao','age','job');
    document.write(obj.name+'</br>');
    document.write(obj.age+'</br>');
    document.write(obj.job+'</br>');
    </script>

    用自定义的构造函数(与普通函数一样,只是用它来创建对象),定义对象类型(如:Person)的属性和方法。它与工厂方法区别在于:

    没有显式地创建对象
    直接将属性和方法赋值给this对象;
    没有return语句;
    此外,要创建Person的实例,必须使用new关键字,以Person函数为构造函数,传递参数完成对象创建;实际创建经过以下4个过程:

    创建一个对象

    将函数的作用域赋给新对象(因此this指向这个新对象,如:person1)

    执行构造函数的代码

    返回该对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .modal{
                /*display: none;*/
                400px;
                height:400px;
                background-color:gainsboro;
                position: fixed;
                top:50%;
                left: 50%;
                margin-left:-200px;
                margin-top:-200px;
            }
            .shadow{
    
                /*display: none;*/
                background-color:black;
                position: fixed;
                top:0;
                right:0;
                bottom:0;
                left:0;
                opacity:0.6;
    
            }
        </style>
    </head>
    <body>
        <input  onclick="preview()" type="button" value="添加" />
        <div id="a1" class="shadow" style="display: none;"></div>
        <div id="a2" class="modal" style="display: none;">
            <input type="text" />
            <input type="text" />
            <input type="text" />
            <input type="text" />
            <input type="submit" value="确定" />
            <input type="button" onclick="qx()" value="取消" />
        </div>
        <script>
            function preview(){
                if(document.getElementById("a1").style.display=='none')
                    { document.getElementById("a1").style.display='';
                    document.getElementById("a2").style.display='';}
                }
            function qx(){
                if (document.getElementById("a1").style.display=='')
                {document.getElementById("a1").style.display='none';
                document.getElementById("a2").style.display='none';}
            }
        </script>
    
    
    </body>
    </html>
    对话框
  • 相关阅读:
    springboot项目在IDEA根据不同的开发人员读取不同的配置文件
    Idea中一个服务按多个端口同时启动
    修改feign解析器替换json
    Intellij IDEA中启动多个微服务--开启Run Dashboard管理
    解决springboot乱码和window cmd乱码
    调用远程linux服务器shell脚本
    cp复制命令详解
    ftp列出具体目录的所有目录,和目录按照文件类型列出
    Linux下Redis开机自启(Centos)
    vsftpd 配置上传失败553
  • 原文地址:https://www.cnblogs.com/zhangkui/p/5789912.html
Copyright © 2020-2023  润新知