javascript初心者です宜しくお願い致します。
インデントをしたのですが、プレビューで反映されていなく、見づらく申し訳ございません。
html
1<div id = "id-1"> 2 <div class="left-img"> 3 <img src = "sample.com"> 4 </div> 5 6 <div class = "right-tag"> 7 <div class="tag"> 8 <a class = "class-2">クラス2</a> 9 <a class = "class-1">クラス1</a> 10 </div> 11 12 <div class="tag"> 13 <a class = "class-2">クラス2</a> 14 <a class = "class-3">クラス3</a> 15 </div> 16 17 <div class="tag"> 18 <a class = "class-2">クラス2</a> 19 <a class = "class-1">クラス1</a> 20 </div> 21 22 </div> 23</div>
特定のクラス名を持っているhtmlの順番を変えたくて以下のような記述をしました。
javascript
1var child = document.getElementById('id-1').getElementByClassName('class-1'); 2var parent = $(child).parent(); 3 4if($(child).hasClass('class-1')){ 5 var first = $(parent).child().eq(0).prop('outerHTML'); 6 var second = $(parent).child().eq(1).prop('outerHTML'); 7 $(parent).eq(0).html(second+first); 8}
すべての[class-1]をクラス名にもつ要素に処理を適応させたいのですが、この記述だと、先頭の[class-1]をクラス名に持つ、htmlにしか処理が適応されませんでした。
そこでeachメソッドを使ってすべての要素に、処理を適応させようとしたところ、処理が走らなくなってしまいました。
javascript
1var child = document.getElementById('id-1').getElementByClassName('class-1'); 2var parent = $(child).parent(); 3 4$(parent).each(function(){ 5 if($(child).hasClass('class-1')){ 6 var first = $(parent).child().eq(0).prop('outerHTML'); 7 var second = $(parent).child().eq(1).prop('outerHTML'); 8 $(parent).eq(0).html(second+first); 9 } 10});
調べたのですが、原因がわかりません。
コンソールにエラーはでていませんでした。
どなたかご教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー