如何用 Flask 和 Javascript 制作“显示更多”按钮?

问题描述 投票:0回答:1

我有一组项目,我想在无序列表中显示。首先,我只想显示其中的一些项目,然后按“显示更多”按钮后,其他项目将显示在浏览器上。

我试图将数组传递给模板并使用 Flask 的 for 循环,将 itens (但不是全部)显示到浏览器。并使用 javascript DOM 函数,显示其余的操作系统元素。 我不知道如何解决这个问题或如何找到最好的方法。

我尝试以某种方式做到这一点,但最好的方法只显示一个项目,而不是所有其他项目,无序列表的格式消失了(文本左侧的点,我真的不知道这是否是一个错误或错误)。

这是尝试之一:

Flask 应用程序:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/', methods=["GET", "POST"])
def home():
    lista = ['test-1', 'test-2', 'test-3', 'test-4', 'test-5', 'test-6', 'test-7']
    return render_template('home.html', lista=lista)

if __name__ == "__main__":
    app.run(debug=True)

HTML代码是:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Array Test</h1>
    <ul>
      {% for item in lista[:3] %}
        <li>{{ item }}</li>
      {% endfor %}

      {% for item in lista[3:] %}
        <li class="show" style="display: none;">
          {{ item }}
        </li>
      {% endfor %}
    </ul>
    <button class="buttonShow">Mostrar mais</button>

    <script>
      const buttonShow = document.getElementsByClassName("buttonShow")[0]
      const showItens = () => {
        document.getElementsByClassName("show")[0].style.display = "inline";
      }
      buttonShow.addEventListener('click', showItens)
    </script>
</body>
</html>
javascript python html flask
1个回答
0
投票

我找到了答案,我删除了参数:

class="show" style="display: none;"
从内部
<li>
并将其放入
<div>
内,如下所示:

<ul>
      {% for item in array[:3] %}
        <li>{{ item }}</li>
      {% endfor %}

      <div class="show" style="display: none;">
        {% for item in lista[3:] %}
        <li>
          {{ item }}
        </li>
      {% endfor %}
      </div>
</ul>
© www.soinside.com 2019 - 2024. All rights reserved.