JavaScript的入门

引入javascript
<!--script 必须成对出现-->

<!--外部引入-->
<script src="js/main.js"></script>


<!--内部引入-->

<script >
//。。。。。。
</script>

基本语法
注释

//单行注释

/**/多行注释

javascript严格区分大小写

变量.函数的类型以及作用域(变量提升)
/*声明变量的3种方式 var全局变量  let局部变量,只能是在块元素里面,块元素里面就不能引用 const常量不可以通过重新赋值改变其值(但是对象属性,数组被赋值为常量是不受保护的。),也不可以在代码运行时重新声明。它必须被初始化为某个值。*/
var a;
let a1;
const c=1;

//常量
//在同一作用域中,不能使用与变量名或函数名相同的名字来命名常量。
/*
function f() {};
const f = 5;*/
/*
const f=10
var  f=10*/
//全局变量
window .w=100;
/*undefined  可以当作flase使用。也可以用来检查变量是否赋值*/
/*var定义的变量,如果是没有赋值,数据类型的环境会把它当成0,boolean就是false*/

//数组,对象属性被赋值为常量是不受保护的,所以下面的语句执行时不会产生错误。
const MY_OBJECT = {"key": "value"};
MY_OBJECT.key = "otherValue";
alert(MY_OBJECT.key);

const LIS=[2,1];
LIS.push(3);
alert(LIS)



/*函数声明*/
function ff(){

}
/*函数表达式*/
var gg=function() {

}

/*
变量提升:
用let声明的变量在6以前会提升变量到代码块的顶部,在6或者6之后let声明的变量就不能够提升
6或者6后只有全局作用域和函数声明,即将变量声明提升到它所在作用域的最开始的部分。*/
var a;

{
    alert(a);
}

a=10;
//函数
alert(f1); // function f1() {}
alert(f2); // undefined
function f1() {}
var f2 = function() {}

数据结构和类型

​ 7大数据类型(undefined ,null ,Number,BigInt,String,Symbol(6新加的类型))以及一个对象(Object)类型

  1. 字符串

    ​ 正常的字符串是使用一个’’ ""包裹

    ​ 注意转义字符\

    ​ 可以多行字符串编写

    var a=`
    abc
    def
    hqe
    `
    
    //转换为大写
    toUpperCase()
    //转换为小写
    a.toLowerCase()
    
  2. 数组

    数组可以包含任意的数据类型

    var arr=[1,2,3,4,5,6,"123"]
    arr[1]=10;
    var a=arr[1];
    //数组长度是可以变化的,如果赋值过小,元素会丢失。多是通过下表取值和赋值
    slice()//截取数组的一部分,返回一个新数组
    arr.indexOf(1)//获得元素索引
    
    push()//压住到尾部,往数组最后面添加元素
    pop()//弹出尾部的一个元素,删除最后一个元素
    
    unshift()//压住到头部
    shift()//弹出头部的一个元素
    
    sort()//排序。升序
    
    reverse()//反转
    
    concat()//拼接,并没有修改数组,只是会返回一个新的数组
    
    jion() 指定的字符串连接
    
  3. 对象

    若干个键值对,javascripct里面的键多是String类型的

    var people={
    	name : "周华",
    	age: 18,
    	sex: "男"
    
    }
    
    //使用一个不存在的对象的熟悉,是不会报错的
    
    //可以动态的删除对象的属性
    delete people.name
    //可以动态的添加,直接给新的属性添加值即可
    people.name=123
    
    //判断属性值是否在这个对象中
    //第一种
    "age" in people
    //第二种
    people.hasOwnProperty("age")
    
类型转换

JavaScript是一种动态类型语言(dynamically typed language)。这意味着你在声明变量时可以不必指定数据类型,而数据类型会在代码执行时会根据需要自动转换。

//int自动转换为字符串
x = "The answer is " + 42 // "The answer is 42"
y = 42 + " is the answer" // "42 is the answer"

//字符串自动转换为int
 a="37" - 7 // 30
c="37" + 7 // "377"


//字符转换为数字的方法parseInt()  转换为浮点类型parseFolat()
严格检查模式
//'use strict';严格检查模式,预防javaScripy的随意性导致产生的一些问题
<script>
   'use strict'
    i=10;
</script>

流程控制
//if判断
var arg=3;
if(arg>3){
   alert(123);
   }else{
         alert(4); 
   }

//while循环
while(arg<100){
      console.log(arg);
    arg++;
      }


//for循环
for(let i=0;i<arg;i++){
    console.log(i);
}

var args=[1,2,3,4,5];
//forEash循环

args.forEach(function (value) {
   console(value);         
        })

for(var num in args){
    //num 是个索引
    console.log(args[num]);
}
Map和Set (ES6的新特性)
//Map
var map=new Map([["ss","周杰伦"],["zz","华晨宇"],["dd","李斯丹妮"]]);
//根据健位获得指定的value
var name=map.get("ss");
//添加或者修改值
map.set("ff","林俊杰");
//删除
 map.delete("ss");
//迭代set
  for (let obj of map) {
            console.log(obj);
        }


//Set
var set =new Set([3,1,1,1,1]);//会去重复
set.add(2);//增加
set.delete(1);//删除
set.has(2)//判读是否包含2

//迭代set
 for (let obj of set) {
            console.log(obj);
        }
函数
//定义函数
//方式一
 function methon(x){
        if(x>0){
            return x;
        }else{
            return -x;
        }
    }

//一旦执行到return方法就会结束,并且返回结果,如果没有执行return,函数结束完也会返回一个结果。结果为wndefined

//方式二
var  methon=function (x){
        if(x>0){
            return x;
        }else{
            return -x;
        }
    }


//调用函数
methon(10)



arguments可以获得传入的所有参数,rest是除了你固定的参数外所有的参数,只能写在参数最后面,必须是参数里面是...rest
方法

方法就是把函数放在对象的里面,对象只有2个东西,方法和属性。

var dbh={
    name: "戴宝华",
    bitrh: 2000,

    age:function () {
        return new Date().getFullYear()-this.bitrh;
    }
}

//使用
//属性
dbh.name
//方法
dbh.age()


//apply可以控制this的指向


        function age() {
            return new Date().getFullYear()-this.bitrh;
        }


        var dbh={
            name: "戴宝华",
            bitrh: 2000,

           age:age()
        }


        age.apply(dbh,[]);

内部对象

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 0:00:00到现在的时间戳
		new Date(now.getTime());//时间戳转换为时间
		now.toLocaleString()//本地时间,是一个方法。不是属性

JSON

是一种轻量级的数据交换格式。简洁和清晰的层次结构使得JSON成为理想的数据交换语言

易于人的阅读和编写,同时易于机器的解析和生辰,有效的提升网络传输。

任何js支持的类型多可以用JSON来表示

格式:

​ 对象用{},数组用[],所有的键值对多用key:value

var user={
    name:"dbh",
    age:12,
    sex:"男"
}

//对象转换为JSON
 var jsonUser=JSON.stringify(user);

 //json字符串解析为对象,参数为json字符串
var userDx= JSON.parse(jsonUser);

//JSON和js对象的区别
var obj={a:"123",b:"123"};
var json='{"a":"123","b":"123"}';
原型对象
var student={
     name:'dbh',
    run:function(){
         console.log(this.name+"run");
    }
}

var zhou={
    name:'zhou',
 }

 //zhou的原型student(可以称之为父类) 个_
 zhou.__proto__=student;
class继承(ES6引入的)
//ES6以前
function Student(name){
    this.name=name;

}



//给Student增加一个方法
Student.prototype.hello = function () {
    alert("hello");
}
//使用
var Student=new Student(123);

//es6以后
  class student{
            constructor(name){
                this.name=name;
            }
            hello(){
                alert("hello");
            }


        }

//使用
var student=new student(123);

  //继承
        class litter extends People{
            constructor(name,age){
                super(name);
                this.name=name;
                this.age=age;
            }

            myage(){
                alert(this.age);
            }
        }
    var xh= new litter("小红",12);
操作BOM对象

BOM:浏览器对象模型

浏览器有:

  1. IE 6-11

  2. Chrome

  3. Safari

  4. FireFox

第三方有:

  1. qq浏览器

  2. 360浏览器

  3. UC浏览器

window
window.alert(2131)//弹出
2131
//浏览器内部和外部宽度
window.innerHeight
472
window.innerWidth
368
window.outerHeight
591
window.outerWidth
1408

navigator

封装了浏览器的信息,大多数不会使用这个对象,因为会被修改。不建议使用这些属性来判断和编写代码

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

代表屏幕的尺寸

screen.width
1536
screen.height
864
location

location代表当前页面的url信息

host:主机

href:当前指向的位置

protocol:协议

reload():重新加载,刷新

location.assign(“http://www.baudu.com”):设置新的定位。

document

当前的页面的信息

后的cookie

document.cookie
"uuid_tt_dd=10_30714054690-1592751583502-597203; dc_session_id=10_1592751583502.919250; __gads=ID=4e6231bd0774627b:T=1592751586:S=ALNI_MYI_uLd6iFuue_4KgLMuKu1BuUTRQ; UserName=qq_45486059; UserNick=qq_45486059; AU=E0F; UN=qq_45486059; p_uid=U000000; BT=1592817129043; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22qq_45486059%22%2C%22scope%22%3A1%7D%7D; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_30714054690-1592751583502-597203!5744*1*qq_45486059; c_first_ref=default; c_first_page=https%3A//mp.youkuaiyun.com/console/article; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1592967169,1593084234,1593084573,1593177153; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1593177153; dc_tos=qcjbd0; dc_sid=30c51ff0df67b76f0b619b893bdc05b4; announcement=%257B%2522isLogin%2522%253Atrue%252C%2522announcementUrl%2522%253A%2522https%253A%252F%252Fmarketing.youkuaiyun.com%252Fp%252F00839b3532e2216b0a7a29e972342d2a%253Futm_source%253D618%2522%252C%2522announcementCount%2522%253A0%252C%2522announcementExpire%2522%253A3600000%257D"

cookie可以设置一个httpOnly只读不写

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

操作BOM对象

浏览器网页就是一个Dom树形结构!

1. 更新:更新Dom节点

2. 遍历dom节点:得到Dom节点
3. 删除:删除一个Dom节点
4. 添加:添加一个新的节点

要操作一个Dom节点,就必须获得这个Dom对象

var h1= document.getElementsByTagName("h1");
var p1=document.getElementById("p1");
var p2= document.getElementsByClassName("p2");
var father=document.getElementById("father");
var childrens= father.children;

father.firstChild//第一个
father.lastChild//最后一个
p1.nextElementSibling//p1的下一个


//操作js

dbh.innerText="123"//修改文本的值,dbh就是你设置的id
dbh.innerHTML="<a>123123</a>"//修改文本的值,但是可以使用标签
dbh.style.color="red"//操作文本样式
dbh.style.fontSize="100px"//修改字体大小
dbh.style.background="yellow"//修改背景颜色

//删除节点
//删除步骤:首先需要的到父节点信息,然后通过父节点在去删除想要删除的子节点,但是必须时id的不能时class的
  var father =document.getElementById("father");
    father.removeChild(p1);

//第二种,这种在删除节点的时候children时刻时在变化的,删除节点的时候,需要注意。	
father.removeChild(father.children[0]);
father.removeChild(father.children[1]);
father.removeChild(father.children[3]);



//插入节点
//我们获得某个dom节点,如果这个节点时空的,就可以增加一个元素了,但是如果dom如果已近存在元素,就不能这样增加一个元素,因为会被覆盖


   var p= document.getElementById("p");
   var div= document.getElementById("div");
   div.appendChild(p);//追加到后面



//通过js创建一个新的节点
 var a=document.createElement("ul");//创建一个ul标签
    a.id="new a";//设置a的id
   div.appendChild(a);//把a追加到div里面


   var c=document.createElement("script");//创建一个script标签
   c.setAttribute("id","sc");
   c.setAttribute("type","text/javascript");
   c.innerHTML="var dbh='戴宝华'";

   div.appendChild(c);


   var s=document.createElement("style");//通过拆改你style标签修改body的背景颜色
    s.setAttribute("type","text/css");
    s.innerHTML="body{background: yellow;}";

    var head=document.getElementsByTagName("head")[0];
    head.appendChild(s);

//插入到前面


   var p= document.getElementById("p");
   var p1= document.getElementById("p1");

   var div= document.getElementById("div");
   div.appendChild(p);
   div.insertBefore(p1,p);//p1是你要插入的元素,是放在p的上面,p是你指定的位置上的元素

div.replaceChild(p1,p);//替换,p1新,p需要换的


操作表单(验证)
<!DOCTYPE html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/md5.js"></script>

</head>
<body>
<form action="#" method="post" onsubmit="return  subm()">
    <p><span>账号</span><input type="text" id="username" name="username"></p>
    <p><span>密码</span><input type="password" id="pwd"></p>
    <p><input hidden type="password" id="hpwd" name="upwd"></p>
    <input type="submit"></input>

</form>


<script>
   function subm() {
       var uname= document.getElementById("username");
        var pwd=document.getElementById("pwd");
       var hpwd=document.getElementById("hpwd");
       hpwd.value=md5(pwd.value);
       console.log(uname.value);
       console.log(pwd.value);
       console.log(hpwd.value);

       return ture;
    }

</script>


</body>
</html>
jQuery

jQuery库,里面存在大量的js函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--cdn引入-->
    <script src="http://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous">
    </script>


</head>
<body>


<a id="text" href="#">点我</a>
<script>
     $("#text").click(function () {
        alert("Hello Wolder");
    })

</script>
</body>
</html>


事件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="    crossorigin="anonymous" >
    </script>

    <style>
        #div{
            width: 500px;
            height: 400px;
            border: 1px solid yellow;
        }

    </style>
</head>
<body>
mouse:<span id="mouseMoves"></span>
<div id="div">
    移动鼠标
</div>

<script>
    //网页加载完毕,响应时间
    $(function(){
       /*
       //鼠标移动事件
       $("#div").mousemove(function (e) {
            $("#mouseMoves").text("x:"+e.pageX+"y:"+e.pageY);
        });*/

       /* $("#div").mousedown(function () {//点击,和click不同,mousedown 事件仅需要按键被按下,而不需要松开即可发生。
           alert(123);
        })*/
       /* $("#div").click(function () {//点击 需要按键被按下,而且需要松开
            alert(123);
        })*/

      /*  $("#div").mouseout(function () {//当鼠标指针从元素上移开时,发生 mouseout 事件。
            alert(123);
        })*/
      /*  $("#div").mouseover(function () {//当鼠标指针位于元素上方时,会发生 mouseover 事件。
            alert(123);
        })*/

        $("#div").mouseup(function () {//当在元素上放松鼠标按钮时,会发生 mouseup 事件。
            alert(123);
        })



    });





</script>

</body>
</html>
jquery操作Dom
//节点文本操作
$("#test-ul li[class=python]").text();//获得值
$("#test-ul li[class=python]").text("设置值");//设置值
$("#test-ul li[class=python]").html();//获得值
$("#test-ul li[class=python]").html("12313");//设置值,可以设置标签


//css操作

//一个值
$("#test-ul").css("color","yellow");
//多个值
$("#test-ul").css({"color":"yellow","background": "red" });

//显示
$("#test-ul li[class=python]").show();
//隐藏//本质是display=none
$("#test-ul li[class=python]").hide();
 //如果元素是显示就会隐藏,是隐藏就会显示
$("#test-ul li[class=python]").toggle();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值