通过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;
}