Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Href调用JS函数_Javascript - Fatal编程技术网

Javascript 从Href调用JS函数

Javascript 从Href调用JS函数,javascript,Javascript,我很好奇在HTML中用href链接调用JS函数的最佳方式是什么。我不使用库,我看到很多关于使用事件处理程序的jquery的介绍 但是,如果我没有使用库,我还能这样做吗?还是必须使用点击式呼叫?试试这个 函数测试(){alert(“”);} 基本上有两种方法: <a href="javascript:someFunction(...)">...</a> 及 (在这种情况下,someFunction必须返回false) 我更喜欢后者。您可以将事件处理程序与普通ja

我很好奇在HTML中用href链接调用JS函数的最佳方式是什么。我不使用库,我看到很多关于使用事件处理程序的jquery的介绍

但是,如果我没有使用库,我还能这样做吗?还是必须使用点击式呼叫?

试试这个


函数测试(){alert(“”);}

基本上有两种方法:

<a href="javascript:someFunction(...)">...</a>


(在这种情况下,someFunction必须返回false)


我更喜欢后者。

您可以将事件处理程序与普通javascript一起使用。不需要框架。以下是我使用的跨浏览器功能:

// add event cross browser
function addEvent(elem, event, fn) {
    if (elem.addEventListener) {
        elem.addEventListener(event, fn, false);
    } else {
        elem.attachEvent("on" + event, function() {
            // set the this pointer same as addEventListener when fn is called
            return(fn.call(elem, window.event));   
        });
    }
}
使用它的示例如下:

var link = document.getElementById("myLink").
addEvent(link, "click", function(e) {
    // process the click on the link here

    // prevent default action of the click
    if (e.preventDefault) {
        e.preventDefault();      // normal browsers
    } else {
        e.returnValue = false;   // older versions of IE (yuck)
    }
});
HTML:

如果不希望发生链接的默认单击,则需要防止事件处理程序的默认行为,如下所示:

var link = document.getElementById("myLink").
addEvent(link, "click", function(e) {
    // process the click on the link here

    // prevent default action of the click
    if (e.preventDefault) {
        e.preventDefault();      // normal browsers
    } else {
        e.returnValue = false;   // older versions of IE (yuck)
    }
});

只要加入jQuery的行列,你就会在你的余生中感谢我。我最初的灵感来自于这样的嘲弄:-DThats lazy man's talk:PI是那种喜欢自己做任何事情的人,但老实说,一旦你尝试jQuery,你就再也回不去了。实际上,jQuery有一个函数,可以封装需要自己编写的3000行代码。做吧……jQuery:为web开发人员准备的香烟。我收回这句话。香烟是网络开发人员的香烟。为什么有些人会选择一种而不是另一种呢?在后一种情况下,浏览器在鼠标悬停的状态栏底部不会显示“javascript:function”(在我看来,这很难看)。我会尝试一下,看看是否可以让它工作!你是如何为这样一个函数构造a href的?那么我是如何构造的?@Dave-我已经在我的答案中添加了更多的例子。啊,谢谢,尽管你在脚本的最后一部分“默认点击链接”时有点让我不知所措?你这是什么意思?@Dave-当用户单击链接时,如果默认行为未被阻止,浏览器将处理href并尝试转到该链接。即使href=“#””,也会导致页面滚动更改。要告诉浏览器您已经处理了单击,并且您不希望它在单击后做任何进一步的操作,您必须使用我显示的代码阻止默认行为。
var link = document.getElementById("myLink").
addEvent(link, "click", function(e) {
    // process the click on the link here
});
var link = document.getElementById("myLink").
addEvent(link, "click", function(e) {
    // process the click on the link here

    // prevent default action of the click
    if (e.preventDefault) {
        e.preventDefault();      // normal browsers
    } else {
        e.returnValue = false;   // older versions of IE (yuck)
    }
});