如果字段 x 大于 y,则返回值为 3

问题描述 投票:0回答:1

我正在尝试创建一个计算奖励积分的记分卡公式。

我需要公式来看看下面哪个分数更大,两个分数中较大的一个会返回 3 个奖励分。

两个分数中较低的返回值 0。

  • HTP(主队积分)147
  • ATP(客队积分)148

答案:

  • HTBP(主队奖励积分)= 0
  • ATBP(客队奖励积分)= 3

我尝试过这个,但它根本不返回任何值。

var HTP = Number(this.getField("HTP").valueAsString);
var ATP = Number(this.getField("ATP").valueAsString);

this.getField("HTBP").value = (HTBP&&ATBP) ? (HTP > ATP ? 3:0) : "";
this.getField("ATA").value = (HTBP&&ATBP) ? (HTP > ATP ? 0:3) : "";
javascript
1个回答
0
投票

我不明白为什么你不直接从表单字段中获取值作为数字。您还应该命名变量以使其更有意义。

此外,你的三元应该更简单。

class FormObserver {
  constructor(form) {
    this.form = form;
  }
  getField(name) {
    return this.form.elements[name];
  }
  update() {
    const homeTeamPoints = this.getField("HTP").valueAsNumber;
    const awayTeamPoints = this.getField("ATP").valueAsNumber;

    const homeBonus = homeTeamPoints > awayTeamPoints ? 3 : 0;
    const awayBonus = awayTeamPoints > homeTeamPoints ? 3 : 0;

    this.getField("HTBP").value = homeBonus;
    this.getField("ATBP").value = awayBonus;
  }
}

const formObserver = new FormObserver(document.forms['game-points']);
formObserver.update();
body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

form[name="game-points"] {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: flex-start;
  gap: 0.25rem;
}
<form name="game-points">
  <label for="htp-in">HTP</label>
  <input type="number" id="htp-in" name="HTP" value="147">
  <label for="atp-in">ATP</label>
  <input type="number" id="atp-in" name="ATP" value="148">
  <label for="htbp-out">HTBP</label>
  <input type="number" id="htbp-out" name="HTBP" readonly>
  <label for="atbp-out">ATBP</label>
  <input type="number" id="atbp-out" name="ATBP" readonly>
</form>

© www.soinside.com 2019 - 2024. All rights reserved.