在我的扩展程序中,我正在尝试制作一堆按钮。每个数字都是一个按钮,因此表格中的所有单元格除了标题“保存”和“加载”。
[![在此处输入图片说明] [1]] [1] 所以我的目标是20个按钮,左边的1-9(& 0)执行保存操作&加载10多个。我为每个按钮制作了点击处理程序,并动态生成表格 这是我的脚本中从弹出式html页面链接的相关代码的一部分
$(document).ready(populateGroupButtons)
function populateGroupButtons(){
const groups=[1, 2, 3, 4, 5, 6, 7, 8, 9, 0] //group 0 is at the end
let table=$('#groupButtons')
groups.forEach((group)=>{
table.append(
'<tr>'+
'<td id="save'+group+'">'+
group+
'</td>'+
'<td id="load'+group+'">'+
group+
'</td>'+
'</tr>'
)
})
$(document).ready(registerClickHandlers)
}
function registerClickHandlers(){
let table = $('#groupButtons')
for(let group=0; group<=9; group++){
$('#save'+group).click((e)=>{
console.log($('#save'+group))
});
$('#load'+group).click((e)=>{
console.log($('#load'+group))
})
}
}
弹出式HTML页面
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='jquery-min.js'></script>
<link href='css/style.css' type='text/css' rel="stylesheet">
</head>
<body>
<h1>Popup</h1>
<table id='groupButtons'>
<tr>
<th>Save</th>
<th>Load</th>
</tr>
</table>
<p>Open console to see output</p>
<script type='text/javascript' src='popup-script.js'></script>
</body>
</html>
如果我在新标签中查看popup.html
并it also works here isolated as a jsfiddle ,我就可以使用它了
问题是当我将它用作chrome扩展时,我点击的表格单元格不是事件处理程序的正确目标
#save2
#save3
<th>
时,会记录#save1
基本上,一切都向上移动了一排,我不知道为什么
它作为纯JavaScript和小提琴工作正常,但不知何故目标是错误的
Here's a zip folder of the entire extension
编辑:问题截图
看一下当我点击“保存”单元格时会发生什么
它甚至不应该是一个按钮,因为这是一个<th>
元素,但不知何故它注册了一个点击。
另请注意,即使我点击的位置 实际记录的td#save1
,它也会记录<td>
。
在第8行之后,他们甚至没有注册点击次数