2011-06-18 30 views
0

我得到了創建表的DOM對象,並且我想要一個新的函數/ DOM,它可以從表結果創建一個Textarea,其列名爲AsText(Geometry)(即fieldName [i] 。=「AsText(幾何))這是sqlite3的查詢從SQL查詢表中創建一個用於Textarea的DOM結果

下面是創建表的HTML DOM

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]; 
     } 
    } 

} 

輸出:

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

我想要一個新的功能,那就是多行文本,不表。其中一個問題是如何將2D數據存儲到textrarea中(即記錄[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) 

textarea的和按鈕:

<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

是的。我剛剛編輯了問題,並提供了表格的輸出和textarea的所需輸出。 –

回答

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查詢中,當它在下一個Spatialite版本中可用時,它將與GeoJSON一起工作。 –