0

Javascriptリストの並べ替えに問題があります。テキスト領域が塗りつぶされ、グレーディングが選択されたときに作成されるリスト。次のようになります。

var element = '<li class="lista">' + filmen + '<span class="betyg">' + changeNumber(grade) + '</span></li>';
film_list.append(element);

また、span要素の数値を星に変換する関数もあります。次のようになります。

function changeNumber(number) {
  var stars = "";
  for(var i = 0; i < number; i++) {
    stars += "*";
  }
  return stars;
}

問題は、リストを並べ替えるボタンがグレードに応じて高と低の2つあり、ボタンを押すとリストが正しく並べ替えられることです。しかし、星は消え、数字は再び上がります。並べ替えボタンから関数を呼び出そうとしましたが、機能changeNumberしないようです。引数として何を使うべきかわかりません。私が何をすべきかについて何か提案はありますか?

並べ替え関数は次のようになります。

var button_high = $('#high');
var betyg_array = new Array();
button_high.click(function () {
  $list = $("#filmerna ul");
  $("#filmerna ul li")
    .remove();
  betyg_array.sort(function (x, y) {
    return y[1] - x[1]
  });
  $.each(betyg_array, function () {
    $nyFilm = $("<li />");
    $nyFilm.attr("class", "lista")
    $nyFilm.text($(this)[0]);
    $nyBetyg = $("<span />");
    $nyBetyg.attr("class", "betyg");
    $nyBetyg.text($(this)[1]);    
    $nyBetyg.appendTo($nyFilm);
    $nyFilm.appendTo($list);
    changeNumber();
  });
});
4

1 に答える 1

0
var button_high = $('#high');
var betyg_array = new Array();
button_high.click(function () {
  $list = $("#filmerna ul");
  $("#filmerna ul li")
    .remove();
  betyg_array.sort(function (x, y) {
    return y[1] - x[1]
  });
  $.each(betyg_array, function () {
    $nyFilm = $("<li />");
    $nyFilm.attr("class", "lista")
    $nyFilm.text($(this)[0]);
    $nyBetyg = $("<span />");
    $nyBetyg.attr("class", "betyg");
    $nyBetyg.text($(this)[1]);
    var stars = $nyBetyg.text(betyg_array); //this line and the line below was the solution
    $nyBetyg.text(changeNumber(stars)); 

    $nyBetyg.appendTo($nyFilm);
    $nyFilm.appendTo($list);
  });
});
于 2013-03-18T13:13:13.497 に答える