统计
  • 建站日期:2021-03-10
  • 文章总数:518 篇
  • 评论总数:151 条
  • 分类总数:32 个
  • 最后更新:4月20日
文章 未分类

JavaScript高级事件,dom 事件绑定等

梦幻书涯
首页 未分类 正文

cbs[i].checked=document.getElementById("first").onclick=function(){}

等价于 this.onclick=function(){};

用java思想去考虑

 

 

 

 

 

# 今日内容:
 1. JavaScript:
  1. ECMAScript:
  2. BOM:
  3. DOM:
   1. 事件

## DOM简单学习:为了满足案例要求
 * 功能:控制html文档的内容
 * 获取页面标签(元素)对象:Element
  * document.getElementById("id值"):通过元素的id获取元素对象

 * 操作Element对象:
  1. 修改属性值:
   1. 明确获取的对象是哪一个?
   2. 查看API文档,找其中有哪些属性可以设置
  2. 修改标签体内容:
   * 属性:innerHTML
   1. 获取元素对象
   2. 使用innerHTML属性修改标签体内容

## 事件简单学习
 * 功能: 某些组件被执行了某些操作后,触发某些代码的执行。
  * 造句:  xxx被xxx,我就xxx
   * 我方水晶被摧毁后,我就责备对友。
   * 敌方水晶被摧毁后,我就夸奖自己。

 * 如何绑定事件
  1. 直接在html标签上,指定事件的属性(操作),属性值就是js代码
   1. 事件:onclick--- 单击事件

  2. 通过js获取元素对象,指定事件属性,设置一个函数

  * 代码:
   <body>
    <img id="light" src="img/off.gif"  onclick="fun();">
    <img id="light2" src="img/off.gif">
    
    <script>
        function fun(){
            alert('我被点了');
            alert('我又被点了');
        }
    
        function fun2(){
            alert('咋老点我?');
        }
    
        //1.获取light2对象
        var light2 = document.getElementById("light2");
        //2.绑定事件
        light2.onclick = fun2;
    
    
    </script>
   </body>
 
 * 案例1:电灯开关
  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <title>电灯开关</title>
  
  </head>
  <body>
  
  <img id="light" src="img/off.gif">
  
  <script>
      /*
          分析:
              1.获取图片对象
              2.绑定单击事件
              3.每次点击切换图片
                  * 规则:
                      * 如果灯是开的 on,切换图片为 off
                      * 如果灯是关的 off,切换图片为 on
                  * 使用标记flag来完成
  
       */
  
      //1.获取图片对象
      var light = document.getElementById("light");
  
      var flag = false;//代表灯是灭的。 off图片
  
      //2.绑定单击事件
      light.onclick = function(){
          if(flag){//判断如果灯是开的,则灭掉
              light.src = "img/off.gif";
              flag = false;
  
          }else{
              //如果灯是灭的,则打开
  
              light.src = "img/on.gif";
              flag = true;
          }
  
  
      }
     
  </script>
  </body>
  </html>


# BOM:
 1. 概念:Browser Object Model 浏览器对象模型
  * 将浏览器的各个组成部分封装成对象。

 2. 组成:
  * Window:窗口对象
  * Navigator:浏览器对象
  * Screen:显示器屏幕对象
  * History:历史记录对象
  * Location:地址栏对象

 3. Window:窗口对象
     1. 创建
     2. 方法
          1. 与弹出框有关的方法:
             alert() 显示带有一段消息和一个确认按钮的警告框。
             confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
                 * 如果用户点击确定按钮,则方法返回true
                 * 如果用户点击取消按钮,则方法返回false
             prompt() 显示可提示用户输入的对话框。
                 * 返回值:获取用户输入的值
          2. 与打开关闭有关的方法:
             close() 关闭浏览器窗口。
                 * 谁调用我 ,我关谁
             open() 打开一个新的浏览器窗口
                 * 返回新的Window对象
          3. 与定时器有关的方式
             setTimeout() 在指定的毫秒数后调用函数或计算表达式。
                 * 参数:
                     1. js代码或者方法对象
                     2. 毫秒值
                 * 返回值:唯一标识,用于取消定时器
             clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
 
             setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
             clearInterval() 取消由 setInterval() 设置的 timeout。

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Window对象</title>

</head>
<body>
    <input id="openBtn" type="button" value="打开窗口">
    <input id="closeBtn" type="button" value="关闭窗口">

    <script>
        /*
            Window:窗口对象
                1. 创建
                2. 方法
                     1. 与弹出框有关的方法:
                        alert() 显示带有一段消息和一个确认按钮的警告框。
                        confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
                            * 如果用户点击确定按钮,则方法返回true
                            * 如果用户点击取消按钮,则方法返回false
                        prompt() 显示可提示用户输入的对话框。
                            * 返回值:获取用户输入的值
                     2. 与打开关闭有关的方法:
                        close() 关闭浏览器窗口。
                            * 谁调用我 ,我关谁
                        open() 打开一个新的浏览器窗口
                            * 返回新的Window对象
                     3. 与定时器有关的方式
                        setTimeout() 在指定的毫秒数后调用函数或计算表达式。
                            * 参数:
                                1. js代码或者方法对象
                                2. 毫秒值
                            * 返回值:唯一标识,用于取消定时器
                        clearTimeout() 取消由 setTimeout() 方法设置的 timeout。

                        setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
                        clearInterval() 取消由 setInterval() 设置的 timeout。

                3. 属性:
                    1. 获取其他BOM对象:
                        history
                        location
                        Navigator
                        Screen:
                    2. 获取DOM对象
                        document
                4. 特点
                    * Window对象不需要创建可以直接使用 window使用。 window.方法名();
                    * window引用可以省略。  方法名();

         */

        /*alert("hello window");
        window.alert("hello a")*/
        /*
         //确认框
         var flag = confirm("您确定要退出吗?");

         if(flag){
             //退出操作

             alert("欢迎再次光临!");
         }else{
             //提示:手别抖...
             alert("手别抖...");
         }*/

        /*

               //输入框
               var result =  prompt("请输入用户名");
               alert(result);
        */
       /* //打开新窗口
        var openBtn = document.getElementById("openBtn");
        var newWindow;
        openBtn.onclick = function(){
            //打开新窗口
            newWindow = open("https://www.baidu.com");
        }

        //关闭新窗口
        var closeBtn = document.getElementById("closeBtn");
        closeBtn.onclick = function(){
           // 关闭新窗口
            newWindow.close();
        }*/

       //一次性定时器
       //setTimeout("fun();",2000);
        //var id = setTimeout(fun,2000);
        //clearTimeout(id);
       /* function fun(){
            alert('boom~~');
        }

        //循环定时器
        var id = setInterval(fun,2000);
        clearInterval(id);
*/


      /* //获取history
       var h1 =  window.history;
       var h2 = history;

       alert(h1);
       alert(h2);
*/
        var openBtn = window.document.getElementById("openBtn");
        alert(openBtn);
        /*document.getElementById("");*/
    </script>
</body>
</html>


 
     3. 属性:
         1. 获取其他BOM对象:
             history
             location
             Navigator
             Screen:
         2. 获取DOM对象
             document
     4. 特点
         * Window对象不需要创建可以直接使用 window使用。 window.方法名();
         * window引用可以省略。  方法名();


 4. Location:地址栏对象
  1. 创建(获取):
   1. window.location
   2. location

  2. 方法:
   * reload() 重新加载当前文档。刷新
  3. 属性
   * href 设置或返回完整的 URL。

 

 

 

 


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Location对象</title>

</head>
<body>
    <input type="button" id="btn" value="刷新">

    <input type="button" id="goItcast" value="去传智">
    <script>
        //reload方法,定义一个按钮,点击按钮,刷新当前页面
        //1.获取按钮
        var btn = document.getElementById("btn");
        //2.绑定单击事件
        btn.onclick = function(){
            //3.刷新页面
            location.reload();
        }


        //获取href
        var href = location.href ;
        //alert(href);
        //点击按钮,去访问www.itcast.cn官网
        //1.获取按钮
        var goItcast = document.getElementById("goItcast");
        //2.绑定单击事件
        goItcast.onclick = function(){
            //3.去访问www.itcast.cn官网
            location.href = "https://www.baidu.com";
        }

    </script>
</body>
</html>

 

 

 

 


 5. History:历史记录对象
        1. 创建(获取):
            1. window.history
            2. history

        2. 方法:
            * back() 加载 history 列表中的前一个 URL。
            * forward() 加载 history 列表中的下一个 URL。
            * go(参数) 加载 history 列表中的某个具体页面。
                * 参数:
                    * 正数:前进几个历史记录
                    * 负数:后退几个历史记录
        3. 属性:
            * length 返回当前窗口历史列表中的 URL 数量。

 

 

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>History对象</title>
</head>
<body>

    <input type="button" id="btn" value="获取历史记录个数">
    <a href="09_History对象2.html">09页面</a>
    <input type="button" id="forward" value="前进">
<script>
    /*
        History:历史记录对象
            1. 创建(获取):
                1. window.history
                2. history

            2. 方法:
                * back() 加载 history 列表中的前一个 URL。
                * forward() 加载 history 列表中的下一个 URL。
                * go(参数)     加载 history 列表中的某个具体页面。
                    * 参数:
                        * 正数:前进几个历史记录
                        * 负数:后退几个历史记录
            3. 属性:
                * length 返回当前窗口历史列表中的 URL 数量。


     */
    //1.获取按钮
    var btn = document.getElementById("btn");
    //2.绑定单机事件
    btn.onclick = function(){
        //3.获取当前窗口历史记录个数
        var length = history.length;
        alert(length);
    }


    //1.获取按钮
    var forward = document.getElementById("forward");
    //2.绑定单机事件
    forward.onclick = function(){
       //前进
       // history.forward();
        history.go(1);
    }


</script>

</body>
</html>

 

 

 

<script type="text/javascript">

window.onload=function(){

/* window.status="页面加载完成";
alert("页面加载完成");

document.getElementById("username").onblur=function(){

alert("失去焦点");

}; */


/*
document.getElementById("username").onmouseover=function()
{
 document.getElementById("username").value="鼠标移到我这里来了";

}
document.getElementById("username").onmouseout=function()
{
 
document.getElementById("username").value="鼠标从username这里移开了";

}

document.getElementById("username").onmousedown=function()
{
 
document.getElementById("username").value="鼠标在username点击了";

}

*/

 

/*
document.getElementById("username").onkeydown=function(event)
{
 var id=event.keyCode;
//alert(id);

document.getElementById("password").value+=String.fromCharCode(id);
输入:a它就转成A;而不是数字65
}

*/
/*
document.getElementById("username").onkeydown=function(event)
{
 
 var id=event.keyCode;
alert(id);

document.getElementById("password").value+=String.fromCharCode(id);

/*输入:a它就转成A;而不是数字65


var ascll='a'.charCodeAt();
alert(ascll);
}
*/

 

/*
document.getElementById("city").onchange=function(event){

alert("select选项已经改变");

}

*/

// 2. onkeyup  某个键盘按键被松开。

/*
document.getElementById("username").onkeyup=function(event){
var id=event.keyCode;
var jianpan=String.fromCharCode(id);
alert("该键"+jianpan+"已经松开");

}
*/
/*

返回的值是true则成功提交

返回的值是false则阻断提交(提交失败)
document.getElementById("tijiao").onsubmit=function(event){
var flag=true;
return flag;


}
*/
/*

*/

function fun(){

var flag="123";
//alert(flag);

return false;

}
}

 

</script>
</head>

<body>
<form action="#" id="tijiao" onclick="return fun();">
<!--return true代表成功提交-*******return false代表阻断提交-->


  <input type="text" id="username" value="" name="username">
   <input type="text" id="password" value="" name="password">

   <select id="city" name="xuanxiang">
   <option value="1">请选择你喜欢的额城市</option>
   <option value="2">------北京市-------</option>
   <option value="3">------上海市-------</option>
   <option value="4">------西安市-------</option>
   </select>
   <input type="submit" value="提交">
   </form>
 </body>

 

 

 

 

 

 

 

 

 

 

 

 * HTML DOM
  1. 标签体的设置和获取:innerHTML
  2. 使用html元素对象的属性
  3. 控制元素样式
   1. 使用元素的style属性来设置
    如:
      //修改样式方式1
           div1.style.border = "1px solid red";
           div1.style.width = "200px";
           //font-size--> fontSize
           div1.style.fontSize = "20px";
   2. 提前定义好类选择器的样式,通过元素的className属性来设置其class属性值。


## 事件监听机制:
 * 概念:某些组件被执行了某些操作后,触发某些代码的执行。 
  * 事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了
  * 事件源:组件。如: 按钮 文本输入框...
  * 监听器:代码。
  * 注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。


 

* 常见的事件:
  1. 点击事件:
   1. onclick:单击事件
   2. ondblclick:双击事件
  2. 焦点事件
   1. onblur:失去焦点
   2. onfocus:元素获得焦点。

  3. 加载事件:
   1. onload:一张页面或一幅图像完成加载。
   
   支持该事件的 HTML 标签:
            <body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>
            支持该事件的 JavaScript 对象:
            image, layer, window
  例子: 
<script type="text/javascript">

window.onload=function(){

window.status="页面加载完成";
alert("页面加载完成");

document.getElementById("username").onblur=function(){

alert("失去焦点");

};

 

}

 

</script>

  4. 鼠标事件:
   1. onmousedown 鼠标按钮被按下。
                       * 定义方法时,定义一个形参,接受event对象。
                    * event对象的button属性可以获取鼠标按钮键被点击了。
     
     

鼠标/键盘 事件对象

属性

属性 描述 DOM
altKey 返回当事件被触发时,"ALT" 是否被按下。 2
button 返回当事件被触发时,哪个鼠标按钮被点击。 2
clientX 返回当事件被触发时,鼠标指针的水平坐标。 2
clientY 返回当事件被触发时,鼠标指针的垂直坐标。 2
ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。 2
keyIdentifier 返回按键的标识符 3
keyLocation 返回按键在设备上的位置 3
metaKey 返回当事件被触发时,"meta" 键是否被按下。 2
relatedTarget 返回与事件的目标节点相关的节点。 2
screenX 返回当某个事件被触发时,鼠标指针的水平坐标。 2
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。 2
shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。 2

方法

方法 描述 W3C
initMouseEvent() 初始化鼠标事件对象的值 2
initKeyboardEvent() 初始化键盘事件对象的值


     
     
             /*  document.getElementById("username").onkeydown = function(event){
                // alert("鼠标点击了....");
               // alert(event.button);左键:0,中键:1,右键:2;
                if(event.keyCode == 13){

                     alert("event.keyCode");
            就可以看出键盘哪个键被按下,特别记住回车 enter键是13;

             是编码来的,例如按小写a,输出的65;


                    alert("提交表单");
                }

            }*/
   
   
   
   
   
   
   
   2. onmouseup 鼠标按键被松开。
   3. onmousemove 鼠标被移动。
   4. onmouseover 鼠标移到某元素之上。
   5. onmouseout 鼠标从某元素移开。
   
   
   <script type="text/javascript">

window.onload=function(){

/* window.status="页面加载完成";
alert("页面加载完成");

document.getElementById("username").onblur=function(){

alert("失去焦点");

}; */

document.getElementById("username").onmouseover=function()
{
 document.getElementById("username").value="鼠标移到我这里来了";

}
document.getElementById("username").onmouseout=function()
{
 
document.getElementById("username").value="鼠标从username这里移开了";

}

document.getElementById("username").onmousedown=function()
{
 
document.getElementById("username").value="鼠标在username点击了";

}

 

 

}

 

</script>
   
   
   
   
   
 <html>
<head>
<script type="text/javascript">
function whichButton(event)
{
var btnNum = event.button;
if (btnNum==2)
  {
  alert("您点击了鼠标右键!")
  }
else if(btnNum==0)
  {
  alert("您点击了鼠标左键!")
  }
else if(btnNum==1)
  {
  alert("您点击了鼠标中键!");
  }
else
  {
  alert("您点击了" + btnNum+ "号键,我不能确定它的名称。");
  }
}
</script>
</head>

<body onmousedown="whichButton(event)">
<p>请在文档中点击鼠标。一个消息框会提示出您点击了哪个鼠标按键。</p>
</body>

</html>

 

 


   
  5. 键盘事件:
   1. onkeydown 某个键盘按键被按下。 
   2. onkeyup  某个键盘按键被松开。
   3. onkeypress 某个键盘按键被按下并松开。

 

 

 

 

 

 

 

  6. 选择和改变
   1. onchange 域的内容被改变。
   2. onselect 文本被选中。

 

 

 

 

 7. 表单事件:

 


   1. onsubmit 确认按钮被点击。
   2. onreset 重置按钮被点击。

 

 

 

 

 

 

HTML DOM 事件

DOM: 指明使用的 DOM 属性级别。

鼠标事件

属性 描述 DOM
onclick 当用户点击某个对象时调用的事件句柄。 2
ondblclick 当用户双击某个对象时调用的事件句柄。 2
onmousedown 鼠标按钮被按下。 2
onmousemove 鼠标被移动。 2
onmouseover 鼠标移到某元素之上。 2
onmouseout 鼠标从某元素移开。 2
onmouseup 鼠标按键被松开。 2

键盘事件

属性 描述 DOM
onkeydown 某个键盘按键被按下。 2
onkeypress 某个键盘按键被按下并松开。 2
onkeyup 某个键盘按键被松开。 2

框架/对象(Frame/Object)事件

属性 描述 DOM
onabort 图像的加载被中断。 ( <object>) 2
onerror 在加载文档或图像时发生错误。 ( <object>, <body>和 <frameset>) ?
onload 一张页面或一幅图像完成加载。 2
onresize 窗口或框架被重新调整大小。 2
onscroll 当文档被滚动时发生的事件。 2
onunload 用户退出页面。 ( <body> 和 <frameset>) 2

表单事件

属性 描述 DOM
onblur 元素失去焦点 2
onchange 域的内容被改变。 ( <input>, <select>, 和 <textarea>) 2
onfocus 元素获得焦点。 ( <label>, <input>, <select>, textarea>, 和 <button>) 2
onreset 重置按钮被点击。 2
onselect 文本被选中。( <input> 和 <textarea>) 2
onsubmit 确认按钮被点击。 2

事件对象

常量

静态变量 描述 DOM
CAPTURING-PHASE 当前事件阶段为捕获阶段(3) 1
AT-TARGET 当前事件是目标阶段,在评估目标事件(1) 2
BUBBLING-PHASE 当前的事件为冒泡阶段 (2) 3

属性

属性 描述 DOM
bubbles 返回布尔值,指示事件是否是起泡事件类型。 2
cancelable 返回布尔值,指示事件是否可拥可取消的默认动作。 2
currentTarget 返回其事件监听器触发该事件的元素。 2
eventPhase 返回事件传播的当前阶段。 2
target 返回触发此事件的元素(事件的目标节点)。 2
timeStamp 返回事件生成的日期和时间。 2
type 返回当前 Event 对象表示的事件的名称。 2

方法

方法 描述 DOM
initEvent() 初始化新创建的 Event 对象的属性。 2
preventDefault() 通知浏览器不要执行与事件关联的默认动作。 2
stopPropagation() 不再派发事件。 2

目标事件对象

方法

方法 描述 DOM
addEventListener() 允许在目标事件中注册监听事件(IE8 = attachEvent()) 2
dispatchEvent() 允许发送事件到监听器上 (IE8 = fireEvent()) 2
removeEventListener() 运行一次注册在事件目标上的监听事件(IE8 = detachEvent()) 2

事件监听对象

方法

方法 描述 DOM
handleEvent() 把任意对象注册为事件处理程序 2

文档事件对象

方法

方法 描述 DOM
createEvent() ? 2

鼠标/键盘 事件对象

属性

属性 描述 DOM
altKey 返回当事件被触发时,"ALT" 是否被按下。 2
button 返回当事件被触发时,哪个鼠标按钮被点击。 2
clientX 返回当事件被触发时,鼠标指针的水平坐标。 2
clientY 返回当事件被触发时,鼠标指针的垂直坐标。 2
ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。 2
keyIdentifier 返回按键的标识符 3
keyLocation 返回按键在设备上的位置 3
metaKey 返回当事件被触发时,"meta" 键是否被按下。 2
relatedTarget 返回与事件的目标节点相关的节点。 2
screenX 返回当某个事件被触发时,鼠标指针的水平坐标。 2
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。 2
shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。 2

方法

方法 描述 W3C
initMouseEvent() 初始化鼠标事件对象的值 2
initKeyboardEvent() 初始化键盘事件对象的值

 

 

 

 

 

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

这篇文章最后更新于2019-7-28,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
javascript表格全选,反选,不选,样式控制等
« 上一篇
javaScript基础语法知识
下一篇 »

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。
Array

日历

热门文章