間違えて投稿してしまったのでやり直します。
初心者で恐縮ですがよろしくお願いします。
for(let key of data){ console.log('1'); $('.recieve').append('<tr><td class="date"></td></tr>'); $('.payout').append('<tr><th class="date_pay"></th></tr>'); key = JSON.parse(key); for(let className in key){ $(document).ready(function(){ $('.recieve tr:last-child' + ' .' + className).append(key[className]); $('.payout tr:last-child' + ' .' + className).append(key[className]); console.log('3'); }); console.log('2'); } }
-data
をループで回し、<tr><td></td></tr>
をtable
末尾に追加してその行に$().append
してkey[className]
を書く処理をしています。
しかし意図したようにはならず、一番最後の<tr><td></td></tr>
の行にすべてのkey[className]
が書き込まれてしまっています。
以下のような感じです。
列1 | 列2 | 列3 |
---|---|---|
列1 | ||
:-- | :--: | --: |
列1 | ||
:-- | :--: | --: |
3/4 3/4 3/4 | 服 靴 帽子 | 300円 500円 1000円 |
$(document).ready
が非同期で実行されるから?と思い調べましたが、よくわかりません。
試しにconsole.logしてみたら12123
となったので非同期で実行されてることが問題だと思いました。for inは実行順序を保証しないという記述もあったので確証がもてません。。。
Promiseについて調べましたが、promise.then().then().then();
と書く方法だと処理が独立してないといけないのでdata
の個数に応じてやりたい上の処理の場合には適用できないと思います。
この場合どうすれば実行順序を正しくすることができるでしょうか?的はずれなことを言ってるかもしれませんがよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー