如何通过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对象,它具有uniqueIDofSelectoptionValue两个字段。

然后你说:

我需要输出

 [{"selectID":2,"optionValue":"2"}, {"selectID":4,"optionvalue":"1"}] 

那么这个例子的输出没有名为uniqueIDofSelect的字段,它只有optionValue

无论如何,你要求的对象数组…

然后在michaels的回答中回答你说:

它创buildjson对象数组。 但我只需要一个json对象。

所以你不需要一个对象的数组?

那你想要什么?

请下定决心