使用flask框架怎么在html的<script>里头用for循环

html script代码:

<script>
    $(document).ready(function () {
        var update = setInterval(function () {

                $("#1").load('/tools/monitor/time/');
                $("#2").load('/tools/monitor/time/');

        },1000);
    });
</script>

这里我在后台会传一个值lis到前端,想着是这么写:

<script>
    $(document).ready(function () {
        var update = setInterval(function () {
            {% for ip in lis %}
                $("#{{ ip[0] }}").load('/tools/monitor/time/');
            {% endfor %}
        },1000);
    });
</script>

这么写不成功,是script内不能这么用for吗?该怎么写这个for语句?

阅读 4.9k
3 个回答

找到原因了,是因为这个lis已经被我在body页for过了,所以下面在拿来for就不成功,接下来就是要找找看为什么一个lis不能被for多次的问题了。

你可能不太理解整个请求的过程,我只给你说服务器渲染数据和浏览器渲染数据的过程.
服务器:进入action以后一直执行,遇到最后的render方法后,会把数据给view层的解析器. 解析器分析html语法和数据,把数据填充到html里面,注意这个时候script,style这样的标签根本不会起作用,根本不会起作用,解析器不在乎script还是style还是hn,等等,在他眼里都是字符串,解析之后如果没有异常会把这些字符串send到客户端,略过过程,你可以理解直接send到浏览器
浏览器:请求发出后,会等待请求的返回.当请求的数据(刚才说的字符串)返回以后,开始进行解析,这时候会有不同的解析器,看到script,sytle以后会由不同的解析器进行不同的解析,还有html代码,还有html parser进行解析,然后经过一系列的tree,显示到浏览器上.
所以总的来说,服务器不知道script,浏览器里面不会有{% for ip in lis %} 这样的数据. 你分析问题的思路不正确,前后端不可以混为一谈.
建议你看下这时候html的代码,我不清楚ip[0]里面是什么,你可以看下这块的html,是否和你预想的一样.

lis是什么数组?字符串数组吗

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题