如何通过JavaScript创buildjson for循环?
我有一些select标签。
<select id='uniqueID' name="status"> <option value="1">Present</option> <option value="2">Absent</option> </select>
我想创build一个json对象,在JavaScript中有两个字段“uniqueIDofSelect和optionValue”。
我使用getElementsByName(“状态”),我迭代它。
编辑
我需要出来像
[{"selectID":2,"OptionValue":"2"}, {"selectID":4,"optionvalue":"1"}]
等等…
从我的理解你的要求,这应该工作:
<script> // var status = document.getElementsByID("uniqueID"); // this works too var status = document.getElementsByName("status")[0]; var jsonArr = []; for (var i = 0; i < status.options.length; i++) { jsonArr.push({ id: status.options[i].text, optionValue: status.options[i].value }); } </script>
var sels = //Here is your array of SELECTs var json = { }; for(var i = 0, l = sels.length; i < l; i++) { json[sels[i].id] = sels[i].value; }
如果你想要一个单独的JavaScript对象,如下所示:
{ uniqueIDofSelect: "uniqueID", optionValue: "2" }
(选项2,“缺席”是当前的select),那么下面的代码应该产生它:
var jsObj = null; var status = document.getElementsByName("status")[0]; for (i = 0, i < status.options.length, ++i) { if (options[i].selected ) { jsObj = { uniqueIDofSelect: status.id, optionValue: options[i].value }; break; } }
如果你想要一个包含所有这些对象的数组(不仅仅是所选的对象),可以使用michael的代码,但是换成status.options[i].text
。
如果您想要一个包含所选对象的JSON表示的string ,请改为:
var jsonStr = ""; var status = document.getElementsByName("status")[0]; for (i = 0, i < status.options.length, ++i) { if (options[i].selected ) { jsonStr = '{ ' + '"uniqueIDofSelect" : ' + '"' + status.id + '"' + ", " + '"optionValue" : ' + '"'+ options[i].value + '"' + ' }'; break; } }
如果我想要从for循环生成的string创buildJavaScript Object,那么我会把JSON转换成Object的方法。 我会通过迭代循环生成JSONstring,然后使用任何stream行的JavaScript框架来评估JSON到对象。
我用过Prototype JavaScript框架 。 我有两个键和值的数组。 我遍历循环,并生成有效的JSONstring。 我使用evalJSON()函数将JSONstring转换为JavaScript对象。
这里是示例代码。 试用您的FireBug控制台
var key = ["color", "size", "fabric"]; var value = ["Black", "XL", "Cotton"]; var json = "{ "; for(var i = 0; i < key.length; i++) { (i + 1) == key.length ? json += "\"" + key[i] + "\" : \"" + value[i] + "\"" : json += "\"" + key[i] + "\" : \"" + value[i] + "\","; } json += " }"; var obj = json.evalJSON(true); console.log(obj);
你的问题很难解码,但我会尝试一下。
你说:
我想在javascript中创build一个json对象,它具有
uniqueIDofSelect
和optionValue
两个字段。
然后你说:
我需要输出
[{"selectID":2,"optionValue":"2"}, {"selectID":4,"optionvalue":"1"}]
那么这个例子的输出没有名为uniqueIDofSelect
的字段,它只有optionValue
。
无论如何,你要求的对象数组…
然后在michaels的回答中回答你说:
它创buildjson对象数组。 但我只需要一个json对象。
所以你不需要一个对象的数组?
那你想要什么?
请下定决心