将 HTML 值拉入 Javascript 变量
Pull HTML Value into Javascript Variable
我有一个 table 有多列,其中一列是一个复选框。只要检查到up/down旋转器以设置值。
我遇到的问题是我无法让微调器超过我拥有的“数量”列中的数字。因此,我需要将相应行中 Quantity 列的当前值拉入 javascript 变量,并将其与我的微调器函数一起使用。我已经能够使用 getElementById
获取该值,但它只能获取 table 中的第一个值,并且不适用于 table 中的任何其他值。我一直在尝试 getElementsByClassName
,但一直没有成功。
我怎样才能成功?
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...我正在尝试使用 quantity
变量获取值。每次我 select 一个复选框时, 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();
建议将该值放入数据 属性:
<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>
然后您可以从 jQuery:
访问该值
var quantity = $(this).closest('tr').find('td.quantity').data('quantity');
这样你就不会依赖 HTML。想象明天,在该单元格中,您想要使用 <span>
或向数量添加单位。如果您的数据在 属性 中,则您不依赖于单元格内的实际内容。
您无法获取整个 class(节点列表)的 innerHTML
属性。
您有:
var quantity = document.getElementsByClassName('quantity').innerHTML;
如果将其更改为下面的行,它应该可以工作:
var quantity = document.getElementsByClassName('quantity')[0].innerHTML;
您需要像这样获取当前行值
var quantity = $(this).closest('tr').find('td.quantity').text();
我有一个 table 有多列,其中一列是一个复选框。只要检查到up/down旋转器以设置值。
我遇到的问题是我无法让微调器超过我拥有的“数量”列中的数字。因此,我需要将相应行中 Quantity 列的当前值拉入 javascript 变量,并将其与我的微调器函数一起使用。我已经能够使用 getElementById
获取该值,但它只能获取 table 中的第一个值,并且不适用于 table 中的任何其他值。我一直在尝试 getElementsByClassName
,但一直没有成功。
我怎样才能成功?
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...我正在尝试使用 quantity
变量获取值。每次我 select 一个复选框时, 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();
建议将该值放入数据 属性:
<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>
然后您可以从 jQuery:
访问该值var quantity = $(this).closest('tr').find('td.quantity').data('quantity');
这样你就不会依赖 HTML。想象明天,在该单元格中,您想要使用 <span>
或向数量添加单位。如果您的数据在 属性 中,则您不依赖于单元格内的实际内容。
您无法获取整个 class(节点列表)的 innerHTML
属性。
您有:
var quantity = document.getElementsByClassName('quantity').innerHTML;
如果将其更改为下面的行,它应该可以工作:
var quantity = document.getElementsByClassName('quantity')[0].innerHTML;
您需要像这样获取当前行值
var quantity = $(this).closest('tr').find('td.quantity').text();