#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()