zoukankan      html  css  js  c++  java
  • Web前端-JAVASCRIPT

    Javascript

    一.helloworld

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--内部标签使用-->
    <!--<script>-->
    <!--    alert("helloworld!");-->
    <!--</script>-->
        <!--外部标签使用-->
        <script src="test.js"></script>
    </head>
    <body>
    </body>
    </html>

    二.语法入门

    // 定义变量
    var name=1;
    // 条件控制
    if(2>1){
    alert(true)
    }
    /*
    *多行注释
    */

    在浏览器控制台打印变量

    console.log(name);

    三.数据类型

    数值,文本,图形,音频,视频。。。

    1)字符串

    正常字符串使用单引号或双引号包裹;转义字符

    多行字符串:反引号

    var msg=`你好
    文化is
    和等方式尽快
    `

    模板字符串${}`:必须使用反引号

    var name="dengwenxiong";
    var msg=`大家好,我是${name}`

    字符串长度

    str.length

    字符串不可变

    截取字符串substring,半闭半开

    str.substring(1,3)

    2)Number

    js不区分小数和整数

    NaN//not a Number
    Infinity//表示无限大

    3)比较运算符

    == //等于,类型不一样,值一样也会判断为true
    ===//绝对等于,类型一样值一样才为true
    NaN===NaN,为false,NaN与所有的数值都不相等,包括他自己;只能通过isNaN(NaN)确定

    浮点数运算存在精度问题;

    null表示为空;

    undefined表示未定义;

    4)数组

    js中的数组的数值可以不是相同类型的对象

    var arr=[1,2,4,null,"abc",true];

    取数组下标如果越界了就会undefined;

    长度:数组大小可以变化,赋值过小元素会丢失

    arr.length;

    slice():截取数组的一部分,返回一个新数组,类似substring()

    push():压入到尾部;

    pop():弹出尾部元素

    unshift():压入到头部

    shift():弹出头部元素

    sort():排序

    reverse():元素反转

    concat():合并数组,返回一个新数组

    join():打印拼接数组,使用特定的字符串连接

    5)对象:若干个键值对,所有的键都是字符串,值是任意对象

    var person={
          name:"dengwenxiong",
          age:13
    }

    动态的删减属性:使用delete

    delete person.name

    动态添加属性:直接给新属性赋值

    person.sex="  boy"

    判断属性是否在对象中:使用in

    "name" in person

    判断一个属性是否是对象自身拥有的:使用hasOwnProerty()

    person.hasOwnProperty("age")

    四.严格检查模式

    //使用严格检查模式,不许写在JavaScript的第一行
    'use strict'
    //局部变量建议使用let定义
    i=1;

    五.数组循环

    1.使用forEach

    var arr=[1,2,3,4,5];
    arr.forEach(function (value){
    console.log(value)
    })

    2.使用for in

    var arr=[1,2,3,4,5];
    //index是索引
    for(index in arr){
    console.log(arr[index])
    }

    3.使用for of

    var arr=[1,2,3,4,5];
    for(a of arr){
    console.log(a)
    }

    六.Map和Set

    var map=new Map([['tom',100],['Aisa',200]]);
    var score=map.get('tom');//获取
    map.set("Ali",300);//新增或修改
    map.delete('tom') console.log(score);//删除

    遍历map也使用for of  

    set:无序不重复的集合

    var set=new Set([1,1,1,1,3,5]);
    set.add(9);//增加
    set.delete(1)//删除
    console.log(set.has(3));//检查是否有3
    console.log(set);

    遍历set也使用for of

    七.函数

    1)定义

    方式一:

    function abs(x){
    if(x>=0){
        return x;
    }else{
        return -x;
    }
    }

    一旦执行return代表函数结束,返回结果

    如果没有执行return,函数执行完也会返回结果,结果就是undefined

    方式二

    var abs=function(x){
    if(x>=0){
        return x;
    }else{
        return -x;
    }
    }

    假设不存在参数,规避?

    function abs(x){
    if(typeof x !="number"){
     throw 'Not a Number'
    }
    if(x>=0){
        return x;
    }else{
        return -x;
    }
    }

    arguments代表传递进来的所有参数,是一个数组(可以用于隐藏参数)

    rest获取除了已定义参数之外的所有参数

    function abs(x,...rest){
    if(typeof x !="number"){
     throw 'Not a Number'
    }
    console.log(rest);
    if(x>=0){
        return x;
    }else{
        return -x;
    }
    }

    rest参数只能写在最后面,并用...标识

    2)变量作用域

    内部函数可以访问外部函数的成员;反之不行。

    js的执行引擎会自动提升变量的声明,但不会提升变量的赋值

    默认所有的全局变量都会自动绑定在window对象下

    var x="hhh";
    alert(x);
    window.alert(window.x);//效果一样

    alert()函数本身也是window对象;

    JavaScript实际只有一个全局作用域window;任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果全局作用域都没有找到,就会报错RefrenceError;

    由于所有的全局变量都会绑定到window上,如果使用不同的js文件,使用了相同的全局变量就会冲突;解决:

    var MyApp={};
    MyApp.name="dengwenxiong";
    MyApp.add=function(a,b){
    return a+b;
    }

    把自己的代码全部放入自己定义的唯一空间名字中,降低全局命名冲突问题

    3)let

    let 关键字,解决了局部作用域冲突问题

    function aaa(){
        for (let i=0;i<100;i++){
           console.log(i) ;
        }
        console.log(i+1);//这里使用了let之后就会报错,如果是var,则会输出101;
    }

    4)const

    const关键字,常量

    const PI=3.14;
    console.log(PI);
    PI=1;//报错,只读变量

    5)方法

    定义:在对象里面定义函数

    var person={
        name:"dengwenxiong";
        birth:1998;
        age:function(){
          var now=new Date().getFullYear();
          return now-this.birth;
       }
    }

    属性调用:person.name;

    方法调用:person.age();

    this默认指向调用它的方法

    使用apply可以指定this的指向

    function getAge(){
          var now=new Date().getFullYear();
          return now-this.birth;
    }
    var person={
        name:"dengwenxiong",
        birth:1998,
        age:getAge
    }

    getAge.apply(person,[])

    八.内部对象

    1)Date

    var now=new Date();
    now.getFullYear();//
    now.getMonth();//月 0-11 代表月
    now.getDate();//
    now.getDay();//星期几
    now.getHours();//
    now.getMinutes();//
    now.getSeconds();//
    now.getTime();//时间戳 全世界统一,1970 1.1 00:00:00
    console.log(now Date(时间戳))//将时间戳转为时间
    now.toLoaclString();//转换为文本

    2)JSON

    格式:

    对象都用{}

    数组都用[]

    所有的键值对都用key:value

    var person={
    name:"dengwenxiong",
    age:18,
    sex:"boy"
    }
    //将对象转换为Json字符串
    var JsonString=JSON.stringify(person);
    console.log(JsonString);
    //将Json字符串转换为对象
    var obj=JSON.parse(JsonString);
    console.log(obj);

    JSON与JS对象的区别

    var obj={a:'helloA',b:'helloB'};//对象
    var json='{"a":"helloA","b":"helloB"}';//json,本身就是字符串

    九.面向对象编程

    1)原型继承

    var Student={
      name:"student",
      sex:"boy",
      run:function(){
        console.log(this.name +" is running");
      }
    };
    var xiaoming={
       name:"xiaoming"
    };
    xiaoming.__proto__=Student;

    2)class继承

    //定义一个学生类
    class Student{
        //构造器
        constructor(name){
             this.name=name;
        }
        //增加方法
        hello(){
        alert('hello');
        }
    }
    var xiaoming=new Student("xiaoming");

    继承

    class littlestudent extends Student{}

    十.操作BOM对象

    BOM:浏览器对象模型

    window:代表浏览器窗口

    navigator:封装了浏览器的信息

    navigator.appName
    "Netscape"
    navigator.appVersion
    "5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
    navigator.userAgent
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
    navigator.platform
    "Win32"

    screen:代表屏幕尺寸

    location:代表当前页面的URL信息

    location.host
    "www.baidu.com"
    location.href
    "https://www.baidu.com/?tn=78040160_14_pg&ch=16"
    location.protocol
    "https:"
    location.reload()//刷新网页
    location.assign("https://www.bilibili.com/")

    document:代表当前的页面,HTML DOM文档树

    document,cookie//获取网页的cookie

    history:

    history.back()//后退
    history.forward()//前进

    十一.操作DOM对象

    DOM文档对象模型

    浏览器网页就是DOM树形结构

    • 更新:更新DOM节点
    • 遍历:得到DOM节点
    • 删除:删除DOM节点
    • 添加:添加新的DOM节点

    获取节点:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
    <div id="father">
    <h1>我是谁</h1>
    <p id="p1"></p>
    <p class="p2"></p>
    </div>
    <script>
        //标签选择器
        var h1=document.getElementsByTagName('h1');
        //Id选择器
        var p1=document.getElementById('p1');
        //类名选择器
        var p2=document.getElementsByClassName('p2');
        var father=document.getElementById('father');
        //father.children可获得子节点
    </script>
    </body>
    </html>

    更新节点:

    father.innerText="hhhh"修改文本值
    father.innerHTML="<strong>123</strong>"可以解析HTML文本标签
    father.style.color="red"更改样式

    删除节点:

    先获取父节点,再通过父节点删除自己

    father.removeChild(p1);

    删除节点,children是动态变化的

    插入节点:

    追加

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <p id="p1">我是哈哈哈</p>
    <div id="d1">
    </div>
    <script>
       var p1=document.getElementById("p1");
       var d1=document.getElementById("d1");
       d1.appendChild(p1);
    </script>
    </body>
    </html>

    创建节点并插入:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="d1">
    </div>
    <script>
        var newp=document.createElement('p');
        newp.id='p1';//等价于 newp.setAttribute("id","p1")
        newp.innerText="你好啊";
        var d1=document.getElementById("d1");
        d1.appendChild(newp);
    </script>
    </body>
    </html>

    十二.操作表单

    获取表单的信息

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
    <div>
        <span>用户名:</span><input type="text" id="username"/>
        <span>性别:</span>男<input type="radio" name="sex" value="man" id="boy"/><input type="radio" value="woman" name="sex" id="girl"/>
    </div>
    <script>
        var input_text=document.getElementById("username");
        //得到输入框的值input_text.value
        var boy_radio=document.getElementById("boy");
        var girl_radio=document.getElementById("girl");
        //判断是否选中,返回(true或false)boy_radio.checked;
    </script>
    </body>
    </html>

    十三.JQuery 

    公式:$(selector).action()

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
    <a href="" id="test-jquery">你点我试试</a>
    <script>
        $("#test-jquery").click(function(){
           alert("Hello!");
        })
    </script>
    </body>
    </html>

    选择器

    $('p').click()//标签选择器
    $('#id1').click()//id选择器
    $('.class1').click()//class选择器

    事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            #divMove{
            height:800px;
            width:800px;
            background-color:red;
            }
        </style>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
    <!--获取鼠标当前坐标-->
    mouse:<span id="mouseMove"></span>
    <div id="divMove">
    </div>
    <script>
        //当网页元素加载完毕后,响应事件
        $(function(){
           $('#divMove').mousemove(function(e){
             $('#mouseMove').text('x:'+e.pageX+'y'+e.pageY)
           })
        });
    </script>
    </body>
    </html>

    操作DOM

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
    <ul id="test-ul">
        <li name="js">Javascript</li>
        <li class="python">python</li>
    </ul>
    <script>
        $('#test-ul li[name=js]').text();//获取值
        $('#test-ul li[name=js]').text("12334");//设置值
        $('#test-ul').html()//获取值
        $('#test-ul').html("<strong>hhh</strong>")//设置值,会覆盖
    </script>
    </body>
    </html>

    CSS操作

    $('#test-ul').css({"color":"red","font-size":"80px"})

    元素的显示和隐藏:本质是disoplay:none;

    $('#test-ul li[name=js]').show();//显示
    $('#test-ul .python').hide();//隐藏
  • 相关阅读:
    OVER子句
    处理字符数据排序规则(Collation)
    时间管理小强升职记读书笔记
    SQLServer2005查找定位性能瓶颈和性能调优
    zz数据库查询性能优化
    SqlBulkCopy实现数据批量复制(ZZ)
    SQLServer2005大数据量没有返回值不能应用索引的问题
    工作DNA读书笔记
    zz很有用的生活小窍门
    Excel单引号作用与清除方法总结
  • 原文地址:https://www.cnblogs.com/python-road/p/13220755.html
Copyright © 2011-2022 走看看