Javascript 按ID删除选项卡时出错(chrome扩展名)

Javascript 按ID删除选项卡时出错(chrome扩展名),javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在尝试创建选项卡管理器扩展。弹出窗口将生成所有打开选项卡的列表。我现在正试图为列表中的每一个选项卡添加一个“关闭”选项。这就是列表的样子 它显示了选项卡ID,我临时将其放在那里只是为了确保它具有正确的ID。见下面的代码: let allTabs = []; chrome.tabs.query({}, tabs => { allTabs = tabs; displayTabs(); }); function displayTabs() { allTabs.f

我正在尝试创建选项卡管理器扩展。弹出窗口将生成所有打开选项卡的列表。我现在正试图为列表中的每一个选项卡添加一个“关闭”选项。这就是列表的样子

它显示了选项卡ID,我临时将其放在那里只是为了确保它具有正确的ID。见下面的代码:

let allTabs = [];

chrome.tabs.query({}, tabs => {
    allTabs = tabs;
    displayTabs();
});

function displayTabs() {
    allTabs.forEach(tab => {
        $("ul").append("<li class='tab-item'>"+ tab.id + " - " + trimTitle(tab.title) + " <a href='#' class='close-tab' id="+ tab.id +">Close tab</a></li>")
    });
}
它从ID属性中获取选项卡ID。我还让它提醒标签ID;因此,当我(例如)关闭时,请尝试用它关闭
Extensions
选项卡,我得到:

哪个。。。对我来说似乎是正确的。但我得到了以下错误:

未捕获的TypeError:调用选项卡时出错。删除([integer | array]选项卡ID,可选函数回调):没有匹配的签名

哪个。。。我不明白。它应该是正确的ID,互联网告诉我这是关闭选项卡的方法


任何帮助都将不胜感激。

.attr
返回类型
string
的值和
chrome.tabs.remove
函数-需要类型为
整数或整数数组的第一个参数。来源-

首先将
tabId
转换为整数,然后将其传递给
remove
函数

$("ul").on("click", "a", function () {
    let tabId = +$(this).attr("id"); // <-- or you can use parseInt

    alert(tabId);

    chrome.tabs.remove(tabId);
});
$(“ul”)。在(“单击”,“a”,函数(){

让tabId=+$(this).attr(“id”);/
.attr
返回类型
string
的值和
chrome.tabs.remove
函数-需要类型
整数或整数数组的第一个参数
源代码-

首先将
tabId
转换为整数,然后将其传递给
remove
函数

$("ul").on("click", "a", function () {
    let tabId = +$(this).attr("id"); // <-- or you can use parseInt

    alert(tabId);

    chrome.tabs.remove(tabId);
});
$(“ul”)。在(“单击”,“a”,函数(){

设tabId=+$(this.attr(“id”)/@CarstenLøvboAndersen我很确定我读到回调是可选的。不管怎样,我尝试过了,但仍然得到了相同的错误。谢谢。第一个参数
tabId
的类型是
integer
。尝试首先将
tabId
转换为integer,然后将其传递给
remove
。I:e
chrome.tabs.remove(+tabId)
@randomsour啊!就是这样。谢谢!太棒了!错误是
TypeError
与参数类型不匹配有关。事后看来,这是一个非常明显的修复方法。现在我知道下次我收到
TypeError
时首先要看哪里了,哈哈。再次感谢!如果你愿意,你可以把它放在正确的答案中,这样我就可以接受&u请注意。@CarstenLøvboAndersen我很确定我读到了回调是可选的。不管怎样,我尝试了回调,但仍然得到了相同的错误。谢谢。第一个参数
tabId
的类型是
integer
。请尝试首先将
tabId
转换为integer,然后将其传递给
remove
。I:e
chrome.tabs.remove(+tabId)
@randomsour啊!就是这样。谢谢!太棒了!错误是
TypeError
与参数类型不匹配有关。事后看来,这是一个非常明显的修复方法。现在我知道下次我收到
TypeError
时首先要看哪里了,哈哈。再次感谢!如果你愿意,你可以把它放在正确的答案中,这样我就可以接受&u请注意。