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


и так далее...

663   5  

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

    Ничего не найдено.