前提・実現したいこと
cookieに存在するcookieの名前を格納してある。
存在確認cookieは配列で格納されていて、そこからひとつ一つcookie名を取り出し、読み込む。
存在が確認されているcookieは値がオブジェクトで格納されていて、それらをそれぞれ使って要素を作り出したい。
イメージとしてはこんなかんじ
・生成したい要素をオブジェクトに格納し、cookieに入れ、そのcookie名を存在格納cookieに配列として格納する。
①存在確認cookieからforで一つ一つ読み込む
②存在確認cookieの一つの値は要素情報cookieの名前になっているため、要素情報cookie(オブジェクト)の値を取り出す。
③要素情報cookieから取り出したオブジェクトからそれぞれのキーから値を出し、それを使ってHTMLに要素を生成する。
発生している問題・エラーメッセージ
![]
画像のようにtitle1、title2、title3が一つずつ表示されずに、連なって表示される。
本当は一つの枠に一つだけのtitle1って感じで実装したい。
jqueryやjavascriptは初心者です
該当のソースコード
html
1<div class="catalog"></div>
JavaScript
1var gotExsistArray = $.cookie('existCookie'); 2 console.log(gotExsistArray) 3 for (let i = 0; i < gotExsistArray.length; i++) { 4 5 var notes = gotExsistArray[i]; 6 var noteContent = $.cookie(notes); 7 console.log(noteContent); 8 if(noteContent !== undefined){ 9 10 var numberData = String($.cookie(notes).number); 11 var titleData = noteContent.title; 12 var tagData = noteContent.tags; 13 var contentData = noteContent.content; 14 var makeTitle = $('<h2></h2>',{ 15 "class":"showedTitle" 16 }) 17 makeTitle.html(titleData); 18 19 var makeTag = $('<div></div>',{ 20 "class":"showedTag" 21 }) 22 var shappedTag = ""; 23 tagData.forEach(function(value){ 24 shappedTag = shappedTag + '<p class="Tag">' + "#" + value + '</p>' 25 }); 26 27 28 makeTag.html(shappedTag) 29 30 var makeWarraper = $('<div></div>',{ 31 "class":"showedWrapper", 32 "id":numberData 33 }) 34 35 $('.catalog').append(makeWarraper) 36 37 $('.showedWrapper').append(makeTitle) 38 $('.showedWrapper').append(makeTag) 39 40 console.log(makeTitle) 41 42 }else{ 43 console.log('エラー') 44 } 45 46 }
試したこと
途中で生成しようとした要素(タイトル)をコンソールに表示すると、合計で3回しかタイトルは生成していないことになっていますが、実際は一つのshowedWrapperの中にタイトル要素はそれぞれ1,1,1ではなくて3,2,1という生成をしています。
検証ツールのコンソールはこんな感じ
補足情報(FW/ツールのバージョンなど)
cookie情報
$.cookie('existCookie',
["note1","note2","note3"]
)
$.cookie('note1', {
"number":1,
"title":"title1",
"tags":["tag1","tag1","tag1"],
"content":"これはtitle1の内容です。"
}
)
使用ライブラリ
jquery3.5.1
jquery.cookie.js
動作環境
macOS Bigsur
chrome
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/27 03:08
2021/07/27 03:16