javascript - 具有功能的js按钮生成器
问题描述
我得到了用我想要的按钮生成表格的代码,但我也想使用 js"onlick="cell_id(" + j +"," + i ")"
在元素中获取一个函数。<button>
j
和i
变量用于标记点击来自的行和列,也用于创建表格。
编码:
function tableCreate() {
var body = document.getElementsByTagName("body")[0];
var tbl = document.createElement("table");
var tblBody = document.createElement("tbody");
for (var j = 0; j <= 10; j++) {
var row = document.createElement("tr");
for (var i = 0; i <10; i++) {
var cell = document.createElement("td");
var button = document.createElement("button");
button.innerHTML = j +"-"+i;
cell.appendChild(button);
row.appendChild(cell);
}
tblBody.appendChild(row);
}
tbl.appendChild(tblBody);
body.appendChild(tbl);
tbl.setAttribute("border", "2");
}
function cell_id(x,y){
window.alert('x:'+x+ ' y:'+y)
}
解决方案
您可以将侦听器附加到每个按钮元素:
function tableCreate() {
var body = document.getElementsByTagName("body")[0];
var tbl = document.createElement("table");
var tblBody = document.createElement("tbody");
for (var j = 0; j <= 10; j++) {
var row = document.createElement("tr");
for (var i = 0; i <10; i++) {
var cell = document.createElement("td");
var button = document.createElement("button");
button.innerHTML = j +"-"+i;
setupListener(button);
cell.appendChild(button);
row.appendChild(cell);
}
tblBody.appendChild(row);
}
tbl.appendChild(tblBody);
body.appendChild(tbl);
tbl.setAttribute("border", "2");
}
function setupListener(button, i, j) {
button.addEventListener('click', () => {
cell_id(button, i, j);
});
}
function cell_id(button, x, y){
msg('x:'+x+ ' y:'+y)
}
这种方法有效,但如果您有很多按钮,则成本很高。对于更高级的方法,您可以将i
和j
作为data
属性存储在按钮上,然后在整个表格上使用单击事件。您可以过滤事件以检查它们是否来自“源”按钮。如果这是您想要追求的选择,我将由您决定。
推荐阅读
- javascript - JavaScript 单词生成器
- c++ - 如何在 Linux 下使用包装器 libbcrypt 在 C++ 中使用 bcrypt
- python - 如何检查确认电子邮件,然后在 python 中阅读
- javascript - 通过添加和删除类的 CSS 页面转换(Vanilla JavaScript)
- linux - 如何为 clion 编写包含 glfw 的 cmake 脚本?
- python - 为什么在 C++ 应用程序中嵌入 python 时继承不能正常工作?
- r - 使用 lattice 包中的 qqmath 更改点的颜色
- bdd - 如何使用 QAF BDD2 框架排除 BDD 中的特定场景?
- sql - 如何选择另一个具有多对一关系的表上不存在的值?
- python - 无法弄清楚如何清除随机森林中的 NaN