Bagaimana cara menemukan id tombol yang sedang diklik?
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
function reply_click()
{
}
Bagaimana cara menemukan id tombol yang sedang diklik?
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
function reply_click()
{
}
Jawaban:
Anda perlu mengirim ID sebagai parameter fungsi. Lakukan seperti ini:
<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>
Ini akan mengirimkan ID this.id
sebagai clicked_id
mana Anda dapat menggunakan fungsi Anda. Lihat beraksi di sini.
event.target.id
(bagi saya, baik Firefox dan IE melemparkannya), ini adalah solusi hebat yang bekerja di ketiga browser utama.
Secara umum, banyak hal lebih mudah untuk tetap teratur jika Anda memisahkan kode dan markup Anda. Tentukan semua elemen Anda, dan kemudian di bagian JavaScript Anda, tentukan berbagai tindakan yang harus dilakukan pada elemen tersebut.
Ketika event handler dipanggil, itu disebut dalam konteks elemen yang diklik. Jadi, pengidentifikasi ini akan merujuk ke elemen DOM yang Anda klik. Anda kemudian dapat mengakses atribut elemen melalui pengenal itu.
Sebagai contoh:
<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>
MENGGUNAKAN JAVASCRIPT MURNI: Saya tahu ini sudah terlambat tetapi mungkin untuk orang-orang masa depan dapat membantu:
Di bagian HTML:
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
Di Javascipt Controller:
function reply_click()
{
alert(event.srcElement.id);
}
Dengan cara ini kita tidak perlu mengikat 'id' Elemen pada saat memanggil fungsi javascript.
this
sebagai parameter onClick
(sebenarnya, tidak menggunakan onClick tetapi onChange, apakah itu mungkin masalahnya?). Saya juga telah memeriksa sekitar sedikit dan tampaknya ada banyak kebingungan tentang event
variabel ini terjadi - apakah itu parameter "implisit" atau apakah itu harus dinyatakan secara eksplisit sebagai argumen (yaitu function reply_click(event)
, yang saya juga lihat di beberapa lokasi)? Apakah hanya tersedia saat menetapkan pendengar acara melalui addEventListener
...? Saya sudah bermain-main, tetapi tidak bisa membuatnya bekerja.
(Saya pikir id
atribut perlu dimulai dengan surat. Mungkin salah.)
Anda bisa mengikuti delegasi acara ...
<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);
}
}
... tapi itu mengharuskan Anda untuk relatif nyaman dengan model acara yang aneh.
e
argumen dibuat secara otomatis. Jika tidak, maka kita harus berurusan dengan IE6-8, yang sebaliknya menyediakan objek yang bermanfaat melalui window.event
.
umumnya disarankan untuk menghindari inline JavaScript, tetapi jarang ada contoh bagaimana melakukannya.
Inilah cara saya melampirkan acara ke tombol.
Saya tidak sepenuhnya senang dengan berapa lama metode yang direkomendasikan dibandingkan dengan yang sederhanaonClick
atribut .
<button class="btn">Button</button>
<script>
let OnEvent = (doc) => {
return {
on: (event, className, callback) => {
doc.addEventListener('click', (event)=>{
if(!event.target.classList.contains(className)) return;
callback.call(event.target, event);
}, false);
}
}
};
OnEvent(document).on('click', 'btn', function (e) {
window.console.log(this, e);
});
</script>
<!DOCTYPE html>
<html>
<head>
<script>
(function(doc){
var hasClass = function(el,className) {
return el.classList.contains(className);
}
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>
<!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>
Anda dapat menjalankan ini sebelum dokumen siap, mengklik tombol akan berfungsi karena kami melampirkan acara ke dokumen.
Berikut adalah jsfiddle
Untuk beberapa alasan anehinsertHTML
fungsi ini tidak berfungsi walaupun berfungsi di semua browser saya.
Anda selalu dapat mengganti insertHTML
dengan document.write
jika Anda tidak keberatan itu kekurangannya
<script>
document.write('<button class="click-me" id="btn1">Button 1</button>');
</script>
Sumber:
Jika Anda tidak ingin meneruskan argumen apa pun ke fungsi onclick, cukup gunakan event.target
untuk mendapatkan elemen yang diklik:
<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);
}
Dengan javascript murni Anda dapat melakukan hal berikut:
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);
};
}
periksa Di JsFiddle
Anda bisa melakukannya dengan cara ini:
<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);
}
id=obj;
dan hanya memilikialert(obj);
Maaf ini jawaban yang terlambat tetapi sangat cepat jika Anda melakukan ini: -
$(document).ready(function() {
$('button').on('click', function() {
alert (this.id);
});
});
Ini mendapatkan ID dari tombol apa saja yang diklik.
Jika Anda hanya ingin mendapatkan nilai dari tombol yang diklik di tempat tertentu, cukup masukkan dalam wadah seperti
<div id = "myButtons"> buttons here </div>
dan ubah kode menjadi: -
$(document).ready(function() {
$('.myButtons button').on('click', function() {
alert (this.id);
});
});
saya harap ini membantu
Ini akan mencatat id elemen yang telah diklik: addFields.
<button id="addFields" onclick="addFields()">+</button>
<script>
function addFields(){
console.log(event.toElement.id)
}
</script>