Меню

Tofixed is not a function ошибка

Здесь я пытаюсь добавить два десятичных значения в строку var totalSum = (grandTotal + getShippingCost).toFixed(3); и поместить значение в var getSumTd = $(«tr#sumTr»).find(«span#sumSpan»);. Но проблема в том, что var totalSum = (grandTotal + getShippingCost).toFixed(3); выдает ошибку, говорящую Uncaught TypeError: value.toFixed is not a function.

Любая помощь с моим кодом будет большой помощью.

Ниже мой скрипт

<script>
$('button#value-plus').on('click', function () {
    debugger;
    var divUpd = $(this).closest("tr").find('#qnty');
    var subtotalcontainer = $(this).closest("tr").find('span#subtotal');
    var mainGrandTotalcontainer = $("tr#mainGtTr").find("#mainGt");
    var mainGtVal = parseFloat($("tr#mainGtTr").find('span#shippingCost').text());

    var getSumTd = $("tr#sumTr").find("span#sumSpan");
    var getShippingCost = parseFloat($("tr#mainGtTr").find('span#mainGt1').text());

    var bklId = $(this).closest("tr").find('#pid').val();
    var url = "/Product/incrementcart";
    $.getJSON(url, { prdid: bklId }, function (data) {
        debugger;
        divUpd.val(data.qty);
        var subTotal = data.qty * data.price;
        subtotalcontainer.text(subTotal.toFixed(2));

        var grandTotal = (mainGtVal + data.price).toFixed(3);
        mainGrandTotalcontainer.text(grandTotal);

        var totalSum = (grandTotal + getShippingCost).toFixed(3);
        getSumTd.text(totalSum);

    }).success(function () {
        debugger
        var url = "/Product/cartupdate";
        $.get(url, function (data) {
            debugger;
            $(".shopping_button").html(data);
        })
    });
});   

Ниже мой HTML

     <tbody>
                        @foreach (var item in Model)
                        {
                            <tr>
                                @Html.HiddenFor(model => item.ProductId, htmlAttributes: new { @id = "pid" })
                                <td data-title = "Product Image &amp; name" class = "t_md_align_c">
                                    <img src = "images/quick_view_img_10.jpg" alt = "" class = "m_md_bottom_5 d_xs_block d_xs_centered">
                                    <a href = "#" class = "d_inline_b m_left_5 color_dark">@Html.DisplayFor(modelItem => item.ProductName)</a>
                                </td>
                                <td data-title = "Stock">
                                    @Html.DisplayFor(modelItem => item.Instock)
                                </td>
                                <td data-title = "Price">
                                    <p class = "f_size_large color_dark">$@Html.DisplayFor(modelItem => item.ProductPrice)</p>
                                </td>
                                <td data-title = "Quantity">
                                    <div class = "clearfix quantity r_corners d_inline_middle f_size_medium color_dark m_bottom_10">
                                        <button class = "bg_tr d_block f_left" data-direction = "down" id = "value-minus">-</button>
                                        <input type = "text" name = "" id = "qnty" readonly value = "@item.Quantity" class = "f_left">
                                        <button class = "bg_tr d_block f_left" data-direction = "up" id = "value-plus">+</button>
                                    </div>
                                </td>
                                <td data-title = "Subtotal">
                                    <p class = "f_size_large fw_medium scheme_color">$<span id = "subtotal">@Html.DisplayFor(modelItem => item.Total)</span></p>
                                </td>
                                <td data-title = "Remove">
                                    <a href = "#" class = "color_dark"><i class = "fa fa-times f_size_medium m_right_5"></i>Remove</a><br>
                                </td>
                            </tr>
                        }
                        <tr id = "mainGtTr">
                            <td colspan = "4" class = "v_align_m d_ib_offset_large t_xs_align_l">
                                <div class = "d_ib_offset_0 d_inline_middle half_column d_xs_block w_xs_full m_xs_bottom_5">
                                    <button class = "button_type_6 bg_scheme_color f_size_large r_corners tr_all_hover color_light m_bottom_20">Check Out </button>
                                </div>
                                <p class = "fw_medium f_size_large t_align_r scheme_color p_xs_hr_0 d_inline_middle half_column d_ib_offset_normal d_xs_block w_xs_full t_xs_align_c">Grand Total:</p>
                            </td>
                            <td colspan = "2" class = "v_align_m">
                                <p class = "fw_medium f_size_large scheme_color m_xs_bottom_10">$<span id = "mainGt">@ViewBag.SubTotal</span></p>
                                <p style = "font-style:oblique">Include <i class = "fa fa-rupee"></i> <span id = "shippingCost">@ViewBag.ShipingCost</span> shipping cost</p>
                            </td>
                        </tr>
                        @{
                            var sum = ViewBag.SubTotal + ViewBag.ShipingCost;
                        }
                        <tr id = "sumTr">
                            <td>
                                <span id = "sumSpan">@sum</span>
                            </td>
                        </tr>
                    </tbody>

Перейти к ответу
Данный вопрос помечен как решенный


Ответы
5

Метод toFixed() форматирует номер. Текущее значение имеет тип нить и вместо арифметическое сложение происходит конкатенация строк. Преобразуйте их в номер перед добавлением:

Изменять:

var totalSum = (grandTotal + getShippingCost).toFixed(3);

К

var totalSum = (Number(grandTotal) + Number(getShippingCost)).toFixed(3);

Метод toFixed недоступен для значений non-number. вам нужно сначала проанализировать значение до Число, чем вы можете использовать метод toFixed.

let str = `123.123456`

console.info(Number(str).toFixed(3))
console.error(str.toFixed(3))

Только значение float, int имеют toFixed. контролируйте свою переменную и смотрите, какого они типа.

console.info(("4" + 5).toFixed(3)); // error

console.info((5 + 5).toFixed(3)); // yeep its working

Проверьте тип данных обеих переменных. Они должны быть числовыми, а не строковыми. Метод toFixed не будет работать для других типов данных. Также убедитесь, что когда вы конвертируете строку в число, значение в строке внутренне является числом, например «22», а не «привет», поскольку преобразование его в число может дать вам NaN, и ваша программа может завершиться ошибкой.

.toFixed() является только функцией числа и возвращает строку. Используя toFixed в нескольких присваиваниях, вы превращаете число в строку, объединяете несколько строк вместе, а затем пытаетесь выполнить числовую операцию над строкой.

Следующий код выдаст ошибку.

var grandTotal = (mainGtVal + data.price).toFixed(3); // grandTotal is a string
var totalSum = (grandTotal + getShippingCost).toFixed(3); // grandTotal + getShippingCost is a String, which doesn't have the toFixed function

Если вам нужно избежать ошибок с плавающей запятой, преобразуйте строку в число, прежде чем добавлять ее к другому числу, например:

var grandTotal = (mainGtVal + data.price).toFixed(3);
grandTotal = Number.parseFloat(grandTotal);
var totalSum = (grandTotal + getShippingCost).toFixed(3);

В противном случае подождите, пока вы не закончите свои расчеты, чтобы использовать toFixed для округления до количества знаков после запятой, которое вы хотите отобразить, например:

var grandTotal = mainGtVal + data.price;
var totalSum = (grandTotal + getShippingCost).toFixed(3);
grandTotal = grandTotal.toFixed(3);

Другие вопросы по теме

Add Answer
|
View In TPC Matrix

Technical Problem Cluster First Answered On
July 2, 2021

Popularity
10/10

Helpfulness
4/10


Contributions From The Grepper Developer Community

Contents

Code Examples

  • javascript tofixed is not a function
  • Related Problems

  • tofixed is not a function
  • sub_total.toFixed is not a function
  • TPC Matrix View Full Screen

    javascript tofixed is not a function

    Comment

    0


    Popularity

    10/10 Helpfulness
    4/10
    Language
    javascript

    Source: stackoverflow.com

    Tags: function
    javascript
    tofixed

    Singh99

    Contributed on Jul 02 2021

    Singh99

    541 Answers  Avg Quality 6/10


    Здесь я пытаюсь добавить два десятичных значения в строку var totalSum = (grandTotal + getShippingCost).toFixed(3); и поместить значение в var getSumTd = $("tr#sumTr").find("span#sumSpan");.

    Но проблема в том, что var totalSum = (grandTotal + getShippingCost).toFixed(3); выдает ошибку, говоря Uncaught TypeError: value.toFixed is not a function .

    Любая помощь с моим кодом будет отличной помощью.

    Ниже мой сценарий

    <script>
    $('button#value-plus').on('click', function () {
        debugger;
        var divUpd = $(this).closest("tr").find('#qnty');
        var subtotalcontainer = $(this).closest("tr").find('span#subtotal');
        var mainGrandTotalcontainer = $("tr#mainGtTr").find("#mainGt");
        var mainGtVal = parseFloat($("tr#mainGtTr").find('span#shippingCost').text());
    
        var getSumTd = $("tr#sumTr").find("span#sumSpan");
        var getShippingCost = parseFloat($("tr#mainGtTr").find('span#mainGt1').text());
    
        var bklId = $(this).closest("tr").find('#pid').val();
        var url = "/Product/incrementcart";
        $.getJSON(url, { prdid: bklId }, function (data) {
            debugger;
            divUpd.val(data.qty);
            var subTotal = data.qty * data.price;
            subtotalcontainer.text(subTotal.toFixed(2));
    
            var grandTotal = (mainGtVal + data.price).toFixed(3);
            mainGrandTotalcontainer.text(grandTotal);
    
            var totalSum = (grandTotal + getShippingCost).toFixed(3);
            getSumTd.text(totalSum);
    
        }).success(function () {
            debugger
            var url = "/Product/cartupdate";
            $.get(url, function (data) {
                debugger;
                $(".shopping_button").html(data);
            })
        });
    });   
    

    Ниже мой HTML

         <tbody>
                            @foreach (var item in Model)
                            {
                                <tr>
                                    @Html.HiddenFor(model => item.ProductId, htmlAttributes: new { @id = "pid" })
                                    <td data-title="Product Image &amp; name" class="t_md_align_c">
                                        <img src="images/quick_view_img_10.jpg" alt="" class="m_md_bottom_5 d_xs_block d_xs_centered">
                                        <a href="#" class="d_inline_b m_left_5 color_dark">@Html.DisplayFor(modelItem => item.ProductName)</a>
                                    </td>
                                    <td data-title="Stock">
                                        @Html.DisplayFor(modelItem => item.Instock)
                                    </td>
                                    <td data-title="Price">
                                        <p class="f_size_large color_dark">$@Html.DisplayFor(modelItem => item.ProductPrice)</p>
                                    </td>
                                    <td data-title="Quantity">
                                        <div class="clearfix quantity r_corners d_inline_middle f_size_medium color_dark m_bottom_10">
                                            <button class="bg_tr d_block f_left" data-direction="down" id="value-minus">-</button>
                                            <input type="text" name="" id="qnty" readonly value="@item.Quantity" class="f_left">
                                            <button class="bg_tr d_block f_left" data-direction="up" id="value-plus">+</button>
                                        </div>
                                    </td>
                                    <td data-title="Subtotal">
                                        <p class="f_size_large fw_medium scheme_color">$<span id="subtotal">@Html.DisplayFor(modelItem => item.Total)</span></p>
                                    </td>
                                    <td data-title="Remove">
                                        <a href="#" class="color_dark"><i class="fa fa-times f_size_medium m_right_5"></i>Remove</a><br>
                                    </td>
                                </tr>
                            }
                            <tr id="mainGtTr">
                                <td colspan="4" class="v_align_m d_ib_offset_large t_xs_align_l">
                                    <div class="d_ib_offset_0 d_inline_middle half_column d_xs_block w_xs_full m_xs_bottom_5">
                                        <button class="button_type_6 bg_scheme_color f_size_large r_corners tr_all_hover color_light m_bottom_20">Check Out </button>
                                    </div>
                                    <p class="fw_medium f_size_large t_align_r scheme_color p_xs_hr_0 d_inline_middle half_column d_ib_offset_normal d_xs_block w_xs_full t_xs_align_c">Grand Total:</p>
                                </td>
                                <td colspan="2" class="v_align_m">
                                    <p class="fw_medium f_size_large scheme_color m_xs_bottom_10">$<span id="mainGt">@ViewBag.SubTotal</span></p>
                                    <p style="font-style:oblique">Include <i class="fa fa-rupee"></i> <span id="shippingCost">@ViewBag.ShipingCost</span> shipping cost</p>
                                </td>
                            </tr>
                            @{
                                var sum = ViewBag.SubTotal + ViewBag.ShipingCost;
                            }
                            <tr id="sumTr">
                                <td>
                                    <span id="sumSpan">@sum</span>
                                </td>
                            </tr>
                        </tbody>
    

    4 ответа

    Лучший ответ

    toFixed() форматирует число . Текущее значение имеет тип строка и вместо арифметического сложения , конкатенация строк происходит. Преобразуйте их в номер перед добавлением и использованием toFixed():

    Изменить:

    var totalSum = (grandTotal + getShippingCost).toFixed(3);
    

    К

    var totalSum = (Number(grandTotal) + Number(getShippingCost)).toFixed(3);
    


    2

    Mamun
    17 Фев 2019 в 09:19

    Проверьте тип данных обеих переменных. Они должны быть числовыми, а не строками. Метод toFixed не будет работать для других типов данных. Также убедитесь, что при преобразовании строки в число значение в строке является внутренним числом типа «22», а не «привет», так как преобразование его в число может дать вам NaN, и ваша программа может завершиться ошибкой.


    0

    Sagar Agrawal
    17 Фев 2019 в 12:01

    Только значение с плавающей запятой, значение int имеет toFixed. контролировать вашу переменную и посмотреть, какой тип они.

    console.log(("4" + 5).toFixed(3)); // error
    
    console.log((5 + 5).toFixed(3)); // yeep its working


    0

    Alen.Toma
    17 Фев 2019 в 09:02

    toFixed метод недоступен для non-number значений. вам нужно разобрать значение в номер первым, чем вы можете использовать метод toFixed.

    let str = `123.123456`
    
    console.log(Number(str).toFixed(3))
    console.error(str.toFixed(3))


    1

    Code Maniac
    17 Фев 2019 в 09:02

    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии

    А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • To run this application you must install net как исправить ошибку
  • Tnt premier неизвестная ошибка вылазит на тв