1

ループのサポートが必要です...おそらく簡単ですが、コーディングに問題があります。

基本的に、既存のIDの番号を確認して、別の番号で一意のIDを作成できるようにする必要があります。これらの名前は次のようになります。id="poly'+i'"は、私の関数と順番に並んでいます。ここで、iは既存の要素の数と同じです。例:アレイ1、アレイ2、アレイ3は、アレイ1の作成ではi = 1に対応し、アレイ2ではi=2などに対応します。

現在、iは既存の要素の総数に基づいており、「CreateNew」関数はx = i + 1から駆動されます(したがって、上記の例では、新しい要素の名前はArray 4になります)。問題は、中間の数字の1つを削除すると、「作成」機能が大きい数字を複製することです。つまり、アレイ1、2、3は2を削除し、新規作成->アレイ1、3、3を作成します。

配列がすでに存在するかどうかを確認するためのif()ステートメントが必要です。その後、for()ループを使用して、検証されるまですべてのiを循環します。これをどのようにコーディングするかわからない。

私が修正しようとしているコードは以下のとおりです(私はこれを最初に書いたのではなく、最小限のJSスキルで修正しようとしているだけです):

function NewPanel() {


  var i = numberOfPanels.toString();
  var x = (parseInt(i)+1).toString(); 


  $('#items').append('<div onclick="polygonNameSelected(event)" class="polygonName" id="poly'+i+'">&nbsp;&nbsp;Array '+ x +' &nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:void(0)" onclick="removePolygon('+i+');return false;">&nbsp;&nbsp;&nbsp;</a></div>');
  $('div[id*=poly]').removeClass('selected');
  $('#poly'+i).addClass('selected');
  $('#poly'+i).click(function() {
    selectedPolygon = i;
    $('div[id*=poly]').removeClass('selected');
    $(this).addClass('selected');
  });

}

ありがとう!:)

4

2 に答える 2

0

「問題は、真ん中の数字の1つを削除すると」を明確にしてください。削除とはどういう意味ですか?とにかく、最も簡単な解決策は2つの配列を作成することです。両方のアレイは同じ作成IDを持ちます。最初の配列にIDが作成されるたびに、IDが2番目の配列に追加されます。したがって、最初の配列から削除されたら、2番目の配列の最大値を確認してから、このIDを最初の配列に作成します。これがあなたを混乱させなかったことを願っています。

于 2012-06-13T23:00:06.447 に答える
0

アレイを単純につなぎ合わせることができない理由を理解するのは難しいです。要素番号の追跡には、多くの追加ロジックが関係しているように思われます。つまり、インデックスが同じであることを除けば、1、3、3(例から)が重複しているため、IDは他の属性と同じになります。そうでない場合、私の仮定は正しくありません。

その仮定に基づいて、作成されたインデックスが常に追加インデックスになるようにしたい状況に遭遇した場合、私は通常、データベースの主キーを使用する場合と同じアプローチを取ります。フィールドを設定しました:

var primaryKeyAutoInc = 0;

また、データストアに要素(この場合は配列)を「作成」または追加するたびに、キーの現在の値をインデックスとしてコピーしてから、primaryKeyAutoInc値をインクリメントします。これにより、私が想定している一意のインデックス作成が保証されます。さらに、削除が将来のデータ作成に影響を与えないだけでなく、保存されたキーインデックスをアクセサとして使用できます。

于 2012-06-13T23:00:46.603 に答える