未捕获的TypeError:无法读取未定义的属性“对象”

时间:2020-09-19 19:42:28

标签: javascript undefined

这是我的第一个问题,我是新来的。所以我正在上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
}

});

1 个答案:

答案 0 :(得分:0)

圣洁的莫莉guakamolly我发现了什么不对劲。 从另一个我未正确导入的文件中导入函数时发现... (我的意思是所有*)