Rumah  >  Soal Jawab  >  teks badan

javascript - a标签的取消默认行为

<a href="http://www.baidu.com/" onclick="func()" target="_blank">123</a>

function func(){
    alert(123);
    return false;
}
上述代码仍然跳转到百度。为什么
<a href="http://www.baidu.com/" onclick="func();return false;" target="_blank">123</a>
就可以取消跳转的默认行为。写在函数里就不行?
PHPzPHPz2750 hari yang lalu1118

membalas semua(11)saya akan balas

  • 阿神

    阿神2017-04-10 15:37:03

    改成

    onclick="return func()"
    

    你的写法只是

    domObj.clickHandler = function() { func(); return undefined;}
    

    balas
    0
  • 高洛峰

    高洛峰2017-04-10 15:37:03

    你需要取消a的默认行为.func(e)

    e.preventDefault()
    

    balas
    0
  • 怪我咯

    怪我咯2017-04-10 15:37:03

    HTML 元素里面直接填写事件有关属性,属性值为 JavaScript 代码,即可在触发该事件的时候,执行属性值的内容。

    <a href="http://www.baidu.com/" onclick="func()" target="_blank">123</a>
    

    点击链接的时候,执行onclick里面的代码,注意是执行里面的代码,而不是把func当作事件处理程序,虽然func()返回了falseonclick里面的代码并没有return false,没有取消默认行为。

    balas
    0
  • 黄舟

    黄舟2017-04-10 15:37:03

    onclick后面的js如果不是函数名的话,会被包裹到一个匿名函数中进行调用。
    相当于

    obj.onclick= function() { func(); }
    

    你在这里面怎么返回false也无济于事啊。

    balas
    0
  • PHP中文网

    PHP中文网2017-04-10 15:37:03

    <a href="www.baidu.com" id="alink">点击了我</a>

    <script> window.onload=function(){ var link=document.getElementById("alink"); link.onclick=function(e){ alert("ok"); return false; //e.preventDefault();//这个也可以 } } </script>

    balas
    0
  • 阿神

    阿神2017-04-10 15:37:03

    非IE的用"e.preventDefault();",IE的用"window.event.returnValue = false;"或者使用return false也可以。

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:37:03

    onclick="fun()"即使fun() return false,返回值过来就是onclick="flase",因此就然并卵了。楼上的onclick="return fun()"是OK的,因为返回值过来就变成了onclick="return false"

    balas
    0
  • 阿神

    阿神2017-04-10 15:37:03

    你可以直接这样啊

    <a href="javascript:void(0)" onclick="check()">点击我</a>
    

    balas
    0
  • PHP中文网

    PHP中文网2017-04-10 15:37:03

    <a href="javascript:;" onclick="check()">点击我</a>
    

    balas
    0
  • 高洛峰

    高洛峰2017-04-10 15:37:03

    你首先知道怎么执行的
    自定义事件>默认事件>冒泡
    比如这里的点击事件,你还可以拆分鼠标移入,鼠标按下,鼠标弹起等等..这是需要考虑到具体情况的
    简单的说 他有一个事件event对象,而这个event实现一个接口then,从而实现链式调用event

    如果仅仅阻止默认 event.returnvalue=false;
    jq库有e.stopproxxxxx阻止冒泡

    ------------------fix----------------------
    其实上面所说的还是不准确的.可以去试试看异步编程 promise/A

    balas
    0
  • Batalbalas