Javascript 调用实际存在的null元素的jquery

Javascript 调用实际存在的null元素的jquery,javascript,jquery,Javascript,Jquery,我的代码可以在localhost上运行,但是当我在我的站点上实现它时,它就不起作用了。 错误日志显示它正在调用一个不存在的元素。我得出的结论是,它无法看到元素,因为元素是动态加载的 元素是类.newsitem\u text,它是一个包含博客文章的div。我相信jquery是在页面加载类之前调用该类的 这里有一个小提琴的例子: 错误: Uncaught TypeError:无法读取null的属性“html” 47 ganhe dinheiro atraves de downloads:1093

我的代码可以在localhost上运行,但是当我在我的站点上实现它时,它就不起作用了。 错误日志显示它正在调用一个不存在的元素。我得出的结论是,它无法看到元素,因为元素是动态加载的

元素是类
.newsitem\u text
,它是一个包含博客文章的div。我相信jquery是在页面加载类之前调用该类的

这里有一个小提琴的例子:

错误:
Uncaught TypeError:无法读取null的属性“html”
47 ganhe dinheiro atraves de downloads:1093 Uncaught SyntaxError:意外令牌非法

守则:

<javascript>
            var wordList = $(".newsitem_text").html().split(' ');
            var newHtml = '';

            $.each(wordList, function(index, word){
              newHtml += ' ' + word;
              if (index == 50) {
                newHtml += '<div>Some HTML</div>'     
              }        
            })
            ;

            $(".newsitem_text").html(newHtml);


</javascript>

var wordList=$(“.newsitem_text”).html().split(“”);
var newHtml='';
$.each(单词列表、函数(索引、单词){
newHtml+=''单词;
如果(指数=50){
newHtml+=“一些HTML”
}        
})
;
$(“.newsitem_text”).html(newHtml);

如何使脚本等待页面加载类,然后执行它或其他操作?

您可以尝试在窗口加载或文档准备就绪时执行此函数

只需将您的函数放在以下内容中:

$(window).load(function(){
    //your function here
});
还是在这里

$(document).ready(function(){
  //your function here
});

这是一种更好的方法,在所有内容之后将代码放在body标记的末尾,这样javascript可以在加载所有内容之后运行

似乎您正在JS代码中执行动态HTML,并立即尝试获取刚刚添加的标记。如果是这种情况,您的代码将不得不等待并不断检查,直到浏览器呈现您的新HTML并将节点添加到DOM,然后您可以查询它们或对其执行某些操作

我找到工作的唯一方法是使用setTimeOut并继续检查,然后执行最后一条语句。我在下面创建了一个函数,用于检查等待和检查特定条件,然后执行回调函数

//A function to wait until either times up, or until a pass in "funct" returns "true", which ever occured first.
//funct - callback function, to be returned true or false.
//done - an optional callback function for notify when waiting is over.
//timeout - the amount of time in million-second to wait.
//caller - optional string of caller for monitoring if multiple waiting session.
function waitToSync(funct, done, timeout, caller) {
  //This is  a hack synchronize to wait until funct() returns true or timeout becomes < 0.
  caller = caller || '';
  if ((funct === undefined) || typeof (funct) != 'function') return;
  function waiting() {
    if (!funct()) {
      var dt = new Date();
      console.log(caller + " waiting: " + dt.format('yyyy-mm-dd h:MM:ss'));
      if ((timeout - 1000) > 0)
        setTimeout(waiting, 1000); //1 second.
      else {

        console.log(caller + ': waitToSync timed out!!!');
        document.body.style.cursor = 'default';
      }
      timeout -= 1000;
    }
    else {
      if (done !== undefined && (typeof done === 'function'))
        done();
    }
  }
  waiting();
}
//一个函数要等待到某个时间,或者直到“funct”中的某个传递返回“true”,这是第一个出现的。
//funct-回调函数,返回true或false。
//done-用于等待结束时通知的可选回调函数。
//超时-等待的时间量(以百万秒为单位)。
//caller-用于监视多个等待会话的可选调用方字符串。
函数waitToSync(函数、完成、超时、调用方){
//这是一种等待func()返回true或timeout变为<0的方法。
调用者=调用者| |“”;
if((funct==未定义)| | typeof(funct)!='function')返回;
函数等待(){
if(!funct()){
var dt=新日期();
console.log(调用者+“等待:”+dt.format('yyyy-mm-ddh:mm:ss');
如果((超时-1000)>0)
setTimeout(等待,1000);//1秒。
否则{
log(调用者+':waitToSync超时!!!');
document.body.style.cursor='default';
}
超时-=1000;
}
否则{
如果(完成!==未定义&&(完成的类型==='function'))
完成();
}
}
等待();
}
做所有你想等待的事情。然后调用WaitToSync

 $.each(wordList, function(index, word){
     newHtml += ' ' + word;
     if (index == 50) {
        newHtml += '<div>Some HTML</div>'     
     }        
  });

  waitToSync(
     function wait() { return document.getElementsByClassName("newsitem_text").length > 0; }, 
     function dosomething() { $(".newsitem_text").html(newHtml); },
     10000, //wait up to 10 seconds.
     'dynamic add HTML');
$。每个(单词列表、函数(索引、单词){
newHtml+=''单词;
如果(指数=50){
newHtml+=“一些HTML”
}        
});
等待同步(
函数wait(){return document.getElementsByClassName(“newsitem_text”).length>0;},
函数dosomething(){$(“.newsitem_text”).html(newHtml);},
10000,//最多等待10秒。
“动态添加HTML”);

需要更多信息。不清楚错误是什么或此代码与什么交互。如何使脚本等待类被页面加载--将脚本移动到正文块底部或将脚本包装到
$(document).ready(function(){//your code})
您是否在真实页面中使用了
标记?代码已在底部。
标记在那里,这是我得到的错误:
未捕获类型错误:无法读取null 47 ganhe dinheiro atraves de downloads的属性“html”:1093未捕获语法错误:意外标记非法
未捕获类型错误:$(…).ready不是一个函数47 ganhe dinheiro atraves de downloads:1093 Uncaught SyntaxError:意外标记非法
您需要在脚本之前插入ur jquery.min.js它不取决于页面加载吗?比如连接速度?不,它只是一个setTimeout辅助函数。在动态加载整个页面时也可以使用此函数。该函数解决了在javascript中处理异步性质的同步时的许多问题。它不会阻止执行,“超时”等待时间可以设置为10万分钟左右。如果不满足任何条件,它将等待10分钟。一旦满足条件,它将终止等待函数。funct()返回true。
Uncaught ReferenceError:wordList未定义(匿名函数)@47 ganhe dinheiro atraves de downloads:1303
解决了错误,但代码不起作用,现在我没有收到任何错误。