2011-06-18 18 views
0

テーブルを作成するDOMオブジェクトを取得しました。テーブル結果からテーブル名をAsText(Geometry)(つまりfieldName [i] =「AsText(幾何学))これは、SQLite3のクエリですSQLクエリーテーブルの結果からTextarea用のDOMを作成する

ここでは、テーブルのhtmlに

function displayWKTqueryVCF(bcoResults, parameters){ 
    //debug('displaying scores'); 
    /* 
    * the data array has multiple results from multiple BCF calls. 
    * the first one has the data needed here. 
    */ 
    var aResult = bcoResults[0]; 
    if(aResult.errorMessage != 'not an error'){ 
     handleError('queryError',[aResult.errorMessage]); 
     return; 
    } 
    var fieldNames = aResult.fieldNames; 
    var records = aResult.data; 
    var numFields = fieldNames.length; 
    var numRecords = records.length; 
    var container = document.getElementById('queryResults'); 
    container.innerHTML = ''; 
    var table = document.createElement('table'); 
    container.appendChild(table); 


    var headerRow = document.createElement('tr'); 
    table.appendChild(headerRow); 
    for(var i = 0; i < numFields; i++){ 
     var header = document.createElement('th'); 
     header.innerText = fieldNames[i]; 
     headerRow.appendChild(header); 
    } 

    for(var i = 0; i < numRecords; i++){ 
     var tableRow = document.createElement('tr'); 
     table.appendChild(tableRow); 


     for(var j = 0; j < numFields; j++){ 
      var tableData = document.createElement('td');   

      tableRow.appendChild(tableData); 
      tableData.innerText = records[i][j]; 
     } 
    } 

} 

出力を作成DOMです。私はそれがテキストエリアで、新しい機能を望んでいた

<table> 
    <tr> 
     <th>name</th> 
     <th>city</th> 
     <th>AsText(Geometry))</th> 
    </tr> 
    <tr> 
     <td>Andres Street</td> 
     <td>Nowhere City</td> 
     <td>LINESTRING(7.120068 43.583917,7.120154 43.583652,7.120385 
      43.582716,7.12039 43.582568,7.120712 43.581511,7.120873 43.580718)</td> 
    </tr> 
</table> 

を、ないテーブル。問題の1つは、2Dデータをテキスト表に格納する方法です(つまり、records [i] [j];)。追加?

~~~~~~~~~~~~~~

function displayAsTextGeometryVCF(bcoResults, parameters){ 

    var aResult = bcoResults[0]; 
    if(aResult.errorMessage != 'not an error'){ 
     handleError('queryError',[aResult.errorMessage]); 
     return; 
    } 
    var fieldNames = aResult.fieldNames; 
    var records = aResult.data; 
    var numFields = fieldNames.length; 
    var numRecords = records.length; 
    // var container = document.getElementById('queryAsTextGeometry'); 

    var oTextarea = document.getElementById('wktResult'); 
    oTextarea.innerHTML = ''; 

    var g = 0; 

    for(var i = 0; i < numFields; i++){ 

     if fieldNames[i] = "AsText(Geometry)" then 
     var g = i; 
    } 

    for(var g){ 

     for(var j = 0; j < numFields; j++){ 

      document.getElementById('wktResults').value = records[g][j]; 
      //tableData.innerText = records[g][j]; 
     } 
    } 

} 

所望の出力を募集:

<textarea>LINESTRING(7.120068 43.583917,7.120154 43.583652,7.120385 
     43.582716,7.12039 43.582568,7.120712 43.581511,7.120873 43.580718)</textrea> 

どのように上記のコードにコーポレートこのaddtextすることができます。

function addtxt(input) { 
var obj=document.getElementById(input) 
var txt=document.createTextNode("blah blah") 
obj.appendChild(txt) 

テキストエリアとボタン:

<a href="#wktInput" data-inline="true" data-role="button">WKT Result</a> 

     <textarea cols="160" rows="10" style="color: green; background-color: black" name="wktResult" >WKT Results</textarea> 
+0

あなたが望むものを理解することは非常に難しいです。あなたはいくつかのサンプルの望ましい出力を提供できますか? –

+0

はい。私はちょうど質問を編集し、テーブルの出力とテキストエリアの望ましい出力を提供しました。 –

答えて

1

あなたが問題を抱えているこののどの部分伝えるのは難しいです。あなたのdisplayAsTextGeometryVCF()機能を動作させるのに問題があると思われます。ここに書き直したバージョンです。それを試してみてください:

function displayAsTextGeometryVCF(bcoResults) { 
    var aResult = bcoResults[0]; 
    if (aResult.errorMessage != 'not an error') { 
     handleError('queryError', [aResult.errorMessage]); 
     return; 
    } 

    var fieldNames = aResult.fieldNames, 
     records = aResult.data, 
     container = document.getElementById('queryResults'); 
    container.innerHTML = ''; 

    var theField = 0; 
    for (var i = 0, ii = fieldNames.length; i < ii; i++) { 
     if (fieldNames[i] == 'AsText(Geometry)') { 
      theField = i; 
      break; 
     } 
    } 

    for (var i = 0, ii = records.length; i < ii; i++) { 
     var t = document.createElement('textarea'); 
     t.innerText = records[i][theField]; 
     container.appendChild(t); 
    } 

} 

このデータの場合:

displayAsTextGeometryVCF([{ 
    errorMessage: 'not an error', 
    fieldNames: ['dummy', 'AsText(Geometry)'], 
    data: [ 
     ['one','yes'], 
     ['no','yes'] 
    ] 
}]); 

出力は次のとおりです。

<div id="queryResults"><textarea>yes</textarea><textarea>yes</textarea></div> 

は、あなたが何を望むかということですか?

+0

マーク、優秀な答え!冷たいバターのホットナイフのように働く。あなたはDOM忍者です! –

+0

このソリューションをありがとうございます。 SpatialiteのGeoJSONのクエリは、次のSpatialiteのリリースで利用できるようになると、これもうまくいくと思います。 –

関連する問題