2011-07-08 11 views
1

josh.trow @linkから素敵なテーブル機能を得て、色で塗りつぶすことができる4x4テーブルを作成しています。唯一の問題は、関数を呼び出すたびにそれ自体を再構築することです(最初に4x4テーブルが表示されたファイルを呼び出すとき、2回目に8x4テーブルが表示されるなど)。行が既に4に制限されているためです。テーブルを再構築しないようにする方法

テーブルの列を1回だけ作成するように制限する必要があるかどうか確認できません。

function repeatedFunction(L, G, P, D) { 
jQuery.fn.reverse = [].reverse; 

var completeData = [L, G, P, D]; 
var max = 4; 
$.each(completeData, function(intIndex, objValue) { 
    if (objValue > max) max = objValue; 
}); 
for (var i = 0; i < max; i++) 
{ 
    $('#statSheetTable').append('<tr id="resultRow' + i + '"></tr>'); 
    $.each(completeData, function(intIndex, objValue) { 

    $('#resultRow' + i).append('<td name="column' + intIndex + '" ></td>'); 
    }); 
} 

$.each(completeData, function(intIndex, objValue) { 
    $('td[name=column' + intIndex + ']').reverse().each(function(idx, val) { 
     if (idx < objValue) $(this).addClass('complete' + intIndex); 
    }); 
}); 
} 

Iが重複されるのテーブルを停止グローバル変数を使用してみましたが、その後、私の色充填コードは、(それができるように機能していなかった。(4)

ここJSコードです色で塗りつぶす新しい指示でリフレッシュされないでください)。

は基本的に私は上記の機能に追加されたものだった:

var firstTime = true; 
..... 
function repeatedFunction(L, G, P, D, 4) { 
if(firstTime == true) 
{ 
    ..... 
    // code from above block 
    ..... 
    firstTime = false; 
} 

私はより多くの列を構築するからテーブルを制限することができる場所、あなたの経験豊富なJSの目は見ていますか?

+0

@Briz:jQuery.fn.reverseは関数の内部すべきではないこと - あなたは、私はそれを使用する場所、それが一度だけ呼ばれて見ることができます - グローバルなjQueryオブジェクトを変更するので適切です。 –

答えて

1

ここであなたが質問したとおりに更新されます。

EDIT:おっと、今では動作します:)

http://jsfiddle.net/X83ya/2/

+0

再び、あなたは私をとても幸せにしました。私とあなたのテーブルビルディングの知恵を共有してくれてありがとう!そして今度は答えがあります:D – Briz

+0

@Briz:私のコメントを忘れないでください。jQuery.fn.reverseの定義を関数に含めてはいけません。 –

+0

再度、感謝します – Briz

0

まず、ブール値を比較するとき、常に同じ比較演算子を使用します。あなたは自分のテーブルを再構築したい場合は

if(firstTime === true) 

言われていること、あなたはそれを必要としません。 $('#statSheetTable').append(...はそこにあったものだけに「追加」されます。

... 
var max = 0; 
$('#statSheetTable').html(''); 
... 
+0

どちらか==または===は結果が変わることはありません。つまり、列が再構築されていないのですが、私のメソッドのカラーフィリング機能も損なわれます。私は再構築されないように両方の列を必要とし、関数の残りの部分は正常に動作するようにします。 – Briz

関連する問題