zoukankan      html  css  js  c++  java
  • javascript高级

    数组及操作方法

    数组就是一组数据的集合,javascript中,数组里面的数据可以是不同类型的。

    定义数组的方法

    //对象的实例创建
    var aList = new Array(1,2,3);
    
    //直接量创建
    var aList2 = [1,2,3,'asd'];

    操作数组中数据的方法 

    1、获取数组的长度:aList.length;

    var aList = [1,2,3,4];
    alert(aList.length); // 弹出4

    2、用下标操作数组的某个数据:aList[0];

    var aList = [1,2,3,4];
    alert(aList[0]); // 弹出1

    3、join() 将数组成员通过一个分隔符合并成字符串

    var aList = [1,2,3,4];
    alert(aList.join('-')); // 弹出 1-2-3-4

    4、push() 和 pop() 从数组最后增加成员或删除成员

    var aList = [1,2,3,4];
    aList.push(5);
    alert(aList); //弹出1,2,3,4,5
    aList.pop();
    alert(aList); // 弹出1,2,3,4

    5、reverse() 将数组反转

    var aList = [1,2,3,4];
    aList.reverse();
    alert(aList);  // 弹出4,3,2,1

    6、indexOf() 返回数组中元素第一次出现的索引值

    var aList = [1,2,3,4,1,3,4];
    alert(aList.indexOf(1));

    7、splice() 在数组中增加或删除成员

    var aList = [1,2,3,4];
    aList.splice(2,1,7,8,9); //从第2个元素开始,删除1个元素,然后在此位置增加'7,8,9'三个元素
    alert(aList); //弹出 1,2,7,8,9,4

    多维数组 
    多维数组指的是数组的成员也是数组的数组。

    var aList = [[1,2,3],['a','b','c']];
    alert(aList[0][1]); //弹出2;
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script>
            // 创建数组
            // 第一种方式:
            var aList01 = new Array(1,2,3);
    
            // 第二种方式:
            var aList02 = ['a','b','c','d','e'];
            
    
            // 获取数组成员的个数
            var iLen = aList02.length;
            //alert(iLen);
    
            // 操作数组的某个成员
            // alert( aList02[2] );
    
    
            // 在数组后面增加成员
            //alert(aList02)
            aList02.push('f');
            //alert(aList02);
    
            // 删除数组最后一个成员
            aList02.pop();
            //alert(aList02);
    
    
            // 获取某个成员在数组中第一次出现的索引值
            var aList03 = ['a','b','c','d','a','b','c','d'];
            var iPos = aList03.indexOf('c');
            // 如果成员不存在,得到的值是 -1
            var iPos2 = aList03.indexOf('f');
    
            // alert(iPos);
            // alert(iPos2);
    
    
            // 在数组中增加或者删除成员
            alert(aList03);
            aList03.splice(4,2)
            alert(aList03); // a,b,c,d,c,d
            aList03.splice(4,2,'e','f','g');
            alert(aList03);
    
            // 将数组通过某个字符拼接成一个大的字符串
            var sTr = aList03.join('-');
            var sTr2 = aList03.join('');
            alert(sTr);
            alert(sTr2);
    
        </script>
    
    </head>
    <body>
        
    </body>
    </html>
    数组操作

    批量操作数组中的数据,需要用到循环语句

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script>
            var aList = ['a','b','c','d','e','f'];
            var iLen = aList.length;
    
    
            for(var i=0;i<iLen;i++){
                alert( aList[i] );
            }
        
        
        
        </script>
    </head>
    <body>
        
    </body>
    </html>
    for循环操作数组

    循环语句

    程序中进行有规律的重复性操作,需要用到循环语句。

    for循环

    for(var i=0;i<len;i++)
    {
        ......
    }

    课堂练习 
    1、数组去重

    var aList = [1,2,3,4,4,3,2,1,2,3,4,5,6,5,5,3,3,4,2,1];
    
    var aList2 = [];
    
    for(var i=0;i<aList.length;i++)
    {
        if(aList.indexOf(aList[i])==i)
        {
            aList2.push(aList[i]);
        }
    }
    
    alert(aList2);

    2、将数组数据放入页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            .list{
                list-style:none;
                padding:0px;
                margin:50px auto 0px;
                width:300px;
            }
    
            .list li{
                line-height:50px;
                border-bottom:1px dotted black;
            }
        
        </style>
        <script>
            window.onload = function(){
                var aList = ['一部好戏','碟中谍6','蚁人2','熊出没','小猪佩奇','哆啦A梦']
                var oUl = document.getElementById('list');
                var sTr = '';
    
                for(var i=0;i<aList.length;i++){
                    sTr += '<li>' +aList[i]+'</li>';
                }
    
                //alert(sTr);
                oUl.innerHTML = sTr;
            }   
        
        
        </script>
    </head>
    <body>
        <ul class="list" id="list">
            <!-- <li>电影名称排行</li>
            <li>电影名称排行</li>
            <li>电影名称排行</li>
            <li>电影名称排行</li>
            <li>电影名称排行</li>
            <li>电影名称排行</li> -->
        </ul>
    </body>
    </html>
    View Code

    定时器

    定时器在javascript中的作用
    1、定时调用函数
    2、制作动画

    定时器类型及语法

    /*
        定时器:
        setTimeout  只执行一次的定时器 
        clearTimeout 关闭只执行一次的定时器
        setInterval  反复执行的定时器
        clearInterval 关闭反复执行的定时器
    
    */
    
    var time1 = setTimeout(myalert,2000);
    var time2 = setInterval(myalert,2000);
    /*
    clearTimeout(time1);
    clearInterval(time2);
    */
    function myalert(){
        alert('ok!');
    }

    课堂实例
    1、定时器制作移动动画

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            .box{
                width: 200px;
                height: 200px;
                background:gold;
                position: fixed;
                left:0px;
                top:100px;
            } 
    </style>
    <script>
        window.onload = function(){
            var oBox = document.getElementById('box');
    
            var iLeft = 0;
    
            var oTimer = setInterval(fnMove,30);
    
            function fnMove(){
                iLeft += 3;
                
                if(iLeft>600){
                    clearInterval(oTimer);
                }
    
                oBox.style.left = iLeft + 'px';
            }      
    
    
        }
    
    
    
    
    </script>
    </head>
    <body>
        <div class="box" id="box"></div>
    </body>
    </html>
    View Code
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            .box{
                width:200px;
                height: 200px;
                background:gold;
                position:fixed;
                left:0px;
                top:100px;
            }   
        
        </style>
        <script>
            window.onload = function(){
                var oBox = document.getElementById('box');
    
                var iLeft = 0;
                var iSpeed = 3;
    
                var oTimer = setInterval(fnMove,30);
    
                function fnMove(){
                    iLeft += iSpeed;
                    
                    // 到最右边的时候
                    if(iLeft>600){
                        iSpeed = -3;
                    }
    
                    // 到最左边的时候
                    if(iLeft<0){
                        iSpeed = 3;
                    }
    
                    oBox.style.left = iLeft + 'px';
                }
    
            } 
        
        
        
        </script>
    </head>
    <body>
        <div class="box" id="box"></div>
    </body>
    </html>
    定时器制作左右移动的动画

    2、定时器制作无缝滚动

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无缝滚动</title>
        <style type="text/css">
            body,ul{
                margin:0;
                padding:0;
            }
    
            .list_con{
                
                width:1000px;
                height:200px;
                border:1px solid #000;
                margin:10px auto 0;
                background-color:#f0f0f0;
                position:relative;
                overflow:hidden;
            }
    
            .list_con ul{
                list-style:none;
                width:2000px;
                height:200px;
                position:absolute;
                left:0;
                top:0;
            }
    
    
            .list_con li{
                width:180px;
                height:180px;
                float:left;
                margin:10px;
            }
    
            .btns_con{
                width:1000px;
                height:30px;
                margin:50px auto 0;
                position:relative;
            }
    
            .left,.right{
                width:30px;
                height:30px;
                background-color:gold;
                position:absolute;
                left:-40px;
                top:124px;
                font-size:30px;
                line-height:30px;
                color:#000;
                font-family: 'Arial';
                text-align:center;
                cursor:pointer;
                border-radius:15px;
                opacity:0.5;
            }
            .right{
                left:1010px;            
                top:124px;            
            }
        </style>
        <script type="text/javascript">
            window.onload = function(){
                var oUl = document.getElementById('list');
                var oBtn01 = document.getElementById('btn01');
                var oBtn02 = document.getElementById('btn02');
                var oSlide = document.getElementById('slide');
    
                // 将ul中的5个li复制一份,成为10个li
                oUl.innerHTML = oUl.innerHTML + oUl.innerHTML;
    
                var iLeft = 0;
                var iSpeed = -3
                // 定义一个变量来存iSpeed上一次的值
                var iLastSpeed = -3;
                
                var oTimer = setInterval(fnMove,30);
    
                function fnMove(){
                    iLeft += iSpeed;
                    
                    // 当运动到最左边的时候
                    if(iLeft<-1000){
                        iLeft = 0;
                    }
                    // 当运动到最右边的时候(就是起始状态)
                    if(iLeft>0){
                        iLeft = -1000;
                    }
                    oUl.style.left = iLeft + 'px';
                }
                // 点击左边的按钮
                oBtn01.onclick = function(){
                    iSpeed = -3;
                }            
                // 点击右边的按钮
                oBtn02.onclick = function(){
                    iSpeed = 3;
                }
    
                // 绑定幻灯片外面容器标签的移入移出事件
                oSlide.onmouseover = function(){
                    //clearInterval(oTimer);
                    iLastSpeed = iSpeed;
                    iSpeed = 0;
                }
    
                oSlide.onmouseout = function(){
                    //oTimer = setInterval(fnMove,30);
                    iSpeed = iLastSpeed;
                }
    
            }
                    
        </script>
    </head>
    <body>
        <div class="btns_con">
            <div class="left" id="btn01">&lt;</div>
            <div class="right" id="btn02">&gt;</div>
        </div>
        <div class="list_con" id="slide">
            <ul id="list">
            <li><a href=""><img src="images/goods001.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods002.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods003.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods004.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods005.jpg" alt="商品图片"></a></li>
            </ul>
    
        </div>
    </body>
    </html>
    无缝滚动

    字符串处理方法

    1、字符串合并操作:“ + ”

    var iNum01 = 12;
    var iNum02 = 24;
    var sNum03 = '12';
    var sTr = 'abc';
    alert(iNum01+iNum02);  //弹出36
    alert(iNum01+sNum03);  //弹出1212 数字和字符串相加等同于字符串相加
    alert(sNum03+sTr);     // 弹出12abc

    2、parseInt() 将数字字符串转化为整数

    var sNum01 = '12';
    var sNum02 = '24';
    var sNum03 = '12.32';
    alert(sNum01+sNum02);  //弹出1224
    alert(parseInt(sNum01)+parseInt(sNum02))  //弹出36
    alert(parseInt(sNum03))   //弹出数字12 将字符串小数转化为数字整数

    3、parseFloat() 将数字字符串转化为小数

    var sNum03 = '12.32'
    alert(parseFloat(sNum03));  //弹出 12.32 将字符串小数转化为数字小数

    4、split() 把一个字符串分隔成字符串组成的数组

    var sTr = '2017-4-22';
    var aRr = sTr.split("-");
    var aRr2= sTr.split("");
    
    alert(aRr);  //弹出['2017','4','2']
    alert(aRr2);  //弹出['2','0','1','7','-','4','-','2','2']

    5、indexOf() 查找字符串是否含有某字符

    var sTr = "abcdefgh";
    var iNum = sTr.indexOf("c");
    alert(iNum); //弹出2

    6、substring() 截取字符串 用法: substring(start,end)(不包括end)

    var sTr = "abcdefghijkl";
    var sTr2 = sTr.substring(3,5);
    var sTr3 = sTr.substring(1);
    
    alert(sTr2); //弹出 de
    alert(sTr3); //弹出 bcdefghijkl

    字符串反转

    var str = 'asdfj12jlsdkf098';
    var str2 = str.split('').reverse().join('');
    
    alert(str2);
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script>
            var iNum01 = 12;
            var sNum01 = '12';
            var sNum02 = '12.45';
            
    
            //alert(iNum01 + 10);
            //alert(sNum01 + 10);// '1210'
    
            //alert(parseInt(sNum01) +10 );
            // 将整数的字符串转换为整数,用parseInt,如果是小数,会去掉小数位
            //alert( parseInt(sNum02) +10);
            
            // 将小数的字符串转化为小数,用parseFloat
            //alert( parseFloat(sNum02) +10);
    
    
            // 将字符串分割,返回一个数组
            var sTr = '2018-09-23';
    
            var aList = sTr.split('-');
            var aList2 = sTr.split('');
    
            //alert(aList);
            //alert(aList2);
    
    
            // 返回某小段字符在大段字符里面出现的索引值
            var sTr2 = 'abcdefgh123ijkl123mn';
    
            var iPos = sTr2.indexOf('123');
            var iPos2 = sTr2.indexOf('1234');
    
            //alert(iPos);
            //alert(iPos2);
    
            // 字符串切片
            var sTr3 = sTr2.substring(8,12);
            // 只写一个数字,表示从这个这个数字对应的字符一直切到结尾
            var sTr4 = sTr2.substring(8);
            alert(sTr3);
            alert(sTr4);
    
    
        
        
        </script>
    </head>
    <body>
        
    </body>
    </html>
    字符串操作

    变量作用域

    变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。

    1、全局变量:在函数之外定义的变量,为整个页面公用,函数内部外部都可以访问。
    2、局部变量:在函数内部定义的变量,只能在定义该变量的函数内部访问,外部无法访问。

    // 定义全局变量
    var a = 12;
    function myalert()
    {
        // 定义局部变量
        var b = 23;
        alert(a);
        // 修改全局变量
        a++;
        alert(b);
    }
    myalert(); // 弹出12和23
    alert(a);  // 弹出13    
    alert(b);  // 出错
  • 相关阅读:
    Java jni字符串转换
    Python读取PE文件(exe/dll)中的时间戳
    深度学习word embedding猜测性别初探
    闪存内容汇编(截止20170405)
    如何自动化安装字体(命令行批量)
    如何分析进程的内存占用问题
    Python print报ascii编码异常的靠谱解决办法
    Linux界面自动化测试框架不完全汇总
    Qt实现同步(阻塞式)http get等网络访问操作
    基于第三方开源库的OPC服务器开发指南(4)——后记:与另一个开源库opc workshop库相关的问题
  • 原文地址:https://www.cnblogs.com/qhdsavoki/p/9703246.html
Copyright © 2011-2022 走看看