尝试使用JavaScript获取输入数字的值时出错

尝试使用JavaScript获取输入数字的值时出错,javascript,html,css,Javascript,Html,Css,我试图用Javascript模拟购物车,但每次我更新输入编号的值以更新表时都会收到一个错误:“Uncaught TypeError:无法读取未定义的属性'value'” 当我使用console.log查看该值时,它会显示该值,因此我不知道为什么它会说它无法读取属性值 我不知道怎么了。以下是我将项目添加到表中的函数: function addRowsToTable(product_value, product_name, product_image, product_price, prod

我试图用Javascript模拟购物车,但每次我更新输入编号的值以更新表时都会收到一个错误:“Uncaught TypeError:无法读取未定义的属性'value'”

当我使用console.log查看该值时,它会显示该值,因此我不知道为什么它会说它无法读取属性值

我不知道怎么了。以下是我将项目添加到表中的函数:

    function addRowsToTable(product_value, product_name, product_image, product_price, product_qty, sub_total){
    //console.log(value);
    if (sessionStorage.Total_Items > 0){
        var table = document.getElementById("shop-table");
        var row = table.insertRow(1);
        row.innerHTML = "<tr>\n" +
            "                <td>\n" +
            "                    <button value=\"" + product_value + "\" onclick=\"deleteRowFromTable(this);\">Remove</button>\n" +
            "                </td>\n" +
            "                <td>\n" +
            "                    <img src=\""+ product_image+"\" style=\"width: 60px; height: 80px;\">\n" +
            "                </td>\n" +
            "                <td>" + product_name + "</td>\n" +
            "                <td>\n" +
            "                    <input id=\"" + product_value + "\" type=\"number\" name=\"quantity\" min=\"0\" max=\"20\" value=\""+ product_qty +"\" onclick=\"updateFromShoppingCart(this);\">\n" +
            "                </td>\n" +
            "                <td>"+ product_price +"</td>\n" +
            "                <td>"+ sub_total+"</td>\n" +
            "            </tr>";
    }
}
以下是表格的HTML代码“


除去产品
产品形象
产品说明
数量。
单价
小计
错误图片:


谢谢。

您正在递归调用
updateFromShoppingCart();
而没有传递
元素
参数,因此当它执行时,
元素
未定义,您将在
控制台.log
行上得到该错误


如果删除递归调用,它应该可以工作。

调用
updateFromShoppingCart();
时不带任何参数,因此在打印控制台语句时,它将是未定义的“调用函数时。所以我不明白为什么在哪种情况下它的作用域是正确的?你为什么要递归调用它?如果我增加输入数字的值,我会在console.log(element.value)的末尾得到错误;但它显示了正确的价值。
    function updateFromShoppingCart(element){
    saveItemsQtyToStorage();
    loadItemsQtyFromStorage();

    console.log(element.value);
    if(element.value > 0){
        var table = document.getElementById("shop-table");
        var new_quatity = element.value;
        var id = element.id;
        ItemsQty[id] = new_quatity;
        var parentRowIndex = element.parentNode.parentNode.rowIndex;
        //console.log(ItemsQty[id]);
        table.rows[parentRowIndex].cells[5].innerText = ItemsQty[id] * ItemPrice[id];
        saveItemsQtyToStorage();
        loadItemsQtyFromStorage();
        updateFromShoppingCart();
        cartTotalPrice();
    }
    else{
        deleteRowFromTable(ele);
    }
}
<table id="shop-table">
            <tr>
                <th>Remove Product</th>
                <th>Product Image</th>
                <th>Product Description</th>
                <th>Qty.</th>
                <th>Unit Price</th>
                <th>Subtotal</th>
            </tr>
        </table>