从td获取价值

时间:2016-06-06 11:13:07

标签: javascript

我从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>

我没有做好事,如果有人可以告诉我要改变什么以获得结果。

1 个答案:

答案 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));
}