1

文字列である変数が 2 つあります: month1Digit1 と month1Digit2 です。これらは一緒に月の 10 進数 (01-12) を構成するため、month1Digit1 は常に 0 または 1 のいずれかであり、month1Digit2 は 0 以外の任意の数値である可能性があります。これらの変数から月の名前を決定できる関数が必要です。しかし、変数が異なるという理由だけで、グループごとに個別の関数を書きたくありません。検索すると、引数を使用して関数を実行する必要があるように見えますが、これがどのように機能するかはよくわかりません。私は次のことを試しました:

var month1Digit1 = "1";
var month1Digit2 = "2";

function getMonthName (month) {
    if (month == "1") { month = "January" }
    else if (month == "2") { month = "February" }
    else if (month == "3") { month = "March" }
    else if (month == "4") { month = "April" }
    else if (month == "5") { month = "May" }
    else if (month == "6") { month = "June" }
    else if (month == "7") { month = "July" }
    else if (month == "8") { month = "August" }
    else if (month == "9") { month = "September" }
    else if (month == "10") { month = "October" }
    else if (month == "11") { month = "November" }
    else if (month == "12") { month = "December" }
}

var orangemonth1 = month1Digit1 + month1Digit2;
getMonthName(orangemonth1);
orangedate = orangemonth1;

これから、orangedate の値は「12 月」になるはずですよね?しかし、これを実行すると、値として「12」が得られます。したがって、機能は機能していません。私は何を間違っていますか?

4

7 に答える 7

0

これを試すことができます。

function getMonthName(month) {
    var months = ["", "January", "February", "March", "April", "May", "June", 
                  "July", "August", "September", "October", "November", "December"];
    // or
    var months = {1:"January", 2:"February", 3:"March", 4:"April", 5:"May", 6:"June", 
                  7:"July", 8:"August", 9:"September", 10:"October", 11:"November", 12:"December"};

    return months[parseInt(month)];
}

console.log(getMonthName(1));
于 2013-07-02T20:12:43.563 に答える
0

問題は、変数を返さず、割り当てないことです。
あなたの場合、値は関数にのみ変更されます。
これを試して:

var month1Digit1 = "1";
var month1Digit2 = "2";

function getMonthName (month) {
    if (month == "1") { month = "January" }
    else if (month == "2") { month = "February" }
    else if (month == "3") { month = "March" }
    else if (month == "4") { month = "April" }
    else if (month == "5") { month = "May" }
    else if (month == "6") { month = "June" }
    else if (month == "7") { month = "July" }
    else if (month == "8") { month = "August" }
    else if (month == "9") { month = "September" }
    else if (month == "10") { month = "October" }
    else if (month == "11") { month = "November" }
    else if (month == "12") { month = "December" }

    return (month);
}

var orangemonth1 = month1Digit1 + month1Digit2;
orangedate = getMonthName(orangemonth1);
于 2013-07-02T20:01:16.240 に答える
0

変数がJavaScriptの関数に参照または値で渡されるかどうかの問題を見逃していると思います。答えは、人が考えるほど単純ではありません。この質問をチェックしてください。

JavaScript は参照渡しまたは値渡しの言語ですか?

とにかく、これを機能させたい場合は、関数内で変数が変更されたと想定するのではなく、代わりに新しい値を明示的に返しますmonth

function getMonthName (month) { if (month == "1") { month = "January" }... etc etc return month; }

その後、次のように関数を呼び出す必要があります。

var textMonth = getMonthName(orangemonth1);

于 2013-07-02T20:18:15.343 に答える