【发布时间】:2018-04-12 21:05:26
【问题描述】:
我确实发现了许多类似的问题,但没有一个可以帮助我解决问题的解决方案。
我正在向我的页面插入 HTML 元素,稍后我想计算它们。因为新创建的元素不是 DOM 的一部分,所以 count 返回 0。
代码:
$('#addSlide').on('click', function(){
var reader = new FileReader();
reader.readAsDataURL(inputFile);
reader.onloadend = function(){
slideImg = URL.createObjectURL(inputFile);
// ADDING ELEMENTS
var slide = '<div class="slide"><img src="'+slideImg +'" /></div>';
$('#Container').append(slide);
};
// EXECUTING SOME FUNCTION
somename();
});
function somename(){
var slideCount = '';
slideCount = $('#Container div').length;
console.log(slideCount);
// ALWAYS RETURNS '0' REGARDLESS TO HOW MANY SLIDES ARE ADDED
if( slideCount > 1 ) {
// SOME CODE ...
}
}
如何刷新 DOM 以便可以在代码中使用新创建的元素?
【问题讨论】:
-
在这种情况下,可能只是您在 FileReader 完成之前调用了 count()。将 somename() 调用移动到 onloadend 块内部(在 .append 行之后),以便在加载完成之前不会调用它。
-
@Daniel 朋友,即使在
reader.onloadend中调用了somename()?那我还应该在哪里称呼它呢? -
@Daniel 你是对的,我在
reader.onloadend中添加了somename(),它现在可以工作了。请作为答案发布,以便我标记它。 -
很容易让一行出现乱序,并且很难在您自己的代码中发现!答案已发布,谢谢!