Javascript 添加到不存在的元素之前-这是JS错误吗?
我想在将父元素添加到DOM之后,将表单预先添加到页面上的元素。当我提前准备时,即父元素不存在,我得到一个奇怪的beheavorJavascript 添加到不存在的元素之前-这是JS错误吗?,javascript,jquery,dom,prepend,Javascript,Jquery,Dom,Prepend,我想在将父元素添加到DOM之后,将表单预先添加到页面上的元素。当我提前准备时,即父元素不存在,我得到一个奇怪的beheavor jQuery(".myDiv").prepend('<div id="myForm">Content</div>'); 我在控制台中获得prepend元素。但是,如果父元素还不存在,则页面上不会显示prepend元素,并且如果我在一秒钟后检查同一元素: setTimeout(function() { var res = document
jQuery(".myDiv").prepend('<div id="myForm">Content</div>');
我在控制台中获得prepend元素。但是,如果父元素还不存在,则页面上不会显示prepend元素,并且如果我在一秒钟后检查同一元素:
setTimeout(function() {
var res = document.getElementById("myForm")
console.log(res);
}, 1000);
然后我得到空值
当父元素最终被添加到页面中时,循环执行此操作后,我的prepend元素不会消失
因此,它看起来像是我先添加到DOM中的任何内容,但在发现父元素不存在后,DOM拒绝了get。但这是正常的beheavor吗?它工作得很好
//当存在div时
jQuery(“.myDiv”).prepend('Content');
var res=document.getElementById(“myForm”)
log('mydiv:',res);
setTimeout(函数(){
var res=document.getElementById(“myForm”)
log('mydiv:',res);
}, 1000);
//当div不存在时
jQuery(“.noDiv”).prepend('Content');
var res=document.getElementById(“noForm”)
log('noForm:',res);
setTimeout(函数(){
var res=document.getElementById(“noForm”)
log('noForm:',res);
}, 1000);代码>
我似乎无法重现您所描述的内容。更多信息。OP所说的是,如果页面上没有任何.myDiv
,则document.getElementById(“myForm”)
不会返回null
,如果在…prepend(…)
之后立即调用它,则不会将null赋给我OK,父div是由第三方脚本添加的,所以我不确定这是做什么的,很可能是先添加父div,然后删除,然后再添加。所以Aman所说的几乎是正确的
setTimeout(function() {
var res = document.getElementById("myForm")
console.log(res);
}, 1000);