这是我的第一个问题,我是新来的。所以我正在上Udemy的javascript课程,这是我的问题:
我在执行函数之前定义了一个参数(对象),但是浏览器在上面抛出一个错误。 所以我在执行功能之前将console.log记录下来,它返回的数据应该是这样, 但是在函数中使用它时会出错,提示它是未定义的。
在失去发现错误的希望后,我什至从课程中的原始程序中复制了粘贴代码,但仍然会引发错误!所以我认为代码不是问题,而是其他问题。也许你知道吗?无论如何,这是代码。
const controlList = () => {
// Create a new list IF there in none yet
if (!state.list) state.list = new List();
// Add each ingredient to the list and UI
console.log(state.recipe.ingredients);
state.recipe.ingredients.forEach(el => {
const item = state.list.addItem(el.count, el.unit, el.ingredient);
console.log(state.list.items);
console.log(item); // HERE IS OK
listView.renderItem(item); // THIS LINE THROWS MISTAKE
});
}
export const renderItem = item => {
const markup = `
<li class="shopping__item" data-itemid=${item.id}>
<div class="shopping__count">
<input type="number" value="${item.count}" step="${item.count}" class="shopping__count-value">
<p>${item.unit}</p>
</div>
<p class="shopping__description">${item.ingredient}</p>
<button class="shopping__delete btn-tiny">
<svg>
<use href="img/icons.svg#icon-circle-with-cross"></use>
</svg>
</button>
</li>
`;
elements.shopping.insertAdjacentHTML('beforeend', markup);
};
// controlList()在事件监听器中被调用 在这里
elements.recipe.addEventListener('click', e => {
if(e.target.matches('.btn-decrease, .btn-decrease *')) {
// Decrrease button is clicked
if (state.recipe.servings > 1) {
state.recipe.updateServings('dec');
recipeView.updateServingsIngredients(state.recipe);
}
} else if (e.target.matches('.btn-increase, .btn-increase *')) {
// Increase button is clicked
state.recipe.updateServings('inc');
recipeView.updateServingsIngredients(state.recipe);
} else if (e.target.matches('.recipe__btn--add, .recipe__btn--add *')) {
// Add ingredients to shopping list
controlList(); <---------------- HERE
}
});
答案 0 :(得分:0)
圣洁的莫莉guakamolly我发现了什么不对劲。 从另一个我未正确导入的文件中导入函数时发现... (我的意思是所有*)