Javascript 我的AddEventListener函数在任何浏览器中都不起作用。如何解决这个问题?
以下是我的JS代码:Javascript 我的AddEventListener函数在任何浏览器中都不起作用。如何解决这个问题?,javascript,html,Javascript,Html,以下是我的JS代码: const BASE\u URL=”http://localhost:3000"; const CATEGORIES_URL=`${BASE_URL}/CATEGORIES`; const ITEMS_URL=`${BASE_URL}/ITEMS`; window.addEventListener(“加载”,()=>{ getCategories(); createNewCategory(); }); 常量main=()=>{ 返回文档。查询选择器(“主”); }; //
const BASE\u URL=”http://localhost:3000";
const CATEGORIES_URL=`${BASE_URL}/CATEGORIES`;
const ITEMS_URL=`${BASE_URL}/ITEMS`;
window.addEventListener(“加载”,()=>{
getCategories();
createNewCategory();
});
常量main=()=>{
返回文档。查询选择器(“主”);
};
//加载所有类别
常量getCategories=()=>{
取回(“http://localhost:3000/categories")
.then((response)=>response.json())
。然后((数据)=>渲染类别(数据));
};
const renderCategories=(categoriesData)=>{
forEach((category)=>renderCategoriesCard(category));
};
const renderCategoriesCard=(类别)=>{
让categoriesCard=document.createElement(“div”);
categoriesCard.className=“卡片”;
categoriesCard.dataset.id=categories.id;
categoriesCard.innerHTML=`
${categories.name}
添加项
`;
categoriesCard.lastElementChild.addEventListener(“单击”,displayItemForm);
main().appendChild(categoriesCard);
让itemsList=document.createElement(“ul”);
setAttribute(“类”、“项列表”);
itemsList.dataset.id=categories.id;
分类卡。附件子项(项目列表);
categories.items.forEach((item)=>renderItems(item,itemsList));
};
const createNewCategory=()=>{
let form=document.querySelector(“a”);
表单.addEventListener(“单击”,显示类别表单);
};
常量displayCategoryForm=()=>{
让categoryForm=document.getElementById(“类别表单”);
让html=`
名称
`;
categoryForm.innerHTML=html;
文件。查询选择器(“表格”)。添加的文本列表器(“提交”,创建类别);
};
常量createCategory=()=>{
event.preventDefault();
console.log(“点击表单”);
常量类别={
名称:document.getElementById(“名称”).value,
};
//createNewCategory();
//投递
获取(类别和URL){
方法:“张贴”,
正文:JSON.stringify(类别),
标题:{
“内容类型”:“应用程序/json”,
接受:“应用程序/json”,
},
})
.then((response)=>response.json())
。然后((数据)=>{
渲染分类(数据);
clearCategoryForm();
});
};
const renderItems=(项目,列表)=>{
让itemCard=document.createElement(“li”);
itemCard.id=`item-${item.id}`;
itemCard.innerText=`Title:${item.Title}`;
让releaseBtn=document.createElement(“按钮”);
releaseBtn.className=“删除”;
releaseBtn.dataset.itemId=item.id;
releaseBtn.innerText=“删除”;
releaseBtn.addEventListener(“单击”,删除项);
ItemCard.appendChild(releaseBtn);
如果(!列表){
list=event.target.parentElement.lastElementChild;
}
列表。附加子项(项目卡);
};
常量clearForm=()=>{
让item=document.getElementById(“item表单”);
item.innerHTML=“”;
};
常量clearCategoryForm=()=>{
让category=document.getElementById(“category表单”);
category.innerHTML=“”;
};
常量deleteItem=()=>{
fetch(ITEMS_URL+`/${event.target.dataset.ItemId}`{
方法:“删除”,
}).then(removietem(event.target.dataset.itemId));
};
const removietem=(id)=>{
让cardToRemove=document.getElementById(`item-${id}`);
cardToRemove.parentElement.removeChild(cardToRemove);
};
const displayItemForm=()=>{
让itemForm=document.getElementById(“项目表单”);
让html=`
标题
项目数量
`;
itemForm.innerHTML=html;
文件。查询选择器(“表格”)。添加的列表器(“提交”,createItem);
};
const createItem=()=>{
event.preventDefault();
日志(“添加项…”);
让categoryCardId=event.target.dataset.categoryId;
console.log(categoryCardId);
常数项={
标题:document.getElementById(“标题”).value,
数量:document.getElementById(“数量”).value,
类别识别号:categoryCardId,
};
//createItem();
控制台日志(项目);
获取(项目)\u URL{
方法:“张贴”,
正文:JSON.stringify(项目),
标题:{
“内容类型”:“应用程序/json”,
接受:“应用程序/json”,
},
})
.then((response)=>response.json())
。然后((数据)=>{
let item=新项(数据);
item.renderItem();
clearForm();
});
};代码>
杂货
杂货
代码中有两件事
需要调用createNewCategory
addEventListener(“submit”,createCategory)您在问题中错过了此函数,现在添加了一个简单函数
检查下面的代码片段
const createNewCategory=()=>{
let form=document.querySelector(“a”);
表单.addEventListener(“单击”,显示类别表单);
};
常量displayCategoryForm=()=>{
让categoryForm=document.getElementById(“类别表单”);
让html=`
名称
`;
categoryForm.innerHTML=html;
文件。查询选择器(“表格”)。添加的文本列表器(“提交”,创建类别);
};
createNewCategory()
const createCategory=()=>alert('i am createCategory function')
createNewCategory
似乎从未在代码中调用过。它在哪里被调用?另外,createCategory
未定义。这是我的代码:window.addEventListener(“加载”(=>{getCategories();createNewCategories();searchForCategories();})@maryjane请检查答案,我希望这会让你更好地理解,我也提到了你错过的东西。您的代码运行时出现了一些错误。从您的问题中创建了一个片段,没有问题:)@DILEEPTHOMAS非常感谢您的回答!实际上,我在页面顶部调用了createNewCategory,如下所示:window.addEventListener(“load”,()=>{getCategories();createNewCategories();searchForCategories();});