美文网首页
JavaScript事件

JavaScript事件

作者: 挥剑斩浮云 | 来源:发表于2018-03-12 19:08 被阅读0次

一、JavaScript鼠标事件

JavaScript鼠标事件
  • 通常,事件处理器的命名原则是,在事件名称前加上前缀on。例如,对于click事件,其处理器名为onclick。对于事件名称,也是很好记忆的,顾名思义即可
鼠标单击事件
  • 单击事件可谓JavaScript中最常用的事件了,例如点击某个按钮弹出一个提示框。这里大家一定要注意一点,单击事件并不是只有按钮才有,任何元素我们都可以为它添加单击事件!
<div id="btn">调试代码</div>
<script type="text/javascript"> 
    var e = document.getElementById("btn");
    e.onclick = function () { 
        alert("玩我么?");
    }
</script>
鼠标移入和移出事件
  • 其实, onmouseover和onmouseout这2个事件其实是好基友关系,平常都形影不离。这2个事件都是共同使用来分别控制鼠标“移入”和“移出”2种状态的
<h1 id="lvye">绿叶学习网</h1>
<script type="text/javascript">
    var e = document.getElementById("lvye");
    e.onmouseover = function () {
        this.style.color = "red";
        this.style.borderColor="red"
    }
    e.onmouseout = function () {
        this.style.color = "black";
        this.style.borderColor = "black"
    }
</script>
分析:this.style.color = "black";
在这里this指向的是e元素节点,也就是说这句代码等价于:
e.style.color = "black";
鼠标按下和松开事件
  • 在JavaScript中,鼠标的按下和松开事件分别是onmousedown和onmouseup。又一对好基友闪亮登场
<div id="main">
    <h1 id="lvye">绿叶学习网</h1>
    <hr />
    <input id="btn" type="button" value="button" />
</div>
<script type="text/javascript">
    var btn = document.getElementById("btn");
    var e = document.getElementById("lvye");
    btn.onmousedown = function () {
        e.style.color = "red";
    }
    btn.onmouseup = function () {
        e.style.color = "black";
    }
</script>

二、JavaScript键盘事件

  • 在JavaScript中,常用的键盘事件有3种:
    (1)onkeypress事件;
    (2)onkeydown事件;
    (3)onkeyup事件;
  • JavaScript事件通过以下3个事件来捕获键盘事件:onkeydown、onkeypress与onkeyup。这三个事件的执行顺序如下:onkeydown → onkeypress → onkeyup。
onkeypress事件
  • 在JavaScript中,onkeypress事件是在键盘上的某个键被按下到松开整个过程中触发的事件
<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <script type="text/javascript">
        function refresh() {
            //判断是否按下R键
            if (window.event.keyCode == 82) {
                location.reload();    //刷新页面
            }
        }
        //调用函数
        document.onkeypress = refresh;
    </script>
</head>
<body>
    <div>欢迎来到绿叶学习网!</div>
</body>
</html>
  • 其中“window.event.keyCode == 82”表示判断是否按R键(大写R)刷新页面。当我们按下R键,会发现页面被刷新了
onkeydown事件
  • onkeydown跟onkeypress非常相似,也是在键盘的按键被按下时触发。但是这2个事件有一下2大区别:
    (1)onkeypress事件只在按下键盘的任一“字符键”(如A~Z、数字键)时触发,单独按下“功能键”(如F1 ~ F12、Ctrl键、Shift键、Alt键等)不会触发;而onkeydown无论是按下“字符键”还是“功能键”都会触发;
    (2)按下“字符键”会同时触发onkeydown和onkeypress这2个事件,但是这2个事件有一定顺序:onkeydown>onkeypress;

onkeyup事件

  • 在JavaScript中,onkeyup事件是在键盘的某个键被按下之后松开的一瞬间触发的事件。
  • onkeyup事件在实际开发也常用到,比如在登录注册时,很多文本框都是在用户输入的同时判断是否符合要求
<input id="txt" type="text"/>
<div>字符串长度为:<span id="num">0</span></div>
<script type="text/javascript">
    //获取DOM元素节点
    var e = document.getElementById("txt");
    var n = document.getElementById("num");
    //定义文本框的onkeyup事件
    e.onkeyup = function () {
        var str = e.value.toString();
        n.innerHTML = str.length;
    }
</script>
  • 这里实现了用户输入字符串的同时,JavaScript会自动计算字符串的长度。原理是这样:在输入字符串的时候我们需要点击键盘按钮,每输入一个字符我们都会触发onkeyup事件,因此我们可以使用onkeyup事件来统计

三、JavaScript表单事件

  • 在JavaScript中,常用的表单事件有4种:
    (1)onfocus事件;
    (2)onblur事件;
    (3)onchange事件;
    (4)onselect事件;
onfocus和onblur事件
  • onfocus和onblur这2个事件往往都是配合使用。例如。在用户在文本框输入信息时,将光标放在文本框中,文本框会获取焦点。当文本框失去光标时,文本框失去焦点
  • onfocus表示获取焦点触发的事件,onblur表示失去焦点触发的事件
  • 具有获得焦点和失去焦点事件的元素有3个:
    (1)单行文本框text;
    (2)多行文本框textarea;
    (3)下拉列表select;
  • 在这个例子中,当文本框获取焦点时,文本框提示文字就会消失;当文本框失去焦点后,会判断是否已经输入字符串,如果没有的话,文本框提示文字会重新出现
onchange事件
  • 在JavaScript中,当用户在单行文本框text和多行文本框textarea输入文本时,由于文本框内字符串的改变将会触发onchange事件。此外,在下拉列表select中一个选项的状态改变后也会触发onchange事件。
  • 具有获得onchange事件的元素有3个:
    (1)单行文本框text;
    (2)多行文本框textarea;
    (3)下拉列表select;
<textarea id="txt" rows="5" cols="20"></textarea><br />
输入字符长度为:<span id="num"></span>
<script type="text/javascript">
    var e = document.getElementById("txt");
    var n = document.getElementById("num");
    e.onchange = function () {
        var len = e.value.length;
        n.innerText = len;
    }
</script>
  • 当我们在文本框输入字符,然后让文本框失去焦点,即可看到统计字符串的长度值
onselect事件
  • 在JavaScript中,当用户选中单行文本框text或多行文本框textarea的文本时,会触发onselect事件。onselect事件的具体过程是从鼠标按键被按下,到鼠标开始移动并选中内容的过程。这个过程并不包括鼠标键的放开
  • 下拉列表列表项的选中触发的事件是onchange而不是onselect
<input id="txt1" type="text" value="欢迎来到绿叶学习网学习JavaScript入门教程" />
<br />
<textarea id="txt2" cols="20" rows="5">欢迎来到绿叶学习网学习JavaScript入门教程</textarea>
<script type="text/javascript">
document.getElementById("txt1").onselect = function() {
    alert("你选中了单行文本框中的内容");
}
document.getElementById("txt2").onselect = function() {
    alert("你选中了多行文本框中的内容");
}
</script>

四、JavaScript编辑事件

  • 在JavaScript中,常见的编辑事件有3种:
    (1)复制事件oncopy;
    (2)剪切事件oncut;
    (3)粘贴事件onpaste;
复制事件
  • 在JavaScript中,在网页中复制内容时会触发复制事件oncopy。我们可以通过oncopy事件来禁止用户复制网页内容
  • 此外,与oncopy配对的还有一个onbeforecopy,表示在复制内容之前触发的事件。也就是在时间上,onbeforecopy比oncopy早
<div>绿叶学习网成立于2015年4月1日,是一个富有活力的技术学习网站。绿叶学习网为广大网络工作者(网页开发人员、站长等)提供各种精品教程以及最精华资料。</div>
<script type="text/javascript">
document.body.oncopy = function() {
    alert("版权所有,禁止复制!");
    return false; //返回false,表示屏蔽复制功能
}
</script>
  • 上述方法不能真正做到完全屏蔽,因为我们可以到浏览器中设置“禁用JavaScript”,这时使用JavaScript实现屏蔽复制就无效了。进一步扩展,使用这种屏蔽方式也极大影响了用户体验,大家在实际开发的时候如果不想你的网站成为鸟不拉屎的地方的话,还是少点用
剪切事件
  • 在JavaScript中,当网页文本框等中选中的内容被剪切时会触发剪切事件oncut。
  • 此外,与oncut配对的还有一个onbeforecut,表示在复制内容之前触发的事件。也就是在时间上,onbeforecut比oncut早
<textarea id="txt" cols="20" rows="5">绿叶学习网成立于2015年4月1日,是一个富有活力的技术学习网站。</textarea>
<script type="text/javascript">
var e = document.getElementById("txt");
e.oncut = function() {
    alert("禁止剪切文本框内容!");
    return false;
}
</script>
粘贴事件
  • 在JavaScript中,当我们往文本框等中粘贴内容时会触发粘贴事件onpaste。
  • 此外,与oncopy配对的还有一个onbeforepaste,表示在复制内容之前触发的事件。也就是在时间上,onbeforepaste 比onpaste早
<textarea id="txt" cols="20" rows="5"></textarea>
<script type="text/javascript">
    var e = document.getElementById("txt");
    e.onbeforepaste = function () {
        window.clipboardData.setData("text","");  //清空剪贴板
    }
</script>

五、JavaScript页面相关事件

window.通用事件名 = 要执行的JavaScript代码;
  • 在JavaScript中,常用的页面相关事件共有3种:
    (1)onload(加载事件);
    (2)onresize(页面大小事件);
    (3)onerror(出错事件);
onload事件
  • onload事件表示在文档加载完毕再执行的事件
window.onload=function(){
    ……
}
<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <script type="text/javascript">
        var e = document.getElementById("btn");
        e.onclick = function () {
            alert("JavaScript");
        }
    </script>
</head>
<body>
    <input id="btn" type="button" value="提交" />
</body>
</html>
  • 在CSS入门教程中的HTML文档流这一节我们知道,HTML文档是从上到下解析的。
  • 当我们点击“提交”按钮的时候,浏览器会报错,这是因为默认情况下浏览器对一个页面是从上到下进行解析的,当浏览器解析到“var e = document.getElementById("btn");”就会感觉很疑惑,怎么半路杀出个程咬金呢?然后顿时崩溃了,(>_<)
  • 正确的JavaScript实现代码应该如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <script type="text/javascript">
        window.onload = function () {
            var e = document.getElementById("btn");
            e.onclick = function () {
                alert("JavaScript");
            }
        }
    </script>
</head>
<body>
    <div id="main">
        <input id="btn" type="button" value="提交" />
    </div>
</body>
</html>
  • 浏览器从上到下解析到window.onload时,就会先不解析window.onload里面的代码,而是继续往下解析,直到把整个HTML文档解析完成再去解析window.onload内部的代码。这时不需要程咬金自己报号,人家都知道他来了
  • 还有人就问了,像下面JavaScript这种函数为什么就不需要加window.onload都正确呢?
<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <script type="text/javascript">
        function change() {
            var e = document.getElementById("lvye");
            e.style.color = "red";
            e.style.border = "1px solid gray";
        }
    </script>
</head>
<body>
    <h1 id="lvye">绿叶学习网</h1>
    <input type="button" value="改变样式" onclick="change()"/>
</body>
</html>
  • 我们知道函数必须调用才会生效,函数的定义本身不会自己执行。虽然浏览器从上到下解析页面代码,但是碰到函数的定义,它不会立刻解析。假如浏览器立刻解析的话,函数岂不是自动执行了,那这还是函数么?
  • 当文档载入时产生就会产生onload事件,onload事件一个很重要的作用就是在首次载入文档时检测cookie的值,并用一个变量为其赋值,使它可以被源代码使用
onresize事件
  • 在JavaScript中,对于页面大小改变的事件我们用的是onresize。这个事件常用于固定浏览器的大小
<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <script type="text/javascript">
        window.onresize = function () {
            alert("窗口大小被改变");
        }
    </script>
</head>
<body>
</body>
</html>
onerror事件
  • 在JavaScript中,当文档或图像加载过程中发生错误时就会触发onerror事件。onerror事件只有在IE浏览器下才有效
<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
</head>
<body>
    <img src="logo.jpg" onerror="alert('图片没有加载成功!')"/>
</body>
</html>
  • 由于根据src找不到图片,图片加载失败,因此触发了onerror事件。

相关文章

网友评论

      本文标题:JavaScript事件

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