我有计算当前行和上一行之间差异的函数
这是
function distanceDifference() {
var rowsDistance = $('#tbody tr');
for (j = 1; j < rowsDistance.length; j++) {
// Get the rows
var previousDistanceRow = rowsDistance.eq(j - 1);
var currentDistanceRow = rowsDistance.eq(j);
var previousDistance = previousDistanceRow.find('td').eq(5).text();
var currentDistance = currentDistanceRow.find('td').eq(5).text();
//alert(previousDistance);
var difference = currentDistance - previousDistance;
//alert(difference);
currentDistanceRow.find('td').eq(6).text(difference);
}
}
适用于所有值
但我有专栏
<td id="dataType">@data.Datatype</td>
它的值可以是0,1,2
我只需要===2
我尝试这样做
function distanceDifference() {
var rowsDistance = $('#tbody tr');
for (j = 1; j < rowsDistance.length; j++) {
var value = $('#dataType').text();
if (value === 2) {
// Get the rows
var previousDistanceRow = rowsDistance.eq(j - 1);
var currentDistanceRow = rowsDistance.eq(j);
var previousDistance = previousDistanceRow.find('td').eq(5).text();
var currentDistance = currentDistanceRow.find('td').eq(5).text();
//alert(previousDistance);
var difference = currentDistance - previousDistance;
//alert(difference);
currentDistanceRow.find('td').eq(6).text(difference);
}
}
}
但它不起作用。我需要如何正确编写代码?
答案 0 :(得分:2)
使用if (value == 2)
代替if (value === 2)
。
因为等于运算符===
也比较操作数数据类型。
但值'2'
的数据类型为string
,您与integer
2
进行比较
运算符==
将仅比较值2 == 2
,而不比较操作数数据类型!
答案 1 :(得分:0)
即使非严格的比较可行,但在我看来,更好的做法是验证用户输入并将其转换为特定的数据类型。
因此,如果您希望用户输入为整数,请使用此
var value = parseInt( $('#dataType').text(), 10 );
如果您希望它是一个带浮点的数字,请改用:
var value = parseFloat( $('#dataType').text() )
然后你可以像你已经那样使用严格的比较。
但总是验证用户输入是否具有正确的格式。
答案 2 :(得分:0)
所以麻烦在于我只从列
获得第一个值这是有效代码
function distanceDifference() {
var rowsDistance = $('#tbody tr');
for (j = 1; j < rowsDistance.length; j++) {
//var value = parseInt($('.dataType ').html());
var test = $('.dataType');
if (parseInt($(test[j]).html()) === 2) {
// Get the rows
var previousDistanceRow = rowsDistance.eq(j - 1);
var currentDistanceRow = rowsDistance.eq(j);
var previousDistance = previousDistanceRow.find('td').eq(5).text();
var currentDistance = currentDistanceRow.find('td').eq(5).text();
var difference = currentDistance - previousDistance;
currentDistanceRow.find('td').eq(6).text(difference);
}
}
}