2016-06-12 92 views
0

我正在处理一个小型项目,我必须显示当前日期。我需要添加nth,st等,具体取决于变量字符串的最后一个字母,但是当我在Web浏览器中检查HTML文件时,字符串不显示。这里是我的代码:如果同一变量等于一个字符串,则更改变量的值

window.onload = function() { 
    startDate(); 
} 

function startDate() { 
    var month = [ 
     "January", 
     "February", 
     "March", 
     "April", 
     "May", 
     "June", 
     "July", 
     "August", 
     "September", 
     "October", 
     "November", 
     "December" 
    ]; 

    var weekDay = [ 
     "Sunday", 
     "Monday", 
     "Tuesday", 
     "Wednesday", 
     "Thursday", 
     "Friday", 
     "Saturday" 
    ]; 

    var date = today.getDate(); 

    date = checkDate(date); 

    document.getElementById("date").innerHTML = weekDay[today.getDay()] + " the " + date + " of " + month[today.getMonth()]; 
} 

function checkDate(i) { 
    if (i.slice(-1) == 1 && i !== 11) { 
     i = i + "st"; 
    } else if (i.slice(-1) == 2 && i !== 12) { 
     i = i + "nd"; 
    } else if (i.slice(-1) == 3 && i !== 13) { 
     i = i + "rd"; 
    } else { 
     i = i + "th"; 
    } 

    return i; 
} 

这里是我的HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <link rel="stylesheet" href="style.css" /> 
</head> 
<body> 
    <div id="container"> 
     <div id="date"></div> 
    </div> 
    <script src="script.js"></script> 
</body> 
</html> 
+0

你可以发布你的HTML吗? – Roysh

+0

@ALEX,更优雅的解决方案可以在这里找到http://stackoverflow.com/questions/15397372/javascript-new-date-ordinal-st-ndrdrd –

回答

1

你必须与你的代码的一些问题。首先,你如何定义'今天'?其次,切片函数没有在Number对象上定义。有了这两个编辑您的工作代码:

window.onload = function() { 
    startDate(); 
}; 
function startDate() { 
    var month = [ 
     "January", 
     "February", 
     "March", 
     "April", 
     "May", 
     "June", 
     "July", 
     "August", 
     "September", 
     "October", 
     "November", 
     "December" 
    ]; 

    var weekDay = [ 
     "Sunday", 
     "Monday", 
     "Tuesday", 
     "Wednesday", 
     "Thursday", 
     "Friday", 
     "Saturday" 
    ]; 
    var today = new Date(); 

    var date = today.getDate(); 

    date = checkDate(String(date)); 

    document.getElementById("date").innerHTML = weekDay[today.getDay()] + " the " + date + " of " + month[today.getMonth()]; 
} 

function checkDate(i) { 
    if (i.slice(-1) == 1 && i !== 11) { 
     i = i + "st"; 
    } else if (i.slice(-1) == 2 && i !== 12) { 
     i = i + "nd"; 
    } else if (i.slice(-1) == 3 && i !== 13) { 
     i = i + "rd"; 
    } else { 
     i = i + "th"; 
    } 

    return i; 
} 
0

您使用前需要先定义today,如下:

var today = new Date(); 
var date = today.getDate(); 

功能checkDate接收数字参数,但随后将其视为一个字符串使用slice:这会产生一个错误。你应该把它看作一个数字,例如i % 10

function checkDate(i) { 
    return (i % 10 == 1 && i !== 11) ? i + "st" 
     : (i % 10 == 2 && i !== 12) ? i + "nd" 
     : (i % 10 == 3 && i !== 13) ? i + "rd" 
     : i + "th"; 
} 
相关问题