タイムラインベースのジャーナル/日記に取り組んでいます。個々のエントリを表す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;
}
私が代わりにすべて、使用クラスでIDを使用しwouldntは。もっとダイナミックにもっとフレンドリー – DelightedD0D