我正在解决this问题。我想在JS中解决它。
我在JS中有一个函数来解决这个问题( is_Happy ),我的所有代码都在下面给出 -
function myFunction() {
var x = document.getElementById("fname");
n = Number(x.value);
document.getElementById("output").innerHTML=
is_Happy(n);
}
function is_Happy(n)
{
if(n<10)
{
if(n==1 || n==7)
return true;
else
return false;
}
else
{
is_Happy( calculate_value( get_digit(n) ) );
}
}
function get_digit(number)
{
var output = [];
var sNumber = number.toString();
for (var i = 0, len = sNumber.length; i < len; i += 1) {
output.push(+sNumber.charAt(i));
}
return output;
}
function calculate_value(num_array)
{
var sum=0;
var i=0;
while(num_array.length>i)
{
number = Number(num_array[i]);
if(number>0)
sum+=num_array[i]*num_array[i];
i++;
}
return sum;
}
&#13;
<p id = "output">character to upper case.</p>
Enter your name: <input type="text" id="fname" onkeyup="myFunction()">
&#13;
问题是如果我输入任何数字,我应该找到一些东西(真/假),但如果我输入任何大于9(10或以上)的数字,我会得到未定义。
有人可以帮忙吗?
答案 0 :(得分:1)
因为你没有在其他部分返回任何东西。
返回is_Happy
return is_Happy( calculate_value( get_digit(n) ) );
遵循工作代码。
function myFunction() {
var x = document.getElementById("fname");
n = Number(x.value);
document.getElementById("output").innerHTML=
is_Happy(n);
}
function is_Happy(n)
{
if(n<10)
{
if(n==1 || n==7)
return true;
else
return false;
}
else
{
return is_Happy( calculate_value( get_digit(n) ) );
}
}
function get_digit(number)
{
var output = [];
var sNumber = number.toString();
for (var i = 0, len = sNumber.length; i < len; i += 1) {
output.push(+sNumber.charAt(i));
}
return output;
}
function calculate_value(num_array)
{
var sum=0;
var i=0;
while(num_array.length>i)
{
number = Number(num_array[i]);
if(number>0)
sum+=num_array[i]*num_array[i];
i++;
}
return sum;
}
<!DOCTYPE html>
<html>
<body>
<p id = "output">character to upper case.</p>
Enter your name: <input type="text" id="fname" onkeyup="myFunction()">
</body>
</html>