如何使用JavaScript+jQuery正确从表单传递数组中的变量
问题根因
从表单输入框获取的值为字符串类型,而非你预期的数字数组:
你调用$('#my_keys').val()拿到的是完整字符串"79, 129, 183, 128, 66",直接将这个字符串放入数组传入Uint8Array构造函数时,JS引擎会尝试把整个字符串转换为0~255范围内的无符号8位整数,转换失败就会返回0,所以最终得到只有一个0元素的Uint8Array。
另外你第一段正常运行的代码注释里的Uint8Array(64)为笔误,5个元素的数组生成的Uint8Array长度为5。
解决方案
先把获取到的字符串处理为数字数组,再传给Uint8Array即可,处理步骤:
- 用
split(',')方法把字符串按逗号分割为单个数值对应的字符串数组 - 遍历每个元素,去除两端空格后转换为Number类型
- 将处理好的数字数组作为参数传入Uint8Array构造函数
修改后的完整代码如下:
<script> $(function () { $('#save').click(function () { // 获取输入框字符串 var inputStr = $('#my_keys').val(); // 处理为数字数组 var key_values = inputStr.split(',').map(val => Number(val.trim())); // 生成Uint8Array const secret_keys = new Uint8Array(key_values); console.log(secret_keys); // 输出:Uint8Array(5) [ 79, 129, 183, 128, 66 ] }); }); </script> <input type="text" id="my_keys" value="79, 129, 183, 128, 66"> <input type="button" id="save" value="save" />
内容的提问来源于stack exchange,提问作者Nancy Moore
相关产品推荐
相关产品推荐

