美文网首页
js总结(!!!)

js总结(!!!)

作者: 3ab670b99521 | 来源:发表于2018-08-16 10:22 被阅读0次

    简述JavaScript起源
    起源于美国的Netscape公司,原名为LiveScript,后改为JavaScript,他是一种脚本语言,用于与浏览器实现对话

    JavaScript三大核心
    ECMAScript,
    Web浏览器对于EMCAScript来说是一个寄宿环境,但他并不是唯一的寄宿环境。事实上,还有不计其数的其他环境可以容纳ECMAScript实现。
    文档对象模型(Dom,Document Object Model),
    如果没有document(文档),DOM也就无从谈起。当创建了一个页面并把它加载到Web浏览器时,DOM就在幕后悄然而生。他根据编写的页面文档创建一个文档对象
    浏览器对象模型 (Bom,Browser Object Model),
    BOM提供了独立于内容的与浏览器窗口进行交互的对象。由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window.

    javascript的特点
    编写简单
    无需编译,直接运行
    面向对象的编程语言

    JavaScript的运用方式
    内部运用:在</body>结束语随意位置就可以,写入
    <script type="text/javascript">
    写入脚本js
    <script/>
    外部链接:
    <script type="text/javascript" src="写入你的路径"></script>

    声明变量:

    var name='king';
    console.log(name);

    常亮赋值:

    const PI=3.55;
    const PI=3.84;
    console.log(PI);

    js最基本的三种输出方式:

    console.log('hello king');
    document.write('hello king')
    alert('hello king');

    命名规范:

    var name='king';
    var name1='king';
    var name_1='king';
    var $name='king';

    变量赋值:

    var name='king';
    var name='queen';
    console.log(name);
    console.log(typeof name);

    声明变量与未声明变量:

    //1.声明变量不赋值,返回undefined
    var hename
    console.log(hename);

    //2.直接输出未声明的变量,会报错
    console.log(ahflk);

    数据类型的转换:
    number

    var num1=10;
    var num2=16;

    string

    var str1='king';

    boolean

    var boo=true;
    var oo2=false;

    undefined

    var undef;

    1)number + number = number

    var num3=num1+num2;
    console.log(num3);//26
    console.log(typeof num3);

    2)number + string = string

    var str=num1+str1;
    console.log(str);//10hello
    console.log(typeof str);

    3)number + boolean = number

    var boo=num1+boo1;
    console.log(boo);//11
    console.log(typeof boo);

    4)number + undefined = number

    var und=num1+undef;
    console.log(und);//NAN
    console.log(typeof und);

    5)string + boolean = string

    var stb=str1+boo1;
    console.log(stb); //kingtrue
    console.log(typeof stb);

    6)string + undefined = string

    var sfind=str1+undef;
    console.log(sfind);/kingundefined
    console.log(typeof sfind);

    数据类型转换减法操作:

    var num1 = 10;
    var str1 = "11";
    var str2 = "Hello";
    var str3 = "35";
    var str4 = "waht";

    console.log(num1+str1);//1011
    console.log(num1-str1);// -1
    console.log(str1+str3);//1135
    console.log(str3-str1);//24
    console.log(str2-str4);//NaN

    运算符-逻辑运算符:

    var num = parseInt(prompt("请输入一个数字"));
    //判断 num 是否在 0~10之间
    var result=(num>=0&&num<=10);
    console.log(num+"在0~10之间吗?"+result);

    转换:
    parseInt();-转换成整数;(没有四舍五入)。

    parseFloat();转换为小数;基本不变 如果是0.xx的话可省略小数点前面的0。

    Number();转换为number类型最后结果只会是unmber(数字)类型。

    toString();转换成字符串最后结果都是字符串(string);。

    toFixed();按要求保留小数位数。

    a.toFixed();括号里面是保留几位小数不能过于大,有四舍五入的功能。

    显示装换 强制转换:

    parseInt();转换成整数

    var a=5.3;

    var b=parseInt(a);

    console.log(typeof a);

    parseFloat();转换成小数

    var a='.33';

    var b=parseFloat(a);

    cosole.log(b);

    console.log(typeof b);

    Number();转换成number类型

    var a='5';

    var b=Number(a);

    console.log(b)

    console.log(typeof b)

    toSting();转换成字符串

    var a=3

    var b=a.toSting();

    console.log(b);

    console.log(ty

    toFiexd();按要求保留几位小数

    var a=14.95;

    var b=a.toFixed(1);

    console.log(b);

    三目运算法:条件+?score>=60?就是条件;

    如: (

    var score=prompt('成绩')

    var result=score>=60?'合格':'不合格';

    alert(result); )

    满足两个条件(

    var sleep=prompt('请输入您的睡眠时间')

    var result=sleep>=8?'正常':'不正常';

    var result=sleep<=10?'正常':'不正常';

    alert(result); )

    符号引用:

    与(和,且):&&;

    或:||

    非:! 去与它相反的(如果他是对的用“非”的话就是错的)

    有假且(&&)为假,有真或(||)为真意思是

    在“和”(&&)里只要有一个是假的那他整个都是假的

    在“或”(||)里面有一个是真的那么他全部都是真的

    在 和(&&)里面有一个是假的它输出的就是false 在或里面有一个是真的那么他输出的就是true

    循环语句:while

    var a=1;

    while(a<=10){

    console.log('GOGOGO');
    
    a++;
    
    }
    

    (1-100)

    var a=1;

    while(a<=100){

    document.write(a);

    a++;

    }

    var a=1;

    while(a<=100){

    document.write(a++);//++a:偶数;a++:奇数;

    a++;

    }

    模:

    var a=1;

    while(a<=100){

    if(a%2==0){

    console.log(a);

    };

    a++;

    };

    var a=1;

    while(a<=100){

    console.log(a);

    a+=a=2;

    };

    for循环语句:

    for(1.声明一个(多个)变量;条件;对变量进行操作)

    for(var i=1;i<=10; i++){

    console.log('hello word');

    }

    for(var i=1;i<=100; i++){

    console.log(i);

    }

    for(var i=1;i<=100;i++){

    if (i%2==0){

    console.log(i);

    }

    }

    //奇数:

    for(var i=1,sum=0;i<=100;i++){

    if(i%2==1){

    sum=sum+i;

    }

    }

    console.log(sum);

    //偶数:

    for(var i=1,sum=0;i<=100;i++){

    if(i%2==0){

    sum=sum+i;

    }

    }

    console.log(sum);

    求出数组中的最大值:

    var arr=[1,3,4,2,5];

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

    if(arr[i]>sum){

            sum=arr[i];
    
      }
    

    }

    console.log(sum);

    1.遍历数组,同时声明变量sum并且赋值为数组中的某个元素

    2如果数组中的当前元素大于sum,就把数组中的当前元素赋值给sum

    3.输出sum

    for循环:

    //五行星星:

    for(var a=1;a<=5;a++){

    document.write('
    ');

    for(var b=1;b<=10;b++){

    document.write('*')

          }               
    

    }

    //三角星星:

    for(var a=1;a<=5;a++){

    document.write('
    ');

    for(var b=1;b<=a;b++){

    document.write('*')

     }
    

    }

    //99乘法表:

    for(var a=1;a<=9;a++){

    document.write('
    ');

    for(var b=1;b<=a;b++){

    document.write(b+''+a+'='+(ab)+'\t')

       }
    

    }

    数组:内存中的一段存储空间,多个变量的集合 创建一个数组(声明)

    var arr=[]; 声明了一个空数组

    var arr=new Array();

    给数组中添加值

    var arr=[1,2,3,4,5];

    var arr1=['a','b','c','d'];

    var arr2=[true,false]

    数组中的值不限制数据类型

    数组不限制长度

    两个特点

    1.下标:标识数组中元素的位置,从0开始,递增不重复

    2.长度 length

    var arr=[1,2,3,4,5,6,7,8,9];

                0 1 2 3 4 5 6 7 8       
    

    console.log(arr.length)

    输出数组中下标为4的值

    consolze.log(arr[4])

    数组的长度等于最大下标+1

    给数组下标为11的位置处添加元素

    arr[11]='a'

    console.log(arr);

    //数组API:

    1.String();把数组转换成字符串

    var arr=[1,2,3,4,5];

    var str=String(arr);

    console.log

    2.join('拼接符');拼接,最后拼接成的是字符串

    如果没有拼接符,默认等于String;

    var arr=['h','e','l','l','o'];

    var str=arr.join('-');

    var str=arr.join('');

    var str=arr.join();

    console.log(str);

    3.const();拼接 结果还为数组

    var arr=['a','b','c'];

    var arr2=[1,2,3,4,5];

    var str=arr.concat(1,2);

    var str=arr.concat(arr2);

    console.log(str);

    4.slice(starti,endi+1);截取

    特点:1含头不含尾

    2.如果省略第二个参数,默认从starti开始截取到结尾

    3.如果一个参数都不写,相当于复制原数组

    4.支持负数参数

    var arr=['a','b','c','d','e','f','g'];

          0  1  2  3  4  5  6
    

    var str=arr.slice(2,5);

    var str=arr.slice(2);

    var str=arr.slice();

    var str=arr.slice(-3,-1);

    console.log(str);

    5.splice(starti,n);

    删除 插入 替换

    var arr=['a','b','c','d','e','f'];

          0  1  2  3  4  5
    

    删除:

    var str=arr.splice(3,2);

    插入var str=arr.splice(3,0,'1','2');

    替换

    var str=arr.splice(3,2,'A','B');

    console.log(str);

    console.log(arr);

    6.翻转

    var arr=[1,2,3,4,5];

    var str=arr.reverse();

    console.log(str);

    7.push();给数组末尾添加元素

    var arr=[1,2,3,4,5];

    var str=arr.push('a',10);

    console.log(arr);

    pop();删除数组末尾的元素

    var arr=[1,2,3,4,5];

    var str=arr.pop();

    console.log(arr);

    unshift();给数组开头添加一个元素

    var arr=['a','b','c']

    var str=arr.unshift('fff');

    console.log(arr);

    shift();删除

    var arr=[1,2,3,4,5];

    var str=arr.shift();

    console.log(arr);

    //Dom: 操作页面元素(增删改查)

    1.查找:

    一.通过元素间的关系查找

    1)父子关系

    parentElement 查找一个元素的父元素

    console.log(ceshi.parentElement) //查找id为ceshi的父元素

    ceshi.parentElement.style.backgroundColor='#ccf'; //设置ceshi父元素的背景色

    children 查找一个元素的所有子元素(输出为数组形式)

    console.log(ceshi.children); //查找id为ceshi的所有子元素(!结果为数组形式!)

    ceshi.children[2].style.color='#f00';//给ceshi的子元素中下标为2的设字体颜色

    var a=ceshi.children; //给ceshi的所有子元素的设置字体颜色

    for(var i=0;i

    ceshi.children[i].style.backgroundColor='#0f0';

    }

    console.log(ceshi.children[2].children[0].children[2])

    var b=ceshi.children[2].children[0].children[2];

    b.style.color='#50f';

    firstElementChild 查找一个元素的第一个子元素(输出为原来的形式)

    lastElementChild 查找一个元素的最后一个子元素(输出为原来的形式)

    // console.log(ceshi.firstElementChild.)

    2)兄弟关系

    previousElementSibling 前一个兄弟

    nextElementSibling 下一个兄弟

    //找 阳光的快乐生活

    var c=ceshi.firstElementChild.nextElementSibling.children[0].firstElementChild.nextElementSibling;

    console.log(c);

    c.style.backgroundColor='#00f';

    //找 回村的诱惑

    var d=ceshi.children[2].previousElementSibling.firstElementChild.lastElementChild;

    console.log(d);

    d.style.color='#ff0';

    找 儿子去哪儿

    var e=ceshi.firstElementChild.nextElementSibling.nextElementSibling.firstElementChild.lastElementChild

    console.log(e);

    e.style.backgroundColor='#0ff';

    二.通过HTML查找

    1)通过id查找

    var ele=document.getElementById('id号'); //只能找到一个

    var id=document.getElementById('ceshi');

    console.log(id);

    id.style.backgroundColor='#f0f';

    2)通过class查找

    var ele=document.getElementsByClassName('class名'); //可以找到多个 并且返回一个动态集合(数组)

    var main=document.getElementsByClassName('main');

    console.log(main);

    main[0].style.backgroundColor='#ff0';

    3)通过标签名查找

    var ele=document.getElementsByTagName('标签名') //可以找到多个 并且返回一个动态集合(数组)

    var li=document.getElementsByTagName('li');

    console.log(li);

    for(var i=0;i

    li[i].style.color='#c2c';

    };

    4)通过name属性查找

    var ele=document.getElementsByName('name'); //可以找到多个 返回动态集合 (数组)

    var uname=document.getElementsByName('uname');

    console.log(uname)

    三.通过选择器查找

    1. var ele=document.querySelector('选择器'); //只能找到一个

    var lia=document.querySelector('#ceshi>li>ul>li:last-child');

    console.log(lia);

    lia.style.color='#f0f';

    1. var ele=document.querySelectorAll('选择器'); 查找所有 返回动态集合 (数组)

    var liall=document.querySelectorAll('.main>li');

    console.log(liall);

    for(var i=0;i

    liall[i].style.backgroundColor='#cf0';

    }

    //函数:预先定义好的,可以被反复利用的代码块

     function fn(){fn 表示函数名
    
       代码
    
       console.log('hello js');
    

    例:<body>

    <button onclick="myFunction(4,8)">点击</button>

    <script>

    function myFunction(a,b){
    
        alert('hello js');
    
    }
    

    带参数的函数

    function myFunction(a,b){
    
        alert(a*b);
    
    }
    
    外链接
    
    var bth=document.getElementById('btn');
    
    bth.onclick=function(){
    
        alert('点击');
    
    }
    

    </script>

    </body>

    练习:

    <style type="text/css">

    div{
    
        width:200px;
    
        height:200px;
    
        background:green;
    
    }
    

    </style>
    <body>

    <button id="btnn">按钮</button>

    <button id="btnn">显示</button>

    <div></div>
    </body>
    <script>
    第一种方法

    var a=document.getElementById('btn');

    a.onclick=function(){

    var b=document.querySelector('div');
    
    b.style.display='none';
    
    var a=document.getElementById('btn');
    

    a.onclick=function(){

    var b=document.querySelector('div');
    
    b.style.display='block';
    

    }

    }

    第二种方法
    var btn=document.querySelector('#btnn');

    var div=document.querySelector('div');

    var num=1;

    btn.onclick=function(){

     if(num==1){
    
         div.style.display='none';
    
         num=0;
    
     }else{
    
         div.style.display='block';
    
         num=1;
    
     } 
    

    }
    </script>

    正则:

    1.search

    search(/正则/);判断是否包含符合规定的关键词

    varstr='you can you up';varstrs=str.search(/you/);//返回关键词的位置varstrs=str.search(/uoy/);//找不到返回-1console.log(strs);

    2.match

    match(/正则/); 获得所有和正则匹配的关键词

    varstr='good good study,Day day up';// var strs=str.match(/d/);varstrs=str.match(/d/gi);console.log(strs);

    3.exec

    exec();既获得每个关键词的位置又获得每个关键词的内容

    varstr='good good study,Day day up';varreg=/day/g;console.log(reg.exec(str));

    4.replace

    replace(/正则/ig,'替换值'); 替换

    varstr='no zuo no die';varstrs=str.replace(/no/ig,'*');console.log(strs);

    5.spilit

    spilit(/正则/);切割 //切割完返回一个数组

    varstr='no,zuo,no,die';varstrs=str.split(/,/);console.log(strs);

    js轮播实现:

    var banner=document.querySelectorAll('.banner>ul>li>a>img');
    var point=document.querySelectorAll('.banner>p>span');
    var timer;
    var i=0;

    function play(){
      timer=setInterval(function(){
            banner[i].style.display='none';
            point[i].style.background='#8b8b8b';
            i++;
            if(i>1){
                i=0;
            }
            banner[i].style.display='block';
            point[i].style.background='#ff8800
        },2000)
    }
    

    play();

    //给box添加鼠标移入移出事件
    var box=document.querySelector('.banner>ul');
    box.onmouseover=function(){
        clearInterval(timer);
    }
    

    box.onmouseout=function(){
    play();
    }

    //点击圆点切换

    for(var j=0;j<point.length;j++){
    point[j].index=j;
    point[j].onclick=function(){
    var nu=this.index;
    for(var b=0;b<point.length;b++){
    banner[b].style.display='none';
    point[b].style.background='#8b8b8b';
    }
    banner[nu].style.display='block';
    point[nu].style.background="#ff8800";
    }
    }

    计时器:

    css样式

    <button class='btn1'>停止一次性定时器</button>
    <button class='btn2'>停止永久性定时器</button>
    script 一次性定时器

    var btn1=document.querySelector('.btn1');
    var btn2=document.querySelector('.btn2');
    function show(){
    console.log('这是一次性定时器');
    }//一次性定时器
    script 永久性定时器

    var timer=setTimeout(show,3000);
    btn1.onclick=function(){
    clearTimeout(timer);
    }

    function print(){
    console.log('这是永久性定时器');
    }
    var times=setInterval(print,1000);
    btn2.onclick=function(){
    clearTimeout(times);
    }
    instanceof:

    var arr=[1,2,3,4,5];
    var obj={name:'jack'};
    console.log(arr instanceof Array);
    console.log(obj instanceof Array);
    深度克隆:
    var student={
    name:'jack',
    age:18,
    friend:['lily','lucy']
    }
    function clone(obj){
    var newObj=obj instanceof Array?[]:{};
    for(var key in obj){
    if(obj[key] instanceof Object){
    newObj[key]=clone(obj[key]);
    }else{
    newObj[key]=obj[key];
    }
    }
    return newObj;
    }

    var newObj=clone(student);
    student.friend[0]='rose';
    console.log(student.friend[0]);
    console.log(newObj.friend[0]);
    事件委托:
    事件委托:可以简单第理解为将子集的事件委托给父级来处理
    div

    <div class='boxs'>
    <button class='btn1'>按钮1</button>
    <button class='btn2'>按钮2</button>
    </div>
    script 第一种写法

    var btn1 = document.querySelector(".btn1");
    var btn2 = document.querySelector(".btn2");
    btn1.addEventListener("click",function(){
    console.log(this.innerHTML)
    })
    btn2.addEventListener("click",function(){
    console.log(this.innerHTML)
    })
    script 第二种写法

    var btnArray = document.querySelectorAll("button");
    for(var i = 0;i<btnArray.length;i++){
    btnArray[i].addEventListener("click",function(){
    console.log(this.innerHTML)
    })
    }
    第三种:使用事件委托的方式实现

    var box=document.querySelector('.boxs');
    box.addEventListener('click',function(event){
    var target=event.target;
    console.log(target.innerHTML);
    })

    仿微博发表评论:
    1)css样式
    {
    margin:0;
    padding:0;
    }
    a{
    text-decoration: none;
    }
    input{
    border:0;
    }
    li{
    list-style: none;
    }
    .container{
    width:800px;
    margin:0 auto;
    /
    border:1px solid #000;/
    padding:20px;
    }
    input{
    border:1px solid #666;
    width:100%;
    height:100px;
    padding-left:10px;
    }
    .content>p{
    font-weight: bold;
    font-size: 20px;
    padding:10px;
    }
    .content>p>span{
    font-weight: normal;
    font-size:14px;
    margin-left:400px;
    }
    .content>button{
    width:70px;
    height:40px;
    line-height: 40px;
    background: #e4393c;
    border-radius: 5px;
    border:0;
    font-size: 16px;
    font-weight: bold;
    color:#fff;
    margin-top:10px;
    margin-left:90%;
    }
    .main{
    width:100%;
    border:1px solid #000;
    overflow: hidden;
    border-radius: 20px;
    margin-top:20px;
    padding:0 10px;
    }
    .main>img,.main>p{
    float:left;
    }
    .main>img{
    width:100px;
    height:100px;
    }
    .main>p{
    width:500px;
    height:100px;
    line-height: 100px;
    padding-left:50px;
    /
    border:1px solid #000;*/
    }
    .main>button{
    width:70px;
    height:40px;
    line-height: 40px;
    background: #e4393c;
    border-radius: 5px;
    border:0;
    font-size: 16px;
    font-weight: bold;
    color:#fff;
    float:right;
    margin-top:30px;
    }
    2)div
    <div class='container'>
    <div class='content'>
    <p>你想对楼主说点什么 <span>你最多可输入30个字符</span></p>
    <input type="text" name="" placeholder="请输入你想要说的内容">
    <button>发表</button>
    </div>
    </div>
    3)script
    把图片做成随机数

    var btn=document.querySelector('.content>button');
    btn.onclick=function(){
    var inputVal=document.querySelector('.content>input').value;
    //动态创建元素:
    //动态创建div
    var div=document.createElement('div');
    div.className='main';
    var img=document.createElement('img');
    var arr=['img/1.jpg','img/2.jpg','img/3.jpg'];
    var num=Math.floor(Math.random()*3);
    img.src=arr[num];
    div.appendChild(img);
    var p=document.createElement('p');
    p.innerHTML=inputVal;
    document.querySelector('.content>input').value='';
    div.appendChild(p);
    var button=document.createElement('button');
    button.innerHTML='删除';
    button.onclick=function remov(){
    this.parentElement.parentElement.removeChild(this.parentElement);
    }
    div.appendChild(button);
    document.querySelector('.container').appendChild(div);
    }
    仿新浪微博发布评论js代码:
    1)css样式
    .main{
    width: 800px;
    margin:20px auto;
    }
    span{
    display: inline-block;
    width: 200px;
    height: 25px;
    line-height: 25px;
    vertical-align: middle;
    text-align: left;
    margin-bottom: 10px;
    }
    .tag{
    font-size: 13px;
    margin-left: 370px;
    vertical-align: bottom;
    text-align: center;
    margin-bottom: 0;
    }
    .text{
    width: 750px;
    height: 180px;
    margin:0 auto;
    resize:none;
    }
    input{
    display: inline-block;
    width: 80px;
    height: 50px;
    background: #E2526F;
    border: 0;
    margin-left: 670px;
    margin-top: 10px;
    }
    .creatediv{
    width: 675px;
    height: 80px;
    border: 1px solid gray;
    position: relative;
    margin-top: 10px;
    padding-left: 75px;
    }
    .createinput{
    width: 80px;
    height: 30px;
    position:absolute;
    right: 5px;
    bottom:5px;
    }
    .createimg{
    width: 50px;
    height: 50px;
    position: absolute;
    top: 15px;
    left: 15px;
    }
    .createdivs{
    width:600px;
    height:50px;
    position: absolute;
    top: 15px;
    left: 85px;
    }
    2)div
    <div class="main">
    <span>你想对楼主说点什么</span>
    <span class="tag">你最多可以输入30个字符</span>
    <textarea id="text" cols="30" rows="10" maxlength="30" class="text" spellcheck="false"></textarea>

    <input type="button" value="发 表" id="ipt">
    <div id="txt" ></div>
    </div>
    3)script
    var textarea=document.getElementById("text");
    var ipt=document.getElementById("ipt");
    var txt=document.getElementById("txt");
    ipt.onclick=function(){
    var txtValue=textarea.value;
    if(txtValue.length>0){
    var divs=document.createElement("div");
    var imgs=document.createElement("img");
    var ps=document.createElement("p");
    var inputs=document.createElement("input");
    divs.setAttribute("class","creatediv");
    imgs.setAttribute("class","createimg");
    ps.setAttribute("class","createdivs");
    inputs.setAttribute("class","createinput");
    img.src="pic/1.jpg";
    input.type="button";
    inputs.value="删除";
    ps.innerHTML=txtValue;
    divs.appendChild(imgs);
    divs.appendChild(ps);
    divs.appendChild(inputs);
    if(txt.children.length==0){
    txt.appendChild(divs);
    }else{
    txt.insertBefore(divs,get_firstChild(txt));
    }

        inputs.onclick=function(){
            this.parentElement.parentElement.removeChild(this.parentElement)
        }
    }
    

    }
    var textarea=document.getElementById("text");
    var inputs=document.getElementById("ipt");
    var txt=document.getElementById("txt");
    ipt.onclick=function(){
    var txtValue=textarea.value;
    if(txtValue.length>0){
    var divs=document.createElement("div");
    var imgs=document.createElement("img");
    var ps=document.createElement("p");
    var inputs=document.createElement("input");
    divs.setAttribute("class","creatediv");
    imgs.setAttribute("class","createimg");
    ps.setAttribute("class","createdivs");
    inputs.setAttribute("class","createinput");
    imgs.src="pic/1.jpg";
    inputs.type="butto";
    inputs.value="删除";
    ps.innerHTML=txtValue;
    divs.appendChild(imgs);
    divs.appendChild(ps);
    divs.appendChild(inputs);
    if(txt.children.length==0){
    txt.appendChild(divs)
    }else{
    txt.appendChild(divs,get_firstChild(txt));
    }

            inputs.onclick=function(){
                this.parentElement
                        .parentElement
                        .removeChild(this.parentElement)
            }
    
        }
    }
    

    更改网页背景色:
    window.onload=function(){
    document.body.bgColor="#000";
    定时器 一秒钟显示一个星星 一秒钟调用star一次
    window.setInterval("star()",1000);
    25 }
    动画主函数:
    function star(){
    //创建图片节点
    var imgObj = document.createElement("img");
    //添加src属性
    imgObj.setAttribute("src","images/lele.jpg");
    //添加width属性 getRandom()随机数函数
    var width = getRandom(20,120);
    imgObj.setAttribute("width",width);

    添加层叠样式表属性(style属性 行内样式)

    var x = getRandom(0,window.innerWidth);
    var y = getRandom(0,window.innerHeight);
        //设置坐标 x y 为未知数
        imgObj.setAttribute("style","position:absolute;left:"+x+"px;top:"+y+"px;");
         
        //添加onclick事件属性
        //this 代表当前对象,this是一个对象,只能在函数内使用
        imgObj.setAttribute("onclick","removeImg(this)");
        //将图片节点,挂载到<body>的父节点下
        document.body.appendChild(imgObj);
    

    函数:求随机数函数:
    function getRandom(min,max){
    var random = Math.random()*(max-min)+min;
    //向下取整
    random = Math.floor(random);
    //返回结果
    return random;
    }
    函数:删除节点
    function removeImg(obj){
    document.body.removeChild(obj);
    }
    动态创建表格:
    var json='[{"ename":"Tom", "salary":10000, "age":25},{"ename":"John", "salary":11000, "age":28},{"ename":"Mary", "salary":12000, "age":25}]';
    var emps=eval(json);
    var table=document.createElement('table');
    var thead=document.createElement('thead');
    var tr=document.createElement('tr');
    for(var key in emps[0]){
    var th=document.createElement('th');
    th.innerHTML=key;
    tr.appendChild(th);
    }
    thead.appendChild(tr);
    table.appendChild(thead);
    //创建tbody
    var tbody=document.createElement('tbody');
    table.appendChild(tbody);
    for(var i=0;i<emps.length;i++){
    var tr=document.createElement('tr');
    for(var key in emps[i]){
    var td=document.createElement('td');
    td.innerHTML=emps[i][key];
    tr.appendChild(td);
    }
    tbody.appendChild(tr);
    }

    document.getElementById('data').appendChild(table);
    

    一次性定时器:setTimeout
    清除一次性定时器用clearTimeout

    var timer=setTimeout(show,3000);
    btn1.onclick=function(){
    clearTimeout(timer);
    }
    永久性定时器:setInterval
    清除永久性定时器用clearInterval

    var times=setInterval(print,1000);
    btn2.onclick=function(){
    clearInterval(times);
    }

    <script type="text/javascript">
    function task(){
    var now=new Date();
    var end=new Date('2018/5/25 18:00');
    var s=(end-now)/1000;
    if(s>0){
    var h=Math.floor(s/3600);
    var m=Math.floor(s%3600/60);
    s=Math.floor(s%60);
    document.querySelector('span').innerHTML=h+'小时'+m+'分钟'+s+'秒';
    }else{
    clearInterval(timer);
    document.querySelector('span').innerHTML='放学了';
    }
    }
    task();
    var timer=setInterval(task,1000);
    function stop(btn){
    if(btn.innerHTML=="||"){
    clearInterval(timer)
    btn.innerHTML="|>";
    }else{
    timer=setInterval(task,1000);
    btn.innerHTML="||";
    }
    }
    </script>

    万年历:
    <style>
    *{
    margin:0;
    padding:0;
    }
    li{
    list-style: none;
    }
    a{
    text-decoration: none;
    }

    .ul{
    width:500px;
    background: #999;
    overflow: hidden;
    padding-bottom: 10px;
    }
    .ul li{
    float:left;
    width:100px;
    margin-left:20px;
    height:50px;
    line-height: 50px;
    text-align: center;
    background: #000;
    color:#fff;
    margin-top:10px;
    }
    div{
    width:500px;
    height:50px;
    border:1px solid #000;
    }
    .ul>li>ul{
    display:none;
    }
    </style>
    <body>
    <ul class='ul'>
    <li>
    1
    <ul>
    <li>1</li>
    </ul>
    </li>
    <li>
    2
    <ul>
    <li>2</li>
    </ul>
    </li>
    <li>
    3
    <ul>
    <li>3</li>
    </ul>
    </li>
    <li>
    4
    <ul>
    <li>4</li>
    </ul>

    </li>
    <li>
        5
        <ul>
            <li>5</li>
        </ul>
    </li>
    <li>
        6
        <ul>
            <li>6</li>
        </ul>
    </li>
    <li>
        7
        <ul>
            <li>7</li>
        </ul>
    </li>
    <li>
        8
        <ul>
            <li>8</li>
        </ul>
    </li>
    <li>
        9
        <ul>
            <li>9</li>
        </ul>
    </li>
    <li>
        10
        <ul>
            <li>10</li>
        </ul>
    </li>
    <li>
        11
        <ul>
            <li>11</li>
        </ul>
    </li>
    <li>
        12
        <ul>
            <li>12</li>
        </ul>
    </li>
    

    </ul>
    <div></div>
    <script>
    var li = document.querySelectorAll('.ul>li');
    var div = document.querySelector('div');
    for(var i = 0; i < li.length; i++) {
    li[i].onmouseover = function() {
    this.style.background = '#fff';
    this.style.color = '#f00';
    div.innerHTML = this.children[0].children[0].innerHTML;
    }
    li[i].onmouseout = function() {
    this.style.background = '';
    this.style.color = '';
    }
    }
    </script>

    Date 对象用于处理日期和时间。
     创建 Date 对象的语法:
    
    var myDate=new Date();
    
    
     Date对象的方法:
    
    Date()    //返回当日的日期和时间
    getDate()  //从 Date 对象返回一个月中的某一天 (1 ~ 31)
    getDay()  //从 Date 对象返回一周中的某一天 (0 ~ 6)
    getMonth()  //从 Date 对象返回月份 (0 ~ 11)
    getFullyare  //从 Date 对象以四位数字返回年份
    getHours()  //返回 Date 对象的小时 (0 ~ 23)
    getMinutes()  //返回 Date 对象的分钟 (0 ~ 59)
    getSeconds()  //返回 Date 对象的秒数 (0 ~ 59)
    getMilliseconds()  //返回 Date 对象的毫秒(0 ~ 999)
    
    

    等等有很多对象方法API,可以去w3school官网查找学习


    date示例如下:
    JavaScript代码块

    function time() {
            var a = new Date(); //获取当前时间
            var year = a.getFullYear(); //年
            var month = a.getMonth(); //月
            var dat = a.getDate(); //日
            var day = a.getDay(); //周
            var hour = a.getHours(); //时
            var min = a.getMinutes(); //分
            var sec = a.getSeconds(); //秒
            document.write('现在时间' + year + '年' + month + '月' + dat + '日,星期' + day + '\t' + hour + '时' + min + '分' + sec + '秒'); //最后拼接在一块
    }   
    time();   //调用
    
    

    效果:

    image

    当然这个效果是静态的效果并不会动的效果,如果你想要附加给他走起来的效果的得用到定时器,定时器分为:一次定时器setTimeout、永久定时器setInterval;

    永久定时器setInterval写法:
    注释:设置一个定时器,到达指定时间执行我们的操作,然后定时器并没有停止,以后每隔这么长时间,都重新执行我们的操作

    setInterval(function() {
            var a = new Date(); //获取当前时间
            var year = a.getFullYear(); //年
            var month = a.getMonth(); //月
            var dat = a.getDate(); //日
            var day = a.getDay(); //周
            var hour = a.getHours(); //时
            var min = a.getMinutes(); //分
            var sec = a.getSeconds(); //秒
            document.getElementById('date').innerHTML = '现在时间' + year + '年' + month + '月' + dat + '日,星期' + day + '\t' + hour + '时' + min + '分' + sec + '秒'; //最后拼接在一块,输出到指定地点
    })
    
    

    一次定时器setTimeout写法:
    注释:设置一个定时器,到达指定的时间,执行我们的操作,定时器停止

    setTimeout(function() {
            var a = new Date(); //获取当前时间
            var year = a.getFullYear(); //年
            var month = a.getMonth(); //月
            var dat = a.getDate(); //日
            var day = a.getDay(); //周
            var hour = a.getHours(); //时
            var min = a.getMinutes(); //分
            var sec = a.getSeconds(); //秒
            document.getElementById('date').innerHTML = '现在时间' + year + '年' + month + '月' + dat + '日,星期' + day + '\t' + hour + '时' + min + '分' + sec + '秒'; //最后拼接在一块
    },2000)    //2000意思就是两秒之后执行操作
    
    

    一、 认识正则
    1、 什么是正则
    正则就是一个事物的规则。什么是正则表达式,就是描述事物规则的式子。
    2、 正则能帮我们干什么?
    1)做表单验证
    2)制作QQ表情
    3)制作小偷程序
    正则就是做字符串的查找、匹配、分割、替换。是字符串方法的升级版。
    3 、正则难学吗?
    这是一个邮箱的正则表达式 \w+@\w+(.com|.cn|.org|.net){1,3}
    对不懂正则规则的人,正则就是一堆乱七八糟的字符串就,正则像医生的字,道士的符,就是天书。只要学习这个规则,其实正则对我们来说就非常简单了。正则非常好学。
    4 如何学习正则
    学好正则只需要学两个东西
    1) 正则表达式:就是描述事物规则的式子
    2) 正则函数:没有正则函数,正则表达式就是一堆乱七八糟的字符串,正则表达式要起作用,必须和正则函数一起使用。
    二 、正则的基本语法
    1 声明一个正则对象
    ①用正则构造函数
    var patt = new RegExp(‘正则表达式’,’修饰符’);
    ②使用正则字面量的方式
    var patt = /正则表达式(描述事物规则的字符串)/修饰符;
    2 正则表达式
    正则表达式分四块内容,只要学好这四块,你就可描述任务事物的规则了。
    如我们可以定义一个电话号码的规则表达式,这样就可以检查一个字符串是否是电话号码了。
    ① 定界符 ,正则中的定界符就是定义正则表达式边界的。符号是 / /,作用就是告诉程序,定界符内的是正则表达式,要按照正则的语法规则进行解析。
    ② 原子,自然界中的原子就是组成物质的最小单位。正则中的原子是组成正则表达式的最小单位。原子分三种
    (1) 普通原子
    (2) 转义符号、特殊符号,常见的转义符号有\n 换行 \r回车 \t 水平制表符 /输出定界符 \”输出双引号。。。。。。
    (3) 通配符
    \d 表示任意一位数字0-9 \D任意一位非数字 非0-9
    \w 表示任意一位数字、字母下划线 \W任意一位非数字字母下划线
    \s 表示任意一位空白字符 如空格 \S任意一位非空白字符
    \b 表示一个单词的边界 空格 \B表示非单词边界 非空格
    ③ 元字符
    元字符是修饰原子的,不能单独单独存在
    (1)[] 从多个原子中选一个
    (2) ^ 如果是出现在[]中,表示取反的意思,一定不能有
    (3) ^ 如果出现在正则表达式开头,表示以xxx开头的意思
    (4) 如果出现在正则表达式结尾,表示以xxx结尾的意思 /^ a/ 字符串要匹配此表达式,必须满足三个条件
    1 字符串以a开头
    2 字符串以a结尾
    3 字符串只能含一个a
    /^ a+$/ 字符串要匹配此表达式,必须满足三个条件
    1 字符串以a开头
    2 字符串以a结尾
    3 字符串可以含一个或多个a
    (5)+ 表示匹配前面的原子一次或多次,大于0次
    (6)? 表示匹配前面的原子0次或1次
    (7)* 表示匹配前面的原子0次1次或多次,任意次
    (8){m} 匹配前面的原子m次
    (9){m,} 前面的原子最少出现m次
    (10){m,n} 前面的原子最少出现m次,最多出现n次
    (11) | 从多分支中选一个 abc|opq|xyz
    (12) . 表示除了换行符以外的任意符号
    (13) .* 匹配任意字符(除换行符)任意多次,这种匹配是贪婪匹配,如果有好几部分满足,取最长符合要求的子串
    (14) .*? 不贪婪的匹配任意符号任意多次
    (15) ()叫做模式单元
    他的几个作用
    1 把()中的内容作为整体处理 ab|c a(b|c)
    2 ()中的内容会在内存中单独存放一份,方便使用
    3通过正则的匹配函数,返回一个数组,数组中下标为0的元素中放的是满足正则规则的子串,下标为1的元素中放的是,第一个()中匹配的内容, 下标为1的元素中放的是,第一个()中匹配的内容,依次类推。
    4如果不想匹配括号中的内容 使用(?:) 三元运算符
    ④ 修饰符
    i 忽略大小写
    m 把字符串作为多行对待
    g 全局匹配
    3 正则函数
    分两大类,一类是字符串的正则方法,一类是正则对象的方法
    一 字符串的正则方法
    string.match()
    string.search()
    string.replace()
    string.split()
    二 正则对象的方法
    patt.test()
    patt.exec()
    patt.complie()

    重点、几个例子

    点击导航栏内容变
    <style>
    *{
    margin:0;
    padding:0;
    }
    li{
    list-style:none;
    }
    a{
    text-decoration: none;
    }
    .container{
    width:600px;
    margin:100px auto;
    }
    .nav{
    height:40px;
    line-height: 40px;
    overflow: hidden;
    }
    .nav li{
    float:left;
    }
    .nav li a{
    display:inline-block;
    width:150px;
    height:40px;
    text-align: center;
    color:#fff;
    background: #000;
    }
    .nav li:first-child a{
    background: #f00;
    }

        /*box*/
        .box{
            position: relative;
        }
        .box li{
            width:600px;
            height:300px;
            line-height: 300px;
            text-align: center;
            position: absolute;
            background: #eee;
            display: none;
        }
        .box li:first-child{
            display: block;
        }
    </style>
    

    </head>
    <body>
    <div class='container'>

    <ul class='nav'>
    <li><a href="#">新闻</a></li>
    <li><a href="#">娱乐</a></li>
    <li><a href="#">综艺</a></li>
    <li><a href="#">军事</a></li>
    </ul>
    <ul class='box'>
    <li>还在打王者LOL呢?国家大事你关心了么?</li>
    <li>元芳薛之谦事件你怎么看?</li>
    <li>娱乐圈的那点事,潜规则?</li>
    <li>淘宝双十一你们是不是又要剁手了?</li>
    </ul>
    </div>

    <script>
      //找到nav中的li
        var navLi=document.querySelectorAll('.nav li');
      //找到box中的li
        var boxLi=document.querySelectorAll('.box li');
      //遍历navLi
        for(var i=0;i<navLi.length;i++){
            navLi[i].index=i;
            navLi[i].onclick=function(){
                //获取当前的索引值
              var num=this.index;
            for(var j=0;j<navLi.length;j++){
                //统一样式
                navLi[j].firstElementChild.style.background='#000';
                boxLi[j].style.display='none';
            }  
            navLi[num].firstElementChild.style.background='#f00';  
            boxLi[num].style.display='block';  
            }
        }
    </script>
    

    万年历
    <style>
    *{
    margin:0;
    padding:0;
    }
    li{
    list-style: none;
    }
    a{
    text-decoration: none;
    }

    .ul{
        width:500px;
        background: #999;
        overflow: hidden;
        padding-bottom: 10px;
    }
    .ul li{
        float:left;
        width:100px;
        margin-left:20px;
        height:50px;
        line-height: 50px;
        text-align: center;
        background: #000;
        color:#fff;
        margin-top:10px;
    }
    div{
        width:500px;
        height:50px;
        border:1px solid #000;
    }
    .ul>li>ul{
        display:none;
    }
    

    </style>
    <body>
    <ul class='ul'>
    <li>
    1
    <ul>
    <li>春节</li>
    </ul>
    </li>
    <li>
    2
    <ul>
    <li>二月二龙抬头</li>
    </ul>
    </li>
    <li>
    3
    <ul>
    <li>三八妇女节</li>
    </ul>
    </li>
    <li>
    4
    <ul>
    <li>4444444444</li>
    </ul>

        </li>
        <li>
            5
            <ul>
                <li>五月劳动节</li>
            </ul>
        </li>
        <li>
            6
            <ul>
                <li>666666666</li>
            </ul>
        </li>
        <li>
            7
            <ul>
                <li>777777777</li>
            </ul>
        </li>
        <li>
            8
            <ul>
                <li>888888888</li>
            </ul>
        </li>
        <li>
            9
            <ul>
                <li>999999999</li>
            </ul>
        </li>
        <li>
            10
            <ul>
                <li>十月一日国庆节</li>
            </ul>
        </li>
        <li>
            11
            <ul>
                <li>11111111111</li>
            </ul>
        </li>
        <li>
            12
            <ul>
                <li>1212121212</li>
            </ul>
        </li>
    </ul>
    <div></div>
    <script>
        var li = document.querySelectorAll('.ul>li');
        var div = document.querySelector('div');
        for(var i = 0; i < li.length; i++) {
            li[i].onmouseover = function() {
                this.style.background = '#fff';
                this.style.color = '#f00';
                div.innerHTML = this.children[0].children[0].innerHTML;
            }
            li[i].onmouseout = function() {
                this.style.background = '';
                this.style.color = '';
            }
        }
    </script>
    

    js轮播实现

    var banner=document.querySelectorAll('.banner>ul>li>a>img');
    var point=document.querySelectorAll('.banner>p>span');
    var timer;
    var i=0;

    function play(){
      timer=setInterval(function(){
            banner[i].style.display='none';
            point[i].style.background='#8b8b8b';
            i++;
            if(i>1){
                i=0;
            }
            banner[i].style.display='block';
            point[i].style.background='#ff8800
        },2000)
    }
    

    play();

    //给box添加鼠标移入移出事件
    var box=document.querySelector('.banner>ul');
    box.onmouseover=function(){
        clearInterval(timer);
    }
    

    box.onmouseout=function(){
    play();
    }

    //点击圆点切换

    for(var j=0;j<point.length;j++){
    point[j].index=j;
    point[j].onclick=function(){
    var nu=this.index;
    for(var b=0;b<point.length;b++){
    banner[b].style.display='none';
    point[b].style.background='#8b8b8b';
    }
    banner[nu].style.display='block';
    point[nu].style.background="#ff8800";
    }
    }

    ....................................................收工

    相关文章

      网友评论

          本文标题:js总结(!!!)

          本文链接:https://www.haomeiwen.com/subject/ehrnbftx.html