###やりたいこと
子要素の内容を書き換えるために、一旦documentFragmentで操作をして、親要素を更新しようとしています。
###問題点
下記コードを実行しても、子要素の内容が書き換わりません。
forEach内でdivの値を確認すると、内容が書き換わっているように見えます。その状態で、documentFragmentに追加していますが、実際にDOMに展開されるのは、変更前の"-"になってしまいます。
試しに、forEachの外側で、documentFragmentに子要素を追加すると、それは、DOMに反映されました。
クロージャ?レキシカルスコープ?のようなモノが、何か影響しているように感じたのですが・・・理解しきれていなく・・・
きっと、仕様をよく理解出来ていないことが原因の単純なミスだと思うのですが、いろいろ調べても、原因がつかめず、質問させていただきました。
よろしくお願いします。
html
1<div id="wrapper"> 2 <div id="1">-</div> 3 <div id="2">-</div> 4 <div id="3">-</div> 5</div>
JavaScript
1 $(function(){ 2 var dict = {"1": 1, 3 "2": 2, 4 "3": 3}; 5 6 var documentFragment = document.createDocumentFragment(); 7 8 var keys = Object.keys(dict); 9 keys.forEach(function(key){ 10 var div = $("#" + key).clone(); 11 div.html = String(key * 10); 12 $(documentFragment).append(div); 13 dict[key] = key * 10; 14 }); 15 $('#wrapper').html(documentFragment); 16 });
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/17 07:37
2017/01/17 08:13
2017/01/17 09:02
2017/01/17 10:28
2017/01/18 00:26