当前位置: 首页 > 知识库问答 >
问题:

将数字乘以Document.getElementById(“myId”)时获取NaN值

柴彬
2023-03-14

我正在学习JavaScript。我想对每个产品做小计,但我不知道为什么我一直得到nan?这是我的代码。我找不到这个问题。可能数值出了问题还是怎么的?

null

js prettyprint-override">    var value;

    var price = document.getElementById("price");

    function priceTotal() {
        var total = value * price;
        document.getElementById("subtotal").innerText = total;
    }

    $('.increment-btn').click(function(e) {
        e.preventDefault();
        var incre_value = $(this).parents('.quantity').find('#qty-input').val();
        var value = parseInt(incre_value, 10);
        value = isNaN(value) ? 0 : value;
        if (value < 100) {
            value++;
            $(this).parents('.quantity').find('#qty-input').val(value);
        }

        priceTotal();
    });

    $('.decrement-btn').click(function(e) {
        e.preventDefault();
        var decre_value = $(this).parents('.quantity').find('#qty-input').val();
        var value = parseInt(decre_value, 10);
        value = isNaN(value) ? 0 : value;
        if (value > 1) {
            value--;
            $(this).parents('.quantity').find('#qty-input').val(value);
        }

        priceTotal();
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<td class="text-center" id="price">Rp. {{ number_format($cartlist->product->productprice)}}</td>
                                <td class="cart-product-quantity text-center" width="132px">
                                    <div class="input-group quantity">
                                        <div class="input-group-prepend decrement-btn changeQuantity" style="cursor: pointer">
                                            <span class="input-group-text">-</span>
                                        </div>
                                        <input type="text" class="qty-input form-control text-center" maxlength="2" value="1" id="qty-input">
                                        <div class="input-group-append increment-btn changeQuantity" style="cursor: pointer">
                                            <span class="input-group-text">+</span>
                                        </div>
                                    </div>
                                </td>

                                <!-- <input style="text-align:center; width: 70px;" type="text" name="subtotal" id="subtotal" value="{{$cartlist->product->productprice}}" > -->
                                <td class="text-center">
                                    <span id="subtotal">Rp. {{ number_format($cartlist->product->productprice)}}</span>
                                </td>

null

共有1个答案

汪翰墨
2023-03-14

两个问题:

  • 1--您需要将valueonclick()处理程序传递给priceTotal()函数。我建议您快速浏览一下MDN Web文档:封装,特别是:

封装是将数据和函数打包到一个组件(例如,一个类)中,然后控制对该组件的访问,使对象成为一个“黑盒”。

  • 2--您将price设置为var price=document.getElementByID(“price”);,然后在乘法中使用它。你不能那样做,你必须在乘法中使用一个数字,而不是HTML元素。此外,price元素甚至不是输入,因此您也不能使用它的val()函数。我将其静态设置为1以证明我的观点。

null

    var value;

    var price = 1; // you can't use an element as an integer

    function priceTotal(value) {
        var total = value * price;
        document.getElementById("subtotal").innerText = total;
    }

    $('.increment-btn').click(function(e) {
        e.preventDefault();
        var incre_value = $(this).parents('.quantity').find('#qty-input').val();
        var value = parseInt(incre_value, 10);
        value = isNaN(value) ? 0 : value;
        if (value < 100) {
            value++;
            $(this).parents('.quantity').find('#qty-input').val(value);
        }

        priceTotal(value);
    });

    $('.decrement-btn').click(function(e) {
        e.preventDefault();
        var decre_value = $(this).parents('.quantity').find('#qty-input').val();
        var value = parseInt(decre_value, 10);
        value = isNaN(value) ? 0 : value;
        if (value > 1) {
            value--;
            $(this).parents('.quantity').find('#qty-input').val(value);
        }

        priceTotal(value);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<td class="text-center" id="price">Rp. {{ number_format($cartlist->product->productprice)}}</td>
                                <td class="cart-product-quantity text-center" width="132px">
                                    <div class="input-group quantity">
                                        <div class="input-group-prepend decrement-btn changeQuantity" style="cursor: pointer">
                                            <span class="input-group-text">-</span>
                                        </div>
                                        <input type="text" class="qty-input form-control text-center" maxlength="2" value="1" id="qty-input">
                                        <div class="input-group-append increment-btn changeQuantity" style="cursor: pointer">
                                            <span class="input-group-text">+</span>
                                        </div>
                                    </div>
                                </td>

                                <!-- <input style="text-align:center; width: 70px;" type="text" name="subtotal" id="subtotal" value="{{$cartlist->product->productprice}}" > -->
                                <td class="text-center">
                                    <span id="subtotal">Rp. {{ number_format($cartlist->product->productprice)}}</span>
                                </td>
 类似资料:
  • 问题内容: 我正在使用pandas库读取一些CSV数据。在我的数据中,某些列包含字符串。该字符串是一个可能的值,一个空字符串也可以。我设法让大熊猫以字符串形式读取“ nan”,但我不知道如何获取它而不读取作为NaN的空值。这是示例数据和输出 它正确地写着“男”为字符串“南”,但仍读取空单元格作为NaN的。我想传递的参数read_csv(带),但它仍然读取空单元格作为NaN的。 我知道我可以在读取后

  • 我正在尝试使用JSDoc语法记录我的函数。 上面的函数接受单个参数,可以是JQuery对象,也可以是。 getElementById返回值的有效JSDoc类型是什么? 例如,以下两项均有效: 另外,我以后在哪里可以找到这个?

  • 我正在用熊猫库读取一些CSV数据。在我的数据中,某些列包含字符串。字符串是一个可能的值,空字符串也是。我设法让熊猫把“楠”读成一个字符串,但我不知道如何让它不把一个空值读成NaN。这是样本数据和输出 它正确地将“nan”读取为字符串“nan”,但仍然将空单元格读取为nan。我尝试在参数中传入以读取\u csv(使用),但它仍然将空单元格读取为nan。 我意识到我可以在读取后用fillna填充值,但

  • 问题内容: 是否有可能以某种方式返回0而不是在JavaScript中解析值时返回? 如果为空,则返回。 是否可以在JavaScript中执行类似的操作来检查? 或者,也许还有另一个功能或jQuery插件可以做类似的事情? 问题答案: 当不与布尔值一起使用时,逻辑OR()运算符如果可以被评估为true,则返回第一个表达式(),否则返回第二个表达式(0)。返回值为NaN。NaN的计算结果为false,

  • 问题内容: 当我在Python中进行浮点除法时,如果除以零,则会出现异常: 我真的很想得到或取而代之(因为或会正确传播到计算的其余部分,而不会杀死我的程序)。 我怎样才能做到这一点? 问题答案: 实现此行为的最简单方法是使用而不是Python默认类型: 当然,这需要NumPy。您可以用来微调错误处理。

  • 问题内容: 所以, 问题 我对行乘法有问题。在SQL中,有一个函数可以计算一组行中某个字段的总和。我想得到乘法,即表 这将是作为一个结果。我正在使用 DOUBLE 数据类型来存储我的数据值。 我的方法 从学校数学知道,-可以用来创建所需的表达式,例如: -在这里您会看到此方法的弱点-由于何时未定义-我需要在计算整个表达式之前计算负号。该小提琴提供了示例数据和对此的查询。另一个缺点是,我们需要确定列