jquery 为什么javascript不执行 AJAX 内部的querySelector?

sczxawaw  于 2022-12-12  发布在  jQuery
关注(0)|答案(1)|浏览(166)

我尝试在 AJAX success:function(data){}中处理一个HTML部分,但是由于某种原因,当我调用它时,代码无法执行。下面是我尝试的代码:

$.ajax({
  url:"../new/php/posts.php",
  method:"POST",
  data:{limit:limit, start:start},
  cache:false,
  success:function(data)
  {
   //$('#activitystream').append(data);
   var data_parse = JSON.parse(data);
   for (var i in data_parse){
        var divData = '<a id="default-like-'+data_parse[i].ID+'" href="#/" class="post__action post__action--reaction reaction reaction__toggle reaction-toggle--'+data_parse[i].ID+' reaction-emoticon-0 js-reaction-toggle" style="display: none;">\n'+
        '<span>Like</span>\n'+
        '</a>';
                  $('#activitystream').append(divData);
   }
   if(data == '') {
     //Do nothing
     action = 'active';
   }else {
     $('#activitystream-loading').css("display", "block");
       action = 'inactive';
       console.log(action);
       console.log(data);
          var els1 = document.querySelectorAll(".post__action--reaction");
          for (var x = 0; x < els.length; x++){
            alert("Hey there")
            els1[x].style.display = 'block';
          }
  }
 }
 });

所以,我也尝试了两种方法。首先,我尝试执行 AJAX 的complete:function(){}内部的代码,其次,我尝试添加这个window.onload = function(){}内部的代码,但仍然没有任何React。甚至在控制台中没有任何错误,它只是什么都没有显示。你知道我如何处理生成的html部分吗?提前感谢!

fiei3ece

fiei3ece1#

代码没有按预期执行的一个可能原因是在for循环中使用了错误的变量名。

for (var x = 0; x < els.length; x++){

您使用的是变量“els”而不是“els1”。2这可能会导致循环根本不执行,从而导致没有输出。
尝试更改for循环中的变量名,使其与代码前面使用的变量名匹配,如下所示:

for (var x = 0; x < els1.length; x++){

这样应该可以修复该问题,并使代码能够正确执行。

相关问题