Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 使用insertAdjacentHTML时,查询选择器为Null_Javascript - Fatal编程技术网

Javascript 使用insertAdjacentHTML时,查询选择器为Null

Javascript 使用insertAdjacentHTML时,查询选择器为Null,javascript,Javascript,我正在使用insertAdjacentHtml创建一个div,该div在页面的开始body标记后面有一个按钮 <script>document.addEventListener('DOMContentLoaded', function(){ var code = '<div class="overlay"><button class="overlay-close"></button></div>';

我正在使用insertAdjacentHtml创建一个div,该div在页面的开始body标记后面有一个按钮

<script>document.addEventListener('DOMContentLoaded', function(){
            var code = '<div class="overlay"><button class="overlay-close"></button></div>';
            document.body.insertAdjacentHTML('afterbegin', code);
        }, false);</script>
document.addEventListener('DOMContentLoaded',function(){
var代码=“”;
document.body.insertAdjacentHTML('afterbegin',代码);
},假);
但是我的closeBttn上的querySelector出现了一个错误

未捕获的TypeError:无法读取null的属性“querySelector”

<script>
        (function() {
            var overlay = document.querySelector( 'div.overlay' ),
                closeBttn = overlay.querySelector( 'button.overlay-close' );
                /* irrelevent other code here */
        })();
</script>

(功能(){
var overlay=document.querySelector('div.overlay'),
closeBttn=overlay.querySelector('button.overlay-close');
/*此处不相关的其他代码*/
})();
显然,它看起来像我有覆盖按钮和覆盖div存在,但它仍然不工作。不使用insertAdjacentHTML,它可以正常工作,但是一旦我将代码包装到这个函数中,就会出现错误,所以我认为当我使用这个函数创建div时,这里发生了一些事情


有人能帮忙调试或解决问题吗?

代码是在加载DomContentLoaded之前加载的,因此我将代码更改为以下内容:

<script>
        (document.addEventListener("DOMContentLoaded",function() {
            var overlay = document.querySelector( 'div.overlay' ),
                closeBttn = overlay.querySelector( 'button.overlay-close' );
                /* irrelevent other code here */
        }));
</script>

(document.addEventListener(“DOMContentLoaded”,function()){
var overlay=document.querySelector('div.overlay'),
closeBttn=overlay.querySelector('button.overlay-close');
/*此处不相关的其他代码*/
}));

第二段代码何时运行?您的错误将向我表明,代码是在加载DOMContentLoaded之前运行的,因此正文中不存在div.overlay。@LiamEgan,谢谢您的回答。它在添加以下内容后工作:(document.addEventListener(“DOMContentLoaded”,function(){var overlay=document.querySelector('div.overlay'),