【问题标题】:Get values of table row and print them in another div获取表格行的值并将它们打印在另一个 div 中
【发布时间】:2015-11-24 12:22:48
【问题描述】:

我正在从数据库中检索值并将它们打印到表中。现在我想获取另一个 div 的值并将它们放在表单中。

我正在使用 twitter 引导程序。

首先我从数据库中获取值并将它们打印到表中

<div class="col-xs-10">
<table id="example" class="table table-bordered table-striped">
    <thead>
      <tr class="bg-red">
        <th>Id</th>
        <th>Name</th>
        <th>Quality</th>
        <th>Dimensions</th>
        <th>COlor</th>
        <th>Add</th>
      </tr>
    </thead>
    <tbody>
    <?php
    while($r=$q->fetch()){ ?>
    <tr>
      <td><?='Nb'. $r['Id']?> </td>
      <td> <?=$r['MatVrstaNaziv']?> </td>
      <td><?=$r['Quality']?></td>
      <td><?=$r['Width'] . '  X  '. $r['Height']?></td>
      <td><?=$r['COlor']?></td>
      <td> <button class="addValues" value="<?='Nb'. $r['Id']?> "> Add</button></td>
    </tr>
    <?php } ?>
    </tbody>
</table>
</div>

<div class="col-xs-2">
<div id="selection">

</div>

</div>

我添加了按钮 Add 以将该行添加到另一个 div 中。为此,我正在使用脚本

<script>
    $(function () {
        $(".addValues").click(function () {
        var $this = $(this),
        myCol = $this.closest("td"),
        myRow = myCol.closest("tr"),
        targetArea = $("#selection");
        targetArea.append(myRow.children().not(myCol).text() + "<br />");
    });
    });
</script>

此脚本不起作用,它不会打印指定 div 中的值。我只想在另一个div中打印id号。

有人可以告诉我什么是错的吗?

【问题讨论】:

  • $("addValues") 更改为$(".addValues")。始终调试您的代码 - 单步调试或添加 console.log("xxx") - 在这种情况下,就在 var $this = $(this) 之前。它可能没有达到那条线。
  • $("addValues") 您缺少. 选择器$(".addValues")
  • 我已添加,但仍然没有任何反应。
  • "nothing" 可能是主观的 - 您能否确认该事件正在被击中,但按照建议添加 console.logtargetArea.length 的值是多少?是否有任何值为空?您的 php 是否在行中生成值?控制台中有错误吗?你真的只想要“id” - 或者这只是需要其他东西的第一步?

标签: javascript jquery


【解决方案1】:

当您在选择器 $(".addValues") 中的 addValues 之前添加 . 时,请参见下面的静态数据示例。

如果仍然无法正常工作,说明您的 PHP 代码有问题,请检查查询是否返回验证结果并检查属性名称,例如 'COlor'

$(".addValues").click(function () {
	$('#selection').show();

    var $this = $(this),
    myCol = $this.closest("td"),
    myRow = myCol.closest("tr"),
    targetArea = $("#selection");
    var rowId = $("td.data-id", myRow).text();

	var qte_input = (' <input type="text" placeholder="Qte" size="5"/>');
    targetArea.prepend(rowId + qte_input +"<br />");
});
table, th, td {
   border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-xs-10">
<table id="example" class="table table-bordered table-striped">
    <thead>
      <tr class="bg-red">
        <th>Id</th>
        <th>Name</th>
        <th>Quality</th>
        <th>Dimensions</th>
        <th>COlor</th>
        <th>Add</th>
      </tr>
    </thead>
    <tbody>
    <tr>
      <td class='data-id'> 1</td>
      <td> bb</td>
      <td> ccc</td>
      <td> dd  X  '. dd</td>
      <td> ee</td>
      <td> <button class="addValues" value="fff"> Add</button></td>
    </tr>
    <tr>
      <td class='data-id'>2</td>
      <td> YYY</td>
      <td> ccc</td>
      <td> dd  X  '. dd</td>
      <td> ee</td>
      <td> <button class="addValues" value="fff"> Add</button></td>
    </tr>
    <tr>
      <td class='data-id'>3</td>
      <td> XXX</td>
      <td> ccc</td>
      <td> dd  X  '. dd</td>
      <td> ee</td>
      <td> <button class="addValues" value="fff"> Add</button></td>
    </tr>
    </tbody>
</table>
</div>

<div class="col-xs-2">
<div id="selection" style="display: none">
    </br>
    <button class="submitValues">Submit</button>
</div>

</div>

【讨论】:

  • 它可以工作,谢谢我正在使用数据表,由于某些原因它在那里不起作用。我想知道如何只获取 Id 值而不是整行?
  • 好的,你想在哪里使用这个id值?
  • 我的目标是在不同的 div 中获取所有选定的行。在每个 div 之后,我需要输入值,我将在其中手动设置数量。一旦完成,将有提交按钮来发送这些值
  • 它仍然检索所有行信息。例如,当我运行您的代码时,我得到 aaa bb ccc dd X '。 dd ee Qte ...我想知道我是否有可能只从行中获取 Id 值并在之后输入数量?我不需要另一个 div 中的名称质量颜色信息只是 Id ??
  • 要么 myRow.children().not(myCol).first().text() 依赖 id 作为第一列,或者更好的是,将一个类添加到您的 td 并使用它。我使用 'data-' 前缀表示类是数据而不是样式,例如:&lt;td class='data-id'&gt;aaa&lt;/td&gt;$("td.data-id", myRow).text()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多