javascript - 使用分数在 javascript 中分配奖励

标签 javascript

这是我为这个项目提出的问题的最后一部分。我想根据总分(三位评委的平均分)“分配”一个奖项。所以如果比分是 0-30 就是金牌,30.1-60 就是高金牌,最后 60.1-90 就是白金牌。当按下获取分数按钮时,我希望显示总分(确实如此)并显示分配的奖励(金,高金,白金)。我如何才能分配和显示该奖项?我不确定如何编码。我有 if 语句的基础,但我不确定这是否有效。需要帮助弄清楚如何找到奖项是什么并让它显示奖项。就像计算并显示总分一样。这是代码:

<!DOCTYPE html>
<html>
<body>
<p align="right"> Dance Number:  <input type="text"size="3"></p>
<h1><ins>Judge 1</ins></h1>
<form>
<p> Technique:  <input class="jd1" id="txt1" type="number"size="3"   min="0" max="35">     /35</p>
<p> Choreography:  <input id="txt2" class="jd1" type="number"size="3"    min="0" max="15"> /15</p>
<p> Performance: <input  id="txt3" class="jd1" type="number"size="3" min="0" max="25">   /25</p>
<p> Precision:  <input id="txt4" class="jd1" type="number"size="3" min="0" max="15">  /15</p>
<p> Total Points: <input id="txt5"type="text"size="3">  /90</p>
<p> Comments</p>
<textarea name="commentsOne" cols="50" rows="5">
</textarea>
</br>
</form>

<h1><ins>Judge 2</ins></h1>
<form>
<p> Technique:  <input id="txt6" type="number" class="jd2" size="3" min="0"  max="35"> /35</p>
<p> Choreography:  <input id="txt7" type="number" class="jd2" size="3" min="0" max="15"> /15</p>
<p> Performance: <input id="txt8" type="number" class="jd2" size="3" min="0" max="25"> /25</p>
<p> Precision:  <input  id="txt9" class="jd2" type="number" size="3" min="0" max="15"> /15</p>
<p> Total Points: <input  id="txt10"type="number"size="3">  /90</p>
<p> Comments</p>
<textarea name="commentsOne" cols="50" rows="5">
</textarea>
</form>

<h1><ins>Judge 3</ins></h1>
<form>
<p> Technique:  <input  id="txt11" class="jd3" type="number"size="3"  min="0" max="35">  /35</p>
<p> Choreography:  <input id="txt12" type="number" class="jd3" size="3" min="0" max="15">  /15</p>
<p> Performance: <input  id="txt13" class="jd3" type="number" size="3" min="0" max="25">  /25</p>
<p> Precision:  <input id="txt14" type="number" size="3" class="jd3" min="0" max="15"> /15</p>
<p> Total Points: <input id="txt15" type="number"size="3">  /90</p>
<p> Comments</p>
<textarea name="commentsOne" cols="50" rows="5">
</textarea>
</form>

<input type="button"  onclick="sum()" onclick="award()" value="Get   Score">
<p> Overall Score:<span id="avg"></span></p>
<p> Award Assigned:<span id = "award"></span></p>
</body>
<script>

  function getSum(className) {
  var result = 0;
  var classGroup = document.getElementsByClassName(className);

  for(var i =0; i < classGroup.length; (i = i + 1))
  {
    result += parseInt((classGroup[i].value || 0), 10);
  }

  return result;

}

function sum() {

  var result1 = getSum('jd1');
  var result2 = getSum('jd2');
  var result3 = getSum('jd3');

  console.log('sum' + result1 + '' + result2 + '' + result3);

  document.getElementById('txt5').value = result1;
  document.getElementById('txt10').value = result2;
  document.getElementById('txt15').value = result3;


  document.getElementById('avg').innerHTML = (result1 + result2 +   result3)/3;
}

function award(){

document.getElementById('avg').value = x;

if( x = 0, x++, x < 30.1)
    {

    }

if( x = 0, x++, x < 60.1)
    {

    }

if( x = 0, x++, x < 91)
    {

    }
}

</script>
</html>

最佳答案

var award = ['Gold','High Gold','Platinum'][ (( score - 0.1 ) / 30 ) | 0 ];

我很好奇是否可以在没有所有这些 if 语句的情况下在一行代码中完成……答案是肯定的。上面的行返回分数 0 到 91 的正确奖励。

这里有趣的部分是按位运算符“score | 0”。这就像 Math.floor() 用于正数和 Math.ceil() 用于负数。这正是本例中计算数组索引所需要的。

嗯,我们都知道不要在生产代码中使用技巧,除非目标是让其他程序员讨厌你。尽管如此,还是很酷。

更新:

作为对评论的回应,替换这一行:

document.getElementById('avg').innerHTML = (result1 + result2 +   result3)/3;

这些行:

var score = (result1 + result2 + result3) / 3;
document.getElementById('avg').innerHTML = score;
document.getElementById('award').innerHTML = ['Gold','High Gold','Platinum'][ (( score - 0.1 ) / 30 ) | 0 ];

同样,我不鼓励在生产代码中使用这样的技巧 - 哈哈。

关于javascript - 使用分数在 javascript 中分配奖励,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292192/

相关文章:

javascript - 如何在 Javascript 中对数组进行字符串化?

javascript - 如何将 Django 的 CSRF token 添加到 jQuery POST 请求的 header 中?

javascript - JavaScript 不隐藏 DIV

javascript - 如何迭代此 json 结构以生成另一个结构?

javascript - 检测 Bootstrap 下拉菜单选项的正确方法是什么?

javascript - 按 parentId javascript 对平面数组进行排序

javascript - 使用 angularjs 在新页面中查看所选行的详细信息

php - FullCalendar - 显示不同的信息

javascript - Sequelize - 检查数组中是否有任何字符串包含字符串

javascript - 重定向到从 json 响应中获取的 url