Как создать 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.

Значит, вам не нужен массив объектов?

Что вам нужно?

Пожалуйста, решите.