我从db打印结果。当我想从行中选择值时,我遇到了问题。我试图通过在值上输入按钮(最后一列)来获取值,并将该值插入本地存储中。
<table class="table table-bordered">
<thead>
<tr class="bg-grey">
<th>Broj </th>
<th>Boja </th>
<th>Količina</th>
<th><center><i class="icon-cart"></i></center></th>
</tr>
</thead>
<tbody>
<?php
while ($r=$m->fetch()) {
$id_print = $r['id'];
$boja = $r['Boja'];
$kolicina = $r['Kolicina'];
// var_dump($id_print);
?>
<tr>
<td><?php echo "R - " . $id_print;?></td>
<td><?php echo $boja;?></td>
<td><?php echo $kolicina;?></td>
<td><button id= "item" value='<?php echo $id_print;?>' onclick="save()" class="ion-ios-cart-outline"></button></td>
</tr>
<?php } ?>
</tbody>
</table>
我正在使用函数从td获取值。但我总是得到空的变种。
<script type="text/javascript">
function save() {
var items= document.getElementById('item').innerHTML;
localStorage.setItem('action', items);
}
</script>
我没有做好事,如果有人可以告诉我要改变什么以获得结果。
答案 0 :(得分:2)
如果您的目标是保存点击按钮的值,则根本不需要任何id
。
最小化更改方法是将this
作为参数传递给处理程序,然后在处理程序代码中使用参数的value
属性:
<td><button value='<?php echo $id_print;?>' onclick="save(this)" class="ion-ios-cart-outline"></button></td>
<!-- Note ------------------------------------------------^^^^^ -->
然后
function save(element) {
localStorage.setItem('action', element.value);
}
您也可以考虑在type="button"
元素中添加button
,因为type
的默认button
是(令我惊讶的是)type="submit"
,因此,如果您在表单中有这些按钮,他们将提交表单。
重新评论:
这正是我想要的,但在表格中我有更多行,可以选择更多。通过这样做,只能选择一个值。是否可以通过单击来保存本地存储中的值
如果你的意思是数组,是的,你可以这样做。这是一种方式:
function save(element) {
var actions = JSON.parse(localStorage.getItem("actions") || "[]");
if (actions.findIndex(element.value) == -1) {
actions.push(element.value);
localStorage.setItem("actions", JSON.stringify(actions));
}
}
将本地存储中的数组维护为JSON(因为所有本地存储值都是字符串)。第一部分获取现有数组(如果有)或空白数组(如果没有):
var actions = JSON.parse(localStorage.getItem("actions") || "[]");
然后我们使用ES2015(又名“ES6”)函数Array#findIndex
(可以是polyfilled / shimmmed,参见MDN)来查看该值是否已经在数组中,如果没有,我们添加它:
if (actions.findIndex(element.value) == -1) {
actions.push(element.value);
localStorage.setItem("actions", JSON.stringify(actions));
}
如果出于任何原因您不想填充/填充Array#findIndex
,则可以改为使用ES5函数Array#some
:
if (!actions.some(function(e) { return e === element.value; })) {
actions.push(element.value);
localStorage.setItem("actions", JSON.stringify(actions));
}