【问题标题】:How can I write a non-clickable link that runs a javascript function upon click?如何编写一个在点击时运行 javascript 函数的不可点击链接?
【发布时间】:2013-07-14 07:22:30
【问题描述】:

我知道这个问题之前已经回答过,这里:javascript:void(0) or onclick="return false" for <a> - which is better?

但是,该解决方案对我不起作用。

这是适用的代码:

HTML:

<a id="Skip">Skip</a>

Javascript:

   var Skip = document.getElementById("Skip");
   Skip.addEventListener('click', reloadPage(), true);

   function reloadPage() {
        window.location.href = "play.php";
    }

当我点击“跳过”时,什么也没有发生。我想保留 window.location.href 的重新加载方法,因为我想向其中添加 $_GET 变量。

【问题讨论】:

  • href="#" 并使用 return false 停止将 # 添加到浏览器中的 url。
  • 在Javascript中,需要注意function()或function

标签: javascript html


【解决方案1】:
Skip.addEventListener('click', reloadPage(), true);
//                                       ^^-------------------

应该是:

Skip.addEventListener('click', reloadPage, true);

您希望回调是 reloadPage 而不是 reloadPage 返回的。

【讨论】:

  • 这仍然没有任何作用。这是一个带有测试代码的 jsFiddle。 jsfiddle.net/m2B2M/1
  • JSFiddle 无法正常工作,因为您有语法错误 - getElementByID 而不是 getElementById。检查一下 - 它正在工作。它不会重定向到google.com,因为这违反了同源策略,但我向您发出警报,向您显示正在调用的代码。 jsfiddle.net/m2B2M/3 单击它会发出警报,如果您观看控制台,您会收到类似“拒绝在框架中显示 'google.com' 的错误,因为它将 'X-Frame-Options' 设置为 'SAMEORIGIN'。” (在 Chrome 上),但它应该适合你。
  • 好的。这个答案有几个修复(我不知道每个 的处理方式不同)修复了它!谢谢。
【解决方案2】:

基本上你已经将函数指针传递给 addEventListener。因此,当点击发生时,它会调用该方法。你不想调用什么都不返回的方法 coz

例如:

Skip. addEventListener('click', reloadPage, true);

你也可以像你写的那样做,但前提是你的方法返回另一个函数

例如

Skip. addEventListener('click', reloadPage(), true);
function reloadPage() {
     return function(){
        // do something interesting.
     }
}

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 2014-05-12
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2011-02-01
    • 2011-12-01
    • 1970-01-01
    相关资源
    最近更新 更多