【问题标题】:How do I change the content of table cells using jQuery and then dynamically add more when I run out?如何使用 jQuery 更改表格单元格的内容,然后在用完时动态添加更多内容?
【发布时间】:2017-08-12 01:43:38
【问题描述】:

我有一个三列的表。我在 PHP 中创建了一个字符串,用逗号分隔“id”和相应的数据。这些对用感叹号分隔,以便我可以以这种方式使用它们。我想用数据填充每个表格单元格并为其分配一个 ID,以便稍后在单击该对象时可以将该 ID 用于 mysql 查询。当我填满该行并需要更多列时,我想添加另一行。当包含 id-data 对的数组为空时,我想打破循环。我不知道我在做什么,所以请详细说明。经过几天的研究,这是我可以收集到的,甚至还没有接近产生结果。

$("#class").keyup(function () 
    {
        $.post("classSearch.php",
    {
            class:$(this).serialize(),
        },
        function(data)
        {   
            if (data == "notFound") 
            {
                $("#searchResults td").siblings(":first").text("No Results");
            }
            else
            {
                var counter = 0;
                var resultsTemp= data.split("!");
                var iterations = resultsTemp.size();
                $("#searchResults td:first").each(function() 
                {       
                    if (counter == iterations) 
                    {return false;}
                    if((counter % 3) == 0)
                    {$("#searchResults td").siblings(":last").append("<tr><td></td><td></td><td></td></tr>");}
                    var results = resultsTemp.split(",");
                    $(this).text(results[(1)]);
                    $(this).attr("id",results[0]);
                    counter ++; 
                });
            }
        });
    });

HTML

<table  id="searchResults">
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

【问题讨论】:

  • 所以您想将下载的数据分成三个一组,将它们添加到一行,然后移动到下一行以获取下一组三个,对吗?
  • 不完全是。我想一一更改“td”的id并为其添加文本。一旦我在该行的最后一个单元格上,我只想添加另一行并重复直到我没有数据。来自 php 文件的数据包含 所有 对,而不仅仅是三个。
  • 检查resultTemp的数据类型...恐怕它已经是数组因此无法拆分
  • 好点。我可以在 results[counter] 中拆分字符串。我会改的。

标签: jquery html-table css-selectors


【解决方案1】:

清空表格并保留为&lt;table id="searchResults"&gt;&lt;/table&gt;

现在,如果数据没有返回结果,您可以这样做:

$("#searchResults").append("<tr><td>Nothing returned</td></tr>");

else 内(即当您有数据时),执行以下操作:

var resultsTemp = data.split('!');
var addToTable = '';
var totalElements = resultsTemp.length;
for (var i=0; i<totalElements/3; i++) {
    if (i%3 == 0)
        // Beginning a new row
        addToTable += '<tr>';

    // Parse and get the id and value from each element
    var elemId = resultsTemp[i].split(',')[0];
    var elemValue = resultsTemp[i].split(',')[1];
    addToTable += '<td id="'+elemId+'">'+elemValue+'</td>';

    if (i%3 == 2)
        // End of row
        addToTable += '</tr>\n';
}

// If the total set was not an exact multiple of 3
// you will need to close the row
if (totalElements %3 !=0)
    addToTable += '</tr>\n';

$("#searchResults").append(addToTable);

【讨论】:

  • 非常感谢。这要简单得多。
  • 不客气 - 对答案进行投票也很好:)
  • 我昨天没有足够的积分投票。有些神奇地出现了,所以你有它。 :)
  • 啊 - 非常感谢 :)
猜你喜欢
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2012-03-13
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
相关资源
最近更新 更多