【问题标题】:Access variable defined in <% %> from <script> </script><script> </script> 在 <% %> 中定义的访问变量
【发布时间】:2016-07-16 23:40:51
【问题描述】:

我将一个变量 title 传递给我的 html 文档并像这样访问它:

<h2><%= title %></h2> 

如何访问&lt;script&gt; 标签内的同一个变量? 我尝试了以下方法,但它给了我一个错误:

<script>
    console.log(title);
</script>

未捕获的引用错误:未定义标题

这是因为变量在不同的范围内吗?

编辑: 我想在这篇文章中保持简单,但根据答案,我意识到我应该提到我为我的脚本使用了一个外部文件:

<script src="/javascripts/script.js"></script>

在这个脚本中,我使用 jQuery 处理一些东西,我需要变量 titlethere。

【问题讨论】:

  • 你在使用 ejs 模板吗?
  • 是的,没错。

标签: javascript jquery html node.js ejs


【解决方案1】:

由于模板的性质,您无法在呈现的输出中访问模板变量。但是,您可以呈现一个同名的 javascript 变量,该变量设置为模板变量的文字值。例如:

<script>
  var title = <%- JSON.stringify(title) %>;
  console.log(title);
</script>

【讨论】:

  • 谢谢,但这不是我所需要的。我认为标签内的内容的评估方式与我在外部文件中的评估方式相同。您的解决方案在我的外部文件中不起作用: Uncaught SyntaxError: Unexpected token
  • 为什么不能将建议的模板部分放在之前你的&lt;script src="/javascripts/script.js"&gt;&lt;/script&gt;?那么您的/javascripts/script.js 应该可以访问title,因为(全局)范围(假设您正在渲染包含&lt;script src="/javascripts/script.js"&gt;&lt;/script&gt; 的输出并且它不是来自正在提供的静态文件)。
  • 我试过了,但它也不在那里编译。
  • “它不编译”是什么意思?
  • 我的编辑器说表达式是预期的,如果我运行它,它会在控制台中显示:Uncaught SyntaxError: Unexpected token
【解决方案2】:

您必须以shown is this answer 的身份执行类似的操作。

<script>
  var title = <%- JSON.stringify(title) %>;
</script>

【讨论】:

  • 这不能为我编译 :(
  • 阅读接受的answer here。根据您配置 express/ejs 的方式,您可能需要以不同的方式处理它。
【解决方案3】:

如何访问&lt;script&gt; 标签内的同一个变量?

你不能。运行在服务器上的程序中的变量不能被运行在客户端的程序访问。

由于您已将变量的值复制到页面的 DOM 中,您可以从那里读取它保存的

console.log(document.querySelector('title').firstChild.data);

【讨论】:

    【解决方案4】:

    我是这样定义的-

    <body>
    <h2 style = "visibility:hidden" id = "events"><%= events %></h2> 
    
    <script>
    
    function initMap (){
    
    var list =document.getElementById('events').innerHTML ;
          console.log("list = ", list)
    }
    </script>
    

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 2018-01-28
      • 2017-03-17
      • 2022-01-07
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多