【问题标题】:Can't define two var in javascript [duplicate]无法在javascript中定义两个var [重复]
【发布时间】:2016-08-15 10:51:50
【问题描述】:

我想在我的javascript代码中定义两个或多个var,但是当我定义第二个时,第一个变得无效。我已经搜索过这个问题,但我不知道为什么。谁能告诉我如何处理这个问题? 这是我的 javascript 代码(用于将 JSON 转换为 HTML 表):

<script type="text/javascript">
         var v_first = {{ pass_kegg|safe }}
         var v_seconde = {{ pass_tmp|safe }}

         function buildHtmlTable(myList) {
            //Builds the HTML Table out of myList json data from Ivy restful service.
         }

         function addAllColumnHeaders(myList)
         {
             //Adds a header row to the table and returns the set of columns.Need to do union of keys from all records as some records may not containall records
         }
    </script>

当我只定义一个变量时,一切正常。但是当我罚款第二个变量v_second时,第一个变量v_first就失效了。

【问题讨论】:

  • Javascript 语句以分号结尾。
  • var v_first = {{ pass_kegg|safe }} 部分中的双括号是干什么用的?它们是否在服务器端被替换?如果没有,请删除它们,使其成为 var v_first = pass_kegg|safevar v_seconde = pass_tmp|safe,看看是否符合您的要求。
  • @LukePark 让它成为答案,我会投票给它
  • 谢谢大家的回答,pass_kegg是Flask App传递过来的变量,所以会在服务端替换掉。
  • 你说的“...变得无效”是什么意思?生成的脚本是什么样子的(可以通过查看页面源码看到)?

标签: javascript flask


【解决方案1】:

看来您应该使用tojson() filter 进行动态JavaScript 生成,即

var v_first = {{ pass_kegg|tojson|safe }},
    v_seconde = {{ pass_tmp|tojson|safe }};

用分号结束表达式是个好习惯,但绝对不是必需的。见What are the rules for JavaScript's automatic semicolon insertion (ASI)?

【讨论】:

    【解决方案2】:

    试试这个

         var v_first = { pass_kegg|safe };
         var v_seconde = {pass_tmp|safe };
    

    而不是这个

         var v_first = {{ pass_kegg|safe }}
         var v_seconde = {{ pass_tmp|safe }}
    

    这可能不是 100% 有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 2020-09-29
      • 2014-04-04
      • 2019-10-15
      相关资源
      最近更新 更多