Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取json格式的表数据_Javascript_Arrays_Json_Html - Fatal编程技术网

Javascript 获取json格式的表数据

Javascript 获取json格式的表数据,javascript,arrays,json,html,Javascript,Arrays,Json,Html,大家好,我正在尝试获取json格式的表数据,这是我的表 <table> <thead> <tr> <th>srno</th> <th>name</th> <th>email</th> </tr> </thead> <tbody> <tr> <td&

大家好,我正在尝试获取json格式的表数据,这是我的表

   <table>
  <thead>
    <tr>
      <th>srno</th>
      <th>name</th>
      <th>email</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Jhon One</td>
      <td>Doe one</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Jhon two</td>
      <td>Doe Two</td>
    </tr>
  </tbody>
</table>

<button>
  convert
</button>
使用下面的javascript

$("button").click(function() {
  var json = html2json();
  alert(json);
});

function html2json() {
  var json = '{';
  var otArr = [];
  // var i = 1;
  var tbl2 = $('table tbody tr').each(function(e) {
    x = $(this).children();
    var itArr = [];
    x.each(function() {
      itArr.push('"' + $(this).text() + '"');
    });
    otArr.push('"' + e + '": {' + itArr.join(',') + '}');
  })
  json += otArr.join(",") + '}'

  return json;
}
但是我想给每个值加上键,数字应该从1开始,而不是从零开始

我有一套渴望的结果,它应该是这样的 谢谢你的帮助

  {
        "1": {
           no: "1",
           name:"Jhon One",
           lastname "Doe one"
        }
        ,
         "2": {
           no: "1",
           name:"Jhon two",
           lastname "Doe two"
        }

    }
这是我尝试过的fiddel链接


您可以将
e
转换为一个数字,然后像中一样添加一个数字

但是,您返回的json无效。您可能想做一些事情,比如简化并确保有效的json,以及从任何表结构创建对象

function html2json() {   
  var otArr = [];
  var tblHeaders = Array.from($('table thead tr')
    .children())
    .map(header => $(header).text());  
  var tbl2 = $('table tbody tr').each(function(e) {        
    const values = Array.from($(this).children());
    const row = {};
    for (let i = 0; i < tblHeaders.length; i++){        
        row[tblHeaders[i]] = $(values[i]).text();
    }
    otArr.push({
        [e+1]: row
    })      
  })
  json = JSON.stringify(otArr);  
  return json;
}
函数html2json(){
var-otar=[];
var tblHeaders=Array.from($('table thead tr'))
.children())
.map(header=>$(header.text());
var tbl2=$('table tbody tr')。每个(函数(e){
const values=Array.from($(this.children());
常量行={};
对于(设i=0;i
试试
e+1

change
otArr.push(“'+e+'”:{'+itArr.join(',')+'}')


otArr.push('''+(e+1)+':{'+itArr.join(',')+'}')

$(“按钮”)。单击(函数(){
var json=html2json();
});
函数html2json(){
var json='{';
var-otar=[];
var tbl2=$('table tbody tr')。每个(函数(e){
x=$(this.children();
var-itArr=[];
x、 每个功能(e){
var项目=“”;
如果(e==0){
items+='no:“+$(this.text()+”;
} 
如果(e==1){
items+='name:“+$(this).text()+'”;
}
如果(e==2){
items+='email:“+$(this.text()+'”;
}
itArr.push(项目);
});
otArr.push(“'+(e+1)+'”:{'+itArr.join(',')+'}');
})
json+=otar.join(“,”+“}”
警报(json);
返回json;
}

斯诺
名称
电子邮件
1.
约翰一号
一号母鹿
2.
约翰二号
二号母鹿
转换

只需更改以下行

otArr.push('"' + e + '": {' + itArr.join(',') + '}');

括号将以数字而不是字符串的形式添加值

另外,为内部对象键添加
数组

function html2json() {
   var json = '{';
   var otArr = [];
  // var i = 1;
   var tbl2 = $('table tbody tr').each(function(e) {        
      x = $(this).children();
      var itArr = [];
      var keys = ['no','name','lastname'];
      x.each(function(i) {
         itArr.push('"' + keys[i] + '":"' + $(this).text() + '"');
      });
      otArr.push('"' + (e+1) + '": {' + itArr.join(',') + '}');
   })
   json += otArr.join(",") + '}'

   return json;
}

也许您可以使用这些字符作为生成对象的键。 检查


嘿,谢谢你的努力,但是我怎样才能显示像name:jhon plz这样的值的键呢?在最后我已经显示了所需的结果,没有问题。这将从任何表格中创建您想要的结果,而不仅仅是示例中的表格。感谢man plz花时间检查底部的问题以获得所需的结果。我想为所有值添加键。这是我要查找的结果{“1”:{“no:”1“,name:“Jhon One”,lastname“Doe One”},“2”:{“no:”1,“name:”Jhon two”,lastname“Doe two”},但仍然是一个问题{“srno:”1\“}值不应该在花括号中,它应该是逗号分隔的plz检查我上面的评论我希望stackoverflow链接可能会帮助您通过字符串连接构建JSON不是一个好主意。sonicblis和Félix的做法是正确的。
otArr.push('"' + e + '": {' + itArr.join(',') + '}');
otArr.push('"' + (e+1) + '": {' + itArr.join(',') + '}');
function html2json() {
   var json = '{';
   var otArr = [];
  // var i = 1;
   var tbl2 = $('table tbody tr').each(function(e) {        
      x = $(this).children();
      var itArr = [];
      var keys = ['no','name','lastname'];
      x.each(function(i) {
         itArr.push('"' + keys[i] + '":"' + $(this).text() + '"');
      });
      otArr.push('"' + (e+1) + '": {' + itArr.join(',') + '}');
   })
   json += otArr.join(",") + '}'

   return json;
}
function html2json() {
  var $table = $('table');
  var $ths = $table.find('thead>tr>th');
  var rows = {};
  $table.find('tbody>tr').each(function () {
    var row = {};
    $(this).children().each(function (index) {
      row[$ths[index].textContent] = this.textContent;
    });
    rows[row.srno] = row;
  });
  return JSON.stringify(rows);
}