【问题标题】:JSLint Validation error "combine this with the previous var statement"JSLint 验证错误“将此与前面的 var 语句结合起来”
【发布时间】:2023-03-21 12:27:01
【问题描述】:

JSLint 验证错误“将此与之前的 var 语句结合”

我如何结合它,以免出现 JSLint 验证错误?我在 getClassName 函数的代码行中收到验证错误。

$(document).ready(function () {
'use strict';
// This function is used to calculate the date
function dateString(dateToDisplay) {

    var monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
        'July', 'August', 'September', 'October', 'November', 'December'],
        dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
            'Friday', 'Saturday'];

// Use current date if no parameter or bad date provided
    if (dateToDisplay === undefined || !(dateToDisplay instanceof Date)) {
        dateToDisplay = new Date();
    }

    return dayNames[dateToDisplay.getDay()] + ', ' // Day of week: Sunday
        + monthNames[dateToDisplay.getMonth()] + ' ' // Name of month: July
        + dateToDisplay.getDate() + ', ' // Day of month: 20
        + dateToDisplay.getFullYear(); // Year: 1969
}


$('#safetyRecord').hide(); // hides the header with the id of safetyRecord until we are ready to display it later in the code
$('#today').text(dateString()); // changes the text in the span with the id of today to the current date using the dateString function
function getClassName(days) { // this function determines  which css style to apply to the id daysSinceLastAccident and the id message based on the number of days since last accident
    if (days >= 730) { return "great"; }
    if (days >= 180) { return "good"; }
    if (days >= 60) { return "marginal"; }
    if (days >= 14) { return "poor"; }
    if (days >= 0) { return "disaster"; }
}

$('#checkRecord').click(function () { // when the checkRecord button is clicked the number of days since last accident is calculated, storing the number in a variable.
    var userEnteredDate = new Date($('#dateOfLastAccident').val()); // variable that stores user entered date
    var today = new Date(); 
    var minutes = 1000 * 60; // calculation used to convert miliseconds to minutes
    var hours = minutes * 60; // calculation used to conver minutes into hours
    var days = hours * 24; // calculation used to convert hours to days
    var years = days * 365; // calculation used to convert days into years
    var daysSinceAccident = Math.floor((today.getTime() - userEnteredDate.getTime()) / days); // calculation used to find the difference between current date and user entered date as a whole number
    var className = getClassName(daysSinceAccident); // variable clasName finds the correct css style to apply based on daysSinceAccident
    $('#daysSinceLastAccident').text(daysSinceAccident); // replaces the content of the element with id daysSinceLastAccident with the number of days accident-free
    $('#daysSinceLastAccident').removeClass();
    $('#daysSinceLastAccident').addClass(className); // applies css class style to element with id daysSinceLastAccident

    $('#safetyRecord').show(); // Using the same timeframes, a custom message styled with the appropriate css class in the paragraph with id message is displayed.
    $('#message').removeClass(); 
    $('#message').addClass(className);
    $('#message').html(className + " is the current safety record.");
});

});

【问题讨论】:

  • 这是整个代码吗?这是什么 prev var 语句。

标签: javascript


【解决方案1】:

此错误表示您的某些函数中有多个var 语句,例如:

var x = 1;
var y = 2;

JSLint 希望您将变量声明组合在一个 var 语句中,例如:

var x = 1,
    y = 2;

【讨论】:

  • 我想通了。由于某种原因,JSLint 验证错误表明错误出现在 getClassName 函数中,但实际上它是 .click 函数中的变量。现在说得通了,JSLint 验证将我引导到错误的代码行,这让我很反感。
【解决方案2】:

我认为 JSLint 指的是您的这几行代码(靠近您提供的代码的底部):

var userEnteredDate = new Date($('#dateOfLastAccident').val()); // variable that stores user entered date
var today = new Date(); 
var minutes = 1000 * 60; // calculation used to convert miliseconds to minutes
var hours = minutes * 60; // calculation used to conver minutes into hours
var days = hours * 24; // calculation used to convert hours to days
var years = days * 365; // calculation used to convert days into years
var daysSinceAccident = Math.floor((today.getTime() - userEnteredDate.getTime()) / days); // calculation used to find the difference between current date and user entered date as a whole number
var className = getClassName(daysSinceAccident); // variable clasName finds the correct css style to apply based on daysSinceAccident

您可以通过用逗号分隔每个变量来避免多次声明它们:

var userEnteredDate = new Date($('#dateOfLastAccident').val()),
    today = new Date(),
    minutes = 1000 * 60,
    hours = minutes * 60,
    days = hours * 24,
    years = days * 36,
    daysSinceAccident = Math.floor((today.getTime() - userEnteredDate.getTime()) / days),
    className = getClassName(daysSinceAccident);

【讨论】:

  • 是的,就是这样。指向 getClassName 函数中的代码行的 JSLint 错误让我大吃一惊。谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2017-01-01
  • 2020-08-03
  • 2012-06-03
  • 2016-12-29
  • 2022-12-06
  • 2010-10-14
相关资源
最近更新 更多