如何找到正在点击的按钮的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()
{
}
如何找到正在点击的按钮的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()
{
}
当前回答
使用纯javascript,你可以做到以下几点:
var buttons = document.getElementsByTagName("button");
var buttonsCount = buttons.length;
for (var i = 0; i < buttonsCount; i += 1) {
buttons[i].onclick = function(e) {
alert(this.id);
};
}
检查它在JsFiddle
其他回答
如果您不想传递任何参数给onclick函数,只需使用event。目标获取被单击的元素:
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
function reply_click()
{
// event.target is the element that is clicked (button in this case).
console.log(event.target.id);
}
第一种方法:用这个发送触发元素
<button id="btn01" onClick="myFun(this)">B1</button>
<button id="btn02" onClick="myFun(this)">B2</button>
<button id="btn03" onClick="myFun(this)">B3</button>
<script>
function myFun(trigger_element)
{
// Get your element:
var clicked_element = trigger_element
alert(clicked_element.id + "Was clicked!!!");
}
</script>
通过这种方式发送一个类型为:HTMLElement的对象,你得到元素本身。您不需要关心元素是否有id或任何其他属性。它自己工作得很好。
第二种方法:使用this.id发送触发元素id
<button id="btn01" onClick="myFun(this.id)">B1</button>
<button id="btn02" onClick="myFun(this.id)">B2</button>
<button id="btn03" onClick="myFun(this.id)">B3</button>
<script>
function myFun(clicked_id)
{
// Get your element:
var clicked_element = document.getElementById(clicked_id)
alert(clicked_id + "Was clicked!!!");
}
</script>
这种方式发送一个类型为:String的对象,而不获取元素本身。所以在使用之前,您需要确保元素已经有一个id。 你不能自己发送元素id,比如onClick="myFun(btn02)"。它不是干净的代码,它使你的代码失去功能。
在你的情况下:
<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>
(我认为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);
}
}
...但这要求您对古怪的事件模型相对熟悉。
这是Prateek答案的改进-事件是通过参数传递的,因此reply_click不需要使用全局变量(到目前为止没有人提出这个变量)
函数reply_click(e) { console.log (e.target.id); } <button id="1" onClick="reply_click(event) "“> B1 > < /按钮 <button id="2" onClick="reply_click(event) "“> B2 > < /按钮 <button id="3" onClick="reply_click(event) "“> B3 > < /按钮
你可以简单地这样做:
<input type="button" id="1234" onclick="showId(this.id)" value="click me to show my id"/>
<script type="text/javascript">
function showId(obj) {
var id=obj;
alert(id);
}