Используйте значение текстовой области с js_of_ocaml
Я пытаюсь использовать значение текстовой области с js_of_ocaml. Вот мой исходный код:
let matrix () =
let text1 = get_textarea "input_1" in
let btn1 = get_elem "btn_1" in
text1##placeholder <- Js.string "Write your matrix !";
btn1##textContent <- Js.some (Js.string "Calculate");
btn1##onclick <- Dom_html.handler (if Matrix.is_matrix (Js.to_string text1##value)
then (let matrix = Matrix.get_matrix (Js.to_string text1##value) in
fun ev -> (set_matrix_caracteristics (Matrix.nb_lines matrix) (Matrix.nb_columns matrix) (Matrix.determinant matrix) ; Js._false))
else fun ev -> (error_input_matrix() ; Js._false))
Я хочу сделать несколько исчислений на матрице, и матрица записывается пользователем через текстовую область с html-интерфейсом.
Я думаю, что проблема в том, что ценность text1
не меняйся, даже если я напишу что-нибудь в текстовой области. Каким бы ни был ввод текстовой области, результат будет одинаковым.
Кто-нибудь знает, как использовать значение, записанное пользователем?
Спасибо!
1 ответ
Решение
Ваша проблема здесь в том, что вы оцениваете text1##value
перед определением функции обработчика, поэтому значение оценивается при установке обработчика, а затем никогда не изменяется. следующее должно работать
btn1##onclick <- Dom_html.handler (
fun ev ->
if Matrix.is_matrix (Js.to_string text1##value)
then let matrix = Matrix.get_matrix (Js.to_string text1##value) in
(set_matrix_caracteristics (Matrix.nb_lines matrix) (Matrix.nb_columns matrix) (Matrix.determinant matrix) ; Js._false)
else error_input_matrix() ; Js._false
)