JS学习笔记9

  • html5存储

            html5存储和cookie的区别
            1.cookie存储在浏览器下,html5存储在磁盘中
            2.cookie在服务端发送,html5在客户端使用
            3.cookie需要联网使用,html5可以不用网络
            4.cookie最多存储4kb,html5看磁盘大小
            5.cookie有时间周期,到时间会自动删除,html5除非手动删除,否则一直存在
        cookie存储
cookie用来存储页面的值,一个网站共享一套cookie,cookie并不是浏览器提供的,是由程序员自己创建的,一个文件大小不得超过4kb,每个网站能存储20个左右,在一定期限内cookie会过期
            操作
                document.cookie 设置或返回cookie
                注意:如果cookie不给设置时间,则浏览器关闭会消失
                时间属性expires是固定的,用日期类型定义
            自己封装cookie操作方法

function getcookie(attr){ //查询
    var cok=document.cookie
    var arr=cok.split(";")
    for(var i=0;i<arr.length;i++){
        var x=arr[i].split("=")
        if(x[0].trim()==attr){ return x[1] }
    }
}
function setcookie(attr,value,time){  //添加,修改
    document.cookie=attr+"="+value+";expires="+time
}
function deletecookie(attr){  //删除
    var t=new Date()
    t.setDate(t.getDate()-1)
    document.cookie=attr="=;expires="+t
}


            cookie作用:登录状态,跟踪用户行为,定制页面,创建购物车
        html5本地存储
            sessionStorage:会话型存储,在浏览器关闭之后,数据会自动消失
            localStorage:本地型存储,除非程序员手动删除,否则一直存在
            属性和方法
            1.clear()清空数据
            2.key()遍历数据
            3.getItem(attr)获得数据
            4.setItem(attr,value)设置属性值

  •         database前端数据库

            属性和方法
               1.openDatabase(数据库名称,版本,说明,大小) 创建数据库 
               2.transaction(执行函数,错误函数,成功函数)执行事务的提交和回滚
               3.executeSql(sql语句,成功函数,错误函数) 执行sql语句函数
               4.result.rows.length 获得信息的个数
               5.result.rows.item(i)获取第几条信息
               6.result.rows.item(i)[字段名] 获得属性信息
            sql语句
               创建表
                  create table if not exists 表名(
                      id REAL UNIQUE , //主键不能为空,必须唯一
                name TEXT,
                age INTEGER
                  )
               添加
                  insert into 表名(字段名1,字段名2) values(?,?)[1,"lisi"]
               修改
                  update 表名 set age="",name="" where id=1
               删除
                  delete from 表名 where id=1
               查询
                  select * from 表名  查所有
                  select * from 表名 where id=1  按条件查询
                  select name,age from 表名  查部分字段
        web worker对象 (异步函数)
            js本身是单线程处理,通过web worker可以模拟多线程,虽然单线程处理比较安全,
            但是如果处理时间过长,就会处于无响应的状态,所以可以用多线程来进行解决
            1.创建web worker对象
            var w=new Worker("js文件路径")
            2.发送数据
            w.postMessage(要发送的值)
            3.接收数据
            w.onmessage=function(value){
                value是接收的数据
            }
            4.w.οnerrοr=function(error){
                error.message输出错误信息
            }
            5.结束进程
            w.close()
        测试斐波那契数列
            单线程例子
            btn1.οnclick=function(){  //向文本框写数据
                        var v=document.getElementById("invalue")
                        document.getElementById("outvalue").value=fei(v)
                        }
                    btn2.οnclick=function(){ //测试进程
                        alert("进程没有卡死")
                            }
                   function fei(n){ //斐波那契数列
                            if(n<=2){
                            return 1
                            }else{
                            return fei(n-1)+fei(n-2)
                            }
                            }
            多线程例子
               页面的函数
            var btn1 = document.getElementById(".btn1")
                    var btn2 = document.getElementById(".btn2")
                    btn1.onclick = function () {  //计算结果
                        var v = document.getElementById("invalue").value
                        if (typeof Worker != "undefined") {
                        var w = new Worker("js/test.js")
                        w.postMessage(parseInt(v))  //发送
                        w.onmessage=function(){
                            document.getElementById("outvalue").value=res.data
                            }
                        } else {
                            alert("不支持多线程")
                            }
                    }
               js下的函数
            onmessage=function(res){
                    var n=res.data
                    var sum=fei(n)
                    postMessage(sum)  //发送
            }
            function fei(n){
                    if(n<=2){
                        return 1
                    }else{
                        return fei(n-1)+fei(n-2)
                    }
            }
        文件操作
            js有两种机制:一个事件机制,一个是io机制
            文件操作对象
                Blob 通过二进制数据读取
                file 读取单个文件对象
                fileList 读取多个文件对象
                fileReader 把文件按字节读取
            fill和fillList的方法
                name获得文件名称
                size获得字节大小
                type 获得文件类型
                lastModifiedDate 最后修改日期
            单文件上传
                var file=document.querySelector(".file").files[0]
                            var h1=document.querySelector(".font")
                            h1.innerHTML="文件名称:"+file.name+"<br>"+
                                                  "自己长度:"+file.size+"<br>"+
                                                  "最后修改日期:"+file.lastModifiedDate+"<br>"+
                                                  "文件类型:"+file.type+"<br>"
            多文件上传
                var file=document.querySelector(".file").files
                            var name=""
                            for(var i=0;i<file.length;i++){
                                name+=file[i].name
                            }
            fileReader
               事件操作
                onloadstart 获取文件时触发
                onprogress读取过程中触发
                onload读取文件成功完成时触发
                onabort读取文件中断时触发
                onerror读取文件错误时触发
                onloadend读取文件完成时触发(无论成功与否)
               属性和方法
                readAsBinaryString(file) 以二进制形式读取
                readAsText(file,字符集) 以某种字符编码读取
                readAsDataURL()以字符串形式读取文件,保存的是对象类型,可以获得对象
                result获取读取处理对象的信息
                loaded获取当前文件的字节数
                abort()中断读取数据
                slice(开始,步长)分段读取
                   slice() 处理兼容性,添加浏览器前缀
        文件拖拽
            <img draggable="true"> 设置文件可拖拽
            DataTransfer 拖拽对象
            事件操作
                ondragstart 鼠标放在拖拽元素上开始触发
                ondragenter 拖拽元素进入目标元素触发
                ondragover 拖拽元素在当前目标元素上移动进行触发
                ondrop 拖拽元素进入目标元素,并且鼠标松开时触发
                ondragend 拖拽元素完成拖拽后进行触发
            属性和方法
                getData() 获得数据
                setData(url/text,对象/文本内容) 设置文本或标签内容
                preventDefault() 启动元素放置事件
                dropEffect 被拖动元素的权限设置
                   none 不能将元素放在目标元素上
                   move 可以移动元素在目标元素上
                   copy 将拖拽元素进行复制
                   link 打开拖动元素的地址
                effectAllowed 允许拖动的效果 
                   none 被拖拽的元素不能有任何行为
                   copy 只允许复制
                   move 只移动
                   link 只允许打开链接
                   copyLink 允许复制和打开链接
                   linkMove 允许打开链接和移动
                   copyMove 允许复制和移动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小华仔仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值