如何在JavaScript中从行表中获取值字符串

How to get value string from row table in JavaScript

提问人:iso ayu 提问时间:11/16/2023 最后编辑:iso ayu 更新时间:11/16/2023 访问量:60

问:

我想从行中获取其值。result_statusstatus

如果值行都通过,则将获得值,但如果值行之一将获得 。所以,会得到价值。statusresult_statuspassstatusfailresult_statusfail

enter image description here

在此图中,结果状态必须获得值,因为其中一个状态也获得值failfail

这是 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

JavaScript HTML AJAX

评论

0赞 trincot 11/16/2023
你的 HTML 中指的是什么?请提供从 ajax 请求收到的示例 HTML,即 的值是多少?[name="status_hidden[]"]data
0赞 iso ayu 11/16/2023
嗨@trincot我已经编辑了我的HTML

答:

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_statushasilhitung_hasil
0赞 trincot 11/20/2023
我不明白为什么你不能直接更改并且仍然想要一个功能。但是,好吧,如果它对你有用,那么这就是最重要的。