2015-11-10 118 views
0

编辑:对部分重复的问题的道歉。我似乎错过了它。如何动态创建一个json文件从html表格使用javascript

我已经写了一个函数来扫描表,我希望它使用头作为属性名称并将其添加到一个空的对象。这个问题似乎与json对象有关。我尝试了所有我能够找到并且无法向对象添加属性的语法。

var jsonData = [{}]; 
 

 
function saveTableToDataSet(tableName,jsonObj) { 
 
\t debugger; 
 
\t var oTable = document.getElementById(tableName); 
 
    var columnNames = [] 
 
\t var rowLength = oTable.rows.length; 
 
    //get column names 
 
    var oCells = oTable.rows.item(0).cells; 
 
    var cellLength = oCells.length; 
 
    for (var i = 0; i < cellLength; i++) { 
 
     var cellVal = oCells.item(i).innerHTML; 
 
     columnNames[i] = cellVal; 
 
    } 
 
    //get column data 
 
\t for (var j = 1; j < rowLength; j++) { 
 
\t \t var oCells = oTable.rows.item(j).cells; 
 
     var cellLength = oCells.length; 
 
     for (var k = 0; k < cellLength; k++) { 
 
      var columnName = columnNames[k]; 
 
\t \t \t var cellVal = oCells.item(k).innerHTML; 
 

 
    //the problem 
 
\t \t \t jsonObj[j.columnName] = cellVal; 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 
};

我显然不正确地引用对象及其属性,但我已经试过语法的无限组合。所有除了正确的一个看似。

编辑︰它只是看到我的jsonObj参数作为一个字符串。我已经改变了最后一位:

//the problem 
 
    newObj = []; 
 
    newObj[columnName] = cellVal; 
 
    jsonData["dataItem"+j] = newObj; 
 
}

,它的工作。理想的情况是,虽然我希望能够在传递对象的名称

+0

你怎么称呼这个功能? jsonData传递给它的是什么? – AtheistP3ace

+0

目前它的OnCientClick和我传递表名和json对象名作为参数: OnClientClick =“saveTableToDataSet('seriesData','jsonData');” – RoToQ

+0

它把你的jsonObj视为一个字符串的原因是因为你通过引号将变量传递给它 – AtheistP3ace

回答

0

更改您的来电这样:

OnClientClick="saveTableToDataSet('seriesData', jsonData);" 

删除单引号将把jsonData作为一个变量而不是文字。

相关问题