我在JSlint和JSFiddle中遇到错误,但脚本运行完美。
我想修复错误,但我真的不知道该怎么做。
我得到的错误是:' allmonth已经定义'
javascript(它只是完整脚本的一部分,但这里是错误的部分)
$.each(data.product.variants, function (index, variant) {
var oldvartitle2 = variant.title,
oldvartitle = oldvartitle2.substring(oldvartitle2.indexOf(":") + 1),
newvartitle = oldvartitle.substr(3),
splitted = newvartitle.split(' '),
month2 = splitted[1];
if (month2 === 'januari') {
var allmonth = '01';
}
if (month2 === 'februari') {
var allmonth = '02';
}
if (month2 === 'maart') {
var allmonth = '03';
}
if (month2 === 'april') {
var allmonth = '04';
}
if (month2 === 'mei') {
var allmonth = '05';
}
if (month2 === 'juni') {
var allmonth = '06';
}
if (month2 === 'juli') {
var allmonth = '07';
}
if (month2 === 'augustus') {
var allmonth = '08';
}
if (month2 === 'september') {
var allmonth = '09';
}
if (month2 === 'oktober') {
var allmonth = '10';
}
if (month2 === 'november') {
var allmonth = '11';
}
if (month2 === 'december') {
var allmonth = '12';
}
var allmonths = splitted[0] + '/' + allmonth + '/' + splitted[2];
$('.multiple_' + index2 + '_variants .datacursusul_' + index2 + '_ul').append('<li class="' + allmonths + '">' + oldvartitle + '</li>');
});
我想改变“allmonth”&#39;变量到一个数字取决于month2变量包含的内容。
谢谢!
答案 0 :(得分:2)
您必须将代码块开头的所有内存声明为jslint兼容。所以var allmonth;
应该在一开始就成为var的一部分。像这样
var oldvartitle2 = variant.title,
oldvartitle = oldvartitle2.substring(oldvartitle2.indexOf(":") + 1),
newvartitle = oldvartitle.substr(3),
splitted = newvartitle.split(' '),
month2 = splitted[1],
allmonth;
您还必须从其他allmonth
变量中删除var。
与allmonths
类似。
答案 1 :(得分:1)
var allmonth = '';
if (month2 === 'januari') {
allmonth = '01';
}
答案 2 :(得分:1)
有更简洁的方法来做这样的事情。一种是用“switch”语句替换那一系列的“if”语句。但我这样做的方式是这样的:
var month_names = ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'];
var month_index = month_names.indexOf(month2) + 1;
var allmonth = ("0" + month_index).substr(-2);
请注意,如果未找到匹配项,则allmonth将为“00”。
(编辑返回零填充的两位数字符串。)
答案 3 :(得分:1)
如上所述,这可能是未公开的。但是,您可以轻松地重构代码:
var data = {
product: {
variants: ['maart']
}
}
$.each(data.product.variants, function (index, variant) {
function pad(number) {
return number < 10 ? '0' + number : number;
}
var month2 = variant,
months_order = ['januari', 'februari', 'maart', 'etc'],
allmonth = pad(months_order.indexOf(month2) + 1);
console.log(allmonth); // 03
});
答案 4 :(得分:0)
您可以使用数组来存储月份名称,然后只需使用indexOf
获取索引,并在适用的情况下将其填充为零。
var monthList = ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'];
var month2 = 'maart';
function getMonth(month) {
var num = monthList.indexOf(month) + 1;
if (num === 0) return null;
return num.toString().length === 1 ? '0' + num : num;
}
console.log(getMonth(month2)); // 03