如何在javascript(编辑)中添加if else条件到数组中
how to add if else condition into an array in javascript (edited)
我有这段代码:
<script type="text/javascript">
function CompareDates(id)
{
var months = new Array(12);
months[1]= "Jan";
months[2] = "Feb";
months[3] = "Mar";
months[4] = "Apr";
months[5] = "May";
months[6] = "Jun";
months[7] = "Jul";
months[8]= "Aug";
months[9] = "Sep";
months[10] = "Oct";
months[11] = "Nov";
months[12] = "Dec";
var d = new Date(id);
var retVal =d.getDate()+' '+ months[d.getDate()]+' '+d.getFullYear()
return retVal; }
</script>
和日历标签:
<p:calendar
id="testDate"
styleClass="calendar"
pattern="d MMM yyyy"
maxlength="10"
onfocus="$(this).mask('99/99/9999');"
onchange="$(this).val(CompareDates($(this).val()))"
>
<p:watermark for="testDate" value="dd/mmm/yyyy" />
</p:calendar>
,我需要在其中添加一个if/else语句,以便如果date>31且months>12,日期将返回'false',就像现在一样,
它返回'NaN undefined NaN'
谁能告诉我应该在哪里以及如何添加条件?
我这样做了:
var d = new Date(id);
if (d.getDate > '31' || months > '12'){
return false;
} else {
var retVal =d.getDate()+' '+ months[d.getDate()]+' '+d.getFullYear()
return retVal; }
}
可以这样做:
function compareDate(dateValue){
if(arguments.length){
date = dateValue.split("/") //when date is entered in DD/MM/YYYY format. We split days months and year
days = date[0] //get DD
month = date[1] //get MM
year = date[2] //get YYYY
d = new Date();
total_days = new Date(d.getYear(),d.getMonth()+1,0).getDate()
if(days > 0 && days <= total_days && month >0 && month <= 12){
//your success message
}else{
//your error message like date not valid
}
}else{
//no date specified
}
}
用case:
switch (d) {
case 29:
alert (29 days);
break;
case 30:
alert (30 days);
break;
case 31:
alert (31 days);
break;
}
从id
参数创建Date
对象d
。这样,Date d
就不可能在日期和月份范围之外…所以也许你的检查是不必要的。
如果你还需要一个答案,我会说:
if (d.getDate > '31' || months > '12'){
return false;
} else { //...
注意months
是一个数组。可能你指的是d.getMonth()
而不是months
。d.getDate
必须是d.getDate()
附加说明:getMonth()
方法返回0-11,即1月为0,12月为11。您可能需要调整检查
你只需要对你的代码做一些改变:
- 从索引0开始更改数组值,依此类推。月[0]="1月";而不是几个月[1]="1月";
日期对象已经有getMonth()方法,使用它来发布月份
var retVal = d.getDate () + ' ' + 月[d.getMonth ()] + " " + d.getFullYear ();
- 无需附加条件。
建议::
- 可以使用速记方法来压缩代码 var月= new Array("1","2","3"、"4月"、"可能"、"君"、"7"、"8月","9",10月,11月,12月), 我不明白你为什么用(id)…我认为这是不必要的。但如果遗漏了什么,请告诉我。我很乐意回答。
完整代码如下:
<script type="text/javascript">
CompareDates();
function CompareDates()
{
var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var d = new Date();
var retVal =d.getDate()+' '+ months[d.getMonth()]+' '+d.getFullYear();
alert(retVal);
return retVal;
}
</script>
我不清楚你在问什么。
> function CompareDates(id) {
id是什么?它是字符串还是时间值?按照惯例,以大写字母开头的函数名是为构造函数保留的,所以最好使用:
function compareDates() {
还有,这似乎没有比较日期,这个名字还合适吗?或者也许这是一项正在进行的工作。: -)
> var months = new Array(12);
> months[1]= "Jan";
...
> months[12] = "Dec";
考虑使用数组字面量。似乎您正在尝试将Date对象的月份数转换为英文月份缩写。在这种情况下,让数组以零为索引(就像其他人建议的那样):
var months = ['Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'];
> var d = new Date(id);
希望id是一个时间值,因为让Date构造函数解析字符串在浏览器中是有问题和不一致的。我假设它正在创建一个合适的Date对象。
> var retVal =d.getDate() + ' ' + months[d.getDate()] + ' ' + d.getFullYear()
获取相应的月份名称:
var retVal = d.getDate() + ' ' + months[d.getMonth()] + ' ' + d.getFullYear();
然而,使用空格作为分隔符并不常见,"-"answers"/"更常用。
如前所述,一旦id转换为日期,它将始终适合有效日期的参数。如果不能转换为有效日期,则计算结果为NaN
。
然而,如果id是一个字符串(它不应该是,见上文),如"23/5/2014",那么你可以使用如何验证日期的答案来验证它。
编辑
所以看起来id是一个字符串。不能为Date指定格式。解析,它可能接受特定的字符串,但它通常是不可靠的,所以手动解析字符串。假设是d/m/y格式:// Expects d/m/y
function parseDMY(s) {
var b = s.split(/'D/);
return new Date(b[2], --b[1], b[0]);
}
可以使用以下命令验证日期:
// Expects d/m/y
function isValidDate(s) {
var b = s.split(/'D/);
var d = parseDMY(s);
return !!d && d.getFullYear() == b[2] && d.getDate() == b[0];
}
console.log(isValidDate('29/2/2014')); // false
console.log(isValidDate('29/2/2016')); // true
将根据是否以d/m/y格式传递有效日期返回true或false。对于某些浏览器,如果年份从1到99,上述操作将失败,因为它们假设这些日期是20世纪,并将其转换为1901到1999。
如果还希望处理公元1世纪的日期,请使用:
// Expects d/m/y
function parseDMY(s) {
var b = s.split(/'D/);
var d = new Date();
d.setHours(0,0,0,0);
d.setFullYear(b[2], --b[1], b[0]);
return d;
}
- 正在尝试使用if和else添加类,但无法正常工作
- 在Javascript中为if/else语句添加OR
- 将 HTML 添加到 Javascript IF 函数
- XSLT在IF语句后添加图书价格
- 如何创建自定义属性以添加if.bind
- 当if条件被添加到循环中时,Javascript函数将停止工作
- 将默认选项添加到ng-if
- 从指令中向元素添加ng-if属性
- JQuery 悬停代码:添加 If 语句会破坏它
- 如何在 if else 语句期间添加暂停/延迟
- Javascript 缩短了 if 语句添加 else 语句
- if 语句以更改添加到添加数量的新行
- 如何将 if 语句添加到切换函数
- 在 ng-if 函数上添加删除 HTML 标记链接
- 将颜色格式添加到 IF ELSE 结果
- 如何添加 if 语句以循环图像
- 在 if 语句内向 javaScript 数组添加更多元素
- 如何使用 if 在等于数组时添加到分数
- 我可以以某种方式在开关中使用 if 语句来添加更多案例吗?
- 将if添加到AJAX for Rails中(检查this是否==DOM元素)