Скрипт не работает. Линт говорит, что точка с запятой требуется

Я новичок в программировании на Javascript и столкнулся с ошибкой, с которой не могу разобраться, так как не понимаю код. Линт говорит, что перед строкой "var dString = " 25 сентября 2015 года ";" требуется точка с запятой. У меня это работало, и я не знаю, что я изменил. Я получил код с этой страницы - Как рассчитать разницу в дате в JavaScript. Любая помощь будет принята с благодарностью.

<html>
<head>
    <title>
        Saving
    </title>
</head>
<body>
    <script>
        function myFunction()
        {
            if (txtMoneySaved.value !== "" && !isNaN(txtMoneySaved.value) && txtMoneyGoal.value !== "" && !isNaN(txtMoneyGoal.value))
            {
                // It's a number
                numValue = parseFloat(txtMoneySaved.value);
                DollarGoal = parseFloat(txtMoneyGoal.value);
                document.getElementById("demo").innerHTML = numValue;

                var DateDiff = 
                {
                    inDays: function(d1, d2){
                        var t2 = d2.getTime();
                        var t1 = d1.getTime();
                        return parseInt((t2-t1)/(24*3600*1000),10);
                    },
                    inWeeks: function(d1, d2){
                        var t2 = d2.getTime();
                        var t1 = d1.getTime();
                        return parseInt((t2-t1)/(24*3600*1000*7),10);
                    },
                    inMonths: function(d1, d2){
                        var d1Y = d1.getFullYear();
                        var d2Y = d2.getFullYear();
                        var d1M = d1.getMonth();
                        var d2M = d2.getMonth();
                        return (d2M+12*d2Y)-(d1M+12*d1Y);
                    },
                    inYears: function(d1, d2){
                        return d2.getFullYear()-d1.getFullYear();
                    }
                }

                var dString = "September, 25, 2015";

                var d1 = new Date();
                var d2 = new Date(dString);

                var DolsDay = (DollarGoal-numValue)/DateDiff.inDays(d1,d2);
                var DolsWeek = (DollarGoal-numValue)/DateDiff.inWeeks(d1,d2);
                var DolsMonth = (DollarGoal-numValue)/DateDiff.inMonths(d1,d2);

                document.getElementById("DaysRemaining").innerHTML = "Number of <b>days</b> until "+dString+"<b>:</b> "+DateDiff.inDays(d1, d2)+"<br>Dollars per day to reach $8000<b>:</b> $"+DolsDay.ToFixed(2);
                document.getElementById("WeeksRemaining").innerHTML = "Number of <b>weeks</b> until "+dString+"<b>:</b> "+DateDiff.inWeeks(d1, d2)+"<br>Dollars per week to reach $8000<b>:</b> $"+DolsWeekToFixed(2);
                document.getElementById("MonthsRemaining").innerHTML = "Number of <b>months</b> until "+dString+"<b>:</b> "+DateDiff.inMonths(d1,d2)+"<br>Dollars per month to reach $8000<b>:</b> $"+DolsMonthToFixed(2);
            }
            //else some error message
        }
    </script>

    Enter the amount saved: <input type="text" name="Saved" id="txtMoneySaved" value="100">
    Enter the goal amount:&nbsp;&nbsp;<input type="text" name="Goal" id="txtMoneyGoal" value="8000">

    <button onclick="myFunction()">Try it</button>

    <p id="demo"></p>

    <p id="DaysRemaining"></p>
    <p id="WeeksRemaining"></p>
    <p id="MonthsRemaining"></p>
    <p id="YearsRemaining"></p>

</body>

3 ответа

Решение

Точка с запятой необязательна. Не обращайте внимания на это предупреждение, это не ваша проблема.

У вас есть несколько опечаток:

  1. DolsDay.ToFixed(2) должно быть DolsDay.toFixed(2), Имена методов чувствительны к регистру
  2. Следующие две строки забывают . до ToFixed, а также следует использовать строчные t,
document.getElementById("DaysRemaining").innerHTML = "Number of <b>days</b> until "+dString+"<b>:</b> "+DateDiff.inDays(d1, d2)+"<br>Dollars per day to reach $8000<b>:</b> $"+DolsDay.toFixed(2);
document.getElementById("WeeksRemaining").innerHTML = "Number of <b>weeks</b> until "+dString+"<b>:</b> "+DateDiff.inWeeks(d1, d2)+"<br>Dollars per week to reach $8000<b>:</b> $"+DolsWeek.toFixed(2);
document.getElementById("MonthsRemaining").innerHTML = "Number of <b>months</b> until "+dString+"<b>:</b> "+DateDiff.inMonths(d1,d2)+"<br>Dollars per month to reach $8000<b>:</b> $"+DolsMonth.toFixed(2);

Исправленный пример, все еще без точки с запятой (необязательно, но приятно для удобства чтения): http://codepen.io/paulroub/pen/Lbkno

      ...inYears: function(d1, d2){
                    return d2.getFullYear()-d1.getFullYear();
                }
            };  //This should have the semicolon

            var dString = "September, 25, 2015";

Я скопировал ваш код Javascript сюда. И он сказал мне, в какой строке пропущена точка с запятой. Возможно, вы захотите использовать этот инструмент в будущем.

31                      }
32                  }; // missing semi-colon
33  
34                  var dString = "September, 25, 2015";
    ================^
    lint warning: missing semicolon
35  
36                  var d1 = new Date();

Обратите внимание, что перед указанием номера строки возникает много ошибок. В этом случае вам не хватает точки с запятой после строки 32.

Другие вопросы по тегам