我有选择标记的数组。
<select id='uniqueID' name="status">
<option value="1">Present</option>
<option value="2">Absent</option>
</select>
我想创建一个json对象,在JavaScript中有两个字段'uniqueIDofSelect和optionValue'。
我使用getElementsByName(“status”)并迭代它。
修改
我需要像
一样[{"selectID":2,"OptionValue":"2"},
{"selectID":4,"optionvalue":"1"}]
依旧......
答案 0 :(得分:167)
根据我对您的请求的理解,这应该有效:
<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>
答案 1 :(得分:41)
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;
}
答案 2 :(得分:8)
如果您想要一个JavaScript对象,例如:
{ uniqueIDofSelect: "uniqueID", optionValue: "2" }
(其中选项2,“缺席”,是当前选择) 那么下面的代码应该产生它:
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's code,但将status.options[i].text
替换为status.id
。
如果您想要包含所选对象的JSON表示的字符串,请改用:
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;
}
}
答案 3 :(得分:3)
如果我想从for循环生成的字符串创建JavaScript Object,那么我会使用JSON to Object方法。我将通过迭代for循环生成JSON字符串,然后使用任何流行的JavaScript框架来评估JSON到Object。
我使用过Prototype JavaScript Framework。我有两个带键和值的数组。我遍历for循环并生成有效的JSON字符串。我使用evalJSON()函数将JSON字符串转换为JavaScript对象。
这是示例代码。试试FireBug Console
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);
答案 4 :(得分:0)
你的问题很难解码,但我会试着去试一试。
你说:
我想创建一个包含两个字段的json对象 javascript中的
uniqueIDofSelect
和optionValue
。
然后你说:
我需要输出
[{"selectID":2,"optionValue":"2"}, {"selectID":4,"optionvalue":"1"}]
嗯,此示例输出没有名为 uniqueIDofSelect
的字段,只有 optionValue
。
无论如何,你要求的是一系列对象......
然后在对michaels的评论中回答你说:
它创建了json对象数组。但我只需要一个json对象。
所以你不想要一个对象数组?
那你想要什么?
请下定决心。