Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加到不存在的元素之前-这是JS错误吗?_Javascript_Jquery_Dom_Prepend - Fatal编程技术网

Javascript 添加到不存在的元素之前-这是JS错误吗?

Javascript 添加到不存在的元素之前-这是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

我想在将父元素添加到DOM之后,将表单预先添加到页面上的元素。当我提前准备时,即父元素不存在,我得到一个奇怪的beheavor

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);