javascript - return false后a标签还是会跳转?
大家讲道理
大家讲道理 2017-04-11 12:58:49
[JavaScript讨论组]

    

return false后a标签还是会跳转,因为这句:description.firstChild.nodeValue = text; 把它注释了就不会跳转,或者换成:description.innerHTML = text;也不会跳转,这是什么情况呢?

还有一个问题是a标签的this默认返回的是href属性的值,比如上面的代码中,可以直接变成这样:image.setAttribute("src",element);,不用写成image.setAttribute("src",element.href);element.getAttribute("href");,是因为a标签本来就是必须带href属性(正常情况下)所以就自动返回这个值吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
天蓬老师

这个问题很有趣,初看觉得匪夷所思。马上 COPY 了代码尝试了一下:

1.为什么 description.firstChild.nodeValue = text 会导致链接跳转?

因为 description.firstChildnull,也就是一个空对象。你修改 null 的属性有什么作用?只会导致代码抛出异常,不继续向下执行了。既然 JS 不继续执行了,那么 return false 就是失效的,也就是压根没有 return false。所以浏览器接着做了点击 a 标签的默认行为,也就是跳转到 href 的链接。

为什么 description.innerHTML = text; 没问题?因为这句 JS 不会导致异常,会正常执行下去,直到 return false

2.为什么 setAttribute 时,element 等价于 element.getAttribute("href")

如果你把 element.toString() 的结果打印出来就知道了,就是 href 的值。所以 setAttribute 的第二个参数会进行一次 toString 处理,确保值会是一个字符串对象,然后再赋值给相应属性。

再次不得不说,你这个问题提得很有价值,我自己也学到了。

怪我咯

开发前端请时时刻刻打开你的F12

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号