之前不让a链接跳转的时候都是直接

<a href="javacsript:;"></a>

一直以为就是这样写,后来重读dom编程时,发现这是违反平稳退化规则的,一般来说,我们最好在href里面写真实的地址,这样对搜索引擎也非常友好,那么如何阻止默认动作呢?

我以为一个return false 就搞定问题了,结果发现只有在行内的onclick里面写的时候才起作用,比如这样,就是ok的

<a href="images/5.jpg" onclick="return false;">aaa</a>

我习惯行内尽量不写东西,所以直接写到函数里面,return false 就不起作用了,这个时候想到了阻止冒泡,阻止默认事件这个东东了,于是,老办法直接百度(我自己从来没记过那几个单词,囧),然后 结果就是

event.stopPropagation()方法
这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开,
event.preventDefault()方法
这是阻止默认事件的方法,调用此方法是,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素;
return false ;
这个方法比较暴力,他会同事阻止事件冒泡也会阻止默认事件;写上此代码,连接不会被打开,事件也不会传递到上一层的父元素;可以理解为return false就等于同时调用了event.stopPropagation()和event.preventDefault()

我是为了不跳转,所以直接用event.preventDefault()就行了

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>图片库</title>
</head>
<body>
    <ul>
        <li><a href="images/1.jpg">图片一</a></li>
        <li><a href="images/2.jpg">图片2</a></li>
        <li><a href="images/3.jpg">图片3</a></li>
        <li><a href="images/4.jpg">图片4</a></li>
        <li><a href="images/5.jpg">图片5</a></li>
    </ul>
    <img id="img" src="images/6.png" alt="">
    <script>
        'use strict';
        window.onload=function(){
            function showPic(params) {
                var pic = params.getAttribute('href');
                var elem = document.getElementById('img');
                elem.setAttribute('src',pic);
            }
            for (var i = 0; i < document.getElementsByTagName('a').length; i++) {
                document.getElementsByTagName('a')[i].addEventListener('click',function (event) {
                    showPic(this);
                    event.preventDefault()
                });
            }
        }
        
        
    </script>
</body>
</html>

这是我跟着dom编程写的图片库的代码

 

版权声明:本文为5811yc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/5811yc/p/9295461.html