JS不显示结果| 蟒蛇 | 鳗鱼

我无法解决这个问题。我写了一个程序,这是它的简短描述:一个应用程序,其逻辑用python编写,界面使用HTMLCSS呈现。Python 导入模块eel。Python 有一个返回数组的函数。在 JS 中,创建一个变量来获取函数的结果,然后将结果写入 HTML 类。它看起来是这样的:

  • Python代码

import eel

 import datetime

 import sys



 eel.init("web")


 isoWD = datetime.datetime.today().isoweekday()


 @eel.expose

 def some_func():

     if isoWD == 1:

         result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']


     elif isoWD == 2:

         result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']


     elif isoWD == 3:

         result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']


     elif isoWD == 4:

         result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']


     elif isoWD == 5:

         result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']


     elif isoWD == 6:

         result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']


     elif isoWD == 7:

         sys.exit()


     return result



 eel.start("main.html", size=(325, 450))



至尊宝的传说
浏览 175回答 1
1回答

噜噜哒

为了获得从暴露给 eel 的 python 函数发送的结果,javascript 函数display应该成为异步函数,并且我们应该等待来自 python 函数的结果。因此,显示函数变为:<script type="text/javascript">async function display() {&nbsp; var res=await eel.some_func()();&nbsp; for (var i = 0; i <= document.getElementsByClassName('block__les').length ; i++) {&nbsp; &nbsp; document.getElementsByClassName('block__les')[i].innerHTML = res[i];&nbsp; }}display();</script>还有一点需要提到,但与 'block__les' 无关eel,在display函数中,'block__les'.length并没有给出 'block__les' 类的项目数,但它给出了单词 的字符数block__les,即10。为了排序 'block__les' 类的项目数量,我们可以使用document.getElementsByClassName('block__les').length,它给出8,正确的数字。当然,别忘了放<script type="text/javascript" src="/eel.js"></script>在头部部分main.html最后不要忘记更改:result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']变为 8 个项目,以匹配 HTML 中显示的项目数。result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems', 'elems', 'elems']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript