Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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时识别锚定标记_Javascript_Javascript Events - Fatal编程技术网

Javascript 在调用href时识别锚定标记

Javascript 在调用href时识别锚定标记,javascript,javascript-events,Javascript,Javascript Events,如何在函数中识别锚标记href是否已调用该函数 在这种情况下,事件为null。因此event.target和event.src元素将无法工作 代码 HTML 那怎么办 <a href="SomeFunction(this);">Href works here</a> function SomeFunction(context) { var callingElement = context; } 函数SomeFunction(上下文){ var calli

如何在函数中识别锚标记href是否已调用该函数

在这种情况下,事件为null。因此event.target和event.src元素将无法工作

代码

HTML

那怎么办

<a href="SomeFunction(this);">Href works here</a>

function SomeFunction(context) {

    var callingElement = context;

}

函数SomeFunction(上下文){
var callingElement=上下文;
}
那怎么办

<a href="SomeFunction(this);">Href works here</a>

function SomeFunction(context) {

    var callingElement = context;

}

函数SomeFunction(上下文){
var callingElement=上下文;
}

据我所知,只有两种方法可以使用标准Javascript实现这一点。已经概述了第一种方法——将节点作为参数传递给函数。另一种方法是处理锚的
onclick
事件。这与前面的方法非常相似,即需要修改标记以将参数传递给函数。为此,您需要将标记更改为以下内容:

<a href="#" onclick="SomeFunction(event)">Href works here</a>

function SomeFunction(event) {
    var node = event.srcElement;
}

函数SomeFunction(事件){
var节点=event.src元素;
}
上面的代码将事件对象传递给函数,该函数将为您提供有关事件的各种有趣信息

如果您无法更改发送到浏览器的标记,您可能需要考虑使用诸如jQuery或其他Ajax库之类的东西来搜索和修改运行时节点的事件处理程序。在标记进入浏览器之前修改它显然是首选,但有时您没有选择


最后,如果您无法更改标记,并且不想在运行时修改DOM,那么您总是可以看到哪些Javascript引擎特定的功能可用。例如,您可能能够在支持它的引擎中使用
参数.caller
。我并不是说它会工作,但您可能想看看有什么可用。

据我所知,只有两种方法可以使用标准Javascript实现这一点。已经概述了第一种方法——将节点作为参数传递给函数。另一种方法是处理锚的
onclick
事件。这与前面的方法非常相似,即需要修改标记以将参数传递给函数。为此,您需要将标记更改为以下内容:

<a href="#" onclick="SomeFunction(event)">Href works here</a>

function SomeFunction(event) {
    var node = event.srcElement;
}

函数SomeFunction(事件){
var节点=event.src元素;
}
上面的代码将事件对象传递给函数,该函数将为您提供有关事件的各种有趣信息

如果您无法更改发送到浏览器的标记,您可能需要考虑使用诸如jQuery或其他Ajax库之类的东西来搜索和修改运行时节点的事件处理程序。在标记进入浏览器之前修改它显然是首选,但有时您没有选择


最后,如果您无法更改标记,并且不想在运行时修改DOM,那么您总是可以看到哪些Javascript引擎特定的功能可用。例如,您可能能够在支持它的引擎中使用
参数.caller
。我不是说它会工作,但你可能想看看有什么可用。

按照@alex的建议,你可以添加一个脚本在页面加载中运行,以将HREF更改为你想要的(添加“this”引用)

以以下脚本为例,这将更改id设置为SomeID或class设置为SomeClass的锚定标记的href值:

function changeLinks() {
    var all_links = document.getElementsByTagName("a");
    for (var i=0; i<all_links.length; i++){
        if (all_links[i].id == 'SomeID' || all_links[i].className == 'SomeClass') {
            all_links[i].href = 'SomeFunction(this);';
        }
    }
}
函数changeLinks(){
var all_links=document.getElementsByTagName(“a”);

对于(var i=0;i按照@alex的建议,您能否添加一个脚本以在页面加载中运行,从而将HREF更改为您想要的(添加“this”引用)

以以下脚本为例,这将更改id设置为SomeID或class设置为SomeClass的锚定标记的href值:

function changeLinks() {
    var all_links = document.getElementsByTagName("a");
    for (var i=0; i<all_links.length; i++){
        if (all_links[i].id == 'SomeID' || all_links[i].className == 'SomeClass') {
            all_links[i].href = 'SomeFunction(this);';
        }
    }
}
函数changeLinks(){
var all_links=document.getElementsByTagName(“a”);

对于(var i=0;这是链接帮助?你是说onclick而不是href?不,我需要在href-itself上获取链接帮助?你是说onclick而不是href?不,我需要在href-itself上获取链接帮助。问题是该功能是为已经完成的页面实现的。因此,我无法修改所有页面中的所有功能。很抱歉,我没有指定很早我不太确定…抱歉。问题是该函数是为已经完成的页面实现的。因此我无法修改所有页面中的所有函数。很抱歉,我没有提前指定它。我不太确定…抱歉。抱歉,这无法完成。每个锚可以调用不同的函数。在这种情况下,您可以添加一个函数在所有函数之前要使用当前锚设置全局变量,请参阅上面的编辑。抱歉,这无法完成。每个锚可以调用不同的函数。在这种情况下,您可以在所有函数之前添加一个函数以使用当前锚设置全局变量,请参阅上面的编辑。