2016-10-19 6 views
1

から値を取る -変更JSONオブジェクトは、私は次のコードを使用してJSONオブジェクトを使用して、HTMLテーブルを移入していますテーブル

HTML -

<input type="button" value="Generate Table" id="btn" /> 

<div id="dvTable"> 
</div> 

JS -

$('#btn').click(function() { 


    var obj = [{ id: 1, name: "bunny", city: "nyc",userinput:"",iscancelled:"" }, { id: 2, name: "sunny", city: "LA",userinput:"",iscancelled:"" }, { id: 3, name: "chubby", city: "PA",userinput:"",iscancelled:"" } 
    , { id: 4, name: "punny", city: "DC",userinput:"",iscancelled:"" }, { id: 5, name: "money", city: "Pen",userinput:"",iscancelled:"" }]; 

    alert(JSON.stringify(obj)); 
    var table = document.createElement("table"); 
    table.border = "1"; 
    var columnCount = obj[0].length; 

    var row = table.insertRow(-1); 
    for (var i = 0; i < columnCount; i++) { 
     var headerCell = document.createElement("th"); 
     headerCell.innerHTML = obj[0][i]; 
     row.appendChild(headerCell); 
    } 

    $.each(obj, function (i, obj) { 
     row = '<tr data-id="' + obj.id + '"><td><input type="checkbox" value=' + obj.id + '></td><td>' + obj.id + '</td><td>' + obj.name + '</td><td>' 
      + obj.city + '</td><td><input type="text" id="address" ></td></tr>'; 

     table.append(row); 
    }); 

    var dvTable = document.getElementById("dvTable"); 
    dvTable.innerHTML = ""; 
    dvTable.appendChild(table); 



}); 

簡単にするために、私は小さなJSONオブジェクトを撮影しましたが、通常は非常に重いオブジェクトがあります。ユーザーが各テキストボックスに入力した値をJSONオブジェクトの各要素の 'userinput'フィールドに保存します。また、 'checkbox'がチェックされているかどうかをチェックして保存し、JSONオブジェクトの 'iscancelled'フィールドに 'Y'または 'N'を保存することもできます。

私はこれに次のコードを書いていますが、これはうまくいきません。何が問題なの?

+2

賢明であるためには、[JSONオブジェクトのようなものはありません](http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/) haveはオブジェクトです。 (またはオブジェクトの配列) – nnnnnn

+0

@nnnnnnありがとう。 – firstStep

+0

あなたの実際のコードに関して、最終コードブロックの最初の '.each()'は各反復で 'revArray'を*文字列*で上書きしますが、あなたの他のコードは配列のように' revArray'を扱います。 '$ .each()'の中に入れ子になっている 'for 'は本当に意味をなさない。おそらく、' obj'配列の各オブジェクトを、すべての行からではなく、対応する行からの入力とチェックボックスの値で更新したいからです。 – nnnnnn

答えて

1

だから私は最終的には、テーブルの各行にアクセスし、その行のテキストボックスを見つけ、次のようにjqueryのを使用して行われました - このような問題に直面している人のために

$('table tr:gt(0)').each(function (i, row) { 
      var $row = $(row); 
      var val1 = $row.find('input[type="text"]').val(); 
     }); 

使用することができますそれは完璧に機能します!

関連する問題