2016-06-12 5 views
0

私は現在の日付を表示する必要がある小さなプロジェクトに取り組んでいます。変数の文字列の最後の文字に応じてnthstなどを追加する必要がありますが、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-nd-rd-th –

答えて

1

あなたはあなたのコードを持ついくつかの問題があります。まず、あなたは「今日」をどのように定義していますか?第2に、スライス関数はNumberオブジェクトで定義されていません。

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

機能checkDateは数値引数を受け取りますが、それまでにそれを文字列として扱います。これらの二つの編集を使用して作業コード:以下のように

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を定義する必要があります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"; 
} 
関連する問題