【问题标题】:My square root function isn't working我的平方根函数不起作用
【发布时间】:2017-04-26 05:25:16
【问题描述】:

我正在用 HTML 和 jQuery 构建一个计算器。

看看我的平方根函数。当我按下 sqrt 按钮时,它返回 NaN。为什么?我刚刚尝试输入parseFloat(number),它也返回NaN。请帮帮我!

Jquery:


$(document).ready(function(){
    var testNumLength = function(number) {
        if (number.length > 9) {
            totaldiv.text(number.substr(number.length-9,9));
            if (number.length > 15) {
                number = "";
                totaldiv.text("Err");
            }
        } 
    };
    var number = "";
    var newnumber = "";
    var operator = "";
    var totaldiv = $("#total");
    totaldiv.text("0");
    $("#numbers a").not("#clear,#clearall").click(function(){
        number += $(this).text();
        totaldiv.text(number);
        testNumLength(number);
    });
    $("#operators a, #side a").not("#equals, #decimal").click(function(){
        operator = $(this).text();
        newnumber = number;
        number = "";
        totaldiv.text("0");
        if($(this).attr('id') === "sqrt") {
            operator = "sqrt";
            $("#equals").click();
        }
    });
    $("#clear,#clearall").click(function(){
        number = "";
        totaldiv.text("0");
        if ($(this).attr("id") === "clearall") {
            newnumber = "";
        }
    });
    //Add your last .click() here!
    $("#equals").click(function(){
        if (operator === "+"){
            number = (parseInt(number, 10) + parseInt(newnumber,10)).toString(10);
        } else if (operator === "-"){
            number = (parseInt(newnumber, 10) - parseInt(number,10)).toString(10);
        } else if (operator === "÷"){
            number = (parseInt(newnumber, 10) / parseInt(number,10)).toString(10);
        } else if (operator === "×"){
            number = (parseInt(newnumber, 10) * parseInt(number,10)).toString(10);
        } else if (operator === "sqrt") {
            number = Math.sqrt(parseFloat(number,10)).toString(10);
        }
        totaldiv.text(number);
        testNumLength(number);
        number = "";
        newnumber = "";
    });
    $('#decimal').click(function(){
        var numOfDecs = 0;
        for(var i = 0; i < number.length; i++){
            if(number[i] === ".") {
                totaldiv.text(number[i]);
            }
        }
        if (numOfDecs === 0) {
            number.append('.');
            totaldiv.text(number);
            testNumLengh(number);
        }
    })
});

这是一个小提琴: https://jsfiddle.net/fqdxkL4y/

【问题讨论】:

  • 请添加您的html,或者更好的是,使用您的问题示例创建一个有效的sn-p

标签: jquery calculator


【解决方案1】:

如果您在此处alert,您将看到number 未在此处传递或传递为没有值。

else if (operator === "sqrt") {
    // alert(number);
    number = Math.sqrt(parseFloat(number,10)).toString(10);
}

按照 SK Jajoriya 的建议。但请注意,您必须解决具有长数字的约束。

【讨论】:

  • 如何让它通过?
【解决方案2】:

使用号码=新号码;而不是数字=“”;在运算符中单击函数,因为平方根函数采用数字的值。它适用于您的平方根函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2015-03-04
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多