简体   繁体   English

将HTML值提取到Javascript变量中

[英]Pull HTML Value into Javascript Variable

I have a table with multiple columns with one column being a checkbox. 我有一个包含多列的表,其中一列是一个复选框。 Whenever that is checked, it displays another column cell to the right of the table with an up/down spinner to set a value. 只要选中该选项,它就会在表的右侧显示另一个列单元格,并使用向上/向下微调器来设置值。

The problem I am having is that I cannot have the spinner go past the number that is in the Quantity column that I have. 我遇到的问题是我无法让微调器超过我拥有的“数量”列中的数字。 So I need to pull the current value of the Quantity column in the corresponding row into a javascript variable and use that with my spinner function. 因此,我需要将相应行中“数量”列的当前值拉入javascript变量,并将其与我的Spinner函数一起使用。 I have been able to get the value using getElementById but that only gets the first value in the table and does not work for any further values down in the table. 我已经能够使用getElementById来获取值,但是它只能获取表中的第一个值,并且对于表中的其他任何值都无效。 I keep trying getElementsByClassName but am having no luck. 我一直在尝试getElementsByClassName但没有运气。

How could I do this successfully? 我怎样才能成功做到这一点?

PHP/HTML: PHP / HTML:

<table id="merchTable" cellspacing="5" class="sortable">
    <thead>
        <tr class="ui-widget-header">
            <th class="sorttable_nosort"></th>
            <th class="sorttable_nosort">Loc</th>
            <th class="merchRow">Report Code</th>
            <th class="merchRow">SKU</th>
            <th class="merchRow">Special ID</th>
            <th class="merchRow">Description</th>
            <th class="merchRow">Quantity</th>
            <th class="sorttable_nosort">Unit</th>
            <th style="display: none;" class="num">Quantity #</th>
        </tr>
    </thead>
    <tbody>

        <?php foreach ($dbh->query($query) as $row) {?>

        <tr>
            <td class="ui-widget-content"><input type="checkbox" class="check" name="check"></td>
            <td class="loc ui-widget-content" id="loc-<?php echo intval ($row['Loc'])?>"><?php echo $row['Loc'];?></td>
            <td class="rp-code ui-widget-content" align="center" id="rp-code-<?php echo intval ($row['Rp-Code'])?>"><?php echo $row['Rp-Code'];?></td>
            <td class="sku ui-widget-content" id="sku-<?php echo intval ($row['SKU'])?>"><?php echo $row['SKU'];?></td>
            <td class="special-id ui-widget-content" align="center" id="special-id-<?php echo intval ($row['Special-ID'])?>"><?php echo $row['Special-ID'];?></td>
            <td class="description ui-widget-content" id="description-<?php echo intval ($row['Description'])?>"><?php echo $row['Description'];?></td>
            <td class="quantity ui-widget-content" align="center" id="quantity-<?php echo intval ($row['Quantity'])?>"><?php echo $row['Quantity'];?></td>
            <td class="unit ui-widget-content" id="unit-<?php echo intval ($row['Unit'])?>"><?php echo $row['Unit'];?></td>
            <td style="display: none;" class="quantity_num ui-widget-content"><input type="textbox" style="width: 100px;" class="spinner" name="value" id="test"></td>
        </tr>

    <?php } ?>

    </tbody>
</table>

JavaScript...I am trying to pull in the value using the quantity variable. JavaScript ...我正在尝试使用quantity变量提取值。 Every time I select a checkbox, the console.log(quantity) comes back with undefined : 每当我选中一个复选框时, console.log(quantity)都会返回undefined

$(function () {
    $(".check").change(function(){
    $(this).closest('tr').find('td.quantity_num').toggle(this.checked);
    console.log($('input.check').is(':checked'));
    var quantity = document.getElementsByClassName('quantity').innerHTML;
        console.log(quantity);

  if($('input.check').is(':checked'))
    $(this).closest('table').find('th.num').toggle(true);
    else
    $(this).closest('table').find('th.num').toggle(false);



    $( ".spinner" ).spinner({
      spin: function( event, ui ) {
        if ( ui.value > quantity ) {
          $( this ).spinner( "value", quantity );
          return false;
        } else if ( ui.value <= 0 ) {
          $( this ).spinner( "value", 0 );
          return false;
        }
      }
    });
  });
});
var quantity = $(this).closest('tr').find('td.quantity').html();

It's recommended putting that value in a data property: 建议将该值放在data属性中:

<td class="quantity ui-widget-content" data-quantity="<?php echo $row['Quantity'] ?>" align="center" id="quantity-<?php echo intval ($row['Quantity'])?>"><?php echo $row['Quantity'];?></td>

And then you can access that value from jQuery: 然后您可以从jQuery访问该值:

var quantity = $(this).closest('tr').find('td.quantity').data('quantity');

This way you don't depend on HTML. 这样,您就不必依赖HTML。 Imagine that tomorrow, in that cell, you want to use a <span> or add units to quantity. 想象一下,明天您要在该单元格中使用<span>或为数量添加单位。 If your data is in a property, you don't depend on what is actually inside the cell. 如果数据在属性中,则无需依赖单元格中实际存在的内容。

You can't grab the innerHTML property for an entire class (list of nodes). 您无法获取整个类(节点列表)的innerHTML属性。

You have: 你有:

var quantity = document.getElementsByClassName('quantity').innerHTML;

If you change it to the line below, where, it should work: 如果将其更改为下面的行,则应该可以使用:

var quantity = document.getElementsByClassName('quantity')[0].innerHTML;

您需要像这样获取当前行值

var quantity = $(this).closest('tr').find('td.quantity').text();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM