Javascript 向本地存储添加输入值
我目前正在使用AddToCart函数将表行数据保存到本地存储器,如下所示: 现在我有一张桌子:Javascript 向本地存储添加输入值,javascript,jquery,html,Javascript,Jquery,Html,我目前正在使用AddToCart函数将表行数据保存到本地存储器,如下所示: 现在我有一张桌子: <table border="1"> <tbody> <tr> <th> Book Title </th> <th> Author </th> <th> Quantity </th> <th> Book </th> </tr>
<table border="1">
<tbody>
<tr>
<th> Book Title </th>
<th> Author </th>
<th> Quantity </th>
<th> Book </th>
</tr>
<tr>
<td class="Book_Title">Gone </td>
<td class="Author">Micheal Grant</td>
<td class = "Quantity"><input></input></td>
<th><button class="AddToCart">Add To Cart</button> </th>
</tr>
<tr>
<td class="Book_Title">The Knife of never letting go</td>
<td class="Author">Ryan Howard</td>
<th class = "Quantity"><input></input></th>
<td><button class="AddToCart">Add To Cart</button> </td>
</tr>
</tbody>
</table>
我现在遇到的问题是,当我试图保存数量的输入值时,它没有保存在本地存储中,它只是显示为“”。此问题有任何解决方法吗?您需要将其设置为
行.find(“td”).eq(2).text().trim()
,而不是将数量设置为行.find(“input”).val()
。这可以在以下工作示例中看到:
$(“表”)。在函数(e)上单击“.AddToCart”{
var行=$(此).tr;
var title=row.find(“td”).eq(0.text().trim();
var author=row.find(“td”).eq(1.text().trim();
变量数量=行。查找(“输入”).val();
//创建要存储的对象。
风险值数据={
作者:作者,,
标题:标题,,
数量:数量
};
控制台.日志(数据.数量);
});代码>
书名
作者
量
书
跑了
迈克尔格兰特
添加到购物车
永不放手的刀
霍华德
添加到购物车
请注意,输入没有结束标记,并且您不应该在第一个tr
下方有th
s。这里的问题是,您试图从td
中获取文本,而不是输入的值
$("table").on("click", ".AddToCart", function(e){
// Get previous storage, if any.
var storage = JSON.parse(localStorage.getItem("cart"));
if(storage==null){
storage = [];
}
var row = $(this).closest("tr");
var title = row.find("td").eq(0).text().trim();
var author = row.find("td").eq(1).text().trim();
var quantity = row.find("td").eq(2).text().trim();
// Create an object to store.
var data = {author:author,title:title,quantity:quantity};
storage.push(data);
// Store it.
localStorage.setItem("cart",JSON.stringify(storage));
});