这个简单的JavaScript代码有什么问题?

时间:2013-11-25 19:08:49

标签: javascript html

我想制作一个可以总结给定数字中所有数字的程序。我希望我的脚本在点击按钮时返回结果请帮我在代码中找到错误。感谢

<!doctype html>
<html>
<head>
<script type="text/javascript">
function sumdigits()
{
    var num=document.getElementById("a").value;
    var len=num.length();
    alert(len);

    if(len!=0)
    {
        var sum=0;
        var ldigit=0;

        while(num!=0)
        {
            ldigit=num%10;
            sum+=ldigit;
            num/=10;
        }
    }
    document.getElementById("result").innerHTML="Sum of digits of the given number="+sum;
}
</script>
</head>

<body>
    Enter a number: <input type="text" id="a" name="t1"><br/>
    <input type="button" name="sub" value="Submit" onClick="sumdigits()">
    <div id="result">&nbsp;</div>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

DEMO

onClick应为onclicklength()应为lengthsum不得超出范围

function sumdigits(){

    var num = document.getElementById("a").value;
    var len = num.length;   // note "length"
    var sum;                // "sum" scope
    alert(len);

    if(len!==0){
        sum = 0;
        var ldigit=0;

        while(num!==0){
            ldigit=num%10;
            sum += ldigit;
            num /= 10;
        }
    }
    document.getElementById("result").innerHTML="Sum of digits of the given number = "+ sum;

}

这是如何让它发挥作用,现在,我不知道你想在那里应用什么数学以及它的目的是什么......

答案 1 :(得分:0)

脚本中断的主要原因是因为您在num变量而不是num.length上调用length()。下面是一个工作小提琴的链接以及其他一些调整(检查值是否为整数等)。

http://jsbin.com/uBAyOJep/1/

<!doctype html>
<html>
<head>

</head>

<body>
    <form onsubmit="sumdigits()">
    Enter a number: <input type="text" id="a" name="t1"><br/>
    <input type="button" name="sub" value="Submit" onClick="sumdigits()">
    <div id="result">&nbsp;</div>
    </form>
</body>
</html>

function sumdigits()
{
    var sum = 0,
        num = document.getElementById("a").value,
        len = num.length,
        result = document.getElementById("result");

    if( len !== 0 ){
        for( var i = 0; i < len; i++){
            var lineValue = parseInt(num[i], 0);
            if ( !isNaN(lineValue) ) {
                sum += lineValue;
            }
        }
    }

    result.innerHTML="Sum of digits of the given numbers = " + sum;

}