Javascript queryselector在控制台中工作,但不';无法在.js文件中工作

Javascript queryselector在控制台中工作,但不';无法在.js文件中工作,javascript,debugging,Javascript,Debugging,我想在html文件中添加一个段落元素,我成功了。但是,我只是想尝试另一种方式。 我找到了一种在页面中添加p元素的方法 此代码来自stackoverflow <script type="text/javascript"> window.onload = function() { var para = document.createElement('p'); para.innerHTML = ''; document.body.appendChild(para); }; </scr

我想在html文件中添加一个段落元素,我成功了。但是,我只是想尝试另一种方式。 我找到了一种在页面中添加p元素的方法

此代码来自stackoverflow

<script type="text/javascript">
window.onload = function() {
var para = document.createElement('p');
para.innerHTML = '';
document.body.appendChild(para);
};
</script>
所以,这些是我的问题。

  • 为什么不在.js文件中设置“para”常量
  • 在这种情况下,运行控制台和运行源文件有什么区别

  • 可能代码
    document.querySelector('p')
    是在实际段落装入dom之前执行的。当您从控制台运行时,可能是在装载之后。@Tal-OP清楚地说,
    defer
    用于外部文件的脚本标记。这是一个操作顺序问题。两个脚本都是“延迟的”…使用
    window.onload
    属性延迟内联脚本,而使用
    defer
    延迟外部文件,因此外部文件在内联脚本之前执行。将内联脚本移到JS文件中并解决问题。@RandyCasburn您是正确的,但代码仍在一个
    onload
    中,这是在延迟的加载时间之后。请参见“是”,这是一个比第一个更好的注释。比我的更能说明同样的事情。
    when I load my HTML,   
    1st : load internal js file - make <p>. 2nd : parse whole HTML codes.   
    3rd : load external js file - manipulate <p>. and it will work well.