2014-01-29 73 views
0

我一直在學習,我想我終於在這個我一直在努力的小項目結束了!我見過一些類似的主題,但無法完全適應我的需求!檢查特定字符串的JSON內容

我有一個JSON輸出,顯示正確,我正在尋找一個特定的值,並只將這些結果粘貼到表中。

我有以下使用XML數據並將其粘貼到表中的Javascript。

的Javascript

var html = '<table id="myTable"><thead><tr><th>Entry</th>'; 
    for (row = 0; row < jsondata.rowCount; row++) 
    { 
     html += "<tr><td>" + (row+1) + "</td>"; 
     for (column = 0; column < jsondata.columnCount; column++) 
     { 
      if((jsondata.xmlData [ row ] [ column ]) == "Ninja") 
      { 
       html += "<td>" + jsondata.xmlData [ row ] [ column ] + "</td>" 
      } 

      alert(jsondata.xmlData [ row ] [ column ]); //Added in edit - "undefined" 
     } 
     html += "</tbody></table>"; 
     $("#tablearea").html(html); 
    } 

編輯:JSON

"xmlData" : [ [ "Ninja", "Blue"], [ "Car", "Red"] ] 

如果我排除的if語句會這一切,但粘貼如果(當警報測試)指出undefined

+1

您可以共享一塊json數據嗎?或者更好,你能創造一個小提琴嗎? – Beterraba

+0

您是否嘗試foreach或循環json數組以匹配值? – Jack

+0

你把警報放在哪裏?請在您的代碼中顯示它。 – rednaw

回答

0

EDIT(更簡潔):

我相信你的問題是,你的rowCount時成員不匹配實際行數。您可以使用數組的.length屬性,或者(在給定的對象中),您可以執行以下操作...

var jsondata = { 
    rowCount: 3, 
    columnCount: 2, 
    xmlData: [["Ninja", "Blue"], ["Car", "Red"]] 
}; 

var html = '<table id="myTable">' + 
      '<thead>' + 
      '<tr><th>Entry</th><tr>'; 
html += "<tbody>"; 
for (row = 0; row < jsondata.rowCount; row++) { 
    var showRow = false; 
    var tempHtml = "<tr>"; 
    for (column = 0; column < jsondata.columnCount; column++) { 
     if (jsondata.xmlData[row]) { 
      tempHtml += "<td>" + jsondata.xmlData[row][column] + "</td>"; 
      showRow = (jsondata.xmlData[row][column] == "Ninja") || showRow; 
     } 
    } 
    tempHtml += "</tr>"; 
    if (showRow) { 
     html += tempHtml; 
    } 
} 
html += "</tbody></table>"; 
$("#tablearea").html(html); 
+0

這很好用。但是,當使用外部JSON文件時,它會崩潰!但我最好試着自己解決這個問題!謝謝! – user2261755

0

看起來你有rowCount和/或columCount不匹配(也許只是切換)數組的實際長度。

無論如何,我會建議檢索數組的長度直接檢查他們

var html = '<table id="myTable"><thead><tr><th>Entry</th>'; 
for (row = 0; row < jsondata.xmlData.length; row++) 
{ 
    html += "<tr><td>" + (row+1) + "</td>"; 
    for (column = 0; column < jsondata.xmlData[row].length; column++) 
    { 
     if((jsondata.xmlData [ row ] [ column ]) == "Ninja") 
     { 
      html += "<td>" + jsondata.xmlData [ row ] [ column ] + "</td>" 
     } 

    } 
    html += "</tbody></table>"; 
    $("#tablearea").html(html); 
}