0

そのため、FormatCurrency という Jquery プラグインを使用して (これは明らかなはずです)、一部の数値を通貨形式でフォーマットしています。jQuery 関数は、数値の最初の行ではうまく機能していますが、2 行目にはいくつかの問題があります。

私が最初に何をしているのかを説明しましょう:

ツリーをクリックして行を展開すると、選択したいツリーがさらに 2 つの行 Capital と Expense を開きます。jQuery は資本行でうまく機能し、フォーマットが使用され、行は 123456 から $123,456 に変更されますが、経費行は変更されません。

また、異なる数字で別の行を展開する場合など、別の領域をクリックすると、Expense 行が formatCurrency スタイルの変更を受け入れることもわかりました。したがって、Jqueryは機能しています。別の行をクリックするまでスタイルの変更が完了していません。最初にクリックした元の行に戻ると、スタイルの変更は経費行のみで再び削除されます。これがすべて理にかなっていることを願っています。以下にコードを投稿しました。頻繁に確認する予定ですので、問題の解決に役立つ質問があればお気軽にお尋ねください。ご協力ありがとうございました!

pa_click = function (pa_label) {
            PA_ID = pa_label.getAttribute('pa_id');

            var pa_details = document.getElementById('pa-details-' + PA_ID);

            jQuery.getJSON('@Url.Action("getAjaxSCs")', { PA: pa_label.title }, function (SCS) {
                pa_details.innerHTML = "";
                jQuery.each(SCS, function (index, SC) {

                    months_html = '';
                    jQuery('.currency').formatCurrency({
                        colorize: true,
                        roundToDecimalPlace: -2,


                    });

                    for (var i = 0; i < 12; i++) {

                        index = index.replace(/\s/g, "-");
                        months_html +=
                                            '<div id="SC-' + index + '-' + months[i] + '" class="month-wrapper tree border-white currency">' + // This is where I add the currency class
                                            SC[i] + // This is the variable I need to replace with code to add currency to the amount  
                                            '</div>';
                    }

                    pa_details.innerHTML +=

                            '<div id ="Spend-Category-' + index + '" class="sc-wrapper tree border">' +
                                '<div id ="sc-title-' + index + '" class="sc-title">' +
                                    '<div class = "sc-label" title = "' + index + '" SC_id="' + index + '" onclick = "sc_click(this)">' + index + '</div>' +
                                    months_html +
                                '</div>' +
                                '<div id="sc-details-' + index + '" class = "pa-details" style = "display:none">' + index + '</div>' +
                            '</div>';
                })
            });
            jQuery('#pa-details-' + PA_ID).toggle('fast');

        };
4

1 に答える 1

1

すべての要素をDOMに追加した.formatCurrency 、を呼び出します。

たとえば、次のようにリファクタリングできます。

pa_details.innerHTML = "";

jQuery.each(SCS, function (index, SC) {
  months_html = '';
  for (var i = 0; i < 12; i++) {
    ...
  }
  pa_details.innerHTML += "BIG CONCATENATION HERE";
});

jQuery('.currency').formatCurrency({
  colorize: true,
  roundToDecimalPlace: -2
});

これにより、要素をフォーマットする前に、すべての要素をDOMに含めることができます。

于 2012-08-23T20:27:41.713 に答える