我正在尝试创建一个计算奖励积分的记分卡公式。
我需要公式来看看下面哪个分数更大,两个分数中较大的一个会返回 3 个奖励分。
两个分数中较低的返回值 0。
答案:
我尝试过这个,但它根本不返回任何值。
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) : "";
我不明白为什么你不直接从表单字段中获取值作为数字。您还应该命名变量以使其更有意义。
此外,你的三元应该更简单。
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>