如何将Brython.js的输出作为DOM元素打印到特定的DOM中



我使用的是Brython.js,我可以在HTML浏览器中打印循环,但正如您所看到的,这是将输出添加到整个DOM中。

如何将打印结果附加到特定的DOM元素中?例如,如果我想将输出打印到#map中,我该怎么做?

<ul id="maps"></ul>
<script type="text/python">
from browser import document
import sys
sys.stdout = document
maps= ["world", "asia", "africa"]
for x in maps:
print(x)
</script>

您可以将自定义类的实例分配给sys.stdout。您只需要覆盖写入方法。例如:

from browser import document
import sys
class CustomStdout:
def write(self, txt):
document['maps'].html += f'<li>{txt}</li>'

sys.stdout = CustomStdout()
maps = ["world", "asia", "africa"]
for x in maps:
print(x)

但以下操作会更简单:

from browser import document
from browser.html import LI
maps_ul = document['maps']
maps = ["world", "asia", "africa"]
for x in maps:
maps_ul <= LI(x)

<=运算符是DOMElement类型的操作数,其作用类似于brython中的appendChild

最新更新