Javascript 从类别链接填充菜单-用于循环

Javascript 从类别链接填充菜单-用于循环,javascript,Javascript,我正在努力找出我的循环出了什么问题。我一直收到这个打字错误,我试着移动东西,但我不确定我错过了什么 我试图通过在我的类别标题中单击添加事件侦听器来填充列表。当我点击时,一个4个图片的网格会显示出来,其中列出了该类别的所有项目。但是,我收到以下错误: main.js:98未捕获类型错误:无法读取未定义的属性“length” 在HTMLButtonElement.populateItems main.js:98 var-cart=[]; var乳制品项目=[{ img:'images\Dairy\

我正在努力找出我的循环出了什么问题。我一直收到这个打字错误,我试着移动东西,但我不确定我错过了什么

我试图通过在我的类别标题中单击添加事件侦听器来填充列表。当我点击时,一个4个图片的网格会显示出来,其中列出了该类别的所有项目。但是,我收到以下错误:

main.js:98未捕获类型错误:无法读取未定义的属性“length” 在HTMLButtonElement.populateItems main.js:98

var-cart=[]; var乳制品项目=[{ img:'images\Dairy\butter.png', 名字:“黄油” }, { img:'images\Dairy\milk.png', 名称:“牛奶” }, { img:'images\Dairy\sour cream.png', 名称:“酸奶油” }, { img:'images\Dairy\酸奶.png', 名字:“酸奶” } ]; 变量项=[{ img:'images\Meat\chicken breast.png', 名称:鸡胸肉 }, { img:'images\Meat\ground beef.png', 名称:“碎牛肉” }, { img:'images\Meat\pork chops.png', 名称:猪排 }, { img:'images\Meat\t-bone.png', 名称:“T骨牛排” } ]; var produceItems=[{ img:“\images\product\avocado.png”, 名称:“鳄梨” }, { img:“\images\product\brocoli.png”, 名称:“西兰花” }, { img:“\images\product\cauliflower.png”, 名称:“花椰菜” }, { img:'images\product\莴苣.png', 名字:“莴苣” } ]; var dairy=document.getElementById'dairy'。addEventListener'click',populateItems; var meat=document.getElementById'meat'。addEventListener'click',populateItems; var product=document.getElementById'product'。addEventListener'click',populateItems; //---------添加到购物车-------// //--------添加到屏幕-------// 函数populateimscategory{ 清晰的大众项目; var-myItems; 开关类别{ “乳制品”案例: myItems=乳制品; 打破 “肉”一案: myItems=肉类项目; 打破 “生产”案例: myItems=生产项目; 打破 违约: } var categoryList=document.queryselectoral'ul'; forvar i=0;i `; } } getElementById'items'。appendcategoryList; 函数clearpopulateItems{ var items=document.getElementById'items' whileitems.firstChild items.removeChilditems.firstChild; } 函数addToCartitem{ document.queryselectoral'ul'。追加` ${item} `; } } 编辑

我不打算复制代码。你必须把它修好

在上一个代码中,您设置了两次乳制品项目。 添加eventListener时,populateItems需要一个参数。 Yo无法执行此操作myItems[i]。addEventListener,因为它不是HTML元素。这是一个对象数组 您尚未声明currentItem。 等
将代码包装到此代码段。出现错误,因为您在未创建的DOM元素上调用代码。首先需要加载DOM,然后可以使用DOM API

document.addEventListener“DOMContentLoaded”函数{ //你的全部代码
}; 我认为你没有id为dairy的元素。这就是为什么它是空的。请先确认已创建元素,然后重试。

谢谢。我想我明白你的意思了,是我的代码顺序不正常吗?或者我缺少创建元素?您有几个错误,例如,在开关的情况下,myItems将是一个对象数组,并且您不能将EventListener添加到myItems[I]中;好吧,我做了,出于某种原因,它仍然给我同样的错误。不过谢谢你。啊,是的,我已经纠正了一个打字错误,但在长度方面仍然给了我同样的错误。