JS脚本中出现意外的未定义值

时间:2016-01-01 06:39:48

标签: javascript html algorithm

我正在解决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;
&#13;
&#13;

问题是如果我输入任何数字,我应该找到一些东西(真/假),但如果我输入任何大于9(10或以上)的数字,我会得到未定义。

有人可以帮忙吗?

1 个答案:

答案 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>