排序会破坏nr的变化

时间:2013-03-18 01:26:41

标签: javascript jquery

我对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;
}

问题是有两个按钮可以对列表进行排序,高低取决于等级,当我按下按钮时,列表排序正确。但是,星星消失了,数字再次出现。我试图从排序按钮调用函数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();
  });
});

1 个答案:

答案 0 :(得分: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);
  });
});