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