• javascript ybmiaov


    DOM

    DOM基础
    1. DOM简介、DOM标准、DOM节点
    2. 获取元素的子节点:childNodes、兼容性问题
    3. 节点类型:nodeType、文本节点、元素节点
    4. children的使用
    5. 获取元素父节点parentNode
    6. 获取定位元素的父节点offsetParent
    7. 获取首尾子元素:firstChild、firstElementChild、lastChild、lastElementChild
    8. 获取兄弟节点:nextSibling、nextElemnetSibling、previousSibling、previousElementSibling
    9. 元素属性操作:“.”与“[]”回顾、setAttribute、getAttribute、removeAttribute
    10. 通过className获取元素、封装getByClass函数
    <!-- DOM节点1
    childNodes    nodeType
    获取子节点
    children
    parentNode
    例子:点击链接,隐藏整个li
    offsetParent
    例子:获取元素在页面上的实际位置 -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
            window.onload = function() {
                alert(document.body.childNodes[1].nodeType);
            }
        </script>
    </head>
    <body>
        aaafsa
        <span>fff</span>
    </body>
    </html>
    
    <!-- 
    childNodes 和 nodeType (1)
    nodeType: 1.element 2.attr 3.text
    nodeName nodeValue -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
            window.onload = function() 
            {
                var oUl = document.getElementById('ul1');
                var i = 0;
    
                for(i; i< oUl.childNodes.length; i++) 
                {
                    if(oUl.childNodes[i].nodeType == 1)
                    {
                        oUl.childNodes[i].style.background='red';
                    }
                }
            }
        </script>
    </head>
    <body>
        <ul id="ul1">
            <li>asd</li>
            <li>asd</li>
            <li>asd</li>
        </ul>
    </body>
    </html>
    
    <!-- childNodes 和 nodeType(2) -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
            window.onload = function() 
            {
                var aA = document.getElementsByTagName('a');
                var i = 0;
    
                for(i; i< aA.length; i++)
                {
                    aA[i].onclick = function()
                    {
                        this.parentNode.style.display = 'none';
                    }
                }
            }
        </script>
    </head>
    <body>
        <ul>
            <li>aass<a href="javascript:">隐藏</a></li>
            <li>5453<a href="javascript:">隐藏</a></li>
            <li>cvxc<a href="javascript:">隐藏</a></li>
            <li>ertert<a href="javascript:">隐藏</a></li>
        </ul>
    </body>
    </html>
    
    <!-- parentNode -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
        
        </script>
    </head>
    <body>
        <div id="div1" style="100px; height:100px; background:red; margin:100px;">
            <div id="div2" onclick="alert(this.offsetParent.tagName)" style="100px; height:100px; background:yellow; position:absolute; left:100px; top:100px;"></div>
        </div>
    </body>
    </html>
    
    <!-- offsetParent -->
    View Code
    <!-- DOM节点(2)
    首尾子节点
    有兼容性问题
    firstChild、firstElementChild 
    lastChild 、lastElementChild
    兄弟节点
    有兼容性问题
    nextSibling、nextElementSibling
    previousSibling、previousElementSibling
    
    
    元素属性操作
    第一种:oDiv.style.display=“block”;
    第二种:oDiv.style[“display”]=“block”;
    第三种:Dom方式
    DOM方式操作元素属性
    获取:getAttribute(名称)
    设置:setAttribute(名称, 值)
    删除:removeAttribute(名称)
    
    用className选择元素
    如何用className选择元素
    选出所有元素
    通过className条件筛选
    封装成函数 -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
            window.onload = function()
            {
                var oUl = document.getElementById('ul1');
    
                //IE || FF
                var oFirst = oUl.firstElementChild || oUl.firstChild;
    
                oFirst.style.background = 'red';
            }
        </script>
    </head>
    <body>
        <ul id="ul1">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </body>
    </html>
    
    <!-- firstChild/firstElementChild -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
            window.onload=function ()
            {
                var oLi=document.getElementById('li1');
    
                oLi.previousSibling.style.background = 'red';
            }
        </script>
    </head>
    <body>
        <ul id="ul1">
            <li></li>
            <li></li>
            <li id='li1'>111</li>
            <li></li>
            <li></li>
        </ul>
    </body>
    </html>
    
    <!-- Uncaught TypeError: Cannot set property 'backgroundColor' of undefined -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
            window.onload=function ()
            {
                var oUl=document.getElementById('ul1');
                var aLi=oUl.getElementsByTagName('li');
                var i=0;
    
                for(i; i<aLi.length; i++)
                {
                    if(aLi[i].className=='box')
                    {
                        aLi[i].style.background='red';
                    }
                }
            }
        </script>
    </head>
    <body>
        <ul id="ul1">
            <li></li>
            <li></li>
            <li></li>
            <li class='box'></li>
            <li></li>
            <li class='box'></li>
            <li class='box'></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </body>
    </html>
    
    <!-- className -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <script type="text/javascript">
            function getByClass(oParent, sClass)
            {
                var aEle=oParent.getElementsByTagName('*');
                var aResult=[];
    
                for(var i=0;i<aEle.length;i++)
                {
                    if(aEle[i].className==sClass)
                    {
                        aResult.push(aEle[i]);
                    }
                }
    
                return aResult;
            }
    
            window.onload=function ()
            {
                var oUl=document.getElementById('ul1');
                var aBox=getByClass(oUl, 'box');
                var i=0;
    
                for(i; i<aLi.length; i++)
                {
                    
                }
            }
        </script>
    </head>
    <body>
        <ul id="ul1">
            <li></li>
            <li></li>
            <li></li>
            <li class='box'></li>
            <li></li>
            <li class='box'></li>
            <li class='box'></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </body>
    </html>
    
    <!-- className提取元素 -->
    View Code
    创建DOM元素
    createElement(标签名)        创建一个节点
    appendChild(节点)            追加一个节点
    例子:为ul插入li
    插入元素
    insertBefore(节点, 原有节点)    在已有元素前插入
    例子:倒序插入li
    删除DOM元素
    removeChild(节点)            删除一个节点
    例子:删除li
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript">
            window.onload=function ()
            {
                var oBtn=document.getElementById('btn1');
                var oUl=document.getElementById('ul1');
    
                oBtn.onclick=function ()
                {
                    var oLi=document.createElement('li');
    
                    oUl.appendChild(oLi);
                }
            }
        </script>
    </head>
    <body>
        <input type="button" id="btn1" value="创建Li">
        <ul id="ul1">
            <li>aaa</li>
        </ul>
    </body>
    </html>
    
    <!-- appendChild -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript">
            window.onload=function ()
            {
                var oBtn=document.getElementById('btn1');
                var oTxt=document.getElementById('txt1');
                var oUl=document.getElementById('ul1');
    
                oBtn.onclick=function ()
                {
                    var oLi=document.createElement('li');
                    oLi.innerHTML = oTxt.value;
    
                    oUl.appendChild(oLi);
    
                }
            }
        </script>
    </head>
    <body>
        <input type="text" id="txt1">
        <input type="button" id="btn1" value="创建Li">
    
        <ul id="ul1">
            <li>aaa</li>
        </ul>
    </body>
    </html>
    
    <!-- appendChild,get txt from input -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript">
            window.onload=function ()
            {
                var oTxt=document.getElementById('txt1');
                var oBtn=document.getElementById('btn1');
                var oUl=document.getElementById('ul1');
    
                oBtn.onclick=function ()
                {
                    var oLi=document.createElement('li');
                    var aLi=document.getElementsByTagName('li');
                    oLi.innerHTML=oTxt.value;
    
                    oUl.insertBefore(oLi, aLi[0]);
                }
            }
        </script>
    </head>
    <body>
        <input id="txt1" type="text"/>
        <input id="btn1" type="text" value="创建Li"/>
        <ul id="ul1">
            <li>aaa</li>
        </ul>
    </body>
    </html>
    
    <!-- insertBefore
    this type should be button:<input id="btn1" type="text" value="创建Li"/> -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript">
            window.onload=function ()
            {
                var oTxt=document.getElementById('txt1');
                var oBtn=document.getElementById('btn1');
                var oUl=document.getElementById('ul1');
    
                oBtn.onclick=function ()
                {
                    var oLi=document.createElement('li');
                    var aLi=document.getElementsByTagName('li');
                    oLi.innerHTML=oTxt.value;
    
                    if(aLi.length==0)
                    {
                        oUl.appendChild(oLi);
                    }
                    else
                    {
                        oUl.insertBefore(oLi,aLi[0]);
                    }
                }
            }
        </script>
    </head>
    <body>
        <input id="txt1" type="text"/>
        <input id="btn1" type="button" value="创建Li"/>
        <ul id="ul1">
        </ul>
    </body>
    </html>
    
    <!-- if exists appendChild else insertBefore
    innerHTMl is got for value  -->
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <style>
    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
        window.onload=function ()
        {
            var aA=document.getElmentByTag('a');
            var oUl=document.getElementById('ul1');
            var i=0;
    
            for(i=0;i<aA.length;i++)
            {
                aA[i].onclick=function()
                {
                    oUl.removeChild(this.parentNode);
                }
            }
        }
    </script>
    </head>
    
    <body>
    <ul id="ul1">
        <li>sdfsdf <a href="javascript:;">删除</a></li>
        <li>3432 <a href="javascript:;">删除</a></li>
        <li>tttt <a href="javascript:;">删除</a></li>
        <li>ww <a href="javascript:;">删除</a></li>
    </ul>
    </body>
    </html>
    
    <!-- ancestor.removeChild(parent) -->
    View Code
    文档碎片
    文档碎片可以提高DOM操作性能(理论上)
    文档碎片原理
    document.createDocumentFragment()
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script>
            window.onload=function ()
            {
                var oBtn=document.getElementById('btn1');
                var oUl=document.getElementById('ul1');
    
                oBtn.onclick=function ()
                {
                    var iStart=new Date().getTime();
                    var i=0;
    
                    for(i=0;i<100000;i++)
                    {
                        var oLi=document.createElement('li');
                        oUl.appendChild(oLi);
                    }
    
                    alert(new Date().getTime()-iStart);
                }
            }
        </script>
    </head>
    <body>
        <input type="button" id="btn1" value='普通'/>
        <ul id="ul1"></ul>
    </body>
    </html>
    
    <!-- getIntervalTime -->
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script>
            window.onload=function ()
            {
                var oBtn=document.getElementById('btn1');
                var oUl=document.getElementById('ul1');
    
                oBtn.onclick=function ()
                {
                    var iStart=new Date().getTime();
                    var oFrag=document.createDocumentFragment();
                    var i=0;
    
                    for(i=0;i<100000;i++)
                    {
                        var oLi=document.createElement('li');
                        oFrag.appendChild(oLi);
                    }
    
                    oUl.appendChild(oFrag);
    
                    alert(new Date().getTime()-iStart);
                }
            }
        </script>
    </head>
    <body>
        <input type="button" id="btn1" value='普通'/>
        <ul id="ul1"></ul>
    </body>
    </html>
    
    <!-- createDocumentFragment -->
    View Code

    BOM

    1. window.open() 方法及相关参数
    2. 运行代码框实例
    3. document.write() 方法
    4. about:blank 打开新窗口及返回值
    5. close()关闭当前窗口及新开窗口特性
    6. window.navigator.userAgent 检测浏览器版本
    7. window.location 读写地址栏
    8. 可社区尺寸、滚动距离
    9. 系统对话框及返回值
    10. 侧边栏广告实例
    11. window.onscroll 事件及处理窗口变化等细节
    12. 解决滚动条闪烁问题:固定定位与滑动效果
    13. 返回顶部效果实例
    14. 解决定时器与事件冲突的问题
    <!-- 1. window.open() 方法及相关参数
    window.open in BOM
    window.onload is needed
    http://www...  not www...
    input label not button label
    _self presentPage _blank newPage -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
        window.onload=function()
        {
          var oBtn=document.getElementById('id1');
    
          oBtn.onclick=function()
          {
            window.open('http://www.miaov.com','_self');
          }
        }
      </script>
    </head>
    <body>
        <input type="button" id="id1" value="open_window">
    </body>
    </html>
    
    
    <!-- 2. 运行代码框实例 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
         window.onload=function()
         {
          var oTxt=document.getElementById('txt1');
          var oBtn=document.getElementById('btn1');
    
          oBtn.onclick=function()
          {
            var oNewWin=window.open('about:blank');
            
            document.write(oTxt.value);
          }
         }
      </script>
    </head>
    <body>
      <textarea name="" id="txt1" cols="40" rows="10"></textarea><br />
      <input type="button" id="btn1" value='运行'>
    </body>
    </html>
    
    <!-- 6. window.navigator.userAgent 检测浏览器版本
    7. window.location 读写地址栏
    window.location
    window.navigator.userAgent -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
        alert(window.navigator.userAgent);
        alert(window.location);
        window.location='http://www.miaov.com/';
      </script>
    </head>
    <body>
    </body>
    </html>
    View Code
    <!-- 侧边栏布局 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
        #div1 {width: 100px;height: 100px;background: red;position: fixed;right: 0;top: 50%;margin-top: -50px;}
      </style>
    </head>
    <body style='2000px'>
      <div id="div1"></div>
    </body>
    </html>
    
    <!-- 侧边栏从顶端滚下来 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title id='title'>Document</title>
      <style>
        #div1 {width:100px;height: 100px;background: red;position: absolute;right: 0;top: 0;}
      </style>
      <script src='move.js'></script>
      <script>
        window.onresize=window.onload=window.onscroll=function()
        {
          var oDiv=document.getElementById('div1');
          var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
          document.getElementById('title').innerHTML=scrollTop+' cl'+document.documentElement.clientHeight+' of'+oDiv.offsetHeight;
          var t=(document.documentElement.clientHeight-oDiv.offsetHeight)/2
    
          //oDiv.style.top=scroll+t+'px';
          startMove(oDiv, {top:scrollTop+t});
    
           var b=confirm('Is it rainning today?');
       var str=prompt('Please enter your name', 'blue');
        }
      </script>
    </head>
    <body style='height:2000px;'>
      <div id="div1"></div>
    </body>
    </html>
    View Code

    js

    /**
     * @author miaov
     */
    function getStyle(obj, attr)
    {
        if(obj.currentStyle)
        {
            return obj.currentStyle[attr];
        }
        else
        {
            return getComputedStyle(obj, false)[attr];
        }
    }
    
    function startMove(obj, json, fn)
    {
        clearInterval(obj.timer);
        obj.timer=setInterval(function (){
            var bStop=true;        //这一次运动就结束了——所有的值都到达了
            for(var attr in json)
            {
                //1.取当前的值
                var iCur=0;
                
                if(attr=='opacity')
                {
                    iCur=parseInt(parseFloat(getStyle(obj, attr))*100);
                }
                else
                {
                    iCur=parseInt(getStyle(obj, attr));
                }
                
                //2.算速度
                var iSpeed=(json[attr]-iCur)/8;
                iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
                
                //3.检测停止
                if(iCur!=json[attr])
                {
                    bStop=false;
                }
                
                if(attr=='opacity')
                {
                    obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')';
                    obj.style.opacity=(iCur+iSpeed)/100;
                }
                else
                {
                    obj.style[attr]=iCur+iSpeed+'px';
                }
            }
            
            if(bStop)
            {
                clearInterval(obj.timer);
                
                if(fn)
                {
                    fn();
                }
            }
        }, 30)
    }
    View Code

    功能:回到顶部按钮

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
        #btn1 {position: fixed;bottom: 0;right: 0;}
      </style>
      <script>
        window.onload=function()
        {
          var oBtn=document.getElementById('btn1');
          var timer=null;
          var bSys=true;
    
          //用户拖动了滚动条?
          //移动的时候发生了滚动,用户在滚动就是第二次滚动
          window.onscroll=function()
          {
            if(!bSys){
              clearInterval(timer);
            }
            bSys=false;
          }
    
          //点击回到顶部,回到顶部之后关闭定时器
          oBtn.onclick=function()
          {
            timer=setInterval(function() 
            {
              var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
              var iSpeed=Math.floor(-scrollTop/8);
    
              if(scrollTop==0)
              {
                clearInterval(timer);
              }
    
              bSys=true;
    
              document.documentElement.scrollTop=document.body.scrollTop=scrollTop+iSpeed;
            }, 30)
          }
        }
      </script>
    </head>
    <body style='height:2000px;'>
      1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />
        <input type="button" id="btn1" value="back_to_top">
    </body>
    </html>
    View Code

     事件基础

    事件基础(一)
    1. 什么是事件对象
    2. document对象范围
    3. event事件对象、clientX、clientY
    4. 事件对象的兼容性问题及解决方案
    5. 事件冒泡原理
    6. 取消事件冒泡:cancelBubble、弹出层实例
    7. 跟随鼠标的DIV实例
    
    事件基础(二)    
    1. 可视区坐标
    2. 滚动条所滚动的距离:scrollTop
    3. 滚动条所滚动的距离——解决谷歌浏览器兼容性问题
    4. 跟随鼠标的DIV实例——消除滚动条的影响
    5. 一串跟随鼠标的DIV实例
        ——思考题:在鼠标不移动时,也能实现鼠标跟随
    6. 键盘事件:onkeydown、keyCode
    7. 用键盘来控制DIV移动实例
        ——思考题:如何消除不卡顿的DIV移动
    8. 提交留言实例——ctrl+回车的提交方式
    <!-- 1. 什么是事件对象
    用来获取事件的详细信息:鼠标位置、键盘按键
    例子:获取鼠标位置:clientX
    document的本质:document.childNodes[0].tagName怎么理解?
    FF:ev IE:event
    获取鼠标位置:clientX
    arguments.callee 在哪一个函数中运行,它就代表哪个函数
    (function(n){
      if(n > 1)  return n* arguments.calle(n-1);
      return n;
    })(10); -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <script>
      document.onclick=function(ev)
      {
        var oEvent=ev||event;
    
        alert(oEvent.clientX+', '+oEvent.clientY);
      }
    </script>
    <body>
      
    </body>
    </html>
    
    <!-- 事件冒泡 事件捕获 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
      <div style='300px;height:300px;background:red;' onclick='alert(this.style.background)'>
        <div style='200px;height:200px;background:green;' onclick='alert(this.style.background)'>
          <div style='100px;height:100px;background:#ccc;' onclick='alert(this.style.background)'></div>
        </div>
      </div>
    </body>
    </html>
    
    <!-- offset -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
    #div1 { 100px;height: 100px;background: red;border: 1px solid black;padding: 10px;margin: 20px;position: absolute;left: 100px;top: 100px;}
    </style>
      <script>
      window.onload=function()
      {
        var oDiv=document.getElementById('div1');
    
        alert(oDiv.offsetLeft);//m20+l100=120
      }
      </script>
    </head>
    <body>
       <div id="div1"></div>
    </body>
    </html>
    
    <!-- keycode -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      document.onkeydown=function(ev)
      {
        var oEvent=ev||event;
    
        alert(oEvent.keyCode);
      }
      </script>
    </head>
    <body>
      
    </body>
    </html>
    
    <!-- 可视区距离scrollTop -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
        document.onclick=function()
        {
          /*alert(document.documentElement.scrollTop);//非chrome
          alert(document.body.scrollTop);//chrome*/
          var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        }
      </script>
    </head>
    <body>
    </body>
    </html>
    View Code

     鼠标事件 键盘事件

    <!-- 6. 取消事件冒泡:cancelBubble、弹出层实例
      oEvent.cancelBubble not cancelBuble -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
      #div1 { 100px;height: 150px;background: #ccc;display: none;}
      </style>
      <script>
      window.onload=function()
      {
        var oBtn=document.getElementById('btn1');
        var oDiv=document.getElementById('div1');
    
        oBtn.onclick=function(ev)
        {
          var oEvent=ev||event;
          oDiv.style.display='block';
          alert('btn doing')
          oEvent.cancelBubble=true;
        }
    
        document.onclick=function()
        {
          oDiv.style.display='none';
          alert('page doing');
        }
      }
      </script>
    </head>
    <body>
      <input type="button" id="btn1" value="show">
      <div id="div1"></div>
    </body>
    </html>
    
    
    <!-- 7. 用键盘来控制DIV移动实例
    left只读,字符串‘8px’ offsetLeft读写,数字28
    ,js中通过style只能来操控行间元素。你要引用外部样式表中的属性,就不能通过style来取值
    要想获取非行内样式可以试试下面的方法
    function getStyle(obj, name)
    {
    if(obj.currentStyle)
    {
    return obj.currentStyle[name];//兼容ie版本
    }
    else
    {
    return getComputedStyle(obj, false)[name];//兼容FF和谷歌版本
    }
    }
    window.onload=function ()
    {
    var oDiv=document.getElementById('div1');
    
    alert(getStyle(oDiv, 'offsetLeft'));
    };
    
    <div id="div1">
    </div> -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
      #div1 { 100px;height: 100px;background: #ccc;position: absolute;}
      </style>
      <script>
        document.onkeydown=function(ev)
        {
          var oEvent=ev||event;
          var oDiv=document.getElementById('div1');
    
          // alert(oEvent.keyCode);//←37 →39
          if(oEvent.keyCode==37)
          {
            oDiv.style.left=oDiv.offsetLeft-10+'px';
          }
          else if(oEvent.keyCode==39)
          {
            oDiv.style.left=oDiv.offsetLeft+10+'px';
          }
        }
      </script>
    </head>
    <body>
      <div id="div1"></div>
    </body>
    </html>
    View Code

     跟随鼠标移动的div

    <!--跟随鼠标移动的div 
      oEvent.clientX -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
      #div1 { 100px;height: 100px;background: red;position: absolute;}
      </style>
      <script>
      document.onmousemove=function (ev)
      {
        var oEvent=ev||event;
        var oDiv=document.getElementById('div1');
    
        oDiv.style.left=oEvent.clientX+'px';
        oDiv.style.top=oEvent.clientY+'px';
      }
      </script>
    </head>
    <body>
      <div id="div1"></div>
    </body>
    </html>
    
    <!--跟随鼠标移动的div2  -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
      #div1 { 100px;height: 100px;background: red;position: absolute;}
      </style>
      <script>
      document.onmousemove=function (ev)
      {
        var oEvent=ev||event;
        var oDiv=document.getElementById('div1');
    
        var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
    
        oDiv.style.left=oEvent.clientX+scrollLeft+'px';
        oDiv.style.top=oEvent.clientY+scrollTop+'px';
      }
      </script>
    </head>
    <body>
      <div id="div1"></div>
    </body>
    </html>
    
    <!-- 一串 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
      div { 100px;height: 100px;background: red;position: absolute;}
      </style>
      <script>
      window.onload=function ()
      {
        var aDiv=document.getElementsByTagName('div');
        var i=0;
    
        document.onmousemove=function (ev)
       {
        var oEvent=ev||event;
    
        for(i=aDiv.length-1;i>0;i--)
        {
          aDiv[i].style.left=aDiv[i-1].style.left;
          aDiv[i].style.top=aDiv[i-1].style.top;
        }
    
        aDiv[0].style.left=oEvent.clientX+'px';
        aDiv[0].style.top=oEvent.clientY+'px';
       }
      }
      
      </script>
    </head>
    <body>
      <div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
    </body>
    </html>
    View Code

     ctrl+enter提交

    <!-- 8. 提交留言实例——ctrl+回车的提交方式 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      window.onload=function()
      {
        var oBtn=document.getElementById('btn1');
        var oTxt1=document.getElementById('txt1');
        var oTxt2=document.getElementById('txt2');
    
        oBtn.onclick=function()
        {
          oTxt1.value+=oTxt2.value+'
    ';
          oTxt2.value='';
        };
    
        oTxt2.onkeydown=function (ev)
        {
          var oEvent=ev||event;
    
          if(oEvent.ctrlKey&&oEvent.keyCode==13)
          {
            oTxt1.value+=oTxt2.value+'
    ';
            oTxt2.value='';
          }
        }
      }
      </script>
    </head>
    <body>
      <textarea name="" id="txt1" cols="40" rows="10"></textarea>
      <input type="text" id="txt2">
      <input type="button" id="btn1" value="message">
    </body>
    </html>
    View Code
    事件中级    
    1. 什么是事件的默认行为
    2. 上下文菜单:oncontextmenu
    3. 文本框内禁止输入内容实例
    4. 自定义右键菜单实例
    5. 只能输入数字的输入框实例:onkeydown、onkeyup
    6. 拖拽实例:拖拽原理、三个事件、document范围、解决FF的bug
    7. 限制拖拽范围的条件:document.documentElement.clientWidth
    <!-- 2. 上下文菜单:oncontextmenu
          取消右键,not ontextmenu -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      document.oncontextmenu=function ()
      {
        return true;
      };
      </script>
    </head>
    <body>
      
    </body>
    </html>
    
    <!-- 组织表单提交 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      window.onload=function ()
      {
        var oForm=document.getElementById('form1');
    
        oForm.onsubmit=function ()
        {
          return false;
        };
      }
      </script>
    </head>
    <body>
        <form action="http://www.miaov.com/" id="form1">
          <input type="submit">
        </form>
    </body>
    </html>
    
    <!-- clientWidth -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      document.onclick=function ()
      {
        alert(document.documentElement.clientWidth);
      };
      </script>
    </head>
    <body>
      
    </body>
    </html>
    
    <!-- 5. 只能输入数字的输入框实例:onkeydown、onkeyup -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      window.onload=function ()
      {
        var oTxt=document.getElementById('txt1');
    
        oTxt.onkeydown=function (ev)
        {
          var oEvent=ev||event;
    
          //0   48
          //9   57
          //退格  8
          if(oEvent.keyCode!=8 && (oEvent.keyCode<48 || oEvent.keyCode>57))
          {
            return false;
          }
    
        }
      }
      </script>
    </head>
    <body>
      <input type="text" id="txt1">
    </body>
    </html>
    
    <!-- 5. 只能输入数字的输入框实例:onkeydown、onkeyup -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      document.oncontextmenu=function (ev)
      {
        var oEvent=ev||event;
        var oUl=document.getElementById('ul1');
    
        oUl.style.display='block';
        oUl.style.left=oEvent.clientX+'px';
        oUl.style.top=oEvent.clientY+'px';
    
        return false;
      }
    
      document.onclick=function ()
      {
        var oUl=document.getElementById('ul1');
    
        oUl.style.display='none';
      }
      </script>
    </head>
    <body>
      <ul id="ul1" style='position: absolute;'>
        <li>登陆</li>
        <li>回到首页</li>
        <li>注销</li>
        <li>加入VIP</li>
      </ul>
    </body>
    </html>
    View Code

     拖拽

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
      #div1 { 100px;height: 100px;background: red;position: absolute;}
      </style>
      <script>
      window.onload=function ()
      {
        var oDiv=document.getElementById('div1');
    
        var disX=0;
        var disY=0;
    
        oDiv.onmousedown=function (ev)
        {
          var oEvent=ev||event;
    
          disX=oEvent.clientX-oDiv.offsetLeft;
          disY=oEvent.clientY-oDiv.offsetTop;
    
          oDiv.onmousemove=function (ev)
          {
            var oEvent=ev||event;
            var l=oEvent.clientX-disX;
            var t=oEvent.clientY-disY;
    
            if(l<0)
            {
              l=0;
            }
            else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)
            {
              l=document.documentElement.clientWidth-oDiv.offsetWidth;
            }
    
            if(t<0)
            {
              t=0;
            }
            else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)
            {
              t=document.documentElement.clientHeight-oDiv.offsetHeight;
            }
    
            oDiv.style.left=l+'px';
            oDiv.style.top=t+'px';
          }
    
          oDiv.onmouseup=function ()
          {
            oDiv.onmousemove=null;
            oDiv.onmouseup=null;
          }
    
          return false;
        }
    
    
      }
      </script>
    </head>
    <body>
      <input id='div1'>
    </body>
    </html>
    View Code

     cookie

    1. 什么是 cookie、cookie 特性
    2. js 中的 cookie:设置 document.cookie
    3. cookie 不会覆盖
    4. cookie 过期时间:expires、setDate
    5. 封装设置 cookie 函数
    6. 封装获取 cookie 函数
    7. 封装删除 cookie 函数
    8. cookie 接合拖拽实例
    9. cookie 记录用户名实例

     记录用户名

    <!-- 4. cookie 过期时间:expires、setDate
    cookie是用'; '不是';'隔开的
      setCookie、getCookie、removeCookie
      cookie一个一个添加,每个单独添加期限 -->
    <!doctype html>
    <html>
      <head>
        <title>无标题文档</title>
        <script>
        function setCookie(name, value, iDay)
        {
          var oDate=new Date();
          oDate.setDate(oDate.getDate()+iDay);
    
          document.cookie=name+'='+value+';expires='+oDate;
        }
    
        function getCookie(name)
        {
          //'username=abc; password=123456;'
          alert(document.cookie)
          var arr=document.cookie.split('; ');
    
          //match
          for(var i=0;i<arr.length;i++)
          {
            var arr2=arr[i].split('=');
    
            if(arr2[0]==name)
            {
              return arr2[1];
            }
          }
    
          //no match
          return '';
        }
    
        function removeCookie(name)
        {
          setCookie(name,'1',-1);
        }
    
        setCookie('username', 'abc', 30);
        setCookie('password', '123456', 300);
        setCookie('aaa', '123', 300);
        alert(getCookie('username'));
        removeCookie('username');
        alert(getCookie('username'));
    
    /*    var oDate=new Date();
    
        oDate.setDate(oDate.getDate()+30);
    
        document.cookie='user=tab;expires='+oDate;
        document.cookie='pass=123';
        alert(document.cookie);*/
        </script>
      </head>
      <body>
        
      </body>
    </html>
    View Code

     结合拖拽

    <!-- cookie結合拖拽 -->
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script>
      function setCookie(name, value, iDay)
      {
        var oDate=new Date();
    
        oDate.setDate(oDate.getDate()+iDay);
    
        document.cookie=name+'='+value+';expires='+oDate;
      }
    
      function getCookie(name)
      {
        var arr=document.cookie.split('; ');
    
        //found
        for(var i=0;i<arr.length;i++)
        {
          var arr2=arr[i].split('=');
    
          if(arr2[0]==name)
          {
            return arr2[1];
          }
        }
    
        //not found
        return '';
      }
    
      function removeCookie(name)
      {
        setCookie(name, '1', -1);
      }
    
      window.onload=function()
      {
        var oDiv=document.getElementById('div1');
    
        oDiv.onmousedown=function(ev)
        {
          var oEvent=ev||event;
    
          var disX=oEvent.clientX-oDiv.offsetLeft;
          var disY=oEvent.clientY-oDiv.offsetTop;
    
          document.onmousemove=function(ev)
          {
            oDiv.style.left=oEvent.clientX-disX+'px';
            oDiv.style.top=oEvent.clientY-disY+'px';
          }
    
          document.onmouseup=function()
          {
             document.onmousemove=null;
             document.onmouseup=null;
    
             setCookie('x', oDiv.offsetLeft, 5);
             setCookie('y', oDiv.offsetTop, 5);
          }
    
          return false;
        }
      }
      </script>
    </head>
    <body>
      <div id="div1"></div>
    </body>
    </html>
    View Code
  • 相关阅读:
    android studio gradle plugin 用户指南 选择性翻译
    c++ 遍历多维数组的10种方式
    cocos2dx FixedPriority和SceneGraphPriority
    cocos2dx 坐标转换
    MySQL删除表
    MySQL修改表
    MySQL创建表
    MySQL的删除语句
    MySQL的更新语句
    MySQL的插入语句
  • 原文地址:https://www.cnblogs.com/tabCtrlShift/p/5625454.html
Copyright © 2020-2023  润新知