Javascript 向本地存储添加输入值

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>

我目前正在使用AddToCart函数将表行数据保存到本地存储器,如下所示:

现在我有一张桌子:

<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));

  });