Использование кода Brython с более чем одним вычислением
Я пытаюсь начать использовать Brython в онлайн-курсе. Чтобы проверить это, я создал простое упражнение по конвертации единиц, где студент набирает скорость в милях в час и возвращает скорость в футах / с. Работает отлично. Но я нахожу, что любые вторые вычисления, которые я добавляю, игнорируются. Что-то должно быть обнулено, или очищено, или сброшено или что-то еще! Любой совет будет принят во внимание. Код для этого простого упражнения приведен ниже (я не загружал MathJax, поэтому знаки $)
... вы увидите, что первый работает нормально, а второй - идентично, за исключением изменения имен функции и всех переменных просто игнорируется.
Спасибо!
<HTML>
<HEAD>
<META charset="utf-8">
<script type="text/javascript"
src="https://cdn.rawgit.com/brython-dev/brython/3.3.5/www/src/brython.js">
</script>
<script type="text/javascript"
src="https://cdn.rawgit.com/brython- dev/brython/3.3.5/www/src/brython_stdlib.js">
</script>
</HEAD>
<BODY bgcolor="white" onload="brython(1)">
<H1>test</H1>
<!-- silly test example anticipating multiple unit conversions in a row: -->
<!-- This will work if I remove the previous script and form...but won't if it follows -->
<SCRIPT type ="text/python">
import math
from browser import document
@document["vmph"].bind("change")
def gcal(xx):
# get the first element with tag "form" in the document
fh = document.select("form")[0]
vvmph = float(fh.vmph.value)
vvftps = vvmph*1.4666700004
fh.vftps.value = vvftps
</SCRIPT>
<FORM method="" action="">
<p class="ex1">For $v$ mph = <INPUT Type="text" Name="vmph" id="vmph" Value="" Size="10" autocomplete="off"> $\;\;$mph<br>
we get that $v$ ft per second = <INPUT Type="text" Name="vftps" Value="" Size="10">.
</p>
</FORM>
<SCRIPT type ="text/python">
import math
from browser import document
@document["vmph2"].bind("change")
def gcal2(xxx):
# get the first element with tag "form" in the document
fh2 = document.select("form")[0]
vvmph2 = float(fh2.vmph2.value)
vvftps2 = vvmph2*1.4666700004
fh2.vftps2.value = vvftps2
</SCRIPT>
<FORM method="" action="">
<p class="ex1">For $v$ mph = <INPUT Type="text" Name="vmph2" id="vmph2" Value="" Size="10" autocomplete="off"> $\;\;$mph<br>
we get that $v$ ft per second = <INPUT Type="text" Name="vftps2" Value="" Size="10">.
</p>
</FORM>
</BODY>
</HTML>
1 ответ
Работа даже над комментариями к коду, который вы копируете и вставляете: второй скрипт возвращает первую форму и пытается изменить там несуществующий элемент управления "vmph2". Вторая функция должна взять индекс [1]
из формы документа. Но вместо того, чтобы перейти к форме (ваши переменные fh и fh2), а затем перейти к элементу управления, вы можете просто получить ссылку на соответствующий тег с document["vmph"]
а также document["vmph2"]
,