循环选择多个选择对象的多个选项,并根据SQL查询结果选择选项

时间:2017-10-21 18:59:49

标签: javascript mysql node.js electron

我是一名新手,并且一直致力于在nodejs开展个人项目,这让我有点头疼。希望我能得到一些帮助。

以下是这种情况:我有5个具有相同类名的选择元素。然后我循环遍历每个选择元素的选项,这是有效的。我遇到问题的地方是我想从SQL查询中获取值(创建连接)。如何循环查看从SQL查询中获取的表中的值,并在每个相应的select元素中选择多个索引?

我希望这是有道理的。

以下是我的内容:

  //execute queries here
  var id = document.getElementById('idtext').value

  connection.query('SELECT * FROM doneon WHERE SampID LIKE ?', id, (err, rows, fields) => {
    if(err){
      return console.log('An error ocurred with the query', err)
    }
    var seleobje = document.getElementsByClassName('sele')
    for (var i=0; i<seleobje.length; i++){
      for (var j=0; j<seleobje.item(i).length; j++){
        for (var k=0; k<rows.length; k++){
          if (seleobje.item(i).options[j].value == rows[0].TestID){
            seleobje.item(i).options.selectedIndex = True
          }
        }
      }
    }

我猜我可能有太多的循环,但我不确定如何做到这一点。感谢您提供的所有帮助。

1 个答案:

答案 0 :(得分:0)

再次阅读你的问题之后,我想我有一个解决方案。

你基本上需要在一个循环中迭代你的行,然后为每个row-id获取所有相关的选项(具有相同的值)。

你可以使用jQuery轻松完成:

for (var k=0; k<rows.length; k++){
  var rowId = rows[k].TestID;
  $("[value='"+rowId+"']").each(function(element){
      this.selected = "selected";
  });
}

此代码生成与您的行ID相匹配的所有<option>条目selected。完整的代码是:

//execute queries here
var id = document.getElementById('idtext').value

connection.query('SELECT * FROM doneon WHERE SampID LIKE ?', id, (err, rows, fields) => {
  if (err){
    return console.log('An error ocurred with the query', err)
  }

  for (var k=0; k<rows.length; k++){
    var rowId = rows[k].TestID;
    $("[value='"+rowId+"']").each(function(element){
      this.selected = "selected";
    });
  }
}

如果已经创建了一个样本小提琴,则会将此代码与一些示例数据一起使用:https://jsfiddle.net/qgadhsLh/