event事件


typora-root-url: images
typora-copy-images-to: images

总结:

DOM属性的操作

内置属性

获取 obj.id 设置 obj.id= ‘id名称’

    obj.className      obj.className ='class'

   obj.name  获取名称   obj.value  获取表单值     obj.innerHTML  获取两个标签中的内容

 标签上有的我们都可以通过属性名字直接获取,但是class是className

非内置属性

// 获取 obj.gerAttribute(‘name’)

// 设置 obj.setAttribute(name,value);

// 删除 obj.removeAttribute(name)

节点:

创造节点 : document.createElement(名称); html标签节点

                document.createTextNode(文本) 创建文本节点

追加节点; 父节点.appendChild()

                 追加到指定位置   父节点.insertBefore(newNode,oldNode);

删除 obj.remove() 自己删除自己

          obj.removeChild(子节点)

节点公共属性

obj.firstChild 返回第一个节点(包含空白节点)

obj.firstElementChild

obj.lastChild 最后一个节点(包含)

obj.lastElementChild

obj.nextSibling 返回后一个兄弟节点

obj.nextElementSibling

obj.previousSibling 返回上一个兄弟节点(包含空白和注释)

obj.children // 返回一个元素所有的子节点

cssDOM

js操作的css都是行内样式

obj.style.height = 12px;

第一节

事件对象—Event
概念:
当事件发生的时候产生事件对象,事件结束后对象销毁,比如在键盘上按了一A键,按的时候产生事件,按完后事件销毁。如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态
作用:
事件对象只有事件发生时才会产生,事件主要实现“用户和网页之间的交互”,当事件被触发的时候去执行js代码在所有事件处理函数运行结束后,事件对象就被销毁.
过程
	事件源:发生事件的起源,元素
	事件类型:事件种类,是什么事件(点击)
	事件处理函数:触发事件的时候,专门用来处理事情的函数
	事件的授权:浏览器给的

[外链图片转存失败(img-z6nukO5P-1567239972098)(/1560735081472.png)]

去把生番给我做了,记住制造成自杀的假象

[外链图片转存失败(img-rFcdONKG-1567239972099)(/1560735100759.png)]

老大说,给你配个对象兼秘书,叫event(伊文)

比较羞涩,用的时候,得叫她出来,平时需要隐藏起来

[外链图片转存失败(img-lO5gh7B7-1567239972099)(/1564820316361.png)]

[外链图片转存失败(img-AoDE7VXo-1567239972099)(/1560735160585.png)]

    老大是浏览器
    生番是事件源,因为他你要XX,事情发生在他身上
    事件类型:就是灭了他,自杀的方式灭,不是去收保护费
    事件处理函数:就是你,怎么达到效果
    事件授权:老大
    事件对象:保镖,就是事件对象,向你提供完成这件事的所有帮助,每做一件事,老大给配不同的秘书 / 每个事件都有不同的事件对象
事件的分类
<p onClick = 'show()'>hello</p>

鼠标事件

onclick				鼠标单击
ondblclick			鼠标双击(必须连续点击两下)
onmouseover 	    鼠标移入,即鼠标停留在图片等的上方(一次)
onmouseout 		    鼠标移出,即离开图片等所在的区域(一次)
onmousemove	        鼠标移动,即鼠标在图片的上方不断移动(多次)
onmouseup 		    事件会在鼠标按键被松开时发生。
onmousedown		    事件会在鼠标按键被按下时发生。

页面事件

 onload	  网页内容加载/运行完毕之后调用/执行函数里面的内容
 onresize 当浏览器的窗口大小被改变时触发的事件

表单事件

onblur		    指定元素失去焦点(光标没了)
onfocus         指定元素获取焦点(点击出现光标)
onreset         重置表单的时候触发事件,执行对应的js功能
onsubmit        提交表单的时候触发事件,执行对应的js功能
onchange        下拉菜单改变时候触发
event事件对象属性

例: event的获取

     var pObj = document.getElementById('text');
     // 在事件触发的时候,产生
         pObj.onclick = function(event){
               console.log(event);
         }

老大给的美女event可以做什么呢?

属性说明
event.typetype属性指示事件类型。
event.whichwhich 属性指示按了哪个键或按钮。
event.clientX鼠标指针相对于浏览器页面(或客户区)的X轴坐标。
event.clientY鼠标指针相对于浏览器页面(或客户区)的Y轴坐标。
event.screenX鼠标指针距离屏幕左边的距离。
event.screenY鼠标指针距离屏幕上边的距离。
event.button返回值为0,左键;返回值为1,中键;返回值为2,右键
event.offsetX当鼠标事件发生时,鼠标相对于事件发生元素左边的位置
event.offsetY当鼠标事件发生时,鼠标相对于事件发生元素顶部的位置
event.pageX当鼠标事件发生时.相对于文档窗口顶部的位置
event.pageY当鼠标事件发生时.相对于文档窗口左边的位置

[外链图片转存失败(img-Pa2JQgjW-1567239972099)(/1560738380822.png)]

[外链图片转存失败(img-tMDf6lZI-1567239972099)(/1560744129922.png)]

此时可视窗口与文档窗口重叠,pageX等于clientX, pageY等于clientY, 如果我们缩小浏览器窗口直到浏览器出现滚动条。此时可视窗口左上角位置不变,但文档窗口左上角位置发生的变化.

[外链图片转存失败(img-PJGQLV0e-1567239972100)(/1560744169992.png)]

由此我们可以看出当浏览器没有滚动条时(可视窗口与文档窗口重合),pageX与clientX相等,pageX与clientY相等,如果出现下拉滚动条并向下拉动滚动条,文档窗口向上滚动,如果出现左右滑动的滚动条并向右拉动滚动条,文档窗口向左滚动,在文档窗口滚动的情况下,pageX>=clientX, pageY>=clientY, x = clientX, y = clientY.

脚下留心:

早期的浏览器中,在IE/Opera中,是window.event,而在Firefox中,是event

多学一招

         var a=2;
         var b;
         var c = a || b;
         console.log(c);
       判断a与b那个有值,那个有值,就将他的值赋给c
案列实现
<!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>
</head>
<style>
    /* body{
        height: 2000px;
    } */
#text{
    width: 100px;
    height: 100px;
    background: green;
    margin:40px;
}

</style>
<body>
    <p id="text">勤学如春起之苗,不见其增,日有所长</p>
    <script>
     var pObj = document.getElementById('text');
     // 在事件触发的时候,产生
       
         pObj.onclick = function(eve){
             //获取event对象,兼容写法
              var e  = eve || window.event;
             // console.log(e);

             // 获取鼠标到点击元素的位置
           //  console.log(e.offsetX);
           //  console.log(e.offsetY);

             // 相对于屏幕的位置
             //console.log(e.screenX);
            // console.log(e.screenY);

             // 相对于浏览器的位置
            // console.log(e.clientX);
             //console.log(e.clientY);

             // 相对于文档的位置,没有滚动条时,和clientX的位置是一样的
            // console.log(e.pageX);
             //console.log(e.pageY);

             // 获取按的那个键
             //console.log(e.button);
             // 获取发生事件的元素
            // console.log(e.target);
             // 获取事件的类型
             //console.log(e.type);
         }
         
         // 使用移入事件获取event
         pObj.onmouseover  = function(eve){
              //兼容写法
              var e = eve || window.event;
              console.log(e);
         }
    </script>
</body>
</html>

第二节:应用与练习

1.光标的实时显示,画布功能的实现

[外链图片转存失败(img-jir9iQEN-1567239972100)(/1560742320889.png)]

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#xy{
                 position: fixed;
                 left: 0;
                 bottom: 0;
                 }
			.box{
                border-radius: 50%;
                position: absolute;
                }
			input{
                position: absolute;
                z-index: 999999999999;
                }
			input:nth-child(1){}
			input:nth-child(2){left: 50px;}
			input:nth-child(3){left: 100px;}
		</style>
	</head>
	<body>
		<input type="button" name="" id="btn1" value="+" />
		<input type="button" name="" id="btn2" value="-" />
		<input type="button" name="" id="red" value="red" />
		<span id="xy"></span>
	</body>
    <script type="text/javascript">
    
         //声明控制线条促销的变量,就是height和width
         var h = 5;
         var w = 5;
         // 设置颜色变量
         var color = 'black';
	    // 1 获取节点
         var xyObj = document.querySelector('span');
        // 2 给document绑定鼠标移动事件
        document.onmousemove = function(eve){
            // 获取event对象
            var e = eve || window.event
           // 3 获取鼠标相对于文档的的移动位置
           var x  = e.pageX;
           var y = e.pageY;
          // console.log(x,y);
           // 4 将鼠标位置放在左下角
           xyObj.innerHTML = x+'px,'+y+'px';
          // 5 创建div,将鼠标相对于文档的x,y距离赋值给div的top left
          var newDivObj = document.createElement('div');
             // 给div追加box类
              newDivObj.className = 'box';
              newDivObj.style.width=w+'px';
              newDivObj.style.height = h+'px';
              // 设置div的显示位置
              newDivObj.style.top = y+'px';
              newDivObj.style.left = x+'px';
              // 设置div的颜色
              newDivObj.style.background = color;
              // 6 将div追加到body中
              document.body.appendChild(newDivObj);
              console.log(newDivObj);
        }
        //目标:实现线条的粗细调节
        //1 获取节点
        var btn1Obj = document.getElementById('btn1');
        var btn2Obj = document.getElementById('btn2');
        // 2 绑定事件
        btn1Obj.onclick = function(){
           // 3 点击+时,让设置控制宽度的变量增加
           h+=5;
           w+=5;
        }

        // 4 点击-时,让设置控制宽度的变量减小
        btn2Obj.onclick = function(){
           // 判断h或w是否小于5,小于5则重新赋值,不让其再小
           if(h<=5){
               h=5;
               w=5;
           }else{  // 否则就自减
              h-=5;
              w-=5;
           }

        }

        // 目标:点击线条变成红色
        var redObj = document.getElementById('red');
            redObj.onclick = function(){
               // 修改颜色的变量
               color = 'red';
            }
       
 
        
	</script>
</html>

2.跟随鼠标的提示框
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div{
            border: solid 1px;
            width: 10px;
            height: 10px;;
            background-color: black;
            position:absolute;
            top:0px;
            left:0px;
            border-radius:50%;
        }
    </style>
</head>
<body>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <script>
      var divs = document.querySelectorAll('div');
       
        document.onmousemove=function(eve){   // 鼠标移动时触发
            console.log(window.event);
            var e= eve || window.event;      // 兼容老的浏览器
            var len = divs.length;
            for(var i=len-1;i>0;i--){
                divs[i].style.top = divs[i-1].offsetTop+'px';    //  当前元素到父级元素顶部的偏移量
                divs[i].style.left = divs[i-1].offsetLeft+'px';  //  当前元素到父级元素左侧的偏移量
            }
             // 设置第一个元素,后边的元素跟随
              divs[0].style.top = e.pageY+'px';  // 返回相对于文档上边缘的位置信息,浏览器不缩放的情况下就是clientX
              divs[0].style.left= e.pageX+'px';
        }
    </script>
</body>

第三节

键盘事件
onkeydown         按下键盘触发事件
onkeyup           按下键盘后松开触发事件
onkeypress        按下并抬起
  适用于大部分的标签元素

获取按下的键码

    贴身女秘书还能做点啥?

    event.keyCode        返回当前按键的ASCII码
        空格    32
        回车    13
        左      37
        上      38
        右      39
        下      40
        a       65
        e       69

    ctrlKey        判断ctrl是否被按下,按下返回true
    shiftKey       判断shift是否被按下,按下返回true
    altKey         判断alt是否被按下,按下返回true

脚下留心:

   兼容问题:   var eve = event || window.event
               var keyC = eve.keyCode || eve.which
              
  IE只有keyCode属性,FireFox中有which和keyCode属性,Opera中有keyCode和which属性,Chrome中有keyCode、which和charCode属性

使用场景

在用户登录时,如果按下了大写锁定键(20),则加以提示大写锁定;在有翻页的时候,如果用户按下左右箭头,触发上下翻页等。
      //给document绑定键盘事件
      document.onkeydown = function(eve){
          var e  =  eve || window.event;
          // 获取键盘对应的ASIC
          // 注意兼容问题
          var code  = e.keyCode || e.which;
          // console.log(code);
          if(code==20){
              alert('大写已开启');
          }
      } 

实际操作

		// 给整个文档即HTML元素绑定事件
		document.onkeydown = function(eve){
			var e = eve || window.event
			var keycode = e.keyCode || e.which
			
			switch(keycode){
				case 13:
					console.log("回车");break;
				case 65:
					console.log("a");break;
				case 66:
					console.log("b");break;
				case 67:
					console.log("c");break;
				case 68:
					console.log("d");break;
				case 69:			
                console.log("e");break;
			}
		}

例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>
</head>
<style>
#demo{
    width: 100px;
    height: 100px;
    background:green;
    position:absolute;

}

</style>
<body>
    <div id="demo" style="top:200px;left:300px"></div>
    <script>
        var divObj = document.getElementById('demo');
     // 1 给document绑定键盘事件
     document.onkeydown = function(e){
         var eve  = e || window.event;
         //console.log(eve.keyCode);
         //2  获取键盘码
         var code  = eve.keyCode || eve.which;
        //3 根据键盘码判断出按的是哪个键
         // 4 按上下键就改变top,按左右改变left
         // 判断上下键
        if(code==38){
            //console.log(divObj.style.top);
           divObj.style.top = parseInt(divObj.style.top)-10+'px';
        }
        if(code==40){
            divObj.style.top = parseInt(divObj.style.top)+10+'px';
        }
        // 判断左右键
        if(code==37){
            //console.log(divObj.style.top);
           divObj.style.left = parseInt(divObj.style.left)-10+'px';
        }
        if(code==39){
            //console.log(divObj.style.top);
           divObj.style.left = parseInt(divObj.style.left)+10+'px';
        }

     }
    
    </script>
</body>
</html>
事件冒泡

[外链图片转存失败(img-QaDVqPS4-1567239972104)(/1560756341686.png)]

事件流:事件执行顺序我们叫他事件流。

事件流中事件冒泡的由来:IE公司认为,如果你面前有个靶子,你的飞镖射中了其中一环,并不仅仅是只对这一环产生了操作,而是对整个靶子都产生了操作。

 所以,当最里面的元素触发了事件的时候,会依次向上触发所有元素的相同事件(从触发事件的元素开始一直向上触发),但是事件冒泡对我们几乎没有任何好处,所以我们需要阻止事件冒泡,禁止之后事件只会停留在当前层。
阻止事件冒泡

通过事件对象,可以阻止事件冒泡.

通用方法

event.stopPropagation();
说明:stopPropagation是事件对象Event的一个方法,作用是阻止目标元素事件冒泡到父级元素。

IE浏览器的方法

event.cancelBubble = true;

例1:事件冒泡行为的演示

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    #aa {
        width:300px;
        height: 300px;
        background-color: red;
    }
    #bb {
        width:200px;
        height: 200px;
        background-color: blue;
    }
    #cc {
        width:100px;
        height: 100px;
        background-color: green;
    }
    </style>
</head>
<body>
    <div id="aa">
        aa
            <div id="bb">
                bb
                    <div id="cc">
                        cc
                        </div>
            </div>
    </div>
    <script>
      var aa = document.getElementById('aa');
      var bb = document.getElementById('bb');
      var cc = document.getElementById('cc');
      aa.onclick=del;
      bb.onclick = del;
      cc.onclick = del;
      function del(){
          console.log();
          alert(this.innerText);
      }
     
    </script>
</body>
</html>

例2:在例1的基础上阻止事件冒泡

 <script>
        // 获取节点
        .
      var aa = document.getElementById('aa');
      var bb = document.getElementById('bb');
      var cc = document.getElementById('cc');
      // 绑定事件
      aa.onclick=del;
      bb.onclick = del;
      cc.onclick = del;
      function del(){
          var e = event || window.event;
          if(e.stopPropagation){   // 通用方式阻止冒泡行为
              e.stopPropagation();
          }else{
               e.cancelBubble();  // IE浏览器阻止默认行为
          }
     
          alert(this.innerText);
      }
     
    </script>

练习与作业

1 1.CSS模拟下拉菜单

[外链图片转存失败(img-hVi154p1-1567239972104)(/1560757845233.png)]

<!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>
</head>
<style>
 #box{
     margin: 80px auto;
     width: 200px;
 }
 #game{
     width: 300px;
     height: 30px;
 }
 ul{
     list-style: none;
     padding: 0px;
     margin:0px;
     width: 302px;
     background:#ccc;
     display: none;
 }
 ul li{
     height: 28px;
     width: 295px;
     line-height: 28px;
     padding-left:5px;
  
 }
 .sel{
     background: green;
 }
</style>
<body>
    <div id="box">
       <input type="text" id="game" value="">
       <ul>
           <li>列表1</li>
           <li>列表2</li>
           <li>列表3</li>
           <li>列表4</li>
           <li>列表5</li>
           <li>列表6</li>
       </ul>
    </div>
    <script>
      //1 获取节点
      var inputObj = document.getElementById('game');
      var ulObj = document.querySelector('ul');
      // 获取子节点
      var liObj = ulObj.children;
     // console.log(liObj);
      // 2 给input绑定焦点事件
      // 显示ul
        inputObj.onfocus = function(){
            ulObj.style.display='block';
        }
        // 表单失去焦点,隐藏下拉框
        inputObj.onblur = function(){
            ulObj.style.display='none';
        }
      //3 给每个li绑定鼠标经过事件
      var len = liObj.length;
      for(var i=0;i<len;i++){
          // 将当前正在循环的i保存到当前正在循环的li对象中
          liObj[i].liIndex = i;
          liObj[i].onmouseover = function(){
           //   console.log(1111);
         

            //4 鼠标进过某个li时,通过追加已经定义好的类改变背景颜色
                var index = this.liIndex;
                // liObj[index].className = 'sel';
                // // 获取li中的内容
                // var liText = liObj[index].innerHTML;
                // console.log(liText);
                // //将内容追加到input中
                // inputObj.value = liText;
                select(index);
          }
      }

       // 目标:通过上下按钮实现内容的选择
       // 保存li的下标
         var index1 = -1;
       //1 给表单添加键盘事件
       inputObj.onkeydown = function(eve){
           var e = eve || window.event;
           var code  =e.keyCode;
           // 2 根据code,判断出按的是上下那个键
          // console.log(code);
          if(code==38){  // 按上键
              if(index1==-1 || index1==0){  // 判断索引值是等小于0
                  // 等于最大索引
                  index1 = len-1;
              }else{
                  index1--;
              }
              // 调用样式的方法
              select(index1)
          }
    
          if(code==40){  //下键
            if(index1==-1 || index1==len-1){  // 判断索引值是等小于0
                  // 等于最小索引
                  index1 = 0;
              }else{
                  index1++;
              }
            // 调用样式的方法
            select(index1)
          }

          //console.log(index1);
       }

      /***以下是公共的代码***/

    // 声明select方法,用于控制li的样式和input的内容
    function select(index){
        // 取消所有li的样式,使用for循环
      for(var j=0;j<len;j++){
         liObj[j].className = '';
       }

        liObj[index].className = 'sel';
                // 获取li中的内容
                var liText = liObj[index].innerHTML;
                console.log(liText);
                //将内容追加到input中
                inputObj.value = liText;
    }
    
    
    </script>
</body>
</html>

作业:(根据实际情况,有基础的尝试一下)

[外链图片转存失败(img-CWHuq0pA-1567239972104)(/1560757893162.png)]

技术提示:

obox.scrollTop = obox.offsetHeight

元素对象.scrollIntoView() 将元素滚动到可见位置

obox.scrollIntoView()

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{margin: 0;padding: 0;}
			.box{width: 300px;height: 400px;border: solid 1px black;margin: 30px auto;}
			#cont{height: 339px;border-bottom: solid 1px black;overflow: auto;}
			#txt{height: 60px;}
			#msg{width: 260px;height: 60px;border: none;background: none;float: left;resize: none;outline: none;padding: 6px;box-sizing: border-box;}
			#send{width: 40px;height: 60px;border: none;border-left: solid 1px black;background: #ccc;float: left;}
			
			#cont span{max-width: 260px;padding: 6px;margin: 6px;border-radius: 6px;clear: both;}
			#cont span:nth-child(2n-1){float: left;background: dodgerblue;}
			#cont span:nth-child(2n){float: right;background: limegreen;}
		</style>
	</head>
	<body>
		<div class="box">
			<div id="cont"></div>
			<div id="txt">
				<textarea id="msg"></textarea>
				<input type="button" name="" id="send" value="发送" />
			</div>
		</div>
	</body>
	<script type="text/javascript">
		var osend = document.getElementById("send")
		var omsg = document.getElementById("msg")
		var ocont = document.getElementById("cont")
		
//		var adiv = document.querySelectorAll("#cont div");		静态获取,当前这一刻,就决定了将来的状态
//		var adiv = document.getElementsByTagName("span");	//动态获取,会动态检测,将来如果添加了,会自动获取(得在将来查看)
		
		osend.onclick = function(){
			send()
		}
		
		
		omsg.onkeydown = function(eve){
			var e = eve || window.event;
			var code = e.keyCode || e.which;
			if(code == 13 && e.ctrlKey){
				send()
			}
//			console.log(code)
//			console.log(e.ctrlKey)
		}
		
		
		function send(){
			if(omsg.value != ""){
			
				var div = document.createElement("span");
				div.innerHTML = omsg.value;
				ocont.appendChild(div);
				
				var adiv = document.getElementsByTagName("span");
				var sumHeight = 0;
				for(var i=0;i<adiv.length;i++){
					sumHeight += adiv[i].offsetHeight + 12
				}
				
				ocont.scrollTop = sumHeight;
				
				omsg.value = "";
				
				omsg.blur()
				
			}else{
				alert("不允许发送空消息")
			}
		}
		
	</script>
</html>

扩展:表格的及时编辑(有基础的尝试)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<table border="1" cellspacing="0" align="center" width="700" id="tab">
			<tr>
				<th>学号</th>
				<th>姓名</th>
				<th>成绩</th>
				<th>备注</th>
			</tr>
			<tr>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
			</tr>
			<tr>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
			</tr>
			<tr>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
			</tr>
			<tr>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
				<td>Data</td>
			</tr>
		</table>
	</body>
	<script type="text/javascript">
//		事件委托
//		var otab = document.getElementById("tab");
//		otab.addEventListener("click",function(eve){
//			var e = eve || window.event;
//			var target = e.target || e.srcElement;
//			
//			if(target.nodeName == "TD"){
//				var ipt = document.createElement("input");
//				ipt.value = target.innerHTML;
//				target.innerHTML = "";
//				target.appendChild(ipt)
//				
//				ipt.focus()
//				
//				ipt.onblur = function(){
//					target.innerHTML = ipt.value;
//				}
//			}
//		})
		
		
//		直接绑定(注意事件的冒泡)
		var atd = document.querySelectorAll("td")
		for(var i=0;i<atd.length;i++){
			atd[i].onclick = function(){
				var ipt = document.createElement("input");
				ipt.value = this.innerHTML;
				this.innerHTML = "";
				this.appendChild(ipt);
				
				ipt.focus()
				
				ipt.onclick = function(eve){
					var e = eve || window.event;
					e.stopPropagation()
				}
				
			}
		}
		
	</script>
</html>

/td>



// 直接绑定(注意事件的冒泡)
var atd = document.querySelectorAll(“td”)
for(var i=0;i<atd.length;i++){
atd[i].onclick = function(){
var ipt = document.createElement(“input”);
ipt.value = this.innerHTML;
this.innerHTML = “”;
this.appendChild(ipt);

			ipt.focus()
			
			ipt.onclick = function(eve){
				var e = eve || window.event;
				e.stopPropagation()
			}
			
		}
	}
	
</script>
```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值