简体   繁体   English

要从Web表格中选择一行?

[英]To select a row from a web table?

Here is the code that I used to select a row from this particular table. 这是我用来从此特定表中选择一行的代码。 The following code has to select the row containing Position-"Engineer' and Age=34. Instead it is selecting the entire table. Can someone explain me why is this happening and what can be added to avoid it. 下面的代码必须选择包含Position-“ Engineer'和Age = 34的行。相反,它选择的是整个表。有人可以解释一下为什么会发生这种情况,可以添加一些内容来避免这种情况。

 $(document).ready(function(){ var dict={1:"Engineer",3:"34"}; var a=Object.keys(dict); if ( (a+"").match(/^\\d+$/) ) { var colidx = Object.keys(dict); $('#example tbody tr').filter(function(idx, ele) { var val = colidx.filter(function(colname, idx) { var colvalue = dict[colname]; return ($(ele).find('td').eq(colidx[idx]).text() == colvalue) }); return val.length == colidx.length }).css('background-color', 'red'); } else { var coli = {}; $('#example thead tr th').filter(function(i, e) { var keycol = e.textContent; var keyval = Object.keys(dict).indexOf(keycol); if (keyval != -1) { coli[keycol] = i; } }); var colidx = Object.keys(coli); $('#example tbody tr').filter(function(idx, ele) { var val = colidx.filter(function(colname, idx) { var colvalue = dict[colname]; var colindex = coli[colname]; return ($(ele).find('td').eq(colindex).text() == colvalue) }); return val.length == colidx.length; }).css('background-color', 'red'); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table id="example" class="display" width="100%"> <thead> <tr> <th>Name</th> <th>Position</th> <th>Office</th> <th>Age</th> <th>Start date</th> <th>Salary</th> </tr> </thead> <tbody> <tr> <td>Kavya</td> <td>Engineer</td> <td>Mumbai</td> <td>34</td> <td>2011/04/25</td> <td>1,20,000</td> </tr> <tr> <td>Archana</td> <td>Accountant</td> <td>Delhi</td> <td>21</td> <td>2011/07/25</td> <td>170,750</td> </tr> <tr> <td>kranthi</td> <td>Technical Author</td> <td>Chennai</td> <td>23</td> <td>2009/01/12</td> <td>86,000</td> </tr> <tr> <td>Srija</td> <td>Javascript Developer</td> <td>Pune</td> <td>22</td> <td>2012/03/29</td> <td>433,060</td> </tr> <tr> <td>Priyanka</td> <td>Engineer</td> <td>Mysore</td> <td>33</td> <td>2008/11/28</td> <td>162,700</td> </tr> <tr> <td>Himanshu</td> <td>Integration Specialist</td> <td>Goa</td> <td>51</td> <td>2012/12/02</td> <td>372,000</td> </tr> <tr> <td>Vishwam</td> <td>System Architect</td> <td>Jharkand</td> <td>69</td> <td>2011/04/25</td> <td>320,800</td> </tr> <tr> <td>Akhila</td> <td>Sales Assistant</td> <td>Hyderabad</td> <td>59</td> <td>2012/08/06</td> <td>137,500</td> </tr> <tr> <td>Ashwini</td> <td>Javascript Developer</td> <td>Bhuvaneshwar</td> <td>39</td> <td>2009/09/15</td> <td>205,500</td> </tr> </tbody> </table> 

You could do something like this 你可以做这样的事情

UPDATE: Example using a dict with index-value and Name-value 更新:示例使用具有索引值和名称值的字典

$(function() {
  var dict = {0:"Srija", "Office": "Pune", 3: "22"};
  dict = buildIndexValueDictionary(dict);
  runSearchByDict(dict);
});

function buildIndexValueDictionary(dict){
  var header = $("table thead tr th")
  var result = {};
  for (var key in dict) {
    if(isNaN(key)){
      result[getIndexByColumnName(header, key)] = dict[key];
    }
    else{
      result[key] = dict[key];
    }
  }
  return result;
}

function getIndexByColumnName(header, key){
  for(var i = 0; i < header.length; i++){
    if($(header[i]).html() == key){
      return i;
    }
  }
}

function runSearchByDict(dict) {
      var arrayIndex = new Array();
      var arrayValues = new Array();
      for (var key in dict) {
        arrayIndex.push(key);
        arrayValues.push(dict[key]);
      }
      var matchedRows = selectRowByDict(arrayIndex, arrayValues);
      for (var i = 0; i < matchedRows.length; i++) {
        console.log($(matchedRows[i]).html());
      }
}

function selectRowByDict(arrayIndex, arrayValues){
  var result = new Array();
  var rows = $("table tbody tr");
  for(var j = 0; j < rows.length; j++){
    var cells = $(rows[j]).find("td");
    var validRow = true;
    for(var i = 0; i < arrayIndex.length && validRow; i++){
      if($(cells[arrayIndex[i]]).html() != arrayValues[i]){
        validRow = false;
      }
    }
    if(validRow){
      result.push($(rows[j]));
    }
  }
  return result;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM