通过JavaScript在td中增加一个数字的问题

通过JavaScript在td中增加一个数字的问题,javascript,Javascript,我有一个输入字段,它接受书的名称,从数据库中获取价格,并将结果放入表中 现在,如果一本书被选了不止一次,那么我希望数量增加,然后显示那本书的价格 代码如下: <div> <input type="text" id="book_item" value="<?php echo $books['book_name']; ?>"/> <input type="button" id="addbook" value="Apply" onclic

我有一个输入字段,它接受书的名称,从数据库中获取价格,并将结果放入表中

现在,如果一本书被选了不止一次,那么我希望数量增加,然后显示那本书的价格

代码如下:

<div>
     <input type="text" id="book_item" value="<?php echo $books['book_name']; ?>"/> 
     <input type="button" id="addbook" value="Apply" onclick="addBookToTable()" />          
</div>

<table id="booktable">
    <thead>
        <tr>
        <th>Book Name</th>
        <th id="quantity">Quantity</th>
        <th>Price</th>
        <th>Remove Book</th>
        </tr>
    </thead>

    <tfoot>
        <tr>
        <td>Total</td>
        <td></td>
        <td id="price"></td>
        <td></td>
        </tr>
    </tfoot>
</table>  

<script>
     var quantity = $("#quantity").children('td').eq(1).text();

    // not sure how to check if the book is already in the table or not
    // if it is, then it should just show the name of the book
    // only one time and increase the quantity number.
<script>

我非常感谢任何可以解决此问题的代码示例或注释。

如果您仅通过显示数据库结果来执行此操作,则无需使用javascript客户端,您应该对原始数组进行检查,然后生成客户端将显示的表

相反,如果您正在动态添加书籍,并且您在顶部的输入似乎暗示了这一点,那么实现这一点的最佳方法是修改addBookToTable过程,以便它检查整个表,以查看是否已经有一本具有该名称的书,并最终增加数量,而不是添加新行

编辑:

嗯,除非这些书是按特定顺序排列的,否则不能对整个列表进行线性搜索:

$('#booktable tr').each(function() {
  var children = $(this).children('td');
  if(children.length > 1) {
    if(children.first().text() == MyNewBookTitle) {
      var quantityChild = $(children[1]);
      quantityChild.text( parseInt(quantityChild.text()) + 1 );
    }
  }
});
注意,您不应该在td中使用id价格,因为id应该是唯一的

此外,为了避免使用first或children[1]的尴尬,您应该为tds指定一个类名,以便在上面的代码中使用过滤器:

children.filter('.title')


你可以使用这个选择器

    var bookName="any bookName " ;
    var theBookTD = $("#booktable tr td:nth-child(1):contains('"+ bookName+"')");

if (theBookTD.length>0 ) {
//the book already exists in table
    var theBookQuantity = theBookTD.next().first().text();
}else {
// the book doesn't exist in table;
}

查看此处

当您选择$quantity时,您将获得元素,因此您无法找到任何td儿童。首先,您应该获取parent,例如$quantity.parent'table,然后查找tbody和tr或td。事实上,您是正确的,我正在addBookToTable函数中将书籍逐个添加到表中。现在我不确定的是如何检查表以查看是否存在书名。您是否有任何JavaScript代码建议或任何有帮助的页面?谢谢。我在我的程序中应用了建议的代码,但不幸的是似乎还不起作用。请详细描述这个问题,并给出一个JSFIDLE来重现手头的问题。@a-rama下面来自Vladu Lonut的示例代码可以很好地检查书的数量,但是在检查数量之前,我需要获得输入值根据输入的图书名称,我必须检查它是否存在于表的旁边。现在的问题是,我不知道如何在Java脚本中完成这个过程。如果您有任何建议,我将不胜感激。请问,您的代码中的“书名”是什么?因为书名应该是动态的,因为有大量来自数据库的书名列表!var bookName=任何bookName$booktable tr td:nth-child1:包含“+bookName+”;我尝试了您建议的示例代码,但似乎不适用于我的表格。@vladu lonut我尝试了上述代码,它用于检查数量。现在的问题是如何检查从输入中选择的图书是否存在于表中?我尝试了一些代码示例,但没有成功地检查表中是否存在该书。我感谢任何代码建议和示例。
    var bookName="any bookName " ;
    var theBookTD = $("#booktable tr td:nth-child(1):contains('"+ bookName+"')");

if (theBookTD.length>0 ) {
//the book already exists in table
    var theBookQuantity = theBookTD.next().first().text();
}else {
// the book doesn't exist in table;
}