Javascript EJS无法访问DOM元素,导致未定义

Javascript EJS无法访问DOM元素,导致未定义,javascript,ejs,Javascript,Ejs,我试图通过VanillaJS或jQuery选择DOM元素。无论哪种方式,它们都会在我的ejs文件中生成未定义的内容 我在ejs顶部加载所有库 在页面中间我有一个简单的 <% if (somevariable < 1) { %> <!-- do something --> <script> document.getElementById("showorders").style.visibility = "hidden" </script&

我试图通过VanillaJS或jQuery选择DOM元素。无论哪种方式,它们都会在我的ejs文件中生成未定义的内容

我在ejs顶部加载所有库

在页面中间我有一个简单的

<% if (somevariable < 1) { %> 
  <!-- do something -->
   <script> document.getElementById("showorders").style.visibility = "hidden" </script>
  <% } %>

document.getElementById(“showorders”).style.visibility=“hidden”
再往下一页,我有一个id为“showorders”的表格

如果该语句为true,我只想将表的可见性设置为hidden。否则继续运行页面并执行正常流程


为什么值未定义?

出现此问题的原因可能是脚本中引用了一个不存在的元素。
您应该等待DOM加载事件

香草的

<% if (somevariable < 1) { %> 
<!-- do something -->
<script> 
   document.addEventListener("DOMContentLoaded, function() {
       document.getElementById("showorders").style.visibility = "hidden";
   }, false);
</script>
<% } %>

addEventListener(“DOMContentLoaded,function(){
document.getElementById(“showorders”).style.visibility=“hidden”;
},假);
jQuery

<% if (somevariable < 1) { %> 
<!-- do something -->
<script> 
   jQuery(function() {
       jQuery("#showorders").css("visibility", "hidden");
   });
</script>
<% } %>

jQuery(函数(){
jQuery(“#showorders”).css(“可见性”、“隐藏”);
});

出现此问题的原因可能是脚本中引用了一个不存在的元素。
您应该等待DOM加载事件

香草的

<% if (somevariable < 1) { %> 
<!-- do something -->
<script> 
   document.addEventListener("DOMContentLoaded, function() {
       document.getElementById("showorders").style.visibility = "hidden";
   }, false);
</script>
<% } %>

addEventListener(“DOMContentLoaded,function(){
document.getElementById(“showorders”).style.visibility=“hidden”;
},假);
jQuery

<% if (somevariable < 1) { %> 
<!-- do something -->
<script> 
   jQuery(function() {
       jQuery("#showorders").css("visibility", "hidden");
   });
</script>
<% } %>

jQuery(函数(){
jQuery(“#showorders”).css(“可见性”、“隐藏”);
});

当浏览器遇到
脚本
标记时,它会停止解析页面并运行脚本。这就是
document.write
在页面当前位置添加内容的方式

如果希望脚本在DOM完全解析后运行,则应该侦听DOMContentLoaded事件

document.addEventListener("DOMContentLoaded", function(event) {
    document.getElementById("showorders").style.visibility = "hidden"
});

当浏览器遇到
脚本
标记时,它会停止解析页面并运行脚本。这就是
document.write
在页面当前位置添加内容的方式

如果希望脚本在DOM完全解析后运行,则应该侦听DOMContentLoaded事件

document.addEventListener("DOMContentLoaded", function(event) {
    document.getElementById("showorders").style.visibility = "hidden"
});

谢谢你。也很有帮助的评论。正如您所指出的,我试图在DOM完全加载之前进行声明,导致未声明。谢谢您。也很有帮助的评论。正如您所注意到的,我试图在DOM完全加载之前进行声明,导致未声明。不错的选择:-)不错的选择:-)