在Chrome扩展选项页面中单击不起作用的事件
Click event not working in Chrome extension options page
在我的选项页面中,我生成了一些带有输入数字和按钮的行,这些行与chrome存储中的条目有关。
问题是我为按钮创建的事件监听器根本不起作用。
options.html
<html>
<head>
<title>Select the movie's Id</title>
<style>
body: { padding: 10px; }
.style-1 input[type="number"] {
padding: 10px;
border: solid 1px #dcdcdc;
transition: box-shadow 0.3s, border 0.3s;
width: 5em;
}
.style-1 input[type="number"]:focus,
.style-1 input[type="number"].focus {
border: solid 1px #707070;
box-shadow: 0 0 5px 1px #969696;
}
</style>
</head>
<body>
<legend style="border-bottom: solid 1px">Insert</legend>
<input type="number" name="id" id="id" value="">
<button id="save">Insert</button>
<br>
<br>
<legend style="border-bottom: solid 1px">Manage</legend>
<div id="ghost" style="display: none">
<input type="number" name="VAL">
<button name="DEL" id="" >Delete</button>
<br><br>
</div>
<script src="options.js"></script>
</body>
options.js
document.getElementById('save').addEventListener('click', save_options);
chrome.storage.sync.get('movieId', function(result){
for (var i=0; i<result.movieId.length; i++){
createRow(result.movieId[i]);
}
});
function save_options() {
var id = document.getElementById('id').value;
chrome.storage.sync.get('movieId', function(result){
var ids = result.movieId;
ids.push(id);
chrome.storage.sync.set({
'movieId': ids
}, function() {
});
location.reload();
});
}
function createRow(pos){
var newRows= document.getElementById('ghost').cloneNode(true);
newRows.id= '';
newRows.style.display= 'block';
var newRow= newRows.childNodes;
for (var i= 0; i< newRow.length; i++){
var newName= newRow[i].name;
if (newName){
newRow[i].name = newName+pos;
newRow[i].id = pos;
newRow[i].value = pos;
}
}
var insertHere= document.getElementById('ghost');
insertHere.parentNode.insertBefore(newRows,insertHere);
document.getElementById(pos).addEventListener('click', delet());
}
function loop(arrayIds){
console.log('loop');
for (var i=0; i<arrayIds.length; i++){
createRow(i);
}
}
function delet(){
console.log("this.id");
//chrome.storage.sync.remove(id);
}
这样,当我单击任何"删除"按钮时,都不会发生任何事情。
我已经尝试了document.getElementById(pos).addEventListener('click', delet());
的所有组合,但都不起作用。
document.getElementById(pos).addEventListener('click', delet());
应该是
document.getElementById(pos).addEventListener('click', delet);
在您的代码段中,您正在调用delet
,因此该函数的结果被添加为事件侦听器,即undefined
。如果要将delet
绑定为事件处理程序,请将其传递给addEventListener
而不调用它
编辑
正如我看到的代码一样,您为input
和button
提供了相同的id,当您调用document.getElementById
时,它返回的是input
而不是button
,因此,事件绑定到input
而不是button
。
要修复此问题,请用此替换您的createRow
function createRow(pos) {
var newRow = document.getElementById('ghost').cloneNode(true);
newRow.id= '';
newRow.style.display= 'block';
var value = newRow.querySelector("[name=VAL]");
var button = newRow.querySelector("[name=DEL]");
value.id = "VAL" + pos;
value.value = pos;
button.id = "DEL" + pos;
var insertHere= document.getElementById('ghost');
insertHere.parentNode.insertBefore(newRow, insertHere);
button.addEventListener('click', delet);
}
相关文章:
- 使用jquery插入动态HTML后,单击不起作用
- 剑道模板在元素中单击不起作用
- ng在ui gmap窗口内单击不起作用
- 在Chrome扩展选项页面中单击不起作用的事件
- PrependTo,然后在单击不起作用时将其删除
- JavaScript 单击不起作用
- 从对象的按钮单击不起作用
- 全日历日单击不起作用(不执行任何操作)
- 检测右键单击+左键单击不起作用
- 离子无线电取消选中 ng-单击不起作用
- C# 调用成员单击“不起作用”
- JQuery 在 标签内单击不起作用
- 事件侦听器单击不起作用
- 翡翠按钮单击不起作用
- 角度路线在单击时不起作用,但再次单击不起作用
- 在 ajax 调用中加载日期选择器,然后单击不起作用
- AngularJS:ng-单击不起作用,适用于<按钮>
- JQuery .hover slidedown slideUp 工作,但 ,单击不起作用
- 多种功能在Chrome中单击不起作用
- 量角器 ID 单击不起作用