怎样在点击鼠标后,等待页面加载完成后再进行一下步的操作?

怎样在点击鼠标后,等待页面加载完成后再进行一下步的操作?
  网页鼠标操作过程:鼠标点击“查询”按钮,会在“查询”按钮的下方(不是另外再开一个网页)给出查询出的数据(是一个表格)。
  根据上面的鼠标实际操作过程,我编制了如下代码,本想在第一步操作后得到第二步的结果,但第二步的结果始终为0.。我分析是因为在第一步后,页面没有加载完成,所以第二步不能得到正确的结果。我在网上找了一些等待页面加载完成的代码,仿造着编制了几种代码,但始终不正确。

$(#btm).click();  //(第一步)点击“查询”按钮
qq=$(".datagrid-row").length; //(第二步)统计查询结果,即查询出的商品条目
alert(qq);

  请问:如何在点击鼠标后,等待表格刷新完成后,立即统计出查询结果

补充:
  1、在点击“查询”后商品条目的表格会刷新,但每次刷新后表格内出现的商品条目数量是不确定的,也许有十几个,也许一个也没有。如果有商品条目,接下来会一一点击其中的商品条目;如果没有商品条目,需要进行一下个点击“查询”动作。
  2、在点击“查询”出现表格内容有商品条目时,点击商品条目具有“抢”商品的性质,所以,必须在商品条目出现的第一时间点击商品条目。   

以下是一种思维,代码没测试过不一定对,思维可以参考:

          let count = 0;
          let interval = setInterval(function(){
            if(count > 0){//不是第一次,检查自定义元素是否存在,存在说明页面未刷新,负责页面已刷新
              let checkPage = $('#checkPage');
              if(checkPage){//存在说明页面未刷新,不做任何处理
                return;
              }
            }

            let records = $(".datagrid-row");
            console.info(records);
            //下面处理业务

            //处理完成,insert
            insert();
            $('#btm').click();//处理完成,重新查询

          },1000);


        function insert(){//自定义元素判断页面刷新,前提需要页面局部刷新能清除掉自定义元素
          let parent = $(".parent-class");//datagrid-row上级元素的唯一class,有id更好,也可以通过id $("#parent-id")来控制操作
          let checkPage = '<input type="hidden" value="100" id="checkPage"></input>';
          parent.append(checkPage);//插入自定义元素,与.datagrid-row元素同级
        }

$('#btm').click();  //(第一步)点击“查询”按钮
var timer = setInterval(function(){
    var qq=$(".datagrid-row").length; //(第二步)统计查询结果,即查询出的商品条目
    if (qq>0) {
        clearInterval(timer);
        alert(qq);
    }
}, 50);


异步请求

代码如下:

$('#btm').click();  //(第一步)点击“查询”按钮
var timer = setInterval(function(){
    qq=$(".datagrid-row").length; //(第二步)统计查询结果,即查询出的商品条目
    if (qq>0) { // 判断存在条目是否>0
        clearInterval(timer);
        alert(qq); 
        // for循环遍历 点击每一个
    }else if(qq=0){ //如果条目为0,那么进行下一个点击`查询`动作
         clearInterval(timer);
         //进行下一个点击`查询`按钮
    }
}, 50);


如有问题,及时沟通

不知道你的HTML结构,基本操作逻辑如下:

<script>
$('#btm').on('click', function () {
//这里禁止下一步按钮的操作
$.ajax({
                type: "post",
                url: "/api/",
                data:{},//传递参数
                dataType:"json",
                success:function(d){
                        if(d.code==0){//加载数据成功
                             //在这里加载表格数据
                             //这里解除下一步按钮的操
                        }
                        else{
                            
                        }
                }
            });
return false;
    })
</script>

你是需要将代码写在
$(function() {
// 你的代码
});
这是$(document).ready(function(){

}); 的简写,也是对 window.load事件的封装



<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
</head>

<body><script id="__bs_script__">//<![CDATA[
    document.write("<script async src='/browser-sync/browser-sync-client.js?v=2.26.7'><\/script>".replace("HOST", location.hostname));
//]]></script>

    <div>
        <button id="bnt">add</button>
        <div class="content"></div>
    </div>
    <script>
        $('#bnt').click((e) => {
            console.log('bnt')
            setTimeout(() => {
                $('.content').html(`<table>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td>4</td>
            </tr>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td>4</td>
            </tr>
        </table>`)

                let total = 0;
                Array.from($('tr td')).forEach(element => {
                    total += element.innerHTML * 1
                })
                console.log(total, '==-')
                alert(total)

            }, 500)
        })
    </script>
</body>

</html>