Как создать json JavaScript для цикла?
У меня есть массив тега select.
<select id='uniqueID' name="status">
<option value="1">Present</option>
<option value="2">Absent</option>
</select>
и я хочу создать json-объект, имеющий два уникальных идентификатора поля select и optionValue в JavaScript.
Я использую getElementsByName ( "status" ), и я повторяю его.
ИЗМЕНИТЬ
Мне нужно поставить как
[{"selectID":2,"OptionValue":"2"},
{"selectID":4,"optionvalue":"1"}]
и т.д.
Ответы
Ответ 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>
Ответ 2
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;
}
Ответ 3
Если вам нужен один объект 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, но замените 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;
}
}
Ответ 4
Если я хочу создать объект JavaScript из строки, сгенерированной для цикла, то я бы использовал JSON для Object. Я бы сгенерировал строку JSON путем итерации для цикла, а затем использовал любую популярную платформу JavaScript для оценки JSON для Object.
Я использовал Prototype JavaScript Framework. У меня есть два массива с ключами и значениями. Я перебираю цикл и создаю строку 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);
Ответ 5
Твой вопрос довольно сложно декодировать, но я постараюсь взять на него удар.
Вы говорите:
Я хочу создать объект json, имеющий два поля uniqueIDofSelect
и optionValue
в javascript.
И тогда вы скажете:
Мне нужен вывод, например
[{"selectID":2,"optionValue":"2"},
{"selectID":4,"optionvalue":"1"}]
Ну, в этом примере вывод не имеет поля с именем uniqueIDofSelect
, он имеет только optionValue
.
В любом случае, вы запрашиваете массив объектов...
Затем в комментарии к michaels ответьте:
Он создает массив объектов json. но мне нужен только один объект json.
Значит, вам не нужен массив объектов?
Что вам нужно?
Пожалуйста, решите.