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

标签 javascript html css

我正在尝试仅使用 Javascript 模拟购物车,但每次更新输入数字的值以更新表格时都会出现错误:“未捕获类型错误:无法读取未定义的属性‘值’”

当我使用 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>";
    }
}

这是我使用 onchange 事件更改输入数字标签的值后更新表格的函数:

    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);
    }
}

这是表格的 HTML 代码"

<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>

错误图片: Error

谢谢。

最佳答案

你在递归调用 updateFromShoppingCart(); 而没有传递 element 参数,所以当它执行时, element 是未定义的,你将在 console.log 行中收到该错误。

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

关于javascript - 尝试使用 JavaScript 获取输入数字的值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429354/

相关文章:

javascript - 在外部单击时隐藏侧边栏组件

html - 导航链接的背景图片

javascript - 调整使用 window.open 创建的窗口大小

javascript - 通过 Javascript 中的开始按钮从一页链接到另一页

javascript - Angular 路由漂亮 URL 错误

html - 如何对齐我的文本元素?

html - Twitter Bootstrap nav Collapse 下拉菜单内容重叠?

javascript - 有什么办法可以像金字塔一样塑造输入文本框吗?

javascript - 从 JavaScript 数组中获取随机项

javascript - 解析来自 API 的响应