zoukankan      html  css  js  c++  java
  • web框架之JavaScript基本使用(python3入门)

    1 js引入

    <html>
        <body>
        </body>
        <script src="js/xxx.js"></script>
        <script>
            // js代码块
        </script>
    </html>
    js引入

    2 js的基本数据类型

    // 值类型: number  string  boolean  undefined
    
    // 引用类型: function object(dic)
    
    // 特殊的对象类型: Null Array Date RegExp Math

    3 js数组与字典操作

    // 数组
    var arr = [5, 2, 3, 1, 4];
    // unshift() | push()
    // shift() | pop()
    // splice(beginIndex, ctrlCount, newArgs);
    // sort()
    
    // 字典
    var dic = {
        k1: v1,
        ...
        kn: vn
    }
    // key一定是字符串类型, value可以为任意类型
    // 怎么表示字典成员: dic.key  | dic['key']
    // delete dic.key来删除
    js数组与字典操作

    4 js函数

    // 1.定义函数 function 函数名(形参列表) { 代码块 }
    function fn1() {
        console.log('我是函数fn1');
    }
    var fn2 = function () {
        console.log('我是函数fn2');
    };
    // js匿名函数: 只能在定义阶段被调用一次
    (function() {
        console.log('我是匿名函数');
    })();  // (fn定义)() 第一个()是将定义的fn作为整体拿到内存地址,第二个()是函数的调用
    
    // 2.函数的调用 函数名(实参列表)
    fn1();
    fn2();
    
    // 3.函数的返回值 js函数有且只有一个返回值
    function fn3() {
        // 没有明确返回值返回undefined
    
        // 空返回返回undefined
        // return;
    
        // 正常返回一个值
        // return 10;
    
        // 如果返回多个值, js最终只能返回最后一个值 20
        // return 10, 20;
    
        // 如何实现返回多个值 借助 数组和字典
        return [10, 20]
    }
    var res = fn3();
    console.log(res);
    
    // 4.函数的参数
    // i) 形参与实参个数不需要统一, 但一定按位置传参
    function fn4(a, b) {  // 实参少传,就会由形参未被赋值, 实参多传,多传的实参就会被丢弃
        console.log(a, b)
    }
    fn4(10, 20, 30)
    
    // ii) 带值的形参就是默认值参数,位置随意
    function fn5(a, b=10, c, d=20) {  // b有默认值对应在c之前意义不大,原因要给c赋值,一定给b赋值完了
        console.log(a, b, c, d)
    }
    fn5(100, 200, 300);
    
    // iii) ...args为不定长形参
    function fn6(a, ...b) { // 不定长参数有数组存储
        console.log(a, b)
    }
    fn6({name:'Bob'}, 1, 2, 3, 4, 5)
    js函数操作

    5 js完成页面交互

    // 1.通过js选择器获取页面标签对象
    // 2.为该对象绑定事件, 当该标签触发该事件时就会调用绑定的函数
    // 3.在绑定的函数内部完成指定的业务逻辑
    // js完成与页面进行交互, 该js一定要写在body的最下方
    // 1.通过js选择器获取页面标签对象
    // 永远获取匹配到的第一个标签对象,参数为css语法的选择器
    var box = document.querySelector('body .box');
    // 永远获取匹配到的所有标签对象(不够有多少个结果一定是数组),参数为css语法的选择器
    var boxs = document.querySelectorAll('.box');
    
    console.log(box);
    console.log(boxs);
    console.log(boxs[1]);
    
    // 2.为目标标签对象(们)绑定交互的方式(事件)
    // 3.在事件的内部完成具体交互的业务逻辑
    box.onclick = function () {  // 该方法是在box被点击是系统回调, 所有在函数内部拿到this对象一定是box
        console.log('box1被点击了', this);
    
        // 获取内容
        var msg = this.innerText;
        console.log(msg);
        // 修改内容
        this.innerHTML = "<b>呵呵</b>";
        // 获取样式 getComputedStyle(页面对象, 伪类 没有时用null填充).js语法方式的样式名称
        var fontSize = getComputedStyle(this, null).fontSize;
        console.log(fontSize);
        // 设置样式
        this.style.backgroundColor = "red";
        this.style.marginLeft = '100px';
        // 获取类名
        var className = this.className;
        console.log(className);
        // 设置类名
        this.className += " big";  // 空格不可以省略
    }
    
    
    // boxs[1].onmouseover = function () {
    //     console.log('box2被悬浮了')
    // }
    js完成页面交互

    6 js流程控制

    //1 顺序结构: 代码本质就是顺序结构
    //2 分支结构: if家族
    //3 循环结构: for , while , do...while
    /* py:
    if 条件1:
        代码块1
    elif 条件2:
        代码块2
    else:
        代码块3
     */
    
    
    
    /* js:
    if(条件){
        代码块1;
    }
    else if (条件2){
        代码块2;
    }
    else {
        代码块3;
    }
     */
    py和js的循环格式比较
    var btn = document.querySelector('.btn');
    var inp = document.querySelector('.inp');
        btn.onclick = function () {
            //1 如何获取input框中的内容,该标签的value值
            val =inp.value;
            // alert(val);
    
            //2 将内容转换为数字,转换成功就是数字,失败则是NaN
            num = +val;     //只要不是NaN就是数字 isNaN()
            // alert(num)
    
    
            //3 判断弹出结果
            //!就是取反,相当于py中的not
            if (!isNaN(num)){
                alert('是数字');
            }
            else {
                alert("不是数字");
            }
    
            //4 清空输入框
            inp.value = "";
    
        }
    判断input框输入的是否为数字
    //1 js之while循环: 除了可以解决以下两种循环方法(相对复杂),还可以完成不知道循环次数的需求
    //循环流程:1 初始化循环变量 2进行变量的判断 3完成业务逻辑 4循环变量增量(234是循环体)
    n = 0;
    while (n < 5){
        console.log("呵呵");
        n += 1;
    }
    while循环
    //2 js之for循环: 很明确知道循环次数
    //循环流程: 1 var i=0 , 2 i<5, 3 console.log 4 i+=1 (1是入口 2是出口,和while一样)
    for (var i = 0; i < 5; i += 1){
        console.log("for循环");
    
    }
    for循环
    //3 js之do...while循环: 在条件判断之前就需要执行一次循环体
    
    count =0;
    do {
        console.log("do...while循环")
        count += 1
    
    } while (count < 5)
    do...while
  • 相关阅读:
    [论文阅读]VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION(VGGNet)
    VMware虚拟机 Ubuntu 实用技巧 (1) -- 安装VMware Tool
    python 开发技巧(4)-- 用PyCharm实用技巧(我自己常用的)
    python 开发技巧(3)-- 连接mysql 出现错误 ModuleNotFoundError: No module named 'MySQLdb'
    python 开发技巧(2)-- Django的安装与使用
    Linux netstat命令
    RabbitMQ(一):Windows下RabbitMQ安装
    python 开发技巧(1)-- 用PyCharm安装第三方库
    Swoole系列(三):建立TCP服务器并发送数据测试
    Swoole系列(二):安装
  • 原文地址:https://www.cnblogs.com/lich1x/p/11261275.html
Copyright © 2011-2022 走看看