jQuery遍历表找到最高价值

时间:2018-12-26 06:30:47

标签: javascript jquery html

问题:

我有一个HTML框,可以在其中输入一个值,然后将10%添加到每一边以创建范围。如果某行的column值不在该范围内,则将其隐藏。我想找到最高的未隐藏值,并将其值分配给bestrange。然后,我想检查bestrangeprice价格下所有隐藏的行,看看它们的得分是否比bestrangemark更高,如果显示,则显示它们。

我已经得到的代码的第一部分直到分配̶̶b̶e̶s̶t̶r̶a̶n̶g̶e̶̶并且具有多数的码,以检查是否另一行高则̶̶b̶e̶s̶t̶r̶a̶n̶g̶e̶。我只需要的代码分配̶̶b̶e̶s̶t̶r̶a̶n̶g̶e̶̶通过比较未隐藏行值栏,找出最高和一些小的修正等我是否需要̶̶(̶e̶)̶̶后̶̶f̶u̶n̶c̶t̶i̶o̶n̶̶或者什么̶I̶'̶m̶应该̶d̶o̶。

请参阅下面的更新2。

代码:

输入:

<input type="number" id="myPrice" placeholder="Enter amount.." title="Type in a amount" min="0">

jQuery函数:

$(document).ready(function() {
  $("#myPrice").on("keyup", function() { //new input
    if ($(this).val() === '') {
      $("#myTable tr").show();
      return;
    }
    priceLow = $(this).val() * 0.9; // - 10%
    priceHigh = $(this).val() * 1.1; // + 10%
    $("#myTable tr td:nth-child(2)").each(function(e) {
      var value = parseFloat(this.textContent.replace('$', '')); //convert price to float
      if (value >= priceLow && value <= priceHigh) { //check if in range
        $(this).closest('tr').removeClass('discarded').show(); //show
      } else {
        $(this).closest('tr').addClass('discarded').hide(); //hide
      }
    })
    $("#myTable tr:not(.discarded)").each(function(e) {
      var mark = parseFloat($(this).find("td:nth-child(3)").text());
      var price = parseFloat($(this).find("td:nth-child(2)").text().replace('$', ''));
      var value = parseFloat($(this).find("td:nth-child(4)").text()); 
      if (value > bestrange) {
        bestrangeprice = price;
        bestrangemark = mark;
      }
    });
    $("#myTable tr").each(function(e) {
      var mark = parseFloat($(this).find("td:nth-child(3)").text());
      var price = parseFloat($(this).find("td:nth-child(3)").text().replace('$', ''));
      if (price <= bestrangeprice && mark > bestrangemark) { //check if beat bestrange
        $(this).closest('tr').removeClass('discarded').show(); //show row
    })
  });
});

JS小提琴(带有表数据):

https://facebook.github.io/react-native/docs/flatlist

更新:

我添加了一些内容以从非隐藏行中获取值以找到bestrange,但是我不确定如何比较每一行以找到“最佳”。

更新2:

我想我现在已经拥有了所有需要的代码,但是上面的小提琴可以看到一个例子。

其他

我想不通最后一点,所有帮助将不胜感激。

如果您需要更多信息,请告诉我。

谢谢

2 个答案:

答案 0 :(得分:1)

您的js代码缺少花括号,您正在调用“ onkeyup =“ myPriceFunction()”(未定义)。我更新了小提琴,它似乎工作正常。

<input type="number" id="myPrice" onkeyup="myPriceFunction()" placeholder="Enter amount.." title="Type in a amount" min="0">

从js绑定事件时,不需要上面的onkeyup

$("#myPrice").on("keyup", function() { 

});

https://jsfiddle.net/nx30zqjd/30/

答案 1 :(得分:0)

存在一些逻辑和格式问题。

所有解决方案都可以在fiddle中找到。