0

クラス'time-col'のテーブルセルを含む表示可能なテーブル行があります。実際、私には複数あり、親行の表示は動的です。

月の3文字の文字列表現(MAR、APRなど)を数値文字列(3、4など)に置き換えようとしています。

私の弱い心によると、次のことがうまくいくはずです:

$('tr:visible .time-col').each(function() {
    // convert month string to numerical representation
    var monthStr = $(this).text().match(/[^\/]*/)[0];
    var months = { 'JAN': '1', 'FEB': '2','MAR': '3','APR': '4','MAY': '5','JUN': '6','JUL': '7','AUG': '8','SEP': '9','OCT': '10','NOV': '11','DEC': '12' };
    var month = months[monthStr];
    $(this).text( $(this).text().replace(monthStr, month) );
});

ただし、結果は適切な文字列を「undefined」に置き換えます。最後の行を置き換えると:

$(this).text( $(this).text().replace(monthStr, month) );

と:

$(this).text(month);

対応するテーブルセルに表示されている正しい番号(つまり、3、4など)を取得します。

Stack Overflowの原因は何ですか?¿

4

2 に答える 2

2

$(this).text()文字列を返します。その文字列を変更しても、元の文字列には影響しません。

テキストを変更するには、要素のテキストを設定します。

var text = $(this).text();
$(this).text(text.replace(monthStr, month));

また、.replace()最初の引数として文字列を使用すると、文字列の最初のインスタンスのみが置き換えられます。すべてのオカレンスを一度に置き換えるには、正規表現を使用する必要があります。

于 2013-03-26T21:05:56.230 に答える
0

驚くべきことに、私は自分で問題を解決しました。問題は、なんらかの理由でJavaScriptが期待どおりに機能せず、monthsオブジェクトの数値文字列にデータ型を指定しないことにしたことでした。

変化:

var month = months[monthStr]

に:

var month = months[monthStr].toString();

問題を解決しました!

于 2013-03-27T00:31:12.520 に答える