使用带有 js_of_ocaml 的文本区域的值

Use the value of a textarea with 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 的值不会改变,即使我在文本区域中写了一些东西。不管textarea的输入是什么,结果都是一样的

有谁知道如何使用用户写入的值吗?

谢谢!

您的问题是您在定义处理程序函数之前评估 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
      )