如何从Javascript函数访问HTML隐藏输入中声明的数组
How can I access an array declared in an HTML hidden input from a Javascript function?
我在HTML表单的隐藏输入中声明了一个数组。现在我想在Javascript函数中访问该数组。为此,我编写了以下代码:
<form name="form1">
<input type="hidden" name="sq[]" ></input>
<input type="hidden" name="a" ></input>
</form>
在Javascript函数中:
function myfunction()
{
document.form1.a.value=i; // Here, I can access the variable 'a'
// (since a is not in the form of array)
var i;
for(i=0;i<4;i++)
{
document.form1.sq[i].value=i; // Here, I am not able to access array named sq[].
}
}
命名隐藏输入sq[]
不会将其更改为数组。它本质上仍然只是一个文本字段。您需要访问该字段,并将值解析为逗号分隔的列表(或JSON或您选择的任何格式)。
假设你有这样的表格:
<form name="form1">
<input type="hidden" name="sq[]" value="a,b,c,d" />
<input type="hidden" name="sqjson[]" value='["e","f","g","h"]' />
</form>
您可以使用split[MDN]:访问值
var arr = document.form1['sq[]'].value.split(',');
for (var ii = 0; ii < arr.length; ii++) {
console.log(arr[ii]);
}
或者使用JSON.parse[MDN],这将使更复杂的对象更容易存储在隐藏字段中:
var arr = JSON.parse(document.form1['sqjson[]'].value);
for (var ii = 0; ii < arr.length; ii++) {
console.log(arr[ii]);
}
单击此处查看此示例的工作版本。
您可以在隐藏字段中存储JSON格式的sq
数组。
<input type="hidden" name="sq" value="[]" ></input>
然后使用JSON.parse
和JSON.stringify
,可以将字符串值反序列化为内存对象,在数组中添加/删除值,然后将其存储回隐藏字段。
var $sq = JSON.parse($("#sq").val());
...
$("#sq").val(JSON.stringify($sq);
无JQuery:
var hf = document.getElementById("sq");
var sq = JSON.parse(hf.value);
...
hf.value = JSON.stringify(sq);
然后,您可以将sq
作为参数传递给需要的函数。或者将其存储在全局变量中。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 如何将输入(type=text)从html表单传递到javascript函数
- 单击jquery清除输入值
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- jQuery自定义验证比较多个输入的序列
- Sails.js:同时发布文本输入和一个文件
- 根据用户输入声明样式设置
- 当输入被声明为无效时,在React中添加一个复选框
- 如何从Javascript函数访问HTML隐藏输入中声明的数组
- 根据用户输入声明多个作用域
- 必须在 $(document).ready 中声明或输入的内容
- 通过输入字段和php数组+ for循环声明和使用变量