2017-10-21 4 views
1

私は初心者で、nodejsの個人的なプロジェクトに取り組んでいます。うまくいけば私は少しの助けを得ることができます。複数の選択オブジェクトの複数のオプションを循環させ、SQL照会結果に基づいてオプションを選択する

状況は次のとおりです。私は、サイクルタイムが同じクラス名の5つの選択要素を持っています。次に、各選択要素のオプションを順番に調べると、これが機能します。私が問題に遭遇するところは、SQLクエリ(接続が作成されている)から値を取得したいということです。 SQLクエリから取得したテーブルの値を循環させ、適切な各選択要素で複数のインデックスを選択するにはどうすればよいですか?

これは意味があると思います。ここで

は、私が一緒に入れているものです:私は推測している

//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 
      } 
     } 
     } 
    } 

私はループのためにあまりにも多くを持っているかもしれないが、私はこれを行うにはどのように他わかりませんよ。あなたが提供できるすべてのおかげで、ありがとう。

+0

がループ(あまりにも多くのループ)を最適化についてのご質問ですがまたはあなたが持っていますコードを実行しているときにエラーが発生するか、または予期した結果につながりませんか? – Jankapunkt

+0

ところで、 'rows [0] .TestID'は常に最初の行のTestIDを参照します。これは意図されていますか?それ以外の場合は 'rows [k] .TestID' – Jankapunkt

+0

になります。私はコードを操作していて、コピー貼り付け前にrows [0]部分を修正するのを忘れていました。 – robikube

答えて

0

質問をもう一度読み終えたら、解決策があると思います。

基本的には、1つのループで行を繰り返し処理し、関連するすべてのオプション(同じ値を持つ)を各行IDごとに取得する必要があります。

あなたは簡単にそれを行うことができますjQueryのを使用して:

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

このコードは、あなたのrow`s 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/

+0

ありがとうございます。私はそこに問題があると思う。私はこのエラーを受け取ります:未知のエラー:構文エラー、認識できない式:[値=活性化部分トロンボプラスチン時間]。理由はありません。 – robikube

+0

私はJavaScriptを使ってスケートすることができると思っていましたが、jqueryはとても便利です。私はそれがどのように機能するかを知る必要があります。ずっと凝縮されています。 – robikube

+0

私の場合、オプションは別のテーブルから情報を引き出すことでjavascriptで動的に作成されますが、HTMLでは手動で実装されません。これが原因でこのエラーが発生する可能性がありますか? – robikube

関連する問題