javascript - 输入高尔夫分数和相关计算时如何指定表格行
问题描述
我有一个表格,它从数据库中填充有关所选高尔夫球场的详细信息。在这张表中,我有 18 行,每个孔一个。每行填充类似于高尔夫记分卡的数据,并输入每个洞的得分。
我已经找到了计算得分并在第一行显示的代码,但是我该如何为其他 17 个洞执行此操作
表代码
echo "<tr>
<td style='display:none;'><input type='number' class='form-control' name='holeID' id='hole".$row["holeID"]."' value=".$row["holeID"]." readonly tabindex='-1'></td>
<td ><input type='number' class='form-control' name='holeNumber[]' id='hole".$row["holeNumber"]."' value=".$row["holeNumber"]." readonly tabindex='-1'></td>
<td ><input type='number' class='text-center form-control' name='holePar[]' id='par".$row["holeNumber"]."' value=".$row["par"]." readonly tabindex='-1'></td>
<td ><input type='number' class='text-center form-control strokeIndex' name='holeStrokeIndex[]' id='hole".$row["holeNumber"]."strokeIndex' value=".$row["strokeIndex"]." readonly tabindex='-1'></td>
<td ><input type='number' class='text-center form-control strokesReceived' name='strokesReceived' id='hole".$row["holeNumber"]."strokesReceived' value='' readonly tabindex='-1'></td>
<td ><select class='form-control scoreInput' id='scoreInputHole".$row["holeNumber"]."' name='scoreInput' >
<option value='' disabled selected hidden>Input Score..</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='NR'>NR</option>
</td>
<td ><input type='number' class='text-center form-control pointsScored' name='pointsScored' id='hole".$row["holeNumber"]."points' value='' readonly tabindex='-1'></td>
</tr>";
分数计算代码
$(document).on('change','#scoreInput',function(){
alert($('#scoreInput :selected').val()+ " shots");
var score = $('#scoreInput :selected').val();
var par = document.getElementById('par1').value;
var pointsScored = document.getElementsByName('pointsScored');
alert ("Par " + par);
var strokesReceived = document.getElementById('hole1strokesReceived').value;
alert (strokesReceived + " strokes received");
points = (parseFloat(par) + parseFloat(strokesReceived)) - parseFloat(score) + parseFloat(2);
if(points < 1 || score == "NR"){
points = 0
}
alert (points + " points");
pointsScored[0].setAttribute('value',points);
});
好的,我已将代码更改为下面,并且每一行都按预期工作,引用正确的值,我现在在让 pointsScored 显示时遇到问题,错误是
未捕获的类型错误:pointsScored.setAttribute 不是函数
或者
adminEventScoreEntry.php?id=1:837 Uncaught TypeError: $(...).closest(...).find(...).setAttribute is not a function
$(document).on('change','.scoreInput',function(){
var score = $(this).children('option:selected').val();
var par = $(this).closest('tr').find('.par').val();
var pointsScored = $(this).closest('tr').find('.pointsScored');
var strokesReceived = $(this).closest('tr').find('.strokesReceived').val();
var points = (parseFloat(par) + parseFloat(strokesReceived)) - parseFloat(score) + parseFloat(2);
console.log ("Score is "+score);
console.log ("Par is "+par);
console.log (strokesReceived + " strokes received");
if(points < 1 || score == "NR"){
points = 0
console.log (points +" points scored");
$(this).closest('tr').find('.pointsScored').setAttribute('value', points);
} else {
console.log (points +" points scored");
$(this).closest('tr').find('.pointsScored').setAttribute('value', points);
}
});
});
解决方案
弄清楚了,
$(document).on('change','.scoreInput',function(){
var score = $(this).children('option:selected').val();
var par = $(this).closest('tr').find('.par').val();
var pointsScored = $(this).closest('tr').find('.pointsScored');
var strokesReceived = $(this).closest('tr').find('.strokesReceived').val();
var points = (parseFloat(par) + parseFloat(strokesReceived)) - parseFloat(score) + parseFloat(2);
console.log ("Score is "+score);
console.log ("Par is "+par);
console.log (strokesReceived + " strokes received");
if(points < 1 || score == "NR"){
points = 0
console.log (points +" points scored");
$(this).closest('tr').find('.pointsScored').attr('value', points);
} else {
console.log (points +" points scored");
$(this).closest('tr').find('.pointsScored').attr('value', points);
}
});
});
推荐阅读
- java - Spring - 显式 bean 实例化未设置 @Value 属性
- ios - NSLayoutConstraint - 两项,一行,间距优先
- android - 如何在改造 2 上发布整个数据库
- xamarin.forms - 未应用 CornerRadius
- r - 在 R dplyr 中按组将多列转换为相对频率
- apache-spark - 在 PySpark Structured Streaming 中为多个输出流使用单个流数据帧
- c - 从C中的void函数返回一个值
- javascript - addClass() 仅指向子元素(而不是嵌套元素)
- c - realloc 在第二次调用时失败
- python - 弹出索引超出范围python