day08

2018-06-29  本文已影响0人  折翼自由

1.window对象方法——定时器

JavaScript是单线程语言,所有代码按顺序执行

1.1超时调用-setTimeout()

setTimeout(code,millisec)
功能:在指定的毫秒数后调用函数或计算表达式

参数说明:
1.code:要调用的函数或要执行的JavaScript代码
2.millisec:在执行代码前需要等待的毫秒数
setTimeout方法返回一个id值,通过它取消超时调用
clearTimeout()

    <script>
        setTimeout(function(){
            alert(1);
        },2000)
    </script>
1.2.间歇调用-setInterval()

间歇调用-setInterval(code,millisec)
功能:每隔一段时间执行一次代码

clearInterval()
eg:num=0,max=10,每过一秒num++,当num>max清除定时器

 <script>
      var num=0,max=10;
       var interval = setInterval(function(){
            num++;
            console.log(num)
            if(num>max){
                clearInterval(interval)
            }
       },1000)
 </script>

2.location对象

location对象提供了与当前窗口中加载的文档有关信息,还提供了一些导航的功能,他既是window对象的属性,也是document对象的属性。
语法:location.href
功能:返回当前加载页面的完成URL
location.href与window.location.href等价

语法:location.hash
功能:返回URL中的hash(#号后跟0或多个字符),如果不包含则返回空字符串

语法:location.host
功能:返回服务器名称和端口号

语法:location.hostname
功能:返回不带端口号的服务器名称

语法:location.pathname
功能:返回URL中的目录和(或)文件名

语法:location.port
功能:返回URL中指定的端口号,如果没有,返回空字符串

语法:location.protocol
功能:返回页面使用的协议

语法:location.search
功能:返回URL的查询字符串,这个字符串以问号开始。

位置操作
改变浏览器的位置的方法:
location.href属性
location对象其他属性也可改变URL
location.hash
location.search
location.replace(url)

location.reload()
功能:重新加载当前显示的页面
说明:
.location.reload()从缓存加载
.location.reload(true)从服务器重新加载

3.history对象

history对象保存了用户在浏览器中访问页面的历史记录

语法:history.back()
功能:回到历史记录的上一步
相当于是用了history.go(-1)
//-1表示前一步,-2前两部

语法:history.go(1)
功能:回到历史记录的前一步
相当于history.forward()

语法:history.go(-n)
功能:回到历史记录的前n部
语法:history.go(n)
功能:回到历史记录的后n步

4.screen对象

screen对象包含有关客户端显示屏幕的信息
screen.availWidth
screen.availHeight

5.navigator对象

1.掌握Navigator对象的userAgent属性
2.掌握如何判断浏览器的类型
3.掌握如何判断设备的终端是移动还是PC
UserAgent:用来识别浏览器名称,版本,引擎以及操作系统等信息的内容。

   //检测浏览器类型
    if(/Android|iphone|webOS/i.test(navigator.userAgent)){
        location.href="mobile.html"
    }else if(/ipad/i.test(navigator.userAgent)){
        location.href="pad.html"
    }

6.1DOM扩展

6.1父节点parentNode(亲爹)
  <ul>
        <li>小米手机 <a href="#">删除</a> </li>
        <li>苹果手机 <a href="#">删除</a> </li>
        <li>华为手机 <a href="#">删除</a> </li>
    </ul>
    <script>
       var shows=document.getElementsByTagName("a");
       for(let i=0;i<shows.length;i++){
           shows[i].onclick=function(){
           this.parentNode.style.display="none";
            return false;
           }
       }
    </script>
6.2子节点childNodes和children的区别

childNodes,将子节点的背景色变为红色
长度为7,空格也占长度

<ul id="parent">
        <li>小米手机</li>
        <li>苹果手机</li>
        <li>华为手机</li>
    </ul>
    <script>
       let parent=document.getElementById("parent");
       let childs=parent.childNodes;
       for(let i=0;i<childs.length;i++){
           if(childs[i].nodeType==1){
               childs[i].style.backgroundColor = "red";
           }
       }
    </script>
 //chrome下结果为7,IE9以下结果为3
//在chrome下将空的文本节点,也算在内容

children,将子节点的背景色变为红色
长度为3

 <ul id="parent">
        <li>小米手机</li>
        <li>苹果手机</li>
        <li>华为手机</li>
    </ul>
    <script>
        let childs=document.getElementsByTagName("ul")[0].children;
        for(let i=0;i<childs.length;i++){
            childs[i].style.backgroundColor="red";
        }
        console.log(childs);
    </script>

firstChild //包含所有类型的节点
firstElementChild //IE9以下不兼容
lastChild //所有类型的节点
lastElementChild //IE9以下不支持


111.png
  <ul id="parent">
                <li>小米手机</li>
                <li>苹果手机</li>
                <li>华为手机</li>
            </ul>
            <script>
            var parent=document.getElementById("parent");
            var fc=document.getElementById("parent").firstChild;
            var fe=parent.firstElementChild;
            console.log(fc);
            console.log(fe);
            </script>
6.3兄弟节点

nextSibling
nextElementSibling
//IE9以下不支持
previousSibling//节点属性
previousElementSibling //节点内容
//IE9以下不支持

  <div>
        <p>hello 01</p>
        <p id="test">hello 02</p>
        <p>hello 03</p>
    </div>
    <script>
        let test = document.getElementById("test");
        let ps = test.previousSibling;
        let pss = test.previousElementSibling;
        console.log(ps);
        console.log(pss);
    </script>

6.4定位(只读属性)

offsetParent //获取给了定位元素的父级
offsetLeft //返回元素的水平偏移位置。 返回number
offsetTop //返回元素的垂直偏移位置。
offsetWidth //返回元素的宽度
offsetHeight //返回元素的高度

//css
<style>
    *{margin: 0;
      padding: 0;}
 div{
        width: 100px;
        height: 100px;
        background:red;
        margin: 100px;
        position: absolute;
        left: 100px;
        border: 10px  solid green;
        }
</style>
//html
<div id="test">
</div>
<script>
  let test=document.getElementById("test");
  let offl=test.offsetLeft;
  let offt=test.offsetTop;
  let offw=test.offsetWidth;
  let offh=test.offsetHeight;
  test.offsetWidth="200px";
  console.log(offl);
  console.log(offt);
  console.log(offw);
  console.log(offh);
</script>

6.5操作元素的属性

 <p id="test">hello world</p>
    <script>
        var p=document.getElementById("test");
        function changeStyle(ele,attr,value){
            ele.style[attr]=value;
        }
        changeStyle(p,"backgroundColor","green")
    </script>
6.5.1获取,设置,删除

getAttribute(AttrName);
setAttribute(AttrName,AttrValue);
removeAttribute(AttrName);

 <p id="test" class="one">hello world</p>
    <script>
        var test=document.getElementById("test");
        test.setAttribute("class","two");
        test.removeAttribute("class");
        var cValue=test.getAttribute("class");
        console.log(cValue);
    </script>

6.6浏览器窗口可视区域的大小

6.6.1、对于IE9+、Chrome、Firefox、Opera 以及 Safari:

• window.innerHeight - 浏览器窗口的可见内部高度
• window.innerWidth - 浏览器窗口的可见内部宽度

6.6.2、对于 Internet Explorer 8、7、6、5:

• document.documentElement.clientHeight表示HTML文档所在窗口的当前高度。
• document.documentElement.clientWidth表示HTML文档所在窗口的当前宽度。
//没有DOCTYPE的IE中,浏览器显示窗口可以通过以下获取
Document对象的body属性对应HTML文档的<body>标签

 <script>
        var windowWidth=window.innerWidth;
        var windowHeight=window.innerHeight;
        var wd=document.documentElement.clientHeight;
        var ww=document.documentElement.clientWidth;
        var dh=document.body.clientHeight;
        var dw=document.body.clientWidth;
        console.log(windowWidth);
        console.log(windowHeight);
        console.log(ww);
        console.log(wd);
        console.log(dh);
        console.log(dw);
    </script>
6.7获取网页内容的宽高

document.documentElement.scrollHeight
document.documentElement.scrollWidth

 <div>

    </div>
    <script>
        var windowWidth=window.innerWidth;
        var windowHeight=window.innerHeight;
        var dw=document.documentElement.scrollWidth;
        var dh=document.documentElement.scrollHeight;
        console.log(windowWidth,windowHeight);
        console.log(dw,dh);
    </script>
6.8文档碎片
  • 文档碎片可以提高DOM操作性能
  • document.createDocumentFragment()
  • 原理:将dom暂存在fragment上,之后一次性添加到dom
  <ul id="parent">
    </ul>
    <button id="btn">btn</button>
    <script>
       var btn=document.getElementById("btn");
       var parent=document.getElementById("parent");
       var frame=document.createDocumentFragment();
       btn.onclick=function(){
           for(let i=0;i<=10;i++){
               let li=document.createElement("li");
               frame.appendChild(li);
           }
           parent.appendChild(frame);
       }
    </script>
6.9表格应用
//css
    <style>
        table,td,th{
            border: 1px solid #333;
        }
        table{
            border-collapse: collapse;
            width: 500px;
            line-height: 50px;
            text-align: center;
        }
    </style>
/html
    <table id="table">
        <thead>
            <tr><th>商城</th><th>手机</th></tr>
        </thead>
        <tbody>
            <tr><td>JD商铺</td><td>苹果手机</td></tr>
            <tr><td>天猫</td><td>华为手机</td></tr>
            <tr><td>拼多多</td><td>魅族手机</td></tr>
            <tr><td>苏宁</td><td>小米手机</td></tr>
        </tbody>
    </table>
    <script>
        var table=document.getElementById("table");
        var thead=table.tHead;
        var tbody=table.tBodies[0];
        var rows=tbody.rows;
        var firstCell=rows[0].cells[0];
        thead.style.backgroundColor="#eee";
        console.log(rows);
        for(let i=0;i<rows.length;i++){
            rows[i].style.backgroundColor=(i%2==0)?"#ff2d51":"#44cef6";  
        }
        firstCell.innerHTML="银泰百货";
    </script>
  • 添加,删除一行
 <style>
        tbody tr:nth-child(even){
            background: #ff2d51;
        }
        tbody tr:nth-child(odd){
            background: #44fce6;
        }
        table,td,th{
            border: 1px solid #333;
        }
        table{
            border-collapse: collapse;
            width: 500px;
            line-height: 50px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div>
        手机品牌<input type="text" id="phone">
        价格<input type="text" id="price">
        <button id="btn">添加</button>
    </div>
    <table id="table">
            <thead>
                <tr><th>手机品牌</th><th>价格</th></tr>
            </thead>
            <tbody>
                <tr><td>苹果7</td><td>8k</td></tr>
            </tbody>
        </table>
    <script>
       var btn=document.getElementById("btn");
       var phone=document.getElementById("phone");
       var price=document.getElementById("price");
       var tbody=document.getElementById("table").tBodies[0];
     
       btn.onclick=function(){
             var tr=document.createElement("tr");
             var td=document.createElement("td");
             td.innerHTML=phone.value;
             tr.appendChild(td);
             var td1=document.createElement("td");
             td1.innerHTML=price.value;
             tr.appendChild(td1);
             console.log(td1);
             tbody.appendChild(tr);
       } 
    </script>
</body>

7.function

7.1.函数的创建方式

开发过程中推荐使用第一种

1.function go(a){
    console.log(a)
}
2.var go = function(a){
    console.log(a)
}
3.var go = new Function(“a”,”console.log(a)”)

es6箭头函数

        var go=()=>{
            console.log("asdfa");
        }
        go();
        
7.2.函数的返回值

a.什么是函数的返回值
定义:函数的执行结果
函数可以没有return�说明:
1.函数会在执行完return语句之后停止,并立即退出
2.return语句也可以不带任何返回值,用于提前停止函数执行

function show(){
  return "hello world" //return的作用:把结果返回到函数外部
}
var b = show(); // 在哪调用返回到哪里;
7.3. 函数的传参

可变参(不定参)arguments
参数的个数可变,参数数组
//对传入的参数求和

function sum(){
        var result=0;
        for(var i = 0;i<arguments.length;i++){
            result+=arguments[i];
        }
        return result;
}
alert(sum(2,3))
7.4.JS中重载

重载:根据传入的参数不同,动态决定调用那种方法
函数内部有一个arguments对象来管理函数传入的参数

  <script>
        function test(){
            if(arguments.length==1){
                console.log(arguments[0]);
            }else if(arguments[1]){
                console.log(arguments[0]+arguments[1]);
            }else{
                console.log("asdfasdf");
            }
        }
        test();
        test(1);
        test(2,3);
    </script>

js不支持重载,要想支持重载,可以使用arguments对象

8.基本类型和引用类型的区别

总结:
基本类型只穿值
引用类型既传值也穿址

1.基本类型的值在内存中占据固定大小的空间,因此被保存在栈内存中。
2.引用类型的值是对象,保存在堆内存中。
3.包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针。
4.从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象。

9 数组的常用方法

9.1.创建数组的方式
9.1.1字面量
var arr =[1,2,3]
9.1.2构造函数(了解)
var arr = new Array();
arr[0] = 1;
9.2数组的遍历
for(var i=0;i<arr.lengh;i++){
    console.log(arr[i])
}
for(var k in arr){
    console.log(arr[k])
}
9.3.检测数组
if(arr instanceof Array){}
if(Array.isArray(arr)){}

9.4.数组的方法

9.4.1增加(改变数组的内容)

push() //从尾部添加

var arr = [1,2,3];
arr.push(4);
console.log(arr);    //1,2,3,4

unshift() // 从头部添加

var arr = [1,2,3];
arr.unshift(0);
alert(arr);  //0,1,2,3

push方法复制数组

var arr = [12,11,33];
        var b = [];
        for(var i=0;i<arr.length;i++){
            b.push(arr[i]);
}
console.log(b);
9.4.2增加 concat()(不改变原来数组内容)

concat(value|[arr]) 本方法可以传单个值,也可以传数组

var arr = [1,2,3];
var b = arr.concat(4);
console.log(arr); //1,2,3
console.log(b); //1,2,3,4

eg:复制数组

var arr=[1,2,3];
var b =[].concat(arr);
console.log(b); //1,2,3
9.4.2删除(改变)

不接收参数

pop() //从尾部删除

var arr = [1,2,3];
alert(arr.pop());  //3
alert(arr)  //1,2

shift() // 从头部删除

var arr = [1,2,3];
alert(arr.shift());  //1
alert(arr)  //2,3
9.4.3修改

指定三个参数arrObject.splice(index,howmany,item)
指定三个参数:起始位置,删除的项数,插入的数量

var arr = [1,2,3,4,5];
arr.splice(0,2,6,7);
alert(arr); //6,7,4,5

arrayObject.slice(start,end)
1个参数

var  arr=[1,2,3,4];
var b=arr.slice(1);
console.log(b);  //2,3,4

2个参数

var c = arr.slice(1,3);
console.log(c); //2,3

slice复制数组

var arr = [1,2,3];
var b = arr.slice(0);
console.log(b);
9.4.4查询

arr[index] 查询对应下标的值

var arr=[1,2,3];
console.log(arr[0]);  //1;

indexOf(value) 查询对应值的下标

var arr=[1,2,3,4];
console.log(arr.indexOf(1)); //0
//如果没有对应的值,则返回-1

9.4.5splice(改变原来数组) 包含增,删,改

增加,指定三个参数splice(index,howmany,item)
splice(index,howmany,item)
传3个参数表示:起始位置、0(删除的项数)、插入的项在index之后

var arr= [1,2,3,4,5];
arr.splice(2,0,"red","green");  //在第2位之后,增加2个元素
console.log(arr); //[1,2,"red","green",3,4,5]

删除,指定两个参数splice(index,howmany)

//splice(index,howmany)
//传2个参数表示:起始位置和删除的个数
var arr = [1,2,3,4,5];
arr.splice(0,2);  //从0位开始,删除2个
alert(arr);  //[3,4,5]

修改,指定三个参数splice(index,howmany,item)
指定三个参数:起始位置,删除的项数,插入的数量

var arr = [1,2,3,4,5];
arr.splice(0,2,6,7);
alert(arr); //6,7,4,5

9.4.6join

通过指定分隔符,将数组所有元素放入字符串
arrayObject.join(separator)

var arr=["red","green","yellow"];
var a = arr.join();    //red,green,yellow
var b=  arr.join("");  //redgreenyellow
var c=arr.join(".");  //red.green.yello
alert(c);
9.4.7排序

通过指定分隔符,将数组所有元素放入字符串
arrayObject.join(separator)
a.升序

 var arr = [1,12,34,5,6];
    var c = arr.sort(function(a,b){
        return a-b;
    });
   console.log(c); //[1,2,5,6,12,34]

b.降序

arr.sort(function(a,b){
        return b-a;
});

9.4.8归并(求和)方法

通过指定分隔符,将数组所有元素放入字符串
arrayObject.join(separator)

 var numbers = [1,2,3,4,5];
 var sum = numbers.reduce(function(prev,cur,index,array){
        return prev+cur;
 });
 alert(sum);  //15

9.4.9 reverse()

颠倒数组中的元素
返回值 ——数组

 var arr = [12,11,33];
 var b = arr.reverse();
  console.log(b);  //33,11,12

9.4.10二维数组

数组里还可以装载一个数组
取值方式arr[i][i]

  var arr=[[1,2]];
  console.log(arr[0][0])
上一篇下一篇

猜你喜欢

热点阅读