zoukankan      html  css  js  c++  java
  • JavaScript(二)

    1.javascript简介

    JavaScript是一门编程语言,但是和java无关
    JavaScript 是脚本语言
    JavaScript 是一种轻量级的编程语言。
    JavaScript 是可插入 HTML 页面的编程代码。
    JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
    JavaScript 很容易学习。

    2.引入方式

    // 注释方法
    1.单行注释
        //
    2.多行注释
        /**/
    
    / 引入方式 /
    1.script标签内部直接书写js代码
    2.引入外部js文件
    
    /*
    结束符
    js语言的结束符号是分号
    但是你在编写js代码的时候如果不加分号,也不会报错
    alert(123);
    */
    
    # JS编写平台
    1.支持代码编写的软件
    2.浏览器直接充当编辑器使用

    3.变量声明

    在js中定义变量需要使用关键字
    
    # 在python中
    username = 'simon'
    # 在js中需要使用关键字(var let)
    var username = 'simon'
    let username = 'xc'
    定义常量
    const pi = 3.14
    """
    let是ecs6新语法,使用它可以区分全局变量和局部变量的问题
    """
    var i = 10;
    for (var i=0;i<5;i++){
        console.log(i)
    }
    i
    5
    
    var j = 10;
    for(let j=0;j<5;j++){
        console.log(i)
    }
    j
    10

    4.JS的数据类型

    数值类型(包含了我们之前在python中学习的整型和浮点型)
    字符类型
    布尔值类型
    null与undefined
    自定义对象([],{})
    内置对象
    
    # 1.如何查看数据类型
    typeof
    
    
    # 1.数值类型中的NaN
    在数据类型转换的过程中,如果转换的对象无法变成数字就会返回NaN
    
    
    # 2.字符类型
    三种定义字符串的方式
    var name = 'simon'
    var name = "simon"
    var name = `simon666`
    """
    第三种也叫    模板字符串
    var username = 'simon';
    var age = 18;
    var res = `
    my name is ${username} and my age is ${age}
    `
    res
    "
    my name is simon and my age is 18
    "
    """
    # 在js中字符串的拼接推荐使用加号
    
    
    
    # 3.布尔值
    在js中布尔值全部都是小写而python中是首字母大写
    true
    false
    # ""(空字符串)、0、null、undefined、NaN都是false。
    
    
    # 4.null与undefined
    null表示值为空
    undefined只定义了没有给过值
    
    
    # 5.对象
    # 5.1 数组
    var l = [1,2,3,4,5]  # js中的数组表现形式上跟python列表很像
    
    var l1 = [111,222,333,444,555,666]
    l1.forEach(function(data,index){
        console.log(date,index)
    })
    # 第一个是元素本身 第二个是索引值 第三个是元素来自于谁
    l1.forEach(function(data,index,arr){
        console.log(data,index,arr)
    })
    
    
    1.splice(1,2)  # 第一个起始位置  第二个是删除的元素个数
    (2) [222, 333]
    l1
    (4) [111, 444, 555, 666]
    l1.splice(0,3,666)  # 第三个参数是要添加的元素
    
    # 5.2自定义对象
    # 第一种定义方式
    var obj = {'username':'simon',"password":123}
    undefined
    typeof obj
    "object"
    obj['username']
    "simon"
    obj.username
    "simon"
    # 第二种定义方式
    var obj1 = new Object()
    undefined
    obj1
    {}
    obj1.username = 'simon'
    "simon"
    obj1.password = 123
    123
    obj1
    {username: "simon", password: 123}

    5.运算符

    var x=10;
    var res1=x++;
    var res2=++x;
    res1;
    10
    res2;
    12
    
    // 比较运算符
    # 弱等于
    5 == '5'  # js会自动转换成相同的数据类型再做比较
    # 强等于
    5 === '5'  # 不让js自动帮你转换
    
    
    // 逻辑运算符
    在python中            在js中
    and                        &&
    or                        ||
    not                         !

    6.流程控制

    """
    固定句式
        关键字(条件){子代码}
    """
    var a = 10;
    if (a > 5){
      console.log("yes");
    }else {
      console.log("no");
    }
    
    var a = 10;
    if (a > 5){
      console.log("a > 5");
    }else if (a < 5) {
      console.log("a < 5");
    }else {
      console.log("a = 5");
    }
    # 星期几是从0-6  0表示星期日
    var day = new Date().getDay();
    switch (day) {
      case 0:
      console.log("Sunday");
      break;  # 如果不写就会一致往后执行
      case 1:
      console.log("Monday");
      break;
    default:  # 没有匹配项的时候走的
      console.log("...")
    }
    
    
    b = 10
    if b > 5:
        print('yes')
    else:
        print('no')

    7.循环结构

    """
    for(条件){
        子代码
    }
    """
    var l = [111,222,333,444,555,666,777]
    for(let i=0;i<l.length;i++){
        console.log(l[i])
    }
    """
    while(条件){
        子代码
    }
    """
    var i = 0;
    while (i < 10) {
      console.log(i);
      i++;
    }
    
    """
    三元运算
    在python中
    x = 10
    res = '哈哈哈' if x > 20 else '嘿嘿嘿'
    print(res)
    
    在js中
    var a = 1;
    var b = 2;
    var c = a > b ? a : b
    //这里的三元运算顺序是先写判断条件a>b再写条件成立返回的值为a,条件不成立返回的值为b;三元运算可以嵌套使用;
    var a=10,b=20;
    var x=a>b ?a:(b=="20")?a:b;
    
    x
    10
    """

    8.函数

    # 在python定义函数
    def index(x,y):
        return x,y
    
    # 在js中
    """
    function(参数){函数体代码}
    """
    function(x,y){
        return x,y
    }
    # arguments关键字 可以获取到调用函数的时候所有的实际参数 是一个数组
    
    
    # 箭头函数
    箭头的左边是参数右边是返回值
    var f = function(v){
      return v;
    }
    // 等同于
    var f = v => v;
    
    var sum = (num1, num2) => num1 + num2;
    // 等同于
    var sum = function(num1, num2){
      return num1 + num2;  //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中
    }

    9.内置对象

    var d1 = new Date();
    console.log(d1.toLocaleString());
    
    var d = new Date(); 
    //getDate()                 获取日
    //getDay ()                 获取星期
    //getMonth ()               获取月(0-11)
    //getFullYear ()            获取完整年份
    //getYear ()                获取年
    //getHours ()               获取小时
    //getMinutes ()             获取分钟
    //getSeconds ()             获取秒
    //getMilliseconds ()        获取毫秒
    //getTime ()                返回累计毫秒数(从1970/1/1午夜)
    
    JSON对象
    # 在python中
    import json
    json.dumps()  # 序列化
    json.loads()  # 反序列化
    
    # 在js中
    JSON.stringify()  # 序列化
    JSON.parse()  # 反序列化
    
    
    RegExp对象
    # 在js中定义正则表达式有两种方式
    // 定义正则表达式两种方式
    var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
    var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;
    // 正则校验数据
    reg1.test('jason666')
    reg2.test('jason666')
    // 全局模式下
    var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g
    undefined
    var info = 'egondsb'
    undefined
    reg2.test(info)
    true
    reg2.test(info)
    false
    
    
    reg2.test()  # 不给默认匹配的是undefined
    true
    
    var r = /undefined/
    undefined
    r.test()
    true
    r.test('undefined')
    true
    
    typeof undefined
    "undefined"

    10.BOM操作

    浏览器对象模型
    window.open('https://www.baidu.com','','height=400px,width=400px')
    window.open('https://www.baidu.com','','height=400px,width=400px,top=200px,left=200px')
    window.close()  # 关闭当前界面
    
    window.history.forward()  // 前进一页
    window.history.back()  // 后退一页
    
    window.location.href  获取URL
    window.location.href="URL" // 跳转到指定页面
    
    
    alert(123)
    confirm('你确定吗')
    prompt('写点什么吧')
    
    计时器相关
    // 3秒之后再执行函数
    // t = setTimeout(f1,3000);
    // 清除定时器
    // clearTimeout(t)
    
    // 每个3秒触发一次
    res = setInterval(f1,3000);
    // 清除定时器
    res = clearInterval(res)

    11.DOM操作

    # 查看标签
    document.getElementById('d1')  # 直接返回标签对象
    document.getElementsByClassName('c1')  # 返回的是数组
    document.getElementsByTagName('p')  # 返回的是数组
    
    # 简介查找
    parentElement            父节点标签元素
    children                 所有子标签
    firstElementChild        第一个子标签元素
    lastElementChild         最后一个子标签元素
    nextElementSibling       下一个兄弟标签元素
    previousElementSibling   上一个兄弟标签元素
    
    
    
    var aEle = document.createElement('a');
    aEle.href = 'https://www.baidu.com'
    aEle.setAttribute('username','jason')
    <a href=​"https:​/​/​www.baidu.com" username=​"jason">​</a>​
    aEle.innerText = '百度'
    dEle = document.getElementById('d1')
    dEle.appendChild(aEle)
    """
    在给标签命名的时候我们习惯使用
    xxxEle的方式
        divEle
        pEle
        aEle
    """
    
    divEle.innerHTML
    "
        <span class="c2">sss</span>
        <p class="c1">ppp</p>
    "
    divEle.innerHTML = 'hahahahahah'
    "hahahahahah"
    divEle.innerText = '<h1>111</h1>'  # 无法识别HTML并自动转换
    "<h1>111</h1>"
    divEle.innerHTML = '<h1>111</h1>'  # 可以识别并转换
    "<h1>111</h1>"
    
    
    # 获取input里面的用户数据
    inputEle = document.getElementById('d1')
    inputEle.value
    "weeqewqewqewqewewqeqw"
    inputEle.value = 'jason'
    "jason"
    
    var input1Ele = document.getElementById('d2')
    undefined
    d2.value
    "C:fakepath
    eadme.txt"
    d2.files
    FileList {0: File(69), length: 1}
    d2.files[0]  # 文件对象
    """
    with open() as f:
        pass
    """

    12.类属性操作

    divEle.classList
    DOMTokenList(3) ["c1", "bg-red", "bg-green", value: "c1 bg-red bg-green"]
    divEle.classList.add('ccc')
    undefined
    divEle.classList.remove('bg-green')
    undefined
    divEle.classList.contains('ccc')
    true
    divEle.classList.toggle('bg-green')  # 有则删除无则添加
    true
    divEle.classList.toggle('bg-green')
    false

    13.CSS样式操作

    js操作css样式统一语法
    """
    标签对象.style.属性
    """
    obj.style.backgroundColor="red"
    obj.style.margin
    obj.style.width
    obj.style.left
    obj.style.position

    14.事件

    给不同的标签绑定不同的事件:点击不同的标签可以触发不同的动作
        
    # js绑定事件的方式
    """
    标签对象.事件名 = function(){
        事件对应的具体步骤
    }
    """
    # 两种方式
    <button  onclick="f1()">按钮1</button>
    <button id="d1">按钮2</button>
    <script>
        function f1() {
            alert('按钮一被点击了')
        }
    
        var bEle = document.getElementById('d1');
        bEle.onclick = function () {
            alert('按钮2被点击了')
        }
    </script>
  • 相关阅读:
    .Net Core调用NodeJs
    ASP.NET Core中间件中渲染Razor视图
    ASP.NET Core自定义View查找路径,实现主题切换
    Core路由2-Endpoint终结点路由
    Core路由1
    .NET Core的本地化机制(多语言)【转】
    实现ASP.NET Core MVC的插件式开发(ApplicationPart)
    Gitflow工作流程
    Git-开发中遇到紧急任务如何处理
    多线程笔记-CancellationToken(取消令牌)
  • 原文地址:https://www.cnblogs.com/yangmeichong/p/14167041.html
Copyright © 2011-2022 走看看