2016-09-09 1 views
0

タイムラインベースのジャーナル/日記に取り組んでいます。個々のエントリを表すJSオブジェクトの配列があります。各オブジェクトは配列内の位置に基づいてIDを持ちます。問題は、配列の特定の位置にエントリを挿入し、配列内の新しい位置に合わせてすべてのエントリのIDを更新できるようにすることです。 Figure 1配列内の新しい要素を動的に作成し、すべての要素のIDを更新します。

図1:私はこの1つ前に新しいエントリを追加し、2番目のエントリ(ID 1)のボタンをクリックしてIDが0と1の配列内の2つのエントリがあります。新しいエントリは "id = 1"を持ち、次のすべてのエントリはIDを "id + = 1"に更新して重複IDがないようにする必要があります。

ここに私の問題があります。私は新しいエントリを作成した後(または前に)IDを更新することができないようです。ここに私のコードは次のとおりです。


のためのDOMを作成し、新しいDayオブジェクトを作成し、

var ii = daysArray.length - 1; 
for (; ii > currentID; ii--) { 
    daysArray[ii].id = ii; 
    $(".day#" + ii - 1).attr("id", ii); //Change ID of the DOM element 
} 

彼らの新しい配列の位置を一致させるために、以下のすべての配列要素の配列

//currentID = ID of the entry I'm creating the new one from 
//new Day(id, name, date, desc); 
//daysArray is the array containing entry objects 

var dayToCreate = new Day(currentID, 
    $newDayName.val(), 
    $newDayDate.val(), 
    $newDayDescription.val()); 
daysArray.splice(currentID, 0, dayToCreate); // 

アップデートIDに追加します新しいエントリ

drawDay(currentID).insertBefore($(".day#" + currentID)); 

drawDay機能

function drawDay(dayId) { 
    var $drawDiv = $("<div class='day' id='" + daysArray[dayId].id + "'></div>"); 

    //Return DOM for the day 
    return $drawDiv; 
} 
+0

私が代わりにすべて、使用クラスでIDを使用しwouldntは。もっとダイナミックにもっとフレンドリー – DelightedD0D

答えて

0
var ii = daysArray.length - 1; 
for (; ii > currentID; ii--) { 
    daysArray[ii].id = ii; 
    $(".day#" + ii - 1).attr("id", ii); //Change ID of the DOM element 
} 

var daysArrayLength = daysArray.length, 
    i = 0; 
for (;i < daysArrayLength; i++) { 
    daysArray[i].id = i + 1; 
} 

array.splice(deleteCountを起動[、ITEM1 [、ITEM2 [、...]]])に変化しているに進みあなたはIDとしてインデックスを使用できますか?

もう1つのアプローチは、1年の各日に1つの365個のアイテムの配列を使用することです。しかし、これはより効率的ではありません。

やIDSは、エントリによって数えますが、ここで日付を使用することしてみましょう:ID = ' "+ daysArray [dayId] .ID +"'

+0

あなたの答えを読んだ後、私はIDをまったく使う必要がないことに気付きました。特定のエントリがクリックされたことを知る方法としてIDを使用していましたが、代わりにクリックされたボタンに.closest( ".day")を使用することができます。そうすれば、私はいつも一緒に仕事をしたいというエントリーを得ることができ、それははるかに簡単です。 IDのインデックスを提案してくれてありがとう、私に多くの苦痛を与えた。 – matronator

関連する問題