массив радио — jquery

#javascript #jquery #arrays #radio-button

#javascript #jquery #массивы #переключатель

Вопрос:

у меня есть приведенный ниже код, и он показывает список переключателей. Мой вопрос в том, как я могу составить список кнопок, эквивалентный этому в режиме массива (jquery)

   <input type="radio" name="name1" value="450" /> 450€<br />
  <input type="radio" name="name2" value="500" /> 500€<br />
  <input type="radio" name="name3" value="550" /> 550€<br />
  <input type="radio" name="name4" value="600" /> 600€<br />
  <input type="radio" name="name5" value="650" /> 650€<br />
  <input type="radio" name="name6" value="700" /> 700€<br />
  

это простое создание массива без каких-либо изменений. И еще один вопрос, как я смогу получить доступ к значениям, когда у меня будет это в режиме массива?

Спасибо

Комментарии:

1. в чем дело с несопоставимым </div> тегом внутри вашего <li> элемента?

2. «ничего не меняя» или «ничего не меняя»? Я не просто придираюсь к вашему английскому; эти два понятия полярно противоположны.

3. Вы пытаетесь клонировать точно такие же входные данные и добавлять их к другому элементу?

4. пожалуйста, посмотрите мой ответ на комментарий -@x10

5. нет, нет. Это могут быть независимые значения. Я просто публикую уникальный известный мне способ создания массива элементов в jquery, но, очевидно, для этого случая он неприменим. Игнорируйте мой код, я просто хочу избежать двадцати строк, где уникальным изменением является значение (400,450,500,550,600 и так далее)

Ответ №1:

другое решение на jQuery:

Живая демонстрация

 <ul>
    <li id="lista"></li>
</ul>

<script type="text/javascript">
$(document).ready(function() {
    var start = 450;
    for (var x=0; x<=20; x  ) {
        var item = document.createElement('input');
            $(item).attr('type', 'radio');
            $(item).attr('id', 'price' x 1);    // numbered starting from 1
            $(item).attr('name', 'price');
            $(item).attr('value', start   (x * 50));
        var label = document.createElement('label');
            $(label).attr('for', 'price' x 1);  // numbered starting from 1
            $(label).html(start   (x * 50)   '€');
        $('#lista').append(item);
        $('#lista').append(label);
        $('#lista').append('<br>');
    }
});
</script>
  

Ответ №2:

Это создаст 20 входных данных и увеличит значение и текст на 50

 var count = 20;
var increment = 50;

for (y = 0; y < count; y  ) {
    var inp = '<input type="radio" name="name1" value="'   increment   '" /> '   increment   '<br />';
    $(inp).appendTo('#lista');
    increment = increment   50;
}
  

Проверьте рабочий пример на http://jsfiddle.net/fxmmN/1 /

Комментарии:

1. У меня была опечатка в атрибуте name, убедитесь, что вы проверяете обновленную ссылку на jsfiddle.net/fxmmN/1

2. возможно, вы захотите использовать var y = 0 , чтобы избежать загрязнения глобальных файлов.

Ответ №3:

Надеюсь, это направит вас в правильном направлении! Я создал простую функцию, создающую столько радиоприемников, сколько вы укажете, и увеличивающую значение на 50. Попробуйте немного изменить это, чтобы получить желаемое решение!

 function populateRadios(){
  var i = 0,
      numberOfRadios = 3,
      baseNumber = 0;
    for(i; i<numberOfRadios; i  ){
        var aRadio = document.createElement('input');
        aRadio.type = 'radio'
        aRadio.name = 'radio1';
        aRadio.id = 'radio'   i;
        baseNumber  = 50;
        aRadio.value = baseNumber

       $('#theForm').append(aRadio)
    } 
}
populateRadios()