如何在触发onclick时从Javascript中的元素检索信息

如何在触发onclick时从Javascript中的元素检索信息,javascript,jquery,this,Javascript,Jquery,This,假设我在DOM中有一个链接(但可以接受任何元素),并调用Javascript函数: <a href="google.com" onclick="myFunction()"> 这实际上不起作用。通常,我们需要指向元素的ID或类来获取其信息但是如果我们不能设置一个ID或类或任何东西,而只是处理页面中的一些链接,那么如何直接检索他们的信息呢 本主题的标题有意为一般性标题,因为该方法应适用于任何HTML元素。您可以访问单击的元素,如下所示 HTML JS 函数myFunction(事件)

假设我在DOM中有一个链接(但可以接受任何元素),并调用Javascript函数:

<a href="google.com" onclick="myFunction()">
这实际上不起作用。通常,我们需要指向元素的ID类来获取其信息但是如果我们不能设置一个ID或类或任何东西,而只是处理页面中的一些链接,那么如何直接检索他们的信息呢


本主题的标题有意为一般性标题,因为该方法应适用于任何HTML元素。

您可以访问单击的元素,如下所示

HTML

JS

函数myFunction(事件){
event.preventDefault();
//使用event.target完成您的工作,它是
}

是的,您是对的,使用id或css选择器可以做到这一点。但还有另一种方法

调用函数时只需传递这个,就可以访问元素的所有属性,如下所示:

<a href="google.com"  style="background-color: yellow" onclick="myFunction(this, event)"> click me !!!! <a>
 function myFunction(element, event) {
    event.preventDefault(); // event object can be passed
    element.style.backgroundColor = "red" // attribute can be accessed
    console.log(element.attributes["data-name"])

}

它不起作用,因为您实际上只是在单击元素后才阻止正常行为。你真正的问题是什么,因为不清楚?您是在问如何重写
myFunction
函数,还是在问如何绑定到没有类或ID的特定DOM元素?
@BenM我的问题很清楚:我想从没有ID或类的元素中检索信息。我想阻止链接正常行为的事实只是次要问题(这是可以理解的,因为点击链接会达到目标,我不希望这样)。你必须使用onclick内联属性吗?这是一个糟糕的做法。是的,我必须这样做,因为我想要构思的脚本的逻辑(它应该编辑页面中的链接,以便用href打开弹出窗口)。但是无论如何,有人给了我解决方案。为什么只使用jQuery来获取属性?只要
this.href
就可以了。不起作用的可以使用
event.target.href
?event.prevendDefault();不工作:``函数myFunction(element){/$(element)。单击(function(){return false;});element.preventDefault();console.log(element.attributes[“href”];}``它不会停止链接以打开页面。是否传递了arg
onclick=“myFunction(event)”
?你可以试试看,问题是我无法测试你的代码,因为preventDefault()无法停止链接以打开新页面。你说的是任何元素。所以我用DIV元素做了演示。它很好用。你想只使用link元素吗???是的,我不想突然知道,我避免链接重定向的技术会失败,所有人提出的代码也会失败。我想我可以问一个一般性的问题,但似乎我只需要做一个关于链接的新主题,因为JS给我带来了大量的垃圾。我已经用链接标签更新了我的答案。请核实
function myFunction(event) {
    event.preventDefault();
    // Do your stuff with event.target which is <a>
}
<a href="google.com"  style="background-color: yellow" onclick="myFunction(this, event)"> click me !!!! <a>
 function myFunction(element, event) {
    event.preventDefault(); // event object can be passed
    element.style.backgroundColor = "red" // attribute can be accessed
    console.log(element.attributes["data-name"])

}