今天我开始研究互联网过滤器,以便家长们可以配置他们的孩子不能看几个网站。无法在一次运行中删除多个阵列元素
我正在努力解决关键字问题。如果我尝试删除所有关键字,它只会删除最后制作的关键字。当我在控制台中看,我没有看到任何错误。我必须关闭我的分机并打开它才能删除下一个关键字。我认为它与.addEventListener()有关,但我不确定。
这里是我的代码:
// Checking if this program didn't run earlier then set "keywords"
chrome.storage.sync.get("keywords", function(result){
if(result.keywords == undefined){
chrome.storage.sync.set({"keywords":[]});
}
});
// All HTML content
var keywordsdiv = document.getElementById("keywords");
var newkeyword = document.getElementById("newkeyword");
var addbutton = document.getElementById("add");
addbutton.addEventListener("click", function(){addkeyword(newkeyword.value)});
var keywords = [];
// Collect all information on Chrome storage and put in in the keywords
chrome.storage.sync.get("keywords", function(result){
keywords = result.keywords;
keywords.forEach(_);
function _(keyword){
keywordsdiv.innerHTML += "<div class=\"keyword\" id=\"" + keyword + "\">" + keyword + "</div>";
document.getElementById(keyword).addEventListener("click", function(){removekeyword(keyword)});
}
});
// Remove the keyword
function removekeyword(keyword){
document.getElementById(keyword).remove();
chrome.storage.sync.get("keywords", function(result){
var newkeywords = result.keywords;
newkeywords.forEach(_);
var bool = false;
function _(_keyword, index){
if(bool){
newkeywords[index - 1] = _keyword;
}
if(keyword == _keyword){
bool = true;
}
if(bool && index === newkeywords.length - 1){
newkeywords.splice(index, 1);
}
}
keywords = newkeywords;
chrome.storage.sync.set({"keywords":newkeywords});
});
}
// Adding the keyword
function addkeyword(keyword){
keywordsdiv.innerHTML += "<div class=\"keyword\" id=\"" + keyword + "\">" + keyword + "</div>";
keywords[keywords.length] = keyword;
document.getElementById(keyword).addEventListener("click", function(){removekeyword(keyword)});
newkeyword.value = "";
chrome.storage.sync.get("keywords", function(result){
var newkeywords = result.keywords;
newkeywords[newkeywords.length] = keyword;
chrome.storage.sync.set({"keywords":newkeywords});
});
}
哪里是你的代码删除所有关键字? 'removekeyword'只删除一个关键字。 – Barmar
@Barmar我意味着:点击所有关键字 – Ebbez
所以我想你的意思是:只有最后一个关键字被分配一个点击监听器。那是对的吗? – Xan