美文网首页
2019-04-16 数组(splice)、数组去重、练习-省市

2019-04-16 数组(splice)、数组去重、练习-省市

作者: 北街九条狗 | 来源:发表于2019-04-17 20:47 被阅读0次

    数组

    清空数组
    arr=[];
    arr.length=0
    添加数组
    arr.push(10);//在数组最后添加
    arr.unshift(13,12);//在数组最前添加
    arr.shift();//从开头删 会返回删除元素的值
    arr.pop();//从最后删 会返回删除元素的值
    
    splice
     删除
    1. 第一个参数表示index,第二个参数表示长度   arr.splice(2,1);
    2.替换     arr.splice(2,1,'e')
     3.增加    arr.splice(2,0,'e');
    

    数组去重

    var arr=[1,2,1,3,4,5,6,7,8,1,2,5,8,7,4];
    for(var i=0;i<arr.length-1;i++){
        for(var j=i+1;j<arr.length;j++){
            if(arr[i]==arr[j]){
                // 删除后面重复的
    //          arr.splice(j,1);
    //          j--;
                //  删除前面重复的
                arr.splice(i,1);
                j=i;
                    }
                }
            }
    

    二维数组

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

    练习-省市联动(数组方法)

    <body>
            <select name="" id="province">
                <option value="">省份</option>
            </select>
            
            <select name="" id="city">
                <option value="">城市</option>
            </select>
            <script type="text/javascript">
                var json = {
                    '辽宁':['沈阳','大连','阜新','朝阳','营口','葫芦岛','锦州','盘锦'],
                    '河北':['石家庄','天津','廊坊','承德'],
                    '湖北':['武汉','襄阳','宜昌','黄石','十堰']
                }
                var oPro = document.getElementById('province');
                var oCity = document.getElementById('city');
                
                // 初始化省份下拉框
                for(attr in json){
                    oPro.innerHTML += '<option value="'+attr+'">'+attr+'</option>';
                }
                oPro.onchange = function(){
                    // 清空城市列表
                    oCity.innerHTML = '<option value="">城市</option>';
                    // 获取省份的value
                    var proValue = oPro.value;
                    for(attr in json){
                        if(attr == proValue){
                            for(j in json[attr]){
                                oCity.innerHTML += '<option value="'+json[attr][j]+'">'+json[attr][j]+'</option>';
                            }
                        }
                    }
                }
            </script>
        </body>
    

    练习-省市联动(json方法)

    json  有键值对类似于集合
    <body>
            <select name="" id="province">
                <option value="">省份</option>
            </select>
            
            <select name="" id="city">
                <option value="">城市</option>
            </select>
            <script type="text/javascript">
                var json = {
                    '辽宁':['沈阳','大连','阜新','朝阳','营口','葫芦岛','锦州','盘锦'],
                    '河北':['石家庄','天津','廊坊','承德'],
                    '湖北':['武汉','襄阳','宜昌','黄石','十堰']
                };
                var oPro = document.getElementById('province');
                var oCity = document.getElementById('city');
                
                // 初始化省份下拉框
                for(attr in json){
                    oPro.innerHTML += '<option value="'+attr+'">'+attr+'</option>';
                }
                oPro.onchange = function(){
                    // 清空城市列表
                    oCity.innerHTML = '<option value="">城市</option>';
                    // 获取省份的value
                    var proValue = oPro.value;
                    for(attr in json){
                        if(attr == proValue){
                            for(j in json[attr]){
                                oCity.innerHTML += '<option value="'+json[attr][j]+'">'+json[attr][j]+'</option>';
                            }
                        }
                    }
                }
            </script>
        </body>
    

    DOM(节点)

    
        DOM : document object model 文档对象模型
        它提供了许多获取DOM节点的方法
        document.getElementById()
        document.getElementsByTagName()
        document.getElementsByClassName()
        document.getElementsByName()
        ....
        DOM操作 -- 节点操作
    children 子节点
    parentNode  他会找到它本身的父节点
    offsetParent 他会找到它本身的有定位父节点
    offsetLeft,offsetTop:当前元素到定位父级的距离
    

    父节点小练习

        <body>
            <ul>
                <li>张三111 <a href="javascript:;">删除</a></li>
                <li>张三222 <a href="javascript:;">删除</a></li>
                <li>张三333 <a href="javascript:;">删除</a></li>
                <li>张三444 <a href="javascript:;">删除</a></li>
                <li>张三555 <a href="javascript:;">删除</a></li>
                <li>张三666 <a href="javascript:;">删除</a></li>
                <li>张三777 <a href="javascript:;">删除</a></li>
                <li>张三888 <a href="javascript:;">删除</a></li>
            </ul>
            <script type="text/javascript">
                var aA = document.getElementsByTagName('a');
                for(i in aA){
                    aA[i].onclick = function(){
                        this.parentNode.style.display = 'none';
                    }
                }
            </script>
        </body>
    

    onreset、onsubmit

    onreset      重置事件
    onsubmit    提交事件
    

    焦点

    获取焦点
    事件
    oInp.onfocus = function(){
        this.value = '';
    }
    自动获取焦点函数
     oInp.focus();
    
    失去焦点
    事件
    oInp.onblur = function(){
        this.value = '123';
    }
    函数
     oInp.blur();
    

    确认框

    confirm(1);//弹出后会有 确定跟取消,会根据选项返回true跟false
    
    小练习-确认是否提交表单
        <body>
            <form id="form" action="http://www.baidu.com">
                <input type="text" name="username" value="张三">
                <input type="password" name="password" value="123456">
                <button>提交</button>
            </form>
            <script type="text/javascript">
                var oForm = document.getElementById('form');
                oForm.onsubmit = function(){
                    var bool = confirm('是否确认修改信息?');
                    if(!bool){
                        return false;
                    }
                }
                document.oncontextmenu = function(){
                    return false;
                }
            </script>
        </body>
    

    BOM

    <!-- 
        BOM browser object model   浏览器
        关闭窗口
        打开窗口
        跳转页面
        window
     -->
     <script type="text/javascript">
    document.getElementsByTagName('input')[0].onclick=function(){
        // window.open('http://www.baidu.com',"_self");
            //有兼容问题 _self在当前窗口打开
        window.location.href='http://www.baidu.com';
                }
    </script>
    

    全选、eval()函数

    select()全选函数
     eval(str) 将字符串运算出结果,前提:字符串必须表达式
    

    event

    event 会记录页面的变化
    event 浏览器兼容写法
    document.onclick=function(ev){
        var ev=ev || event;
        for(attr in ev){
        console.log(attr +"," + ev[attr]);  
         }
    }
    

    跟随鼠标移动

            <style type="text/css">
                #box{
                    width: 100px;
                    height: 100px;
                    background: red;
                    position: absolute;
                    left: 8px;
                    top: 8px;
                }
            </style>
        </head>
        <body style="width: 2000px; height: 2000px;">
            <div id="box">
                
            </div>
            <script type="text/javascript">
                var oBox=document.getElementById('box');
                // onscroll 鼠标滚动
                document.onscroll=function(){
                    alert(1);
                }
                
                document.onmousemove=function(ev){
                    var ev= ev || event;
                    // y轴的滚动距离
                    var scrollTop=document.documentElement.scrollTop;
                    // x轴的滚动距离
                    var scrollLeft=document.documentElement.scrollLeft;
    //              console.log('x:'+ev.clientX);
    //              console.log('Y:'+ev.clientY);
                    oBox.style.left=ev.clientX+scrollLeft+'px';
                    oBox.style.top=ev.clientY+scrollTop+'px';
                }
            </script>
        </body>
    

    鼠标拖拽

            <style type="text/css">
                #box{
                    width: 100px;
                    height: 100px;
                    background: #000000;
                    position: absolute;
                    left: 10px;
                    top: 10px;
                    cursor: pointer;
                }
            </style>
        </head>
        <body style="width: 1000px; height: 1000px;">
            <div id="box" >
                
            </div>
            <script type="text/javascript">
                var oBox=document.getElementById('box');
                
                oBox.onmousedown=function(ve){
                    var ev= ev || event;
                    // 获取鼠标距离div边框的值
    //              var oX=ev.clientX-this.offsetLeft;
    //              var oY=ev.clientY-this.offsetTop;
                    var oX=ev.clientX-parseInt(getComputedStyle(oBox).left);
                    var oY=ev.clientY-parseInt(getComputedStyle(oBox).top);
                    document.onmousemove=function(ve){
                        var ev= ev || event;
                        oBox.style.left=(ev.clientX-oX)+'px';
                        oBox.style.top=(ev.clientY-oY)+'px';
                    }
                }
                document.onmouseup=function(){
                    document.onmousemove=function(ve){
                        return ;
                    }
                }
            </script>
        </body>
    

    事件冒泡

    <style>
        #box{
            width: 100px;
            height: 100px;
            background: red;
            display: none;
            }
    </style>
    </head>
    <body>
        <p><button type="button">按钮</button></p>
        <div id="box"></div>
        <script type="text/javascript">
            document.getElementsByTagName('button')[0].onclick = function(ev){
                var ev = ev || event;
                document.getElementById('box').style.display = 'block';
                ev.stopPropagation(); // 阻止事件冒泡
                }
                
    //      document.getElementsByTagName('p')[0].onclick = function(){
    //          alert(1);
    //      }
            /*
                事件冒泡:
                    所有的事件都具有穿透性,向父级穿透直到document -- 事件冒泡
            */
            document.onclick = function(){
                document.getElementById('box').style.display = 'none';
            }
        </script>
    </body>
    

    事件冒泡-广告

    <style type="text/css">
                #box{
                    width: 100px;
                    height: 250px;
                    background: #0000FF;
                    position: absolute;
                    left:-100px;
                    top: 200px;
                }
                #adver{
                    width: 16px;
                    height: 50px;
                    background: red;
                    position: absolute;
                    right: -16px;
                    top: 60px;
                }
            </style>
        </head>
        <body>
            <div id="box">
                <div id="adver">
                    教程
                </div>
            </div>
            <script type="text/javascript">
                document.getElementById('box').onmouseover=function(){
                    this.style.left='0px';
                }
                document.getElementById('box').onmouseout=function(){
                    this.style.left='-100px';
                }
            </script>
        </body>
    

    键盘事件

    // onkeydown 键盘按下
    // onkeyup 键盘抬起
    // ev.keyCode 会返回键盘码
    // ctrlKey 键盘Ctrl按下后ctrlKey会返回true
    获取键盘事件
    document.onkeydown=function(ev){
        var ev=ev||event;
        alert(ev.keyCode);  //ev.keyCode 获取键盘码
    }
    

    键盘控制div移动

            <style type="text/css">
                #box{
                    width: 100px;
                    height: 100px;
                    background: #0D5B95;
                    position: absolute;
                    left:8px;
                    top:8px;
                }
            </style>
        </head>
        <body>
            <div id="box"></div>
            <script type="text/javascript">
                var oDiv = document.getElementById('box');
                // document.onkeydown = function(ev){
    //              var ev = ev || event;
    //              if(ev.keyCode == 37){
    //                  oBox.style.left = parseInt(getComputedStyle(oBox).left) - 10 + 'px';
    //              }
    //              if(ev.keyCode == 38){
    //                  oBox.style.top = parseInt(getComputedStyle(oBox).top) - 10 + 'px';
    //              }
    //              if(ev.keyCode == 39){
    //                  oBox.style.left = parseInt(getComputedStyle(oBox).left) + 10 + 'px';
    //              }
    //              if(ev.keyCode == 40){
    //                  oBox.style.top = parseInt(getComputedStyle(oBox).top) + 10 + 'px';
    //              }
                // }
                
                
                
                var dir = {left:null,top:null,right:null,bottom:null};
                setInterval(function () {
                    if(dir.left){
                        oDiv.style.left = oDiv.offsetLeft - 10 +'px';
                    }
                    if(dir.top){
                        oDiv.style.top = oDiv.offsetTop  - 10 +'px';
                    }
                    if(dir.right){
                        oDiv.style.left = oDiv.offsetLeft + 10 +'px';
                    }
                    if(dir.bottom){
                        oDiv.style.top = oDiv.offsetTop + 10 +'px';
                    }
                },30);
                document.onkeydown = function (ev) {
                    var ev = ev || event;
                    switch(ev.keyCode){
                        //左37,上38,右39,下40
                        case 37:
                            dir.left = true;
                            break;
                        case 38:
                            dir.top = true;
                            break;
                        case 39:
                            dir.right = true;
                            break;
                        case 40:
                            dir.bottom = true;
                            break;
                    }
                }
                document.onkeyup = function (ev) {
                    var ev = ev || event;
                    switch(ev.keyCode){
                        //左37,上38,右39,下40
                        case 37:
                            dir.left = false;
                            break;
                        case 38:
                            dir.top = false;
                            break;
                        case 39:
                            dir.right = false;
                            break;
                        case 40:
                            dir.bottom = false;
                            break;
                    }
                }
            </script>
        </body>
    

    相关文章

      网友评论

          本文标题:2019-04-16 数组(splice)、数组去重、练习-省市

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