2017-07-17 189 views
0

我有一个表字段,我动态填充。创建一个对象数组Jquery

<table id="list" class="table table-striped ui-widget ui-widget-content"> 
<thead> 

    <tr class="ui-widget-header"> 
    <th>Id</th> 
    <th>Name</th> 
    <th>Type</th> 
    <th>Expression</th> 
    <th>Variable</th> 
    <th>Default</th> 
    <th>Date pattern</th> 
    <th>Readable</th> 
    <th>Writable</th> 
    <th>Required</th> 
    </tr> 
</thead> 
<tbody> 

</tbody> 

我与我的数据从对话框模式得到填充它。 这是我使用来填充该表

$("#list tbody").append("<tr>"+ 
      "<td>" + id.val() + "</td>" + 
      "<td>" + name_re.val() + "</td>" + 
      "<td>" + type.val() + "</td>" + 
      "<td>" + expression.val() + "</td>" + 
      "<td>" + variable.val() + "</td>" + 
      "<td>" + defaut.val() + "</td>" + 
      "<td>" + pattern.val() + "</td>" + 
      "<td>" + readable + "</td>" + 
      "<td>" + writable + "</td>" + 
      "<td>" + required + "</td>" + 
      "<td>" +"<button type='button' class='removebutton' title='Remove this propertie'>"+"</button>" + 
      "<button type='button' class='editbutton' title='Edit this propertie'>"+"</button>" + 
      "<button type='button' class='savebutton' title='save propertie changes'>"+"</button>" +"</td>"+ 
      "</tr>" 
      ); 

现在我创建的函数从表中获取的数据,并将它们推入对象的数组,因为每个对象表示单个行的从数据的功能桌子。 这是我使用来获取数据的功能

function getPropertiesListData(){ 
var propertiesList=[]; 
var id, 
type, 
expression, 
variable, 
defaut, 
pattern, 
readable, 
writable, 
required, 
name; 

$("#list").find('tr').each(function(){ 
    var $tds=$(this).find('td'); 
    propertiesList.push({ 
      id:$tds.eq(0).text(); 
      name:$tds.eq(1).text(); 
      type:$tds.eq(2).text(); 
      expression:$tds.eq(3).text(); 
      variable:$tds.eq(4).text(); 
      defaut:$tds.eq(5).text(); 
      pattern:$tds.eq(6).text(); 
      readable:$tds.eq(7).text(); 
      writable:$tds.eq(8).text(); 
      required:$tds.eq(9).text(); 

    }); 
}); 
return propertiesList;} 

但是当我跑,我在导航控制台

Uncaught SyntaxError: Unexpected token ; 

这个错误是关于该行的输出这个错误:

id:$tds.eq(0).text(); 

你能帮我解决这个问题,或者告诉我我错在哪儿,或者告诉我一种从表中获取数据并将它们存储到数组中的方法。

+1

使用','分隔对象属性,而不是';'。以打字错误结束。 –

+1

在对象中用逗号','替换分号';'。 – Jer

+0

是的,取代了;与,解决了我的错误;谢谢 –

回答

1

更改您这样的代码:

propertiesList.push({ 
      id:$tds.eq(0).text(), 
      name:$tds.eq(1).text(), 
      type:$tds.eq(2).text(), 
      expression:$tds.eq(3).text(), 
      variable:$tds.eq(4).text(), 
      defaut:$tds.eq(5).text(), 
      pattern:$tds.eq(6).text(), 
      readable:$tds.eq(7).text(), 
      writable:$tds.eq(8).text(), 
      required:$tds.eq(9).text(), 

    }); 
0

请尝试以下解决方案:

$("#list tbody").append("<tr>"+ 
 
      "<td>1</td>" + 
 
      "<td>test</td>" + 
 
      "<td>test-type</td>" + 
 
      "<td>test-expr</td>" + 
 
      "<td>test-val</td>" + 
 
      "<td>test-def</td>" + 
 
      "<td>test-patt</td>" + 
 
      "<td>test-r</td>" + 
 
      "<td>test-w</td>" + 
 
      "<td>test-req</td>" + 
 
      "<td>" +"<button type='button' class='removebutton' title='Remove this propertie'>"+"</button>" + 
 
      "<button type='button' class='editbutton' title='Edit this propertie'>"+"</button>" + 
 
      "<button type='button' class='savebutton' title='save propertie changes'>"+"</button>" +"</td>"+ 
 
      "</tr>" 
 
      ); 
 
function getPropertiesListData(){ 
 
var propertiesList=[]; 
 
var id, 
 
type, 
 
expression, 
 
variable, 
 
defaut, 
 
pattern, 
 
readable, 
 
writable, 
 
required, 
 
name; 
 

 
$("#list").find('tr').each(function(){ 
 
    var $tds=$(this).find('td'); 
 
    propertiesList.push({ 
 
      "id":$tds.eq(0).text(), 
 
      "name":$tds.eq(1).text(), 
 
      "type":$tds.eq(2).text(), 
 
      "expression":$tds.eq(3).text(), 
 
      "expression":$tds.eq(4).text(), 
 
      "defaut":$tds.eq(5).text(), 
 
      "pattern":$tds.eq(6).text(), 
 
      "readable":$tds.eq(7).text(), 
 
      "writable":$tds.eq(8).text(), 
 
      "required":$tds.eq(9).text(), 
 

 
    }); 
 
}); 
 
return propertiesList;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="list" class="table table-striped ui-widget ui-widget-content"> 
 
<thead> 
 

 
    <tr class="ui-widget-header"> 
 
    <th>Id</th> 
 
    <th>Name</th> 
 
    <th>Type</th> 
 
    <th>Expression</th> 
 
    <th>Variable</th> 
 
    <th>Default</th> 
 
    <th>Date pattern</th> 
 
    <th>Readable</th> 
 
    <th>Writable</th> 
 
    <th>Required</th> 
 
    </tr> 
 
</thead> 
 
<tbody> 
 

 
</tbody>

0

@Himanshu Upadhyay的解决方案的工作对我很好,我刚刚删除的最后的逗号和那个作品。 工作的代码是:

propertiesList.push({ 
      id:$tds.eq(0).text(), 
      name:$tds.eq(1).text(), 
      type:$tds.eq(2).text(), 
      expression:$tds.eq(3).text(), 
      variable:$tds.eq(4).text(), 
      defaut:$tds.eq(5).text(), 
      pattern:$tds.eq(6).text(), 
      readable:$tds.eq(7).text(), 
      writable:$tds.eq(8).text(), 
      required:$tds.eq(9).text() 

    });