Javascript 获取错误(已在if语句中定义变量)
我在JSlint和JSFiddle中遇到了错误,但是脚本工作得非常好 我想修正错误,但我真的不知道该怎么办 我得到的错误是:“allmonth已定义” javascript(它只是完整脚本的一部分,但这里是有错误的部分)Javascript 获取错误(已在if语句中定义变量),javascript,error-handling,Javascript,Error Handling,我在JSlint和JSFiddle中遇到了错误,但是脚本工作得非常好 我想修正错误,但我真的不知道该怎么办 我得到的错误是:“allmonth已定义” javascript(它只是完整脚本的一部分,但这里是有错误的部分) $。每个(数据.product.variants,函数(索引,变量){ var oldvartile2=variant.title, OldVartTitle=OldVartTitle2.子字符串(OldVartTitle2.indexOf(“:”)+1), newvartit
$。每个(数据.product.variants,函数(索引,变量){
var oldvartile2=variant.title,
OldVartTitle=OldVartTitle2.子字符串(OldVartTitle2.indexOf(“:”)+1),
newvartitle=oldvartitle.substr(3),
拆分=newvartitle.split(“”),
month2=分裂的[1];
如果(month2==‘一月’){
var allmonth='01';
}
如果(month2=='februari'){
var allmonth='02';
}
如果(month2=='maart'){
var allmonth='03';
}
如果(month2=='april'){
var allmonth='04';
}
如果(month2=='mei'){
var allmonth='05';
}
如果(month2==='juni'){
var allmonth='06';
}
如果(month2==='juli'){
var allmonth='07';
}
如果(month2==='augustus'){
var allmonth='08';
}
如果(month2==‘9月’){
var allmonth='09';
}
如果(month2==='oktober'){
var allmonth='10';
}
如果(month2==‘11月’){
var allmonth='11';
}
如果(month2=='december'){
var allmonth='12';
}
var allmonths=splitted[0]+'/'+allmonth+'/'+splitted[2];
$('.multiple_'+index2+'\u variants.datacursusul_'+index2+'\u ul')。append('“+oldvartitle+” );
});
我想根据month2变量包含的内容将“allmonth”变量更改为数字
谢谢 必须将代码块开头的所有内存声明为jslint兼容。So
var全月代码>在一开始就应该是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
,必须将代码块开头的所有内存声明为符合jslint的。Sovar全月代码>在一开始就应该是var的一部分。像这样
var oldvartitle2 = variant.title,
oldvartitle = oldvartitle2.substring(oldvartitle2.indexOf(":") + 1),
newvartitle = oldvartitle.substr(3),
splitted = newvartitle.split(' '),
month2 = splitted[1],
allmonth;
var allmonth = '';
if (month2 === 'januari') {
allmonth = '01';
}
您还必须从其他allmonth
变量中删除var
类似地,对于allmonths
也有更简洁的方法来做类似的事情。一种是用“switch”语句替换这一系列“if”语句。但我会这样做:
var allmonth = '';
if (month2 === 'januari') {
allmonth = '01';
}
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”
(编辑为返回一个两位数的零填充字符串。)有很多更简洁的方法来做类似的事情。一种是用“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”
(编辑为返回一个带零填充的两位数字符串。)您可以使用数组存储月份名称,然后只需使用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
您可以使用一个数组来存储月份名称,然后只需使用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
如上所述,可能整个月都没有申报。不过,您可以稍微重构代码:
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
});
var数据={
产品:{
变体:['maart']
}
}
$.each(data.product.variants,函数(索引,变量){
功能板(数字){
返回编号<10?'0'+编号:编号;
}
var month2=变量,
月份顺序=[“一月”、“二月”、“马尔特”、“等”],
allmonth=pad(月\订单指数(month2)+1);
console.log(所有月份);//03
});
如上所述,可能整个月都没有申报。不过,您可以稍微重构代码:
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
});
var数据={
产品:{
变体:['maart']
}
}
$.each(data.product.variants,函数(索引,变量){
功能板(数字){
返回编号<10?'0'+编号:编号;
}
var month2=变量,
月份顺序=[“一月”、“二月”、“马尔特”、“等”],
allmonth=pad(月\订单指数(month2)+1);
console.log(所有月份);//03
});
每月申报var
位于作用域的顶部,然后对所有分配使用allmonth='01'
&tc。使用switch语句或object也正打算建议这样做。您应该真正考虑在这里使用一个Switt语句,同时在范围的顶部声明ALLWORE。或者数据字典/Objut.Actudio<代码> var A月;code>位于作用域的顶部,然后对所有分配使用allmonth='01'
&tc。使用switch语句或object也正打算建议这样做。您应该真正考虑在这里使用一个Switter语句以及在范围的顶部声明ALLWORE。或者数据字典/对象。