Javascript AddClass以匹配语句
我试图将Javascript AddClass以匹配语句,javascript,jquery,Javascript,Jquery,我试图将tbody分配到两个不同类中的一个。我似乎无法运行if语句,也许我没有正确使用语法? 条件1:如果tbody id=today(yyyymm),则添加类“current” 条件2:如果主体id今天(yyyymm),则添加“不执行任何操作” $(函数(){ var d=新日期(); 变量月份=d.getMonth()+1; var day=d.getDate(); var output=d.getFullYear()+(month您需要做的是检查每个tbody是否有匹配的id 原始语法
tbody
分配到两个不同类中的一个。我似乎无法运行if语句,也许我没有正确使用语法?
条件1:如果tbody id=today(yyyymm),则添加类“current”
条件2:如果主体id<今天(yyyymm),则添加类“过去”
条件3:如果tbody id>今天(yyyymm),则添加“不执行任何操作”
$(函数(){
var d=新日期();
变量月份=d.getMonth()+1;
var day=d.getDate();
var output=d.getFullYear()+(month您需要做的是检查每个tbody
是否有匹配的id
原始语法var checktbody=$('tbody').attr('id');
只从所有tbodie中获取一个tbody
因此,您需要做的是在纯JavaScript中使用for循环
,如果在jQuery中,则使用一个
$(函数(){
var d=新日期();
变量月份=d.getMonth()+1;
var day=d.getDate();
var output=d.getFullYear()+(month您需要做的是检查每个tbody
是否有匹配的id
原始语法var checktbody=$('tbody').attr('id');
只从所有tbodie中获取一个tbody
因此,您需要做的是在纯JavaScript中使用for循环
,如果在jQuery中,则使用一个
$(函数(){
var d=新日期();
变量月份=d.getMonth()+1;
var day=d.getDate();
var output=d.getFullYear()+(月首先,抓取页面上的每个tbody
,并使用$遍历每个体。每个:
$.each( $("tbody"), function(index, el) { ... });
为了实现您所述的3个条件,我们必须重新考虑应用程序当前的编码方式。现在,您正在比较字符串,以查看元素的日期是当前日期还是过去日期
更好的方法是使用Date
对象来方便日期比较
请参见下面的代码。我们使用正则表达式从每个tbody
的id
中提取年和月,并使用它创建一个Date
对象,然后将其与今天的Date
对象进行比较:
$(函数(){
var now=new Date();//今天的日期
var nowYear=now.getFullYear();
var nowMonth=now.getMonth();
var today=新日期(现在年份,现在月份);
var todayTime=today.getTime();//以毫秒为单位获取今天,以便运行比较
$。每个($(“tbody”)函数(索引,el){
变量$el=$(el);
变量id=$el.attr('id');
//使用正则表达式获取年、月、日
var rxArr=id.match(/(\d{4})(\d{2})/);
风险年=rxArr[1];
var month=parseInt(rxArr[2])-1;//我们需要month-1来传递给Date对象
var elDate=新日期(年、月);
var elDateTime=elDate.getTime();//返回毫秒,因此我们运行比较
如果(elDateTime==今天时间){
$el.addClass(“当前”);
}else if(elDateTime<今天时间){
$el.addClass(“过去”);
}
});
});
表#ttx{左边距:40px;边框折叠:折叠;}
#ttx th{填充顶部:18px;文本对齐:左;}
#ttx td{左填充:18px;}
#ttx tbody.current{背景色:#FFFF99;}
#ttx tbody.pass{color:#B8B8B8;}
2018年1月
买23000
卖出10250
2017年12月
买20000
销售12500
2017年11月
买10000
卖出8750
首先,抓住页面上的每个t正文
,使用$循环浏览每个正文。每个:
$.each( $("tbody"), function(index, el) { ... });
为了实现您所述的3个条件,我们必须重新考虑应用程序当前的编码方式。现在,您正在比较字符串,以查看元素的日期是当前日期还是过去日期
更好的方法是使用Date
对象来方便日期比较
请参见下面的代码。我们使用正则表达式从每个tbody
的id
中提取年和月,并使用它创建一个Date
对象,然后将其与今天的Date
对象进行比较:
$(函数(){
var now=new Date();//今天的日期
var nowYear=now.getFullYear();
var nowMonth=now.getMonth();
var today=新日期(现在年份,现在月份);
var todayTime=today.getTime();//以毫秒为单位获取今天,以便运行比较
$。每个($(“tbody”)函数(索引,el){
变量$el=$(el);
变量id=$el.attr('id');
//使用正则表达式获取年、月、日
var rxArr=id.match(/(\d{4})(\d{2})/);
风险年=rxArr[1];
var month=parseInt(rxArr[2])-1;//我们需要month-1来传递给Date对象
var elDate=新日期(年、月);
var elDateTime=elDate.getTime();//返回毫秒,因此我们运行比较
如果(elDateTime==今天时间){
$el.addClass(“当前”);
}else if(elDateTime<今天时间){
$el.addClass(“过去”);
}
});
});
表#ttx{左边距:40px;边框折叠:折叠;}
#ttx th{填充顶部:18px;文本对齐:左;}
#ttx td{左填充:18px;}
#ttx tbody.current{背景色:#FFFF99;}
#ttx tbody.pass{color:#B8B8B8;}
2018年1月
买23000
卖出10250
2017年12月
买20000
销售12500
2017年11月
买10000
卖出8750
如果我记得的话,那应该是.addClass()
方法。你需要循环所有的tbody元素,读取id只会选择第一个如果我记得的话,那应该是.addClass()
method。你需要遍历所有的tbody元素,读取id只会选择第一个。谢谢你。我很感激你解释我的语法是什么,也没有做什么。非常感谢!!@Maki很高兴它有帮助;)。但是,我注意到你的原始代码中有一个输入错误,.addClass()
被错误地键入了.addClass()
。谢谢你,勇。我很感激你解释我的语法是什么,我没有做什么。非常感谢!!@Maki,很高兴它能帮上忙;)。不过,我注意到你的原版有一个拼写错误