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