我使用的是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
。