创建一个Jquery对象数组

时间:2017-07-17 12:56:22

标签: javascript jquery arrays

我有一个动态填充的表格字段。

 <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();

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

3 个答案:

答案 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(),

    });

答案 1 :(得分: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>

答案 2 :(得分: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()

    });