Использование кода Brython с более чем одним вычислением - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь начать использовать 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 Ответ

0 голосов
/ 23 мая 2018

работает даже с комментариями к коду, который вы скопировали и вставили: второй скрипт возвращает обратно форму first и пытается изменить там несуществующий элемент управления "vmph2".Вторая функция должна взять индекс [1] из форм документа.Но вместо того, чтобы перейти к форме (ваши переменные fh и fh2), а затем перейти к элементу управления, вы можете просто получить ссылку на соответствующий тег с document["vmph"] и document["vmph2"].

...