我的平方根函数不起作用
My square root function isn't working
我正在用 HTML 和 jQuery 构建一个计算器。
看看我的平方根函数。当我按下 sqrt 按钮时,它 returns NaN。为什么?我刚刚尝试输入 parseFloat(number)
并且它也是 returns 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);
}
})
});
这是一个fiddle:
https://jsfiddle.net/fqdxkL4y/
如果您在此处 alert
,您会看到 number
未在此处传递或传递为没有值。
else if (operator === "sqrt") {
// alert(number);
number = Math.sqrt(parseFloat(number,10)).toString(10);
}
根据 SK Jajoriya 的建议。但请注意,您必须解决具有长数字的约束。
使用number = newnumber;而不是数字=“”;在运算符中单击函数,因为平方根函数采用数字值。它适用于您的平方根函数。
我正在用 HTML 和 jQuery 构建一个计算器。
看看我的平方根函数。当我按下 sqrt 按钮时,它 returns NaN。为什么?我刚刚尝试输入 parseFloat(number)
并且它也是 returns 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);
}
})
});
这是一个fiddle: https://jsfiddle.net/fqdxkL4y/
如果您在此处 alert
,您会看到 number
未在此处传递或传递为没有值。
else if (operator === "sqrt") {
// alert(number);
number = Math.sqrt(parseFloat(number,10)).toString(10);
}
根据 SK Jajoriya 的建议。但请注意,您必须解决具有长数字的约束。
使用number = newnumber;而不是数字=“”;在运算符中单击函数,因为平方根函数采用数字值。它适用于您的平方根函数。