13 ответов:
вам нужно отправить 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>это отправит идентификатор
this.idкакclicked_idкоторый вы можете использовать в своей функции. увидеть его в действии здесь.
В общем, все проще организовать, если вы разделяете свой код и свою разметку. Определите все ваши элементы, а затем в разделе JavaScript определите различные действия, которые должны выполняться над этими элементами.
когда вызывается обработчик событий, он вызывается в контексте элемента, на который был нажат. Итак, идентификатор этой будет ссылаться на элемент 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>
ИСПОЛЬЗОВАНИЕ ЧИСТОГО 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.
<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; }
<button id="1"class="clickMe"></button> <button id="2" class="clickMe"></button> <button id="3" class="clickMe"></button> $('.clickMe').click(function(){ var clickedID = this.id; });
как это сделать без встроенного JavaScript
обычно рекомендуется избегать встроенного JavaScript, но редко есть пример того, как это сделать.
Вот мой способ прикрепления событий к кнопкам.
Я не совсем доволен тем, как долго рекомендуемый метод сравнивается с простым .современные браузеры только
<!DOCTYPE html> <html> <head> <script> (function(doc){ var hasClass = function(el,className) { return (' ' + el.className + ' ').indexOf(' ' + className + ' ') > -1; } doc.addEventListener('click', function(e){ if(hasClass(e.target, 'click-me')){ e.preventDefault(); doSomething.call(e.target, e); } }); })(document); function insertHTML(str){ var s = document.getElementsByTagName('script'), lastScript = s[s.length-1]; lastScript.insertAdjacentHTML("beforebegin", str); } function doSomething(event){ console.log(this.id); // this will be the clicked element } </script> <!--... other head stuff ...--> </head> <body> <!--Best if you inject the button element with javascript if you plan to support users with javascript disabled--> <script> insertHTML('<button class="click-me" id="btn1">Button 1</button>'); </script> <!--Use this when you don't care about broken buttons when javascript is disabled.--> <!--buttons can be used outside of forms https://stackoverflow.com/a/14461672/175071 --> <button class="click-me" id="btn2">Button 2</button> <input class="click-me" type="button" value="Button 3" id="btn3"> <!--Use this when you want to lead the user somewhere when javascript is disabled--> <a class="click-me" href="/path/to/non-js/action" id="btn4">Button 4</a> </body> </html>Кросс-браузер
<!DOCTYPE html> <html> <head> <script type="text/javascript"> (function(doc){ var cb_addEventListener = function(obj, evt, fnc) { // W3C model if (obj.addEventListener) { obj.addEventListener(evt, fnc, false); return true; } // Microsoft model else if (obj.attachEvent) { return obj.attachEvent('on' + evt, fnc); } // Browser don't support W3C or MSFT model, go on with traditional else { evt = 'on'+evt; if(typeof obj[evt] === 'function'){ // Object already has a function on traditional // Let's wrap it with our own function inside another function fnc = (function(f1,f2){ return function(){ f1.apply(this,arguments); f2.apply(this,arguments); } })(obj[evt], fnc); } obj[evt] = fnc; return true; } return false; }; var hasClass = function(el,className) { return (' ' + el.className + ' ').indexOf(' ' + className + ' ') > -1; } cb_addEventListener(doc, 'click', function(e){ if(hasClass(e.target, 'click-me')){ e.preventDefault ? e.preventDefault() : e.returnValue = false; doSomething.call(e.target, e); } }); })(document); function insertHTML(str){ var s = document.getElementsByTagName('script'), lastScript = s[s.length-1]; lastScript.insertAdjacentHTML("beforebegin", str); } function doSomething(event){ console.log(this.id); // this will be the clicked element } </script> <!--... other head stuff ...--> </head> <body> <!--Best if you inject the button element with javascript if you plan to support users with javascript disabled--> <script type="text/javascript"> insertHTML('<button class="click-me" id="btn1">Button 1</button>'); </script> <!--Use this when you don't care about broken buttons when javascript is disabled.--> <!--buttons can be used outside of forms https://stackoverflow.com/a/14461672/175071 --> <button class="click-me" id="btn2">Button 2</button> <input class="click-me" type="button" value="Button 3" id="btn3"> <!--Use this when you want to lead the user somewhere when javascript is disabled--> <a class="click-me" href="/path/to/non-js/action" id="btn4">Button 4</a> </body> </html>Кросс-браузер с jQuery
<!DOCTYPE html> <html> <head> <script type="text/javascript"> (function($){ $(document).on('click', '.click-me', function(e){ doSomething.call(this, e); }); })(jQuery); function insertHTML(str){ var s = document.getElementsByTagName('script'), lastScript = s[s.length-1]; lastScript.insertAdjacentHTML("beforebegin", str); } function doSomething(event){ console.log(this.id); // this will be the clicked element } </script> <!--... other head stuff ...--> </head> <body> <!--Best if you inject the button element with javascript if you plan to support users with javascript disabled--> <script type="text/javascript"> insertHTML('<button class="click-me" id="btn1">Button 1</button>'); </script> <!--Use this when you don't care about broken buttons when javascript is disabled.--> <!--buttons can be used outside of forms https://stackoverflow.com/a/14461672/175071 --> <button class="click-me" id="btn2">Button 2</button> <input class="click-me" type="button" value="Button 3" id="btn3"> <!--Use this when you want to lead the user somewhere when javascript is disabled--> <a class="click-me" href="/path/to/non-js/action" id="btn4">Button 4</a> </body> </html>вы можете запустить это до того, как документ будет готов, нажав на кнопки будет работать, потому что мы прикрепляем событие к документу.
здесь jsfiddle
По какой-то странной причинеinsertHTMLфункция не работает в нем, даже если он работает во всех моих браузерах.вы всегда можете заменить
insertHTMLСdocument.writeесли вы не возражаете, это недостатки<script> document.write('<button class="click-me" id="btn1">Button 1</button>'); </script>источники:
С чистым 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
вы можете просто сделать это таким образом:
<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); }
<button id="1" onClick="reply_click()"></button> <button id="2" onClick="reply_click()"></button> <button id="3" onClick="reply_click()"></button> function reply_click() { console.log(window.event.target.id) }
<button id="1"class="clickMe"></button> <button id="2" class="clickMe"></button> <button id="3" class="clickMe"></button> $('.clickMe').live('click',function(){ var clickedID = this.id; });
Кнопка 1 Кнопка 2 Кнопка 3
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;
извините его поздний ответ, но его очень быстро, если вы сделаете это : -
$(document).ready(function() { $('button').on('click', function() { alert (this.id); }); });Это получает идентификатор любой нажатой кнопки.
Если вы хотите просто получить значение кнопки нажатой в определенном месте, просто поместите их в контейнер, как
<div id = "myButtons"> buttons here </div>и изменить код :-
$(document).ready(function() { $('.myButtons button').on('click', function() { alert (this.id); }); });надеюсь, это поможет
Comments