意外的令牌(对于javascript

时间:2014-08-03 08:01:01

标签: javascript for-loop token

我想在javascript中编写一个算法,我确信我写的是真的。算法从用户给出一个数字,并给用户提供结果:1 + 3 + 5 + ... +(2n + 1)和" n"是变种。 javascript给了我错误:calc()没有定义,意外的令牌;

<html>
<head>
    <title>Algorithm</title>
    <script type="text/javascript">
        function calc(){
            var n = document.getElementById('value').value;
            var sum = 0, i = 1, k = 0;
            for(k=0,k<n,k++){
            sum = sum += i;
            i+=2;
            k++;
            }
            document.getElementById('answer').innerHTML = sum;
        }
    </script>
</head>
<body>
    <input type="text" id="value" placeholder="Enter your number"/>
    <button onclick="calc()">OK</button><br/>
    <h1 id="answer"></h1>
</body>

5 个答案:

答案 0 :(得分:3)

问题是您的for循环语法。您需要使用分号;来分隔语句:

for( k = 0; k < n; k++ ){
 ...
}

取自MDN documentation

  

创建一个循环,该循环由三个可选表达式组成,括在括号中,用分号分隔,然后是循环中执行的语句。


JavaScript引擎无法解析你的for循环,然后遇到循环的结束括号(因为它仍在试图解析循环的条件,所以它并不期待)。

答案 1 :(得分:2)

for()语句需要用分号(;)代替逗号(,)。

for (var k=0; k < n; k++) { 

“jshint”工具可以非常有助于捕捉javascript中的错误。在jshint.com

上有一个网络版本

答案 2 :(得分:1)

for(k=0,k<n,k++){

您使用逗号而不是分号。

答案 3 :(得分:1)

这是因为;语法中你应该,而不是for

for(k=0;k<n;k++){...}

答案 4 :(得分:0)

您的for声明正在使用commas而不是semi-colons。 将其更改为使用;

for(k=0,k<n,k++){
    sum = sum += i;
    i+=2;
    k++;
}