localstorageからinputタグのidに代入したい
オブジェクトなのでJSON.stringifyとJSON.parseは行っている。
console.logで確認してみるとちゃんと表示されている
inputタグのidに代入するとobjectと表示されてします。
document.getElementById("inputreferers").value = favsAll ;
上記のようにvalueで表示している
読み込みの順番がいけないのか
そもそも呼び方が間違っているのかがわからない状況です。
是非ご教授いただけないでしょうか。
よろしくお願いいたします。
一括資料請求をwordpressで制作したいです。
検索するなかで下記のコードが使用出来そうでしたので使用しております。
操作しても希望の通り
クリックするとlocalstorageに保存されていまます。
<div id="app"> <div class="container"> <div class="row" v-if="!isLs"> <div class="col"> <div class="alert alert-warning"> お使いのブラウザではlocalStrage機能は使用できません。 </div> </div> </div> <div class="row py-3"> <div class="col"> <h1>お気に入り登録</h1> <div>ただいまのお気に入り登録件数は<strong class="display-4 font-weight-bold">{{ favs.length }}</strong>件です。<br> <a href="http://test.local/contact/#wpcf7-f24-p32-o1">お気に入り一覧を見る</a> </div> </div> </div> <div class="row border-top py-3 align-items-center" v-for="item in data" :key="item.id"> <div class="col"> <h3>{{ item.name}}</h3> <div> {{ item.detail}} </div> </div> <div class="col-auto"> <button class="btn" :class="isFavs(item.id) ?'btn-secondary' : 'btn-primary'" v-on:click="toggleFavs($event,item.id)"> <template v-if="isFavs(item.id)"> <img src="http://test.local/wp-content/uploads/2022/03/search_list_apply_check_on.png" alt=""> </template> <template v-else=""> <img src="http://test.local/wp-content/uploads/2022/03/search_list_apply_check_off.png" alt=""> </template> </button> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.js"></script> <script> var app = new Vue({ el: '#app', data() { return { isLs: false, favs: [], data: [{ id: 1, name: 'テスト1', }, { id: 2, name: 'テスト2', }, { id: 3, name: 'テスト3', }, { id: 4, name: 'テスト4', }, { id: 5, name: 'テスト5', }, { id: 6, name: 'テスト6', }, { id: 7, name: 'テスト7', }, { id: 8, name: 'テスト8', }, { id: 9, name: 'テスト9', }, { id: 10, name: 'テスト10', } ] } }, computed: { //お気に入り登録済みかどうか判定 isFavs() { var vm = this; return function (id) { var index = vm.favs.findIndex(function (val) { return val.id == id; }) if (index === -1) { return false; } else { return true; } } } }, mounted() { var vm = this; vm.init(); //localStrageが使えるかどうかの判定 if (vm.isLs) { //保存済みのlocalStrageを読み込む var current = window.localStorage.getItem('favs'); if (current) { vm.$set(vm, 'favs', JSON.parse(current)) } } }, methods: { init() { var vm = this; if (typeof window.localStorage !== 'undefined') { vm.$set(vm, 'isLs', true) } }, toggleFavs($event, id) { var vm = this; //お気に入り対象がどの物件か抽出 var index = vm.data.findIndex(function (val) { return val.id == id; }); var target = vm.data[index]; //既に登録済みか判定 var index = vm.favs.findIndex(function (val) { return val.id == target.id; }) //見つからなければ新規登録 if (index === -1) { vm.favs.unshift(target) } else { //見つかれば削除 vm.favs.splice(index, 1); } //localStrageに保存 window.localStorage.setItem('favs', JSON.stringify(vm.favs)); } } }) </script>**ボールドテキスト**
保存できているので下記のコードを書いて表示しようとしています。
let inputers = document.getElementById('inputreferers') let favsAll = JSON.parse(localStorage.getItem('favs')); console.log(favsAll); document.getElementById("inputreferers").value = favsAll ;
お問い合わせはcontactform7を使用して下記コードをいれて
データを私自身に送信させていです。
<input type="text" name="referer" id="inputreferer">
contactform7に下記のコードを入れても違うタブになるのか
使用できませんと表示されてしまう
そのためlocalstorageにはちゃんと保存されているので
データだけ文字化して何を選択されてかわかるようにしたい
<div id="app"> <div class="container"> <div class="row" v-if="!isLs"> <div class="col"> <div class="alert alert-warning"> お使いのブラウザではlocalStrage機能は使用できません。 </div> </div> </div> <div class="row py-3"> <div class="col"> <h1>お気に入り一覧</h1> <div>ただいまのお気に入り登録件数は<strong class="display-4 font-weight-bold">{{ favs.length }}</strong>件です。 </div> </div> </div> <div class="row border-top py-3 align-items-center" v-for="item in favs" :key="item.id"> <div class="col"> <h3>{{ item.name}}</h3> <div> {{ item.detail}} </div> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.js"></script> <script> var app = new Vue({ el: '#app', data() { return { isLs: false, favs: [], } }, mounted() { var vm = this; vm.init(); //localStrageが使えるかどうかの判定 if (vm.isLs) { //保存済みのlocalStrageを読み込む var current = window.localStorage.getItem('favs'); if (current) { vm.$set(vm, 'favs', JSON.parse(current)) } } }, methods: { init() { var vm = this; if (typeof window.localStorage !== 'undefined') { vm.$set(vm, 'isLs', true) } } } }) </script>
ちなみにcontactform7に上記のコードを書いても使用できないとなりますが
固定ページに上記のコードをいれるとちゃんと表示されます。
※結果として現在localstorageに保存できているため
その文字列を私自身に送信したいです。
しかしobject表示になっていることが現実です。
使用予定イメージ
使用される方には選択したものを表示(現在できている)
同じページにcontactform7のショートコートを入れる
localstorageから取得して選択してものを表示
※きれいに表示できれば表示して見た目がわるければ非表示にしてデータだけわかるようにする
現在localstorageに保存しているnameだけ取得するために下記コードをいれてもundefinedになるため
全部取得にしている(その場合はちゃんと取得して表示される)
let favsAll = JSON.parse(localStorage.getItem('favs')); console.log(favsAll.name);
すいません長くなりましたが現状でございます。
もし説明が足りない場合は申し訳ございませんがおしゃっていただければと思います。
何卒よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー