ボタンイベントリスナー |
イベントの実装方法 |
document.querySelectorAll('.b1').forEach(btn =>
{
btn.addEventListener('click', handleButtonClick);
});
function handleButtonClick(e)
{
const btn = e.currentTarget;//クリックされたボタン要素
const {id} = btn.dataset;//data-id を取得
//console.log('clicked id:', id);
//共通処理を実装します
test1(id);
}
function test1(id)
{
const result1 = document.getElementById("result1");
result1.innerHTML = "button id:"+id;
}
document.querySelectorAll('.b1').forEach(btn =>
{
btn.addEventListener('click', handleButtonClick);
});
function handleButtonClick(e)
{
const btn = e.currentTarget;//The button element that was clicked
const {id} = btn.dataset;//Get data-id
//console.log('clicked id:', id);
//Implement common processing
test1(id);
}
function test1(id)
{
const result1 = document.getElementById("result1");
result1.innerHTML = "button id:"+id;
}
const actions =
{
btn1(btn, e)
{
const id = btn.dataset.id;
test2(1, id);
},
btn2(btn, e)
{
const id = btn.dataset.id;
test2(2, id);
},
btn3(btn, e)
{
const id = btn.dataset.id;
test2(3, id);
},
};
function test2(no, id)
{
const result2 = document.getElementById("result2");
result2.innerHTML = "button no:" + no +" id:" + id;
}
document.querySelectorAll('button[data-action]').forEach(btn =>
{
btn.addEventListener('click', e =>
{
const { action } = e.currentTarget.dataset;
const fn = actions[action];
if (fn) fn(e.currentTarget, e);
});
});
const actions =
{
btn1(btn, e)
{
const id = btn.dataset.id;
test2(1, id);
},
btn2(btn, e)
{
const id = btn.dataset.id;
test2(2, id);
},
btn3(btn, e)
{
const id = btn.dataset.id;
test2(3, id);
},
};
function test2(no, id)
{
const result2 = document.getElementById("result2");
result2.innerHTML = "button no:" + no +" id:" + id;
}
document.querySelectorAll('button[data-action]').forEach(btn =>
{
btn.addEventListener('click', e =>
{
const { action } = e.currentTarget.dataset;
const fn = actions[action];
if (fn) fn(e.currentTarget, e);
});
});
const actions2 =
{
button1(btn, e) {test3(1);},
button2(btn, e) {test3(2);},
button3(btn, e) {test3(3);},
};
function test3(no)
{
const result3 = document.getElementById("result3");
result3.innerHTML = "button no:" + no;
}
const group3 = document.getElementById('group3');
group3.addEventListener('click', e =>
{
const btn = e.target.closest('button[data-action]');
if (!btn || !group3.contains(btn)) return; // 外側のクリックは無視
const fn = actions2[btn.dataset.action];
if (fn) fn(btn, e);
});
const actions2 =
{
button1(btn, e) {test3(1);},
button2(btn, e) {test3(2);},
button3(btn, e) {test3(3);},
};
function test3(no)
{
const result3 = document.getElementById("result3");
result3.innerHTML = "button no:" + no;
}
const group3 = document.getElementById('group3');
group3.addEventListener('click', e =>
{
const btn = e.target.closest('button[data-action]');
if (!btn || !group3.contains(btn)) return; // Ignore outside clicks
const fn = actions2[btn.dataset.action];
if (fn) fn(btn, e);
});
| ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームペーよびアプリ利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |