我目前正在开发一个项目,以便在本地存储中构建一个购物车。除了根据给定值删除本地存储上的项目之外,一切正常。
我正在使用本地存储中的数组创建一个动态表。表格代码为:
<table id="response">
<tbody>
<tr><td>prova</td><td>40</td><td><button class="myID"
onclick="deleteRow(this)">X</button></td></tr>
<tr><td>test</td><td>30</td><td><button class="myID"
onclick="deleteRow(this)">X</button></td></tr>
</tbody>
</table>
但是,当我尝试单击按钮并使用同一行上的第一个 td 作为值来删除项目时,以下代码无法正常工作:
function deleteRow(r) {
var arr = JSON.parse(localStorage.getItem('item'));
var value = jQuery(r).find("td:first").text;
for (var k in arr) {
var name = arr[k].name ;
if (name === value) {
arr.splice(k, 1);
localStorage.setItem("item", JSON.stringify(arr));
}
else {
alert('falso');
}
}
var i = r.parentNode.parentNode.rowIndex;
document.getElementById("response").deleteRow(i);
}
问题一定出在 var 值中,因为如果我为其分配给定值(例如“test”),该函数会清除本地存储数组中的对应项。
感谢您的帮助!
最佳答案
用于获取文本的 jQuery 选择器中存在语法错误:...find('td:first').text;
应该是:...find('td:first').text();
Here's a quick fiddle使用相同的表标记和一个接收整行的小点击处理程序(例如 deleteRow()
函数),只是为了帮助排除故障。通过正确的 text()
调用,它会按照您的预期将文本值写入控制台。
$(document).ready( function($) {
$('#response tr').on('click', function(e) {
console.log($(this).find("td:first").text());
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="response">
<tbody>
<tr><td>prova</td><td>40</td><td><button class="myID">X</button></td></tr>
<tr><td>test</td><td>30</td><td><button class="myID">X</button></td></tr>
</tbody>
</table>
关于javascript - 获取第一个 td 文本以删除本地存储数组中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50628261/