网页前端基础二:JavaScript

1.3 Javascript

简介:

Javascript是基于对象和事件驱动的脚本语言,主要是嵌入到HTML中,应用在客户端,动态操作网页元素,也可以作用于服务端。

特点:

交互性(表单校验,信息提示,动态数据图表,ajax异步提交,解析服务端响应数据等等)

安全性(不可以直接访问本地硬盘)

跨平台性(由浏览器解析执行,和平台无关)

1.3.1 javascript和java

JavaScript只需浏览器解析就可以执行,而java需要先编译成字节码文件,然后通过JVM来执行。

JavaScript 是一种弱类型语言,java是强类型语言。

一个完整 JavaScript实现由以下三个部分组成:

1.核心:ECMAscript

2.文档对象模型:DOM

3.浏览器对象模型:BOM

1.3.2 javascript基础

1.3.2.1 HelloWord

<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			alert("HelloWorld...1");//弹框
			console.log("HelloWorld...1");//在控制台中打印数据
		</script>
	</head>
	<body>
		<script type="text/javascript">
			alert("HelloWorld...2");//弹框
			console.log("HelloWorld...2");//在控制台中打印数据
		</script>
	</body>
</html>

注:javascript作为标签出现在HTML中未要求一定要写在中

1.3.2.2 变量的定义

在javascript中,定义变量可以统一使用var。

<script type="text/javascript">

    /**
	 * var - 变量
	 */
    var v = 123;
    console.log(v);
    
    v = true;
    console.log(v);
    
    v = "abc";
    console.log(v);

</script>

注:javascript为弱类型语言,在定义变量上可以自动转换。

1.3.2.3 基本数据类型

number(数值型)string(字符串型)boolean(布尔类型)undefined(未定义类型)、null(空)

JavaScript 数字

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:

实例

var x1=34.00; //使用小数点来写

var x2=34; //不使用小数点来写

JavaScript 字符串

字符串是存储字符(比如 “Bill Gates”)的变量。

字符串可以是引号中的任意文本。您可以使用单引号或双引号:

实例

var carname=“Bill Gates”;

var carname=‘Bill Gates’;

单引号和双引号支持互相包含

JavaScript 布尔

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

var x=true

var y=false

undefined

访问一个不存在的变量或使用已声明但未赋值的变量,都会得到一个值undefined,undefined类型的值只有一个undefined

Null

被赋予null值的变量通常认为已经定义了,只是不代表任何东西。

Javascript的数据类型主要分为

基本数据类型

非基本数据类型(对象)

<script type="text/javascript">

    /**
	 * JS的基本数据类型:number、string、boolean、undefined(未定义类型)、null
	 */

    //number
    var v1 = 123;
    console.log(v1)  	//123
    v1 = 123.123;
    console.log(v1);	//123.123

    //string 
    var v2 = 'abc';
    console.log(v2);	//abc
    v2 = "abc";
    console.log(v2);	//abc

    //boolean
    var v3 = true;
    console.log(v3);	//true
    v3 = false;
    console.log(v3);	//false

    //undefined
    var v4;
    console.log(v4);	//undefined
    v4 = undefined;
    console.log(v4);	//undefined

    var v5 = null;
    console.log(v5);	//null
</script>

1.3.2.4 基本数据类型的特殊点

<script type="text/javascript">
    //JS的基本数据类型:number、string、boolean、undefined(未定义类型)、null
     
    //number的特殊点:(Infinity 表示无穷大)
    console.log(Infinity + (-Infinity));//NaN:Not a Number
    
    //string的特殊点:
    var v1 = "12";
    var v2 = "3";

    console.log(v1 + v2);//做拼接
    console.log(parseInt(v1) + parseInt(v2));//先转化成整数再相加
    //算数运算
    console.log(v1 - v2);//9
    console.log(v1 * v2);//36
    console.log(v1 / v2);//4
    console.log(v1 % v2);//0

    //boolean的特殊点:0、""、undefined、null、NaN都表示false
    if(null){
        console.log("true");
    }else{
        console.log("false");
    }

    //undefined vs null
    var v1;
    console.log(typeof v1);//undefined

    var v2 = null;
    console.log(typeof v2);//object(空对象)

    //== vs ===	
    var v1 = 123;
    var v2 = "123";

    console.log(v1 == v2);//true:只判断值
    console.log(v1 === v2);//false:既判断值,也判断类型
</script>

1.3.2.5 流程控制语句

循环语句:for 、for-in 、while

分支:switch

for-in的 使用注意:

<script type="text/javascript">
	var nums = [1,2,3,4,5,6]
    for(var index in nums){
        alert(nums[index]);
    }
</script>

1.3.2.6 数组

<script type="text/javascript">
    /**
	 * 数组
	 */
    //数组的声明及初始化
    var arr = ["aa","bb","cc"];

    //设置数据
    arr[2] = "ss";

    //添加数据
    arr[3] = "dd";
    arr[10] = "xx";

    //删除数据
    delete arr[3];

    //遍历 - for循环
    for(var i = 0;i<arr.length;i++){
        console.log(arr[i]);
    }
    //依次遍历中间会出现7个undefined

    //遍历 - for_in(遍历有效下标)
    for(var index in arr){
        console.log(arr[index]);
    }
    //不会遍历出undefined
</script>

1.3.2.7 函数

<script type="text/javascript">
	/*
	 * 函数:特定功能的代码块
	 */
			
    //无返回值无参数的方法
    function fun01(){
        alert("aaa");
    }
    fun01();

    //有参数的方法(参数不用写var)
    function fun02(a,b){
        alert(a+b);
    }
    fun02("10","20");

    //有返回值的方法
    function fun03(a,b){
        return a+b;
    }
    var v = fun03("10","20");
    alert(v);

</script>

1.3.2.8 预定义函数

常见的预定义函数:parseInt();、parseFloat();将字符转化为int和float。

isNaN()、isFinite()判断是不是一个数字。

eval()把该字符串认定为一个js代码执行。

1.3.3 DOM

文档对象模型(Document Object Model)

核心:使用DOM的方式来操作网页的元素

注:通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。

HTML DOM 模型被构造为对象的树——HTML DOM 树

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9esp5jUp-1630893168041)(D:\培训\学习资料\重要图\HTML_DOM树.jpg)]

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

JavaScript 能够改变页面中的所有 HTML 元素

JavaScript 能够改变页面中的所有 HTML 属性

JavaScript 能够改变页面中的所有 CSS 样式

JavaScript 能够对页面中的所有事件做出反应

1.3.3.1 查找元素

通常,通过 JavaScript,您需要操作 HTML 元素。

为了做到这件事情,您必须首先找到该元素。有三种方法来做这件事:

  1. 通过 id 找到 HTML 元素

  2. 通过标签名找到 HTML 元素

  3. 通过类名找到 HTML

<body>
    <p id="p_id1" class="p_class">段落1</p>
    <p id="p_id2" class="p_class">段落2</p>
    <p id="p_id3" class="p_class">段落3</p>

    <input type="text" name="text"/>
    <br />
    <input type="text" name="text"/>
    <script type="text/javascript">
        document.getElementById("p_id1").onclick=function (){
            this.innerText="段落1ddd"
        }
        document.getElementsByClassName("p_class")[1].onclick =function(){
            this.innerText="段落2ddd"
        }
        document.getElementsByTagName("p")[2].onclick =function(){
            this.innerText="段落3ddd"
        }
        document.getElementsByName("text")[0].onclick =function(){
            this.value="滴滴滴"
            this.style.color ="red"
        }
    </script>
</body>

1.3.3.2 操作内容

修改 HTML 内容的最简单的方法时使用 innerHTML 属性。

如需改变 HTML

<body>
    <p>标签</p>
    <script type="text/javascript">
        var p1 =document.getElementsByTagName("p")[0];
        p1.onclick = function(){
            //获取内容
            alert(this.innerText)//标签
            alert(this.innerHTML)//<p>标签</p>

            //this.innerText = "<h1>标题</h1>";
            this.innerHTML = "<h1>标题</h1>";
        }
    </script>
</body>

1.3.3.3 操作属性

获取属性:

1.元素对象.属性(this.属性)

2.getAttribute(“属性名”)

修改属性:

1.使用元素对象(或者this)直接 .属性=“修改的值”

2.使用方法setAttribute(“操作的属性”,“对应修改的值”)

<body>
    <img src="../img/2.png" width="20%" height="20%" >
    <script type="text/javascript">
        var img =document.getElementsByTagName("img")[0];
        img.onclick = function(){
            //获取属性
            console.log(this.width)
            console.log(this.getAttribute("height"))
            //设置属性1
            this.watch="400";
            this.height="400";
            //设置属性2
            this.setAttribute("width","50%");
            this.setAttribute("height","50%");
        }
    </script>
</body>

1.3.3.4 操作样式

获取样式:元素对象.style.样式名

操作样式:元素对象.style.样式名=“修改后的样式”

<body>
    <img src="../img/2.png" onclick="fun01(this)">
    <script type="text/javascript">
        var img = document.getElementsByTagName("img")[0]
        var bool =true;
        function fun01(obj){
            //获取样式
            //console.log(img.style.backgroundColor)
            img.style.visibility="hidden";
            //obj.style.visibility="visible";
        }

    </script>
</body>

1.3.4 DOM事件

1.3.4.1 点击事件 onclick

<body>
    <!-- 不分离 -->
    <h1 onclick="this.innerText='你好!'">Hello</h1>

    <!-- 分离 -->
    <h1 onclick="fun01(this)">Hello</h1>
    <script type="text/javascript">
        function fun01(obj){
            obj.innerText="你好!";
        }
    </script>

    <!-- 使用按钮1 -->
    <input type="button" value="单击改变标题1" onclick="fun02()"/>
    <h1>标题</h1>
    <script type="text/javascript">
        function fun02(){
            var h1=document.getElementsByTagName("h1")[2];
            h1.innerText="你好!";
        }
    </script>

    <!-- 使用按钮2 -->
    <input type="button" value="单击改变标题2"/>
    <h1>标题</h1>
    <script type="text/javascript">
        document.getElementsByTagName("input")[1].onclick=function(){
            var h1=document.getElementsByTagName("h1")[3];
            h1.innerText="你好!";
        };
    </script>

</body>

1.3.4.2 页面加载事件window.onload

等页面的所有资源加载完成再触发的事件

<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
        /**
			 * onload事件:页面加载事件,等页面的所有资源加载完成再触发的事件
			 */
        window.onload =function(){
            document.getElementsByTagName("input")[0].onclick=function(){
                var h1 = document.getElementsByTagName("h1")[0];
                h1.innerText="你好!";
            }
        }
    </script>
</head>
<body>
    <input type="button"  value="改变标签" />
    <h1>标签</h1>
</body>

1.3.4.3 键盘事件

onkeydown:键盘按下事件
onkeypress:键盘持续事件
onkeyup:键盘松开事件

应用示例:

<body>
    <input type="text" 
           onkeydown="fun01()"
           onkeypress="fun02()"
           onkeyup="fun03()"
           />
    <script type="text/javascript">
        function fun01(){
            console.log("键盘按下事件");
        }
        function fun02(){
            console.log("键盘持续事件");
        }
        function fun03(){
            console.log("键盘松开事件");
        }
    </script>
</body>

案例:实现文本框中输入英文字母内容,自动把内容转成大写字母

键盘松开事件

<body>
    <!-- 需求:实现文本框中输入英文字母内容,自动把内容转成大写字母 -->
    <input type="text" 
           onkeyup="fun03(this)"
           />
    <script type="text/javascript">
        function fun03(obj){
            var v = obj.value;
            v = v.toUpperCase();
            obj.value=v;
        }
    </script>
</body>

1.3.4.4 鼠标事件

onmousedown:鼠标按下事件
onmouseup:鼠标松开事件
onmousemove:鼠标移动事件
onmouseover:鼠标移进事件
onmouseout:鼠标移出事件

应用示例:

<body>
    <input type="image" src="../img/2.png" 
           onmousedown="down01()"
           onmouseup="up01()"
           onmousemove="move01()"
           onmouseover="over01()"
           onmouseout="out01()"
           />
    <script type="text/javascript">
        function down01(){
            console.log("鼠标按下事件");
        }

        function up01(){
            console.log("鼠标松开事件");
        }

        function move01(){
            console.log("鼠标移动事件");
        }

        function over01(){
            console.log("鼠标移进事件");
        }

        function out01(){
            console.log("鼠标移出事件");
        }
    </script>
</body>

案例:鼠标放在图片上图片消失

鼠标移进移出事件

<body>
    <!-- 需求:捉迷藏,鼠标放在图片上图片消失 -->
    <img src="../img/2.png" onmouseover="over01(this)" onmouseout="out01(this)"/>
    <img src="../img/2.png" onmouseover="over01(this)" onmouseout="out01(this)"/>
    <img src="../img/2.png" onmouseover="over01(this)" onmouseout="out01(this)"/>
    <script type="text/javascript">
        function over01(obj){
            obj.style.opacity=0; //透明度0~1
        }
        function out01(obj){
            obj.style.opacity=1;
        }
    </script>
</body>

1.3.4.5 焦点事件

onfocus:获取焦点
onblur:失去焦点

案例:文本框提示和检测。

<body>
    <input type="text" value="请输入账号" onfocus="focus01(this)" onblur="blur01(this)"/>
    <script type="text/javascript">
        function focus01(obj){
            if(obj.value=="请输入账号"){
                obj.value="";
            }
        }
        function blur01(obj){
            if(obj.value.trim()==""){
                obj.value="请输入账号"
            }
        }
    </script>
</body>

1.3.4.6 变化事件 onchange

标签生改变时引发的操作事件,常常用来关联联动事件,如选择省市。

<body>

    <select id="province">
        <option value="sc">四川</option>
        <option value="jx">江西</option>
        <option value="hn">湖南</option>
        <option value="hb">湖北</option>
    </select><select id="city">
        <option>成都</option>
        <option>自贡</option>
        <option>雅安</option>
        <option>乐山</option>
        <option>眉山</option>
        <option>绵阳</option>
    </select><script type="text/javascript">

        var city = document.getElementById("city");

        //onchange - 改变事件
        document.getElementById("province").onchange = function(){
            if(this.value == "sc"){
                addCity(["成都","自贡","雅安","乐山","眉山","绵阳"]);
            }else if(this.value == "jx"){
                addCity(["南昌","赣州","新余","婺源","上饶","景德镇"]);
            }else if(this.value == "hn"){
                addCity(["长沙","湘潭","娄底","永州","张家界"]);
            }else if(this.value == "hb"){
                addCity(["武汉","咸宁","仙桃","黄冈"]);
            }
        }

        function addCity(arr){
            //清空city中的数据
            city.length  = 0;

            for(var i = 0;i<arr.length;i++){
                var cityName = arr[i];

                var option = document.createElement("option");
                option.innerText = cityName;

                city.appendChild(option);
            }
        }


    </script>

</body>

1.3.4.6 表单验证事件 onsubmit

此事件需要验证返回值,当点击submit按钮提交from表单时,会触发该事件,当事件的内容满足,自定义返回一个true,则提交生效,如果返回值为false,则不提交。

常用作前端验证:

<form id="modifyPassword" action="#" method="post">

    账号:<input id="username" type="text" placeholder="请输入账号" /><span></span><br />
    密码:<input id="password" type="password" placeholder="请输入密码" /><span></span><br />
    确认密码:<input id="repassword" type="password" placeholder="请输入确认密码" /><span></span><br />

    <input type="submit" value="提交" />
</form>

<script type="text/javascript">

    var username = document.getElementById("username");
    var password = document.getElementById("password");
    var repassword = document.getElementById("repassword");
    var span1 = document.getElementsByTagName("span")[0];
    var span2 = document.getElementsByTagName("span")[1];
    var span3 = document.getElementsByTagName("span")[2];

    //提交事件 - onsubmit
    document.getElementById("modifyPassword").onsubmit = function(){

        span1.innerText = "";
        span2.innerText = "";
        span3.innerText = "";

        var bool = true;

        if(username.value.trim() == ""){
            bool = false;
            span1.innerText = "账号不能为空";
        }
        if(password.value.trim() == ""){
            bool = false;
            span2.innerText = "密码不能为空";
        }
        if(repassword.value.trim() == ""){
            bool = false;
            span3.innerText = "确认密码不能为空";
        }else if(password.value.trim() != repassword.value.trim()){
            bool = false;
            span3.innerText = "确认密码与密码不一致";
        }

        return bool;
    }
</script>

1.3.5 DOM操作节点

1.3.5.1 创建节点

document.createElement(“标签名”):创建对应标签

1.3.5.2 添加节点

属性元素.appendChild(属性元素):在对应属性下添加新的属性

1.3.5.3 操作节点案例

<body>
    <input type="button" value="新增段落标签" onclick="addP()"/>
    <input type="button" value="新增图片标签" onclick="addImg()"/>
    <input type="button" value="克隆图片标签" onclick="cloneImg()"/>
    <input type="button" value="删除图片标签" onclick="deleteImg()"/>

    <div id="manager">
        <p>段落标签</p>
    </div>
    <script type="text/javascript">
        var manager =document.getElementById("manager");
        function addP(){
            var p = document.createElement("p")
            p.innerText="新增段落标签"
            manager.appendChild(p)
        }
        function addImg(){
            var img = document.createElement("img");
            // img.setAttribute("src","../img/2.png");
            img.src="../img/2.png";
            img.setAttribute("width","100px");
            img.setAttribute("height","100px");
            manager.appendChild(img)	
            //创建节点
            var br = document.createElement("br");
            //将br标签添加到div标签中
            manager.appendChild(br);
        }
        function cloneImg(){
            var img = document.getElementsByTagName("img")[0]
            var newImg = img.cloneNode(true)
            manager.appendChild(newImg)
            //创建节点
            var br = document.createElement("br");
            //将br标签添加到div标签中
            manager.appendChild(br);
        }
        function deleteImg(){
            var img = document.getElementsByTagName("img")[0];
            var br = document.getElementsByTagName("br")[0];

            manager.removeChild(img);
            manager.removeChild(br);
        }
    </script>
</body>

1.3.6 BOM

浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器“对话”。

Browser Object Model

1.3.6.1 window对象

所有浏览器都支持 window 对象。它表示浏览器窗口。

所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

全局变量是 window 对象的属性。

全局函数是 window 对象的方法。

甚至 HTML DOM document window

1.3.6.1.1 window.location

Location属性是一个用于存储当前载入页面URL信息的对象。

常常用作页面跳转和页面刷新:

<body>
    <input type="button" value="跳转到百度" onclick="fun01()"/>
    <input type="button" value="刷新页面" onclick="fun02()"/>

    <script type="text/javascript">
        function fun01(){
            //三种方式都可
            // window.location.href = "http://www.baidu.com";
            // window.location = "http://www.baidu.com";
            location = "http://www.baidu.com";
        }
        function fun02(){
            location.reload();
        }
    </script>
</body>
1.3.6.1.2 window.history

操作同一个浏览器会话中的已访问页面

常用方法:

back() 跳转到上一页

forward() 跳转到下一页

go(n) 跳转到上n页

go(-n) 跳转到下n页

注意:n为0时,go(0)效果和location.reload()相同为:刷新页面

<body>
    <input type="button" value="上两页" onclick="fun01()"/>
    <input type="button" value="上一页" onclick="fun02()"/>
    <input type="button" value="刷新" onclick="fun03()"/>
    <input type="button" value="下一页" onclick="fun04()"/>
    <input type="button" value="下两页" onclick="fun05()"/>

    <script type="text/javascript">
        function fun01(){
            window.history.go(-2);
        }

        function fun02(){
            //window.history.go(-1);
            history.back();
        }

        function fun03(){
            window.history.go(0);
        }

        function fun04(){
            //window.history.go(1);
            history.forward();
        }

        function fun05(){
            window.history.go(2);
        }
    </script>
</body>
1.3.6.1.3 window.open()

弹开一个新的页面(流氓广告)

<script type="text/javascript">
    window.open("http://www.baidu.com")
</script>

1.3.6.2 弹出框

1.3.6.2.1 警告框alert()

无返回值,界面直接弹出消息。

在这里插入图片描述

1.3.6.2.2 确认框confirm()

有返回值,会根据用户点击的按钮(确认or取消)返回一个Boolean值(true or false)

在这里插入图片描述

1.3.6.2.3 提示框prompt()

有返回值,提示框中用户能够填写信息,并返回。(如果点击取消,会返回一个null)

在这里插入图片描述

<body>
    <input type="button" value="警告窗" onclick="fun01()"/>
    <input type="button" value="确认窗" onclick="fun02()"/>
    <input type="button" value="提示窗" onclick="fun03()"/>

    <script type="text/javascript">
        function fun01(){
            alert("警告框");
        }
        function fun02(){
            console.log(confirm("确认框"))
        }
        function fun03(){
            console.log(prompt("提示框","默认值"))
        }
    </script>
</body>

1.3.6.3 定时器

延时定时器

过多少毫秒就执行次函数(只执行一次)

setTimeout 语法:var t=setTimeout(“javascript语句”,毫秒)

clearTimeout 清除定时器:clearTimeout(t)

示例:隔三秒,图片自动切换一次

<body>
    <input type="button" value="取消定时" onclick="fun01()"/>
    <br />
    <img src="../img/1.jpg" >

    <script type="text/javascript">
        var img = document.getElementsByTagName("img")[0];

        //定时器:过多少毫秒就执行次函数(只执行一次)
        var time = setTimeout(function(){
            img.src ="../img/2.png";
        },3000);

        function fun01(){
            clearTimeout(time)
        }
    </script>
</body>
循环定时器

每过多少毫秒就执行该函数(不限一次)

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法:var time = setInterval(“javascript语句”,毫秒)

clearInterval() :清除定时器: clearInterval(time)

示例:循环切换图片

<body>
    <img src="../img/3.jpg" width="20%">
    <input type="button" value="取消切换" onclick="fun01()"/>
    <script type="text/javascript">
        var time01;
        window.onload = function(){
            var img = document.getElementsByTagName("img")[0];
            var imgSrcs=["../img/1.jpg","../img/2.png","../img/3.jpg"];
            var index = 0;
            time01 = window.setInterval(function(){
                img.src = imgSrcs[index];
                index++;
                if(index==imgSrcs.length){
                    index=0;
                }
            },1000)
        }
        function fun01(){
            clearInterval(time01);
        }
    </script>
</body>

示例:时钟

<body>
    <h1></h1>

    <script type="text/javascript">
        var h = document.getElementsByTagName("h1")[0];

        function setTime(){
            //创建日期对象
            var date = new Date();
            //获取日期信息
            var hour = date.getHours();
            var minute = date.getMinutes();
            var second = date.getSeconds();

            var time = hour + ":" + minute + ":" +second;
            h.innerText = time;
        }
        setTime();
        setInterval(function(){
            setTime();
        },1000)
    </script>
</body>    

1.3.6.4 Cookie

cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个可用。因此,可以跨越一个域名下的多个网页,但不能跨越多个域名使用。

1.3.6.4.1 Cookie可以做什么?

1,保存用户的登录状态

2,定制页面,如换肤,选择所在地区等等

3,购物车的实现

4,记录用户的浏览历史记录

1.3.6.4.2 Cookie的缺点

1,cookie可能被禁用

2,cookie是与游览器相关的,即使访问同一个页面,不同的浏览器保存的cookie也是不能互相访问的

3,cookie可能被删除,因为cookie实际就是硬盘上的一个文件

4,的安全性不够高,所有的都是以纯文本的形式记录于文件中。

1.3.6.4.3 设置Cookie
设置Cookie内容

每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie
document.cookie=“userId=888”;

如果要一次存储多个名/值对,可以使用逗号加空格(; )隔开,例如:
document.cookie=“userId=888; userName=1601”;

注意:以下写法是保存了两个cookie信息,而不是覆盖(key相同时覆盖)

document.cookie=“userId=888”;
document.cookie=“userName=1601”;

如果要改变一个cookie的值,只需重新赋值,例如:

document.cookie=“userId=999”;
这样就将名为userId的cookie值设置为了999。

设置Cookie过期时间

到现在为止,所有的cookie都是内存会话cookie,即浏览器关闭后这些cookie将会丢失,事实上这些cookie仅仅是存储在内存中,而没有建立相应的硬盘文件。

在实际开发中,cookie常常需要长期保存,例如保存用户登录的状态。这可以用下面的选项来实现:document.cookie=“userId=828; expires=GMT_String”;

注:其中GMT_String是以GMT格式表示的时间字符串,这条语句就是将userId这个cookie设置为GMT_String表示的过期时间,超过这个时间,cookie将消失,不可访问。

<script type="text/javascript">
    function updateCookie(key,value,time){
        var date = new Date();
        date.setTime(date.getTime()+time)
        document.cookie = key + "=" + value + "; expires=" +date.toGMTString();
    }
</script>
1.3.6.4.4 获取Cookie

var strCookie=document.cookie;

这将获得以分号隔开的多个名/值对所组成的字符串,这些名/值对包括了该域名下的所有cookie。 (想要获取特定的值还需要进一步处理)

<script type="text/javascript">
    function queryCookie(key){
        var cs = document.cookie.split(";");
        for(var index in cs){
            var k=cs[index].trim().split("=")[0];
            var v=cs[index].trim().split("=")[1];
            if(k==key){
                return v;
            }
        }
    }
</script>
1.3.6.4.5 删除Cookie

为了删除一个cookie,可以将其过期时间设定为一个过去的时间((new Date()).getTime()-1或者直接是-1等等)

操作示例:
<body>
    <input type="button" value="添加Cookie" onclick="fun01()"/>
    <input type="button" value="删除Cookie" onclick="fun02()"/>
    <input type="button" value="修改Cookie" onclick="fun03()"/>
    <input type="button" value="查询Cookie" onclick="fun04()"/>

    <script type="text/javascript">
        function fun01(){
            updateCookie("username","dengshuo",1000*60*60*60*24*10);
            updateCookie("password","1234",1000*60*60*60*24*10);
        }
        function fun02(){
            updateCookie("username","",-1);
            updateCookie("password","",-1);
        }
        function fun03(){
            updateCookie("username","dengshuo_ddd",1000*60*60*60*24*10);
            updateCookie("password","123456",1000*60*60*60*24*10);
        }
        function fun04(){
            var username = queryCookie("username");
            var password = queryCookie("password");
            alert(username+"--"+password)
        }

        function updateCookie(key,value,time){
            var date = new Date();
            date.setTime(date.getTime()+time)
            document.cookie = key + "=" + value + "; expires=" +date.toGMTString();
        }
        function queryCookie(key){
            var cs = document.cookie.split(";");
            for(var index in cs){
                var k=cs[index].trim().split("=")[0];
                var v=cs[index].trim().split("=")[1];
                if(k==key){
                    return v;
                }
            }
        }
    </script>
</body>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值