在setInterval函数中重复点击链接问题

我的代码:
setInterval(function(){
$("#nor").click();//点击“查询”按钮
var jj=0;
var cxTimer=setInterval(function(){
aa=$("td[field='createBy'][style!='background-color:#0066FF']").siblings().find(".btn-text")
if(aa.length>0){
aa.click();//此处点击所有筛选出的商品的".btn-text"按钮,一次可打开几个商品的链接
clearInterval(cxTimer);
};
if(jj==160){ clearInterval(cxTimer);};//10毫秒间隔判断100次共计1000毫秒,如果没有商品出现则退出
},5);
}, Math.random()*318+700)// 时间间隔不能小于800毫秒

问题:当点击“查询”按钮后,如果商品出现,假定出现了2件商品,aa.click()会对同一商品打开8个至10多个链接【重复点击同一商品了】,似乎clearInterval(cxTimer)代码不起作用。请问如何解决重复点击同一商品链接的问题

点击的时候给点击的元素标签添加一个属性标识,下面的案例是添加了class作为标识,下次点击的时候就不获取有该class的元素

<!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>
    <style>
      .red {
        color: red;
      }
    </style>
  </head>
  <body>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>

      function fn(e) {
        e.target.setAttribute("class", "red");
      }

      setInterval(() => {
        const div = document.createElement("div");
        div.innerHTML = "test";
        div.setAttribute("onclick", "fn(event)");
        document.body.append(div);

        let num = 0;
        const timer = setInterval(() => {
          const divs = $("div").not($(".red"));
          console.log("divs", divs);
          divs.click();
          num++;
          if (num === 10) {
            clearInterval(timer);
          }
        }, 2000);
      }, 3000);
    </script>
  </body>
</html>

两个setinterval套在一起应该有问题,最外层setinterval可以说自始至终是一个,但里面那个应该就不是了,里面那个可能会被外面那个不断重复创建,可能变成难以预料的定时器(可能会变成多个重复的,因为最外层进来的时候没有先把里面的clear掉马上又创建了),像你这句代码:aa=$("td[field='createBy'][style!='background-color:#0066FF']").siblings().find(".btn-text"),能拿到这些按钮那就可以在确定点击了可以控制它们的样式display为none,应该下次就拿不出来了,建议嵌套的setinterval可以分离单独的执行,各行其事,通过共同全局参数来标记调控两个关联起来就好

创建新定时器前无条件停止上一个定时器, 让定时器保持只有一个

var cxTimer=null; //定时器id变量放外面
setInterval(function(){
    $("#nor").click();//点击“查询”按钮
    var jj=0;
    clearInterval(cxTimer); //创建新定时器前无条件停止上一个定时器, 让定时器保持只有一个
    cxTimer=setInterval(function(){
        aa=$("td[field='createBy'][style!='background-color:#0066FF']").siblings().find(".btn-text")
        if(aa.length>0){
            aa.click();//此处点击所有筛选出的商品的".btn-text"按钮,一次可打开几个商品的链接
            clearInterval(cxTimer);
        };
        jj++;  //你少了jj++
        if(jj==160){ clearInterval(cxTimer);};//10毫秒间隔判断100次共计1000毫秒,如果没有商品出现则退出
    },5);
}, Math.random()*318+700)// 时间间隔不能小于800毫秒

感谢各位老师的指点。
  老师们的代码都很复杂,虽然没有采用,但您的方案启发了我,最后我是在点击商品后立即再点击查询按钮,这样前面点击的商品已经被锁定排除在本次点击之外了,这就避免了重复点击