Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为动态生成的按钮编写onclick函数_Javascript_Google Chrome Extension_Local Storage - Fatal编程技术网

Javascript 如何为动态生成的按钮编写onclick函数

Javascript 如何为动态生成的按钮编写onclick函数,javascript,google-chrome-extension,local-storage,Javascript,Google Chrome Extension,Local Storage,我有一些看起来很漂亮的纽扣 这是一个网站的“白名单”。我想让按钮从白名单中删除相应的站点 但是,由于这些按钮是在每次添加站点(由用户输入)时生成的,因此我不知道如何获取要在函数中使用的ElementID 此处是生成按钮的位置: var cellWebsite = document.createElement("td"); var website = document.createTextNode(array[i]); //append cell text to cell, then

我有一些看起来很漂亮的纽扣

这是一个网站的“白名单”。我想让按钮从白名单中删除相应的站点

但是,由于这些按钮是在每次添加站点(由用户输入)时生成的,因此我不知道如何获取要在函数中使用的ElementID

此处是生成按钮的位置:

  var cellWebsite = document.createElement("td");
  var website = document.createTextNode(array[i]);

  //append cell text to cell, then cell to row (like setting a "stage")
  cellWebsite.appendChild(website);
  row.appendChild(cellWebsite);

  //create a cell & cell text for BUTTON
  var cellDelete = document.createElement("td");
  var button = document.createElement("BUTTON"); //has its own element
  var text = document.createTextNode("x");
  button.appendChild(text);
  cellDelete.appendChild(button);
  row.appendChild(cellDelete);
如何获取ID以便在单击X按钮时编写函数?在该功能中,如何获取与该按钮对应的网站


我正在做一个Chrome扩展并使用Chrome的本地存储,如果有必要的话

最简单的方法是在按钮变量中添加事件侦听器,如下所示:

const btn = document.createElement('button');
btn.innerText = "Click me!";
btn.addEventListener('click', function(event) {
  console.log('Fired!');
});

我似乎无法评论,因为我需要50个代表,但你不能给它一个增量吗?每次添加时,只需将ID或名称增加1,然后就可以将ID或名称作为目标。

检查浏览器的检查视图,查看是否设置了ID和其他属性

如果这不起作用,请使用formid属性作为元素的索引፡ var x=document.getElementById(“myForm”).elements[0]。值

如果表格中未提供id:

var x=document.forms[0].id; 或
var x=document.forms.item(0.id)

动态创建元素时,您应该使用事件委派来处理事件

事件委派允许您避免向特定节点添加事件侦听器;而是将事件侦听器添加到一个父级。该事件侦听器分析冒泡事件以查找子元素上的匹配项

示例:

var计数器=-1;
函数addRow(){
计数器++;
var table=document.getElementById('myTable'),
行=表。插入行(计数器),
单元格=行插入单元格(0),
cellDelete=row.insertCell(1),
button=document.createElement('button'),
text=document.createTextNode('X');
cell.innerHTML='wikipedia.org'+计数器;
按钮。追加子项(文本);
cellDelete.appendChild(按钮);
按钮。addEventListener('click',函数(e){
table.deleteRow(e.target.parentNode.parentNode.rowIndex);
柜台--
} )
}
正文{
保证金:0
}
桌子{
宽度:100%
}
运输署{
填充:8px;
边框底部:1px实心#ddd
}
td:n个孩子(偶数){
文本对齐:右对齐
}
tr:n个孩子(奇数){
背景色:#EFEF
}
添加新行


有趣!如何增加ID?或者甚至设置它?我不是专业人士,所以在这个线程中不要太看重我,但是您可以使用javascript/jquery中的函数,为它指定一个ID或名称(无论您想要什么),例如:name:'MyButtonName['+ButtonIncrement+']'(并将MyButtonName设置为0)。每次创建一个按钮时,它都会给它分配一个增量,并将其存储在您的本地存储中(我使用JSON来完成我的工作,并以这种方式将我的名字作为目标)。您基本上需要重现u为一个按钮编写的函数。再说一次,我对javascript也不在行。我只是想根据我所知道的来提供我的意见。所以不要太看重我说的话。