编程语言
首页 > 编程语言> > javascript – 连接模板文字时出现奇怪的错误

javascript – 连接模板文字时出现奇怪的错误

作者:互联网

我正在尝试构建一个javascript脚本,它将我的标题放到我的html页面上,所以当我进行更改时,我不必更新每个页面.我了解到模板文字可以在变量中保存html代码,所以我开始使用它.但是,当我使用三元运算符时,我在VS Code中弹出错误.它说我错过了a).

我检查了整个模板文字是否有任何缺失的括号.

var html = `<div id="branding">
    <h1><span class="btop">JoJo</span> <span class="bbottom">Studios</span></h1>
</div>
<nav>
    <ul>
        <li`+(page=="home" ? ` class="current><a href="#">Home</a>"` : `><a href="../">Home</a>`)+`</li>
        <li`+(page=="games" ? ` class="current"` : ``)+`>
            <div class="dropdown">
                <a href=`+(page=="games" ? `"./"` : (page=="home" ? `"games/"` : `"../games/"`)+`>Games</a>
                <div class="dropdown-content">
                    <a href=`+(page=="games" ? `"` : (page=="home" ? `"games/` : `"../games/`)+`jojobananacatch.html">JoJo Banana Catch</a>
                </div>
            </div>
        </li>
        <li`+(page=="play" ? ` class="current"` : ``)+`><a href=`+(page=="home" ? `"play/"` : `"../play/"`)+`>Play</a></li>
        <li`+(page=="videos" ? ` class="current"` : ``)+`><a href=`+(page=="home" ? `"videos/"` : `"../videos/"`)+`>DevLogs & More</a></li>
        <li`+(page=="about" ? ` class="current"` : ``)+`><a href=`+(page=="home" ? `"about/"` : `"../about/"`)+`>About</a></li>
        <li`+(page=="contact" ? ` class="current"` : ``)+`><a href=`+(page=="home" ? `"contact/"` : `"../contact/"`)+`>Contact</a></li>
        <li`+(page=="account" ? ` class="current"` : ``)+`><a href=`+(page=="home" ? `"account/account.php?account_forward=0"` : `"../account/account.php?account_forward=0"`)+`>Account</a></li>
    </ul>
</nav>`;

输出应该只是一个我可以插入到文档中的字符串.任何帮助,将不胜感激.

解决方法:

dropdown类中的部分是问题所在,你显然使用了两个嵌套的三元运算符,但只有一个闭括号.

更改

<a href=`+(page=="games"
           ? `"./"`
           : (page=="home"
              ? `"games/"`
              : `"../games/"`)+`>Games</a>

<a href=`+(page=="games"
           ? `"./"`
           : (page=="home"
              ? `"games/"`
              : `"../games/"`))+`>Games</a>

和第二个实例相同.

顺便说一下,你也可以在模板中直接使用表达式(这是模板的全部要点).

这是使用${…}语法完成的,在某些情况下可能比关闭和重新打开模板更容易阅读.例如:

let s = "World";
console.log(`Hello, ${s+"."}`)

记录你好,世界.

标签:template-literals,html,javascript,dom
来源: https://codeday.me/bug/20190823/1696893.html