【问题标题】:generate equivalent svg stars for each imdb rating jquery为每个 imdb 评分 jquery 生成等效的 svg 星
【发布时间】:2016-10-26 13:57:15
【问题描述】:

我正在从 omdb json 对象中获取 imdb 评级,并尝试为每个评级生成等效的 svg 星。

在我的示例中,这部电影的评分为 8.0。我不知道为什么,但在我的代码中,我目前正在使用克隆生成 11 颗星。或者,我在想我可以使用一组星来为每个评级附加多个星。我有 30 部不同评分的电影。如何为每个评分生成等效的星数?

$( document ).ready(function() {

movie = {
Title: "The Exorcist",
Year: "1973",
Metascore: "82",
imdbRating: "8.0",
}
  // red star
  const $star = $(`<svg width="75" height="50"><polygon points="25,2.5, 10,49 47.5,17.5, 2.5,17.5,40,49" style="fill:red;stroke:none;stroke-width:5;"/></svg>`);

  // movie rating
  const rate = parseInt(movie.imdbRating);
  $(".row").text(`Movie IMDB Rating: ${rate}`);

  // 10 star array
  const ratingStars =[$star,$star,$star,$star,$star,$star,$star,$star,$star,$star];

 for(let i = 0; i <= ratingStars.length; i++) {
  if(rate === 8 ) {
   $star.clone().appendTo($("#star"));
 }
}

});

【问题讨论】:

  • i &lt;= 应该是 i &lt; 这就是为什么你得到 11 ......但是 for 循环的其余部分没有意义,因为它只会在 rate === 8
  • 感谢您指出这一点...我只是将 8 个放在我的示例中 - 我不确定处理不同评级数字的最佳方法是什么
  • 我想知道故事中的if(rate === 8 ) {是什么

标签: javascript jquery


【解决方案1】:

你想做的是

for(let i = 0; i < rate; i++) {
    $star.clone().appendTo($("#star"));
}

所以,如果评分是 8.0 到 8.999,您将获得 8 颗星

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多