【问题标题】:Looping through a table column of data to build a string循环遍历数据表列以构建字符串
【发布时间】:2020-06-19 09:42:24
【问题描述】:

我正在尝试遍历表格列并建立一个字符串。

这是我目前所拥有的:

$(".ConvertSQL").click(function () {

        var values

        $(".TableQuery tr").each(function () {

            $('td', this).each(function () {
                values = value + ',' + value;

                alert(values)
            })

        })

    });

收到错误:

我的警报显示一条消息说 'undefined',并在单元格中有数据的次数内不断重复此消息

我还是新手,所以不完全理解发生了什么。

目前的设置不会遍历列,我认为它会遍历表中的每个单元格,因此也需要更改它

【问题讨论】:

  • 您希望value 是什么?它没有在您的代码中的任何地方定义。您是在寻找$(this).text() 吗?要获取td 元素的文本?

标签: jquery html


【解决方案1】:

您的逻辑中的问题是,尽管您定义了 value,但您实际上从未将其设置为保存任何值,因此它仍然是 undefined。

从您的代码上下文看来,您正试图从 td 元素中获取文本内容,因此您可以使用 text() 方法和 :nth-child() 来获取 td 的所需的列。

还请注意,为了使这更容易,您可以使用map() 构建一个值数组,然后join() 形成单个字符串。试试这个:

$(".ConvertSQL").click(function() {
  var str = $(".TableQuery td:nth-child(1)").map((i, e) => $(e).text()).get().join(' ');
  console.log(str);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="TableQuery">
  <tbody>
    <tr>
      <td>Foo</td>
      <td>Bar</td>
    </tr>
    <tr>
      <td>Fizz</td>
      <td>Buzz</td>
    </tr>
  </tbody>
</table>

<button class="ConvertSQL">Click me</button>

【讨论】:

  • 早上好,Rory,感谢您——不过我很难使用它。我已经运行了你的 sn-p 并且它工作正常,但是当我将它实施到我的项目中时,我收到以下消息:adHocQueryBuilder.js,行:4,列:64。第 64 行包含以下内容:var str = $( ".TableQuery td:nth-child(1)").map((i, e) => $(e).text()).get().join(' ');
  • 你说的对,我刚刚在 Chrome 中尝试过,它确实有效。在 IE 中尝试了您的匿名函数,但仍然无法正常工作。我想现在使用 Chrome 就可以了。非常感谢
  • 对不起,我在前面的例子中弄错了(这就是我讨厌在 cmets 中输入代码的原因:)这应该可以正常工作:var str = $(".TableQuery td:nth-child(1)").map(function(i, e) { return $(e).text(); }).get().join(' ');
  • 刚刚尝试过 - 很好吃。谢谢你的时间,这太棒了
猜你喜欢
  • 2014-09-19
  • 2023-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2021-04-02
  • 2020-06-21
  • 2023-03-23
相关资源
最近更新 更多