jquery如何从html表行获取数据

时间:2016-06-20 10:48:10

标签: javascript jquery

我有下表:

   <table cellspacing="0" cellpadding="0" id="product">
        <tr>
            <th>Name</th>
            <th>Category</th>
            <th>Price</th>
            <th colspan="2">Nr products</th>
        </tr>
        <?php foreach ($productsInStock as $product) : ?>
            <tr>
                <td><?php echo $product->getName(); ?></td>
                <td><?php echo $product->getCategory(); ?></td>
                <td><?php echo $product->getPrice().ProductController::coin; ?></td>
                <td><?php echo $product->getNrProducts(); ?></td>
                <td><button type="submit" value="Delete" class="upload" onclick="deleteDataTable();">Delete</button></td>
                <input type="hidden" name="hiddenfieldname" class="hidden" value="<?php echo $product->getId();?>">
            </tr>
        <?php endforeach; ?>
    </table>

我需要每个隐藏字段的值,但我只得到第一个:

x = ('.hidden').val() // gives the first value

每次点击删除按钮

后如何获取不同的值

5 个答案:

答案 0 :(得分:1)

最简单的解决方案是将ID作为参数传递给deleteDataTable()函数。

<td><button type="submit" value="Delete" class="upload" onclick="deleteDataTable(<?php echo $product->getId();?>);">Delete</button></td>

答案 1 :(得分:1)

问题是:上下文。

使用时

x = $('.hidden')

你得到所有元素,其中“隐藏”类。 .val()然后从第一个获取值。

您需要将隐藏输入限制为与删除按钮位于同一行的输入。

不幸的是,你当前隐藏的内容实际上并不在桌面内,你有这个:

<table><tr>...</tr><tr>..</tr>
<input type="hidden"...>
<input type="hidden"...>

您需要将标记更改为:

<tr>
    <td><?php echo $product->getName(); ?></td>
    <td><?php echo $product->getCategory(); ?></td>
    <td><?php echo $product->getPrice().ProductController::coin; ?></td>
    <td><?php echo $product->getNrProducts(); ?></td>
    <td>
        <button type="submit" value="Delete" class="upload" onclick="deleteDataTable();">Delete</button>
        <input type="hidden" name="hiddenfieldname" class="hidden" value="<?php echo $product->getId();?>">
    </td>
</tr>

或类似,以便输入 in <{em> in a td

然后,您可以在删除点击上使用相关元素:

function deleteDataTable()
{
    var x = $(this).closest("tr").find(".hidden").val();
}

或者,使用上面修改的html,使用.next,但我会保留上面的

    var x = $(this).next(".hidden").val();

答案 2 :(得分:0)

也许你正在寻找这个:

var x=[];
$('.hidden').each(function(){
    x.push($(this).val());
});

x应包含所有值。

答案 3 :(得分:0)

你可以喜欢那个

  <table cellspacing="0" cellpadding="0" id="product">
    <tr>
        <th>Name</th>
        <th>Category</th>
        <th>Price</th>
        <th colspan="2">Nr products</th>
    </tr>
    <?php foreach ($productsInStock as $product) : ?>
        <tr data-productid="<?php echo $product->getId();?>">
            <td><?php echo $product->getName(); ?></td>
            <td><?php echo $product->getCategory(); ?></td>
            <td><?php echo $product->getPrice().ProductController::coin; ?></td>
            <td><?php echo $product->getNrProducts(); ?></td>
            <td><button type="submit" value="Delete" class="upload" onclick="deleteDataTable();">Delete</button></td>
        </tr>
    <?php endforeach; ?>
</table>

脚本

function deleteDataTable()
{
    var productIdOfCurrentTR = $(this).closest("tr").data("productid");
}

答案 4 :(得分:0)

你可以简单地使用它:

<tr>
    <td><?php echo $product->getName(); ?></td>
    <td><?php echo $product->getCategory(); ?></td>
    <td><?php echo $product->getPrice().ProductController::coin; ?></td>
    <td><?php echo $product->getNrProducts(); ?></td>
    <td>
        <button type="submit" value="Delete" class="upload getValue" data-product-id="<?php echo $product->getId();?>">Delete</button>
    </td>
</tr>

<script>
$('.getValue').click(function(){
    var val = $(this).data('product-id');
});
</script>