仅针对特定值计算值

时间:2017-08-03 11:30:24

标签: javascript jquery html css

我有计算当前行和上一行之间差异的函数

这是

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);
      }
    }
}

但它不起作用。我需要如何正确编写代码?

3 个答案:

答案 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);
     }
    }
}