关于js的零碎东西(4)

2018-10-07  本文已影响0人  战神七小姐
  7.解析地址栏参数

        var url="https://www.baidu.com?city=上海&id=123&name=张三&age=18";

        <1>.function getUrl(isurl){

              var pos=isurl.indexOf("?");//先找到"?"所在的下标

              var arr=isurl.slice(pos+1).split("&");//对下标进行截取

              for(var i in arr){

               //["city=上海", "id=123", "name=张三", "age=18"]

               var ind=arr[i].indexOf("=")+1;//找到"="所在的下标

               arr[i]=arr[i].slice(ind);//进行截取

              }

              return arr;

            }

            console.log(getUrl(url));// ["上海", "123", "张三", "18"]

        <2>.function getUrl(name,str){

                var pos=str.indexOf("?")+1;

                var arr=str.slice(pos).split("&");

                  for(var i in arr){

                    var newarr=arr[i].split("=");

                    if(newarr[0]==name){

                      return newarr[1];

                    }

                  }

                }

                console.log(getUrl("city",url));//上海

                console.log(getUrl("id",url));//123

    8.匿名自执行函数

        (function(){

            var a=b=10;

            console.log(a);

        })();

        console.log(b);

    9.日期对象

        new Date()//获取当前日期,包含年/月/日,时分秒

        new Date("2018/6/1" 或"2018-6-1"或 2018,5,1);

        .getFullYear()获取四位数的年份

        .getMonth()获取月份,0~11,0表示1月

        .getDate()获取日//星期;

        .getHours()获取时;

        .getMinutes()获取分;

        .getSeconds()获取秒;

        .getTime()从1970年1月1日8点到现在的毫秒值

        //.get获取  .set设置

        .setFullYear()设置四位数的年份

        .setMonth()设置月份,0~11,0表示1月

        .setDate()获取日;

        .setHourush(array[i]);

                }s()获取时;

        .setMinutes()获取分;

        .setSeconds()获取秒;

        .setTime()以毫秒数设置日期,会改变整个日期

        //开启定时器 属于Bom window对象

            1.间隔调用 

                setTnterval(匿名函数,毫秒值)//每隔一段时间调用一次

                setInterval(function (){

                    console.log("hello")

                },1000)//每一秒会打印出hello

            2.超时调用

                setTimeout(匿名函数,毫秒值)//超过指定时间只执行一次

                setTimeout(function(){

                    console.log("hello")

                },1000)//只打印出一个hello

        //清除定时器

        clearInterval(句柄)//清除间隔调用

            var num=0;

            var timer=null;//句柄

            timer=setInterval(function(){

                num++;

                if(num==10){

                  clearInterval(timer);

                }

                console.log(num);

            },1000);    

        clearTimeout(句柄)//清除超时调用

        //计算未来的第五天是周几

            var date=new Date();

            var day=date.getDate();



            date.setDate(day+5);

            console.log(date.getDate());//哪天

            console.log(date.getDay());//周几

    10.Dom

        document object model

        (1).查找元素

            <1>.通过ID名

                getElementById("ID名")

            <2>.通过标签名

                document.getElementByTagName("标签名")//找到的是类数组

                父元素.getElementByTagName("标签名")

            <3>.通过类名

                document.getElementByClassName()

                    在标准的浏览器里不存在兼容问题

            <4>. document.querySelector('.bg/#box/ul')//第一个元素

                 document.querySelectorAll('.bg/#box/ul')//所有的元素

            <5>.表单里:name名字

                document.getElementsByName('name名')

                document.body之整个页面

        (2).改变样式。。。//没弄完

            元素.style.属性名=属性值

            元素.style.background='red';

            如果遇到符合属性,改驼峰

                元素名.style.borderLeft='1px solid red';

            获取行内样式:元素名.style.background为字符串类型

            类名的添加样式和删除样式

                元素.className='类名1  类名2...'

                元素.className='';

            改变内容:

                元素.innerHTML='内容'

                元素.innerText='内容'

                元素.value 只对表单元素生效

            改变标准属性:

                获取属性

                    元素.属性名

                设置属性

                    元素.属性名=属性值

            改变自定义属性

            获取属性

                元素.getAttribute("属性名")

            改变属性

                元素.setAttribute("属性名","属性值")

            删除属性

                元素.removeAttribute("属性名")

        (3).事件

            鼠标事件

                <1>onclick        单击

                <2>onmouseover    鼠标滑过

                <3>onmouseout    鼠标离开

                <4>onmousedown    鼠标按下

                <5>onmousemove    鼠标移动

                <6>onmouseup      鼠标释放

                <7>ondblclick    鼠标双击

            键盘事件

                <1>onkeydown    按下

                <2>onkeypress  按下

                <3>onkeyup      释放

                非字符键    keydown keyup

                字符键      keydown  keypress  keyup

            焦点事件:

                onfocus 获取焦点

                onblur  失去焦点

    11.

        全局变量是window的属性,全局函数是window的方法

        location 获取地址栏信息

            location.href

            location.search

        navigator  判断浏览器的版本和型号

            navigator.userAgent用户代理字段

            navigator.search获取地址栏?以后的参数

            encodeURI(地址) //编码 以编码的方式进行地址栏传参

            decodeURI(传过来的地址) //编码 吧传过来的地址进行解码,获取参数

        history 历史记录

            history.go(11) 前进11步

            history.go(-11)后退11步

            history.back() 后退1步

            history.forward()前进1步

                                    Dom树

                                document(根)

                                html

                    head                    body

            meta  style  link          div a b span ...

        1.元素节点:所有的标签都是元素节点

        2.属性节点:所有的属性都是属性节点

        3.文本节点:内容(空白文本)都是文本节点

        节点关系:1.父子关系  2.兄弟关系

            1.操作子节点

                父元素.childNodes获取父元素下所有字节点,包括文本节点

                    返回值是类数组,通过下标访问元素,有length属性

                第一个子元素:父元素.firstChild 都包含空白节点

                最后一个子元素:父元素.lastChild 都包含空白节点

            2.操作兄弟节点:都包含文本节点 可以使用多次,多于两次最好就别用了,不优化

                .previousSibling    上一个兄弟节点

                .nextSibling  下一个兄弟节点

            3.操作父节点

                子元素.parentNode可以使用多次,多于两次最好就别用了,不优化

                父元素.children  只查找元素子节点,不查找文本节点,返回值:类数组通过下标访问元素,有length属性

                .firstElementChild第一个子元素,不包含文本节点

                .lastElementChild最后一个子元素,不包含文本节点

        节点的属性

                    类型:nodeType  名字:nodename    值:nodeValue

            元素节点:1              大写的标签名        null

            属性节点:2              属性名              属性值

            文本节点:3              #text              文本自身

            注释节点:8

            文档节点:9

            备注:元素节点的名字 nodeName  tagName

        创建节点

            1.创建元素节点 document.creatElement("")

            2.创建文本节点 document.creatTextNode("文本内容")

        追加子节点

            父节点.appendChild(子节点)将元素节点追加到父元素末尾处

        删除子节点

            父节点.removeChild(子节点)

        克隆节点

            要克隆的节点.cloneNode(true/false)

            false:默认 只克隆结构,不克隆内容 DIV

            true:结构和内容都克隆 DIV+里面的内容

        插入到哪个节点之前:

            父元素.insertBefore(子节点,哪个节点之前)

        方法封装

            1.通过id封装

                function $(id){

                    return document.getElementById(id);

                }

            2.添加类方法的封装

                function addClass(obj,cls){

                    obj.className+=""+cls;

                }

            3.删除类方法的封装

                function removeClass(obj,cls){

                    空格分成数组

                    var ar=obj.className.split("");

                    查找下标

                    var index=arr.indexOf(cls);

                    删除项

                     arr.splice(index,1);

                    把数组用空格连接起来转成字符串赋值给className

                     obj.className=arr.join("")

                }

            4.判断DOM元素上是否有某个类

            function hasClass(obj,cls){

                var arr=obj.class.split("");

                if(arr.indexOf(cls)!=-1){

                    return true;

                }else{

                    return false;

                }

            }
上一篇下一篇

猜你喜欢

热点阅读