代码之家  ›  专栏  ›  技术社区  ›  Lord Elrond Mureinik

ejs/node.js中的字符串连接错误

  •  0
  • Lord Elrond Mureinik  · 技术社区  · 7 年前

    我在使用ejs时加载自定义字体时遇到问题。我认为问题不在于字体本身,但如果您感兴趣,来源是:

    https://github.com/andrewgioia/Keyrune

    ejs文档:

    <body>
    
    <i class="ss ss-6x"> </i> 
    // default symbol correct size
    
    
    <i class="ss ss-6x ss-lea"> </i> 
    // correct symbol/size 
    //html renders as <i class="ss ss-6x ss-lea"> </i>
    
    <i class=<%= "ss ss-6x ss-" + sets[0].setCode %>> </i> 
    // default symbol shows up in wrong font size
    // html renders as <i class="ss" ss-6x ss-lea> </i> 
    
    <i class=<%= "ss " + "ss-6x " + "ss-" + sets[0].setCode%> > </i> 
    // default symbol shows up in wrong font size
    // html still renders as <i class="ss" ss-6x ss-lea> </i> 
    
    
    <% console.log(sets[0].setCode); %> 
    // prints as 'lea' 
    
    
    </body>
    

    节点路由(此处无问题):

    app.get('/', function(req, res) {
      con.query('SELECT * FROM mtgSets', function(error, rows, fields) {
        if (error) throw error;
        sets = rows;
        console.log(sets[0].setCode); //prints as lea 
        res.render('test', {sets: sets});
      });
    });
    

    解决方案:在“<%=%>”括号中加引号!

    <i class="<%= 'ss ss-6x ss-' + sets[0].setCode %>" > </i>
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Darren Wainwright    7 年前

    您是否尝试过一致地格式化您的html?您的单引号和双引号似乎有点不匹配,而且并非所有内容都有起始引号或结束引号。

    我倾向于在HTML端使用双引号,在JS端使用单引号。

    比如:

    <i class=<%= 'ss ' + 'ss-6x ' + 'ss-' + sets[0].setCode%> > </i>

    变成

    <i class="<%= 'ss ' + 'ss-6x ' + 'ss-' + sets[0].setCode%>" > </i>

    <i class=<%= "ss ss-6x ss-" + sets[0].setCode %>> </i>

    变成

    <i class="<%= 'ss ss-6x ss-' + sets[0].setCode %>"> </i>