首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JS不显示结果\ Python \ Eel

JS不显示结果\ Python \ Eel
EN

Stack Overflow用户
提问于 2020-11-04 15:11:38
回答 1查看 222关注 0票数 0

我解决不了这个问题。我编写了一个程序,下面是它的简短描述:一个应用程序,其逻辑是用python编写的,接口是使用HTMLCSS呈现的。Python导入模块鳗鱼。Python有一个返回数组的函数。在JS中,创建一个变量,该变量接受函数的结果,然后将结果写入HTML类。这就是它的样子:

  • Python码

导入鳗鱼导入日期时间导入sys eel.init("web") isoWD = datetime.datetime.today().isoweekday() @eel.expose def some_func():如果isoWD == 1:@eel.expose= 'elems','elems‘elif isoWD == 2:.isoweekday= 'elems','elems','elems‘elif isoWD == 3: result = 'elems','elems’elif isoWD == 4: result = 'elems','elems‘elif isoWD == 5: result = 'elems','elems','elems‘elems’elif isoWD == 6: isoWD = 'elems','elems‘elif isoWD == 7: sys.exit()返回结果eel.start("main.html",size=(325,450))

  • HTML code

代码语言:javascript
运行
复制
function display() {
  var res = eel.some_func();
  for (var i = 0; i <= 'block__les'.length; i++) {
    document.getElementsByClassName('block__les')[i].innerHTML = res[i];
  }
}
display();
代码语言:javascript
运行
复制
<div class="wrapper">
  <div class="block">
    <div class="block__num">
      <p>(1)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">09.00 - 09.30</div>
  </div>
  <div class="block">
    <div class="block__num">
      <p>(2)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">09.40 - 10.10</div>
  </div>
  <div class="block">
    <div class="block__num">
      <p>(3)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">10.20 - 10.50</div>
  </div>
  <div class="block">
    <div class="block__num">
      <p>(4)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">11.00 - 11.30</div>
  </div>
  <div class="block">
    <div class="block__num">
      <p>(5)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">11.40 - 12.10</div>
  </div>
  <div class="block">
    <div class="block__num">
      <p>(6)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">12.20 - 12.50</div>
  </div>
  <div class="block">
    <div class="block__num">
      <p>(7)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">13.00 - 13.30</div>
  </div>
  <div class="block">
    <div class="block__num">
      <p>(8)</p>
    </div>
    <div class="block__les"></div>
    <div class="block__time">13.40 - 14.10</div>
  </div>
</div>

输出:

数组元素应该在数字和时间之间输出。但那里是空的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-20 18:18:46

为了获得从python函数发送给鳗鱼的结果,javascript函数display应该成为异步函数,等待,结果来自python函数。

因此,显示函数变成:

代码语言:javascript
运行
复制
<script type="text/javascript">
async function display() {
  var res=await eel.some_func()();
  for (var i = 0; i <= document.getElementsByClassName('block__les').length ; i++) {
    document.getElementsByClassName('block__les')[i].innerHTML = res[i];
  }
}
display();
</script>

还有一件事应该提到,但它与eel无关,在display函数中,display不给出‘block_les’类的项目数,而是给出单词block__les的字符数,即10

为了得到‘block_les’类的项目数,我们可以使用document.getElementsByClassName('block__les').length,,它给出了8,也就是正确的数字。

当然,别忘了

代码语言:javascript
运行
复制
<script type="text/javascript" src="/eel.js"></script>

main.html的头部部分

最后,不要忘记改变:

代码语言:javascript
运行
复制
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']

成为8项,以匹配HTML中的显示项的数量。

代码语言:javascript
运行
复制
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems', 'elems', 'elems']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64682705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档