每个函数仅适用于console.log

时间:2017-07-18 00:27:49

标签: javascript each console.log classname

需要将所有类名保存为包装文本到另一个div。只显示最后一个类名,但在控制台日志中它正在运行。无法弄清楚出了什么问题。

$(".score" ).children('div').each(function(arr) {
  clsas = $(this).attr('class');
  $('.part-list').html(clsas);
  clsas = clsas.replace(/_/gm, " ")
               .replace(/(\d{1,}) (\d{1,})/gm, "$1, $2")
               .replace(/stff /gm, "")
               .replace(/(\B)(\d{1,})/gm, "$1 $2");
  console.log(clsas);
}).each(function() {
  $('.part-list').html( "<div class='instrument'>" + clsas + "</div>" ); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="part-list"></div>
<div class="score">
<div class="stff_Flute1_2"></div>
<div class="stff_Oboe_1_2"></div>
<div class="stff_Clarinet_1_2"></div>
</div>

https://jsfiddle.net/3od8uudf/2/

2 个答案:

答案 0 :(得分:1)

$ .html(string)设置html的值,因此对于每个循环,将html设置为其他内容。

在你的例子中,它将被设置为长笛,然后是双簧管,然后是单簧管。

解决这个问题的方法是创建一个新元素并将其附加到您想要的位置。

实施例

var txt1 = "<div class='instrument'>" + clsas + "</div>" ; // Create element with HTML  

$('.part-list').append(txt1);      // Append the new element

答案 1 :(得分:0)

$(".score" ).children('div').each(function( arr ) {
clsas = $(this).attr('class');
clsas = clsas.replace(/_/gm, " ").replace(/(\d{1,}) (\d{1,})/gm, "$1, $2").replace(/stff /gm, "").replace(/(\B)(\d{1,})/gm, "$1 $2");
  $('.part-list').append("<div class='instrument'>" + clsas + "</div><br>");
  });
   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="part-list"></div>
<div class="score">
<div class="stff_Flute1_2"></div>
<div class="stff_Oboe_1_2"></div>
<div class="stff_Clarinet_1_2"></div>
</div>