javascript - 需要一种有效的方法来摆脱多个 HTML 文件中的重复 HTML 代码

标签 javascript jquery html css

<分区>

我目前正忙于创建一个登录表单,该表单会在按下某个登录按钮时向下滑动。我已经通过使用以下代码完成了这项工作:

$(document).ready(function (){
    $('.loginButton').click(function(){
        $('.login').slideToggle();
    });
});

我为登录表单制作的 HTML 如下所示:

    <main>
        <div class="login">
            <h5>Log in here</h5>
            <form>
              <label for="username">Username:</label>
              <input type="text" id="username" required>
              <label for="password">Password:</label>
              <input type="password" id="password" required>
              <p class="registertext">Click <a href="register.html">here</a> to register!</p>
              <input type="submit" value="Sign in">
            </form>
        </div>
    </main>

我现在遇到的问题是我的网站目前使用四个 HTML 页面。因此,在它们的每个 HTML 文件中,都存在上述 HTML 代码。现在我想摆脱这个重复的代码,但我真的不知道什么是好的和有效的方法来做到这一点。我自己已经尝试过一些有效的方法,但我不确定它们是否有效。我做的第一件事是在按下登录按钮后将 div 内的 HTML 代码附加到 div,我只让这种情况发生一次,即 bool 值一次。

var firstTime = true;

$(document).ready(function (){
    $('.loginButton').click(function(){
        if (firstTime)      {
            $('.login').append('<h5>Log in here</h5><form><label for="username">Username:</label><input type="text" id="username" required><label for="password">Password:</label><input type="password" id="password" required><p class="registertext">Click <a href="register.html">here</a> to register!</p><input type="submit" value="Sign in"></form>');
        firstTime = false }
    $('.login').slideToggle();
    });
});

我发现的另一个解决方案是将 div 中的代码放在一个单独的 HTML 文件中,然后将该文件加载到 div 中。

$(document).ready(function (){
    $('.login').load(login.html);
    $('.loginButton').click(function(){
        $(this).toggleClass('active');
        $('.login').slideToggle();
    });
});

最佳答案

混合 HTML 和 JS 是一个糟糕的原则;在 JS 中进行大量显式 DOM 操作或 HTML 字符串是不好的(难以阅读/维护)。

您需要一种服务器端技术来进行模板化(在 Java、PHP、Ruby 等中),或者您可以使用客户端技术,如 React 或 AngularJS。

关于javascript - 需要一种有效的方法来摆脱多个 HTML 文件中的重复 HTML 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922498/

上一篇:css - WordPress - 减少主菜单和 slider 之间的垂直空间

下一篇:css - Django-filer 在管理站点中呈现不正确

相关文章:

javascript - 按元素名称过滤表

html - 如何在 HTML/CSS 中用不同颜色的单词显示重音?

javascript - Chrome 扩展 : Redirect at specific time

jquery - 更改 Bootstrap 4 轮播方向

javascript - 如何在不修改子项的情况下操作父项(css/react)

javascript - 如何将逗号字符串拆分为两个变量?

jquery - 如果高度小于 parent.height,则垂直居中图像,否则将高度限制为 100%

jquery - 是否显示 :none perform better then height:0?

javascript - 从 typescript 对象中查找具有填充值的属性名称

javascript - 如何在 ReactJS 组件对象数组中插入元素(在现有元素之间)