onClick 获取被点击按钮的 ID

IT技术 javascript html
2021-01-16 18:39:04

如何找到被点击的按钮的 id?

<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>

function reply_click()
{
}
6个回答

您需要将 ID 作为函数参数发送。像这样做:

<button id="1" onClick="reply_click(this.id)">B1</button>
<button id="2" onClick="reply_click(this.id)">B2</button>
<button id="3" onClick="reply_click(this.id)">B3</button>
    
<script type="text/javascript">
  function reply_click(clicked_id)
  {
      alert(clicked_id);
  }
</script>

这将发送IDthis.id作为clicked_id您可以在您的函数中使用。在这里查看它的实际效果。

有人告诉我,为什么有些人不想要内联 Javascript 代码?
2021-03-11 18:39:04
兄弟,你是互联网上唯一一个成功地为我解释了这个工作方式的人。在函数名中使用变量而不是在实际函数脚本中使用另一个对我来说绝对没有意义!在短短的一句话中,您向我解释了我们放在函数括号 () 中的变量和我们在函数声明中使用的变量是一回事,只是传递给 AS !这太棒了!感谢您赐予我的智慧
2021-03-18 18:39:04
if (this.id == "1") { console.log("btn 1 is Activated"); }
2021-04-04 18:39:04
你真的不想要你的 html 中的任何代码,比如 <button onClick="">
2021-04-08 18:39:04
我只是想指出,对于任何使用 JQuery 获得空引用异常的人event.target.id(对我来说,Firefox 和 IE 都抛出它),这是一个适用于所有三种主要浏览器的很好的解决方案。
2021-04-09 18:39:04

一般来说,如果将代码和标记分开,事情会更容易组织起来。定义所有元素,然后在 JavaScript 部分中定义应对这些元素执行的各种操作。

当事件处理程序被调用时,它在被点击的元素的上下文中被调用。因此,this的标识符将引用您单击的 DOM 元素。然后,您可以通过该标识符访问元素的属性。

例如:

<button id="1">Button 1</button>
<button id="2">Button 2</button>
<button id="3">Button 3</button>

<script type="text/javascript">
var reply_click = function()
{
    alert("Button clicked, id "+this.id+", text"+this.innerHTML);
}
document.getElementById('1').onclick = reply_click;
document.getElementById('2').onclick = reply_click;
document.getElementById('3').onclick = reply_click;
</script>
@JasonLeBrun 我不知道我要点击的元素的 id 是什么。这就是我正在寻找的。代码绘制了一个 SVG 元素,当我点击它时,我需要知道它的“id”属性。如果以及如何使用此代码?
2021-03-18 18:39:04
我知道这是一个古老的线程,但在我的现代浏览器(Firefox 78)您的实现这个如预期没有工作。我的功能是通过输入文本框的onkeyup事件触发,但这个是使用窗口节点。相反,我不得不使用event.srcElement
2021-03-21 18:39:04
有很多方法可以处理。例如,动态生成javascript。或者,将相同的类添加到所有按钮,然后遍历具有该类名的所有按钮并以这种方式附加处理程序。
2021-03-22 18:39:04
如果按钮在中继器中并因此动态生成,那么您不知道将有多少个按钮怎么办?
2021-03-30 18:39:04

使用纯 JAVASCRIPT:我知道现在已经晚了,但可能对未来的人有帮助:

在 HTML 部分:

<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>

在 Javascipt 控制器中:

function reply_click()
{
    alert(event.srcElement.id);
}

这样我们就不必在调用 javascript 函数时绑定 Element 的 'id'。

我喜欢这种动态功能的想法。我正在使用 PHP/MySQL 和 JS 向动态数据库添加函数;这适用于向特定动态类添加特定功能。谢谢!
2021-03-12 18:39:04
仅供参考:全局事件对象在 chrome 中可用,而不是在 Firefox 中。
2021-03-13 18:39:04
@codeling 能分享一下浏览器和环境的细节吗?
2021-03-23 18:39:04
@Prateek Firefox,最新。我只需要源代码,所以我现在通过this作为参数传入解决它onClick(实际上,不是使用 onClick 而是 onChange,这可能是问题吗?)。我也检查了一下,似乎有很多关于这个event变量的混淆- 它是一个“隐式”参数还是必须明确声明为参数(即function reply_click(event),我也在一些地方)?它是否仅在通过addEventListener...分配事件侦听器时可用我玩过,但无法让它工作。
2021-03-26 18:39:04
截至 2021 年, event.srcElement 已弃用。
2021-04-01 18:39:04

(我认为该id属性需要以字母开头。可能是错误的。)

你可以去事件委托...

<div onClick="reply_click()">
    <button id="1"></button>
    <button id="2"></button>
    <button id="3"></button>
</div>

function reply_click(e) {
    e = e || window.event;
    e = e.target || e.srcElement;
    if (e.nodeName === 'BUTTON') {
        alert(e.id);
    }
}

...但这需要您对古怪的事件模型相对适应。

@Jason 实际上,在所有优秀的现代浏览器中,e参数都是自动生成的。如果不是,那么我们必须处理 IE6-8,它通过window.event.
2021-03-16 18:39:04
这行不通。您已经在 onclick 属性中指定了不带参数调用 reply_click 的代码。因此,不会将事件参数传递给函数。
2021-03-19 18:39:04
感谢这对我有用,即使我的 id 是动态的,而且似乎没有其他答案有效。非常感谢。
2021-03-19 18:39:04
@sdleihssirhc 实际上,你这个傲慢的某某,这一切都随着 HTML5 改变了
2021-04-01 18:39:04
“id”属性的值可以是任何字符串。它不必以字母开头。
2021-04-09 18:39:04
<button id="1" onClick="reply_click(this)"></button>
<button id="2" onClick="reply_click(this)"></button>
<button id="3" onClick="reply_click(this)"></button>

function reply_click(obj)
{
var id = obj.id;
}