提问人:iso ayu 提问时间:11/16/2023 最后编辑:iso ayu 更新时间:11/16/2023 访问量:60
如何在JavaScript中从行表中获取值字符串
How to get value string from row table in JavaScript
问:
我想从行中获取其值。result_status
status
如果值行都通过,则将获得值,但如果值行之一将获得 。所以,会得到价值。status
result_status
pass
status
fail
result_status
fail
在此图中,结果状态必须获得值,因为其中一个状态也获得值fail
fail
这是 JavaScript
function hasil(){
//const row =inputStat.parentElement.parentElement;
var status = document.querySelector('[name="status_hidden[]"]').value;
if (status !== "fail"){
console.log("pass");
document.querySelector("#result_status").value = 'pass';
}else{
console.log("fail");
document.querySelector("#result_status").value = 'fail';
}
}
这是 AJAX
$.ajax({
type: 'POST',
url : "<?=site_url('c_transaksi/keranjang_method') ?>",
data:data_method,
success: function(data) {
$('table#keranjang_method tbody').append(data);
$('tfoot').show()
$('#result_status').html('<strong>' + hasil() + '</strong>')
},
error: function(){
alert('error');
}
})
这是 HTML
<tr class="row-keranjang-method">
<td hidden>
<?= $this->input->post('report_no') ?>
<input type="hidden" name="report_no" value="<?= $this->input->post('report_no')?>">
</td>
<td hidden>
<?= $this->input->post('id_testmatrix') ?>
<input type="hidden" name="id_testmatrix_hidden[]" value="<?= $this->input->post('id_testmatrix')?>">
</td>
<td class="method_code">
<p style="color:blue;"><?= $this->input->post('method_code') ?></p>
<input type="hidden" name="method_name_hidden[]" value="<?= $this->input->post('method_name')?>">
<p><?= $this->input->post('method_name') ?></p>
<input type="hidden" name="method_code_hidden[]" value="<?= $this->input->post('method_code')?>">
</td>
<td>
<p>value from : <strong><input class="value_from" name="value_from" value="<?= $this->input->post('value_from') ?>" style="width: 4%;" disabled></strong>
to<strong><input class="value_to" name="value_to" value="<?= $this->input->post('value_to') ?>" style="width: 4%;" disabled></strong></p>
<p><?= $this->input->post('measurement') ?></p>
<input type="hidden" name="measurement_hidden[]" value="<?= $this->input->post('measurement')?>">
</td>
<td style="width: 10%;">
<?= $this->input->post('result') ?>
<input class="form-control result" type="input" name="result_hidden[]" style="align: middle;" onkeyup="sum_method(this);" value="<?= $this->input->post('result')?>">
</td>
<td style="width: 10%;" class="status">
<?= $this->input->post('status') ?>
<input class="status" type="text" name="status_hidden[]" value="<?= $this->input->post('status')?>" style="border:0; outline:0;" readonly>
</td>
<td style="width: 10%;"><center>
<button type="button" class="btn btn-lg btn-danger" id="hapus_method" data-nama-method="<?= $this->input->post('method_name')?>"><i class="fa fa-trash"></i></button>
</td>
</tr>
<td colspan="3" align="right"><strong>Result Status : </strong></td>
<td id="result_status"></td>
但是无法获得价值。result_status
答:
0赞
trincot
11/16/2023
#1
您的尝试中存在一些问题:
此代码:
$('#result_status').html('<strong>' + hasil() + '</strong>')
...期望返回一个字符串,但没有 return 语句,因此这将始终显示
hasil()
hasil()
undefined
此代码在:
hasil
document.querySelector("#result_status").value = 'pass';
...在结果状态中显示“通过”,但这会立即被上一点中提到的代码覆盖。
此代码在:
hasil
var status = document.querySelector('[name="status_hidden[]"]').value;
...仅选择第一个匹配项,即第一行的状态。您需要检查所有行,而不仅仅是第一行。
校正:
一种解决方案是收集所有状态,然后获取其中的最小状态。由于“fail”在词法上小于“pass”,因此只有在任何行中没有“fail”时,结果才会为“pass”。
法典:
$('#result_status').text($('[name="status_hidden[]"]')
.map((i, input) => input.value).get().sort()[0]);
(并放下)。hasil
评论
0赞
iso ayu
11/17/2023
嗨@trincot谢谢。我如何进行代码更正?在函数 hasil() 中?
0赞
trincot
11/17/2023
用这个解决方案替换你。就像我写的,放下——它不再需要了。$('#result_status').html('<strong>' + hasil() + '</strong>')
hasil
0赞
iso ayu
11/20/2023
我已经尝试过该代码。但是结果不能直接改变,我已经改成了@trincotresult_status
hasil
hitung_hasil
0赞
trincot
11/20/2023
我不明白为什么你不能直接更改并且仍然想要一个功能。但是,好吧,如果它对你有用,那么这就是最重要的。
评论
[name="status_hidden[]"]
data