关于平稳退化,之前存在的问题
之前不让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编程写的图片库的代码