从按钮单击获取当前行

时间:2017-04-15 06:25:56

标签: javascript php html

我一直试图从我在php网页上显示的一行显示中读取特定值。我的想法是尝试获取行中某个单元格的当前值,但是,我尝试使用getElementsByTagName不起作用,因为我之后无法访问该值(只有HTMLCollection对象)。我正在使用最接近的,但这只能起作用并获得起始行。

编辑:

似乎没有弹出任何东西。好吧,模态会弹出,但没有警报。

试过这个demo但是也没有用哈哈......

<td><button class='sellButton btn btn-primary' data-target='#modalsell' id='sellStock'>Sell Stock</button></td>

<div id="modalsell" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
          <div class="modal-dialog" role="document">
            <div class="modal-content">
              <div class="modal-header">
                <h5 class="modal-title">Sell Stocks</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                  <span aria-hidden="true">&times;</span>
                </button>
              </div>
              <div class="modal-body">
                <form role="form">
                    <div class="form-group">
                        <div class="input-group">
                            <label for="shares" class="input-group-addon glyphicon glyphicon-user">Amount of Shares:</label>
                            <input type="text" class="form-control" id="sharess" placeholder="Shares Selling...">
                            <label for="start" class="input-group-addon glyphicon glyphicon-user">Minimal Sell Price:</label>
                            <input type="text" class="form-control" id="starts" placeholder="(0 for No Limit)" value="0">

                            <label for="stop" class="input-group-addon glyphicon glyphicon-user">Max Sell Price:</label>
                            <input type="text" class="form-control" id="stops" placeholder="(0 for No Limit)" value="0">
                        </div> <!-- /.input-group -->
                    </div> <!-- /.form-group -->

                </form>
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-primary" data-toggle='modal' onclick="sellStock()">Place Sell</button>
                <button type="button" class="btn btn-primary" data-dismiss="modal">Cancel</button>
              </div>
            </div>
          </div>
      </div>
调用者中的

undefined 元素

$(document).ready(function(){
    $(".sellButton").on('click', function (e) {
       alert('test 1');
       $('#modalsell').modal('toggle', $(this));
    });
    $('#modalsell').on('show.bs.modal', function(button){
        alert('test 2');
        var $invoker = $(button.relatedTarget);
        alert($($invoker).id);
    });
});

3 个答案:

答案 0 :(得分:1)

Jquery解决方案

第一种情况:

如果您想要整行表格,那么您必须使用一些唯一的类或Id来识别您的表格。

假设您的表格唯一的类名是&#34;表格响应&#34;然后你可以使用

获取所有表格

$(&#34; exec

它会给你一排tbody。

第二种情况:

如果您想获得当前点击按钮(在本例中为sellStock)按钮,那么您可以在按钮单击时使用父母的上下文。

示例:

来自 @Touheed Khan 回答: 如果要在循环中动态生成多个元素,请不要使用id。 你可以使用class,否则它只会获得第一个元素。

如果您的按钮类名称是rowButton,那么您可以使用它 如下所示。

.table-responsive").find('tbody tr');

感谢@Touheed Khan。

答案 1 :(得分:1)

问题: 您的代码的主要问题是您在循环中使用相同的ID(id='sellStock')。这就是你点击任何按钮时获得相同tr的原因。

注意: id属性在页面内应该是唯一的

解决方案: 尝试使用此代码获取单击按钮的父tr。

<th><button onclick="myFunction(this)">Sell Stock</button></th>

你的处理函数:

function myFunction(elem) {
    var x = elem.parentElement.parentElement; // x is the parent row 
    //rest of your code goes here
}

替代方案:

您也可以使用 class 选择器代替 id ,这是一个更好的选择。

根据评论请求进行更新:

你可以通过这样做来获取模态的调用者元素。 #your-modal是您的模态选择器,您可以根据自己的要求使用classid

$('#your-modal').on('show.bs.modal', function (e) {
  var $invoker = $(e.relatedTarget);
  //rest of code
});

代替:

 alert($($invoker).id);

使用此:

 alert($($invoker).attr('id'));

快乐编码!

答案 2 :(得分:0)

  1. 使用class和TD

    "<tr> <td>". $arrayval"</td> <td class='need'>"."(Need)"."</td> <td>".$arrayval."</td> <td>".$arrayval."</td> <td>".$arrayval."</td> <td><button class='sellStock btn btn-primary' data-toggle='modal' data-target='#modal1'>Sell Stock</button></td> </tr>";

  2. 始终使用jQuery

    $(".table").on("click",".sellStock",function() { var cellContent = $(this).closest("tr").find(".need").text(); });

    $(".table").on("click",".sellStock",function() { var row = $(this).closest("tr"); // handle row here });