Как получить все переключатели внутри таблицы?

у меня есть группа переключателей внутри таблицы вместе с другими входными данными в этой таблице, и я не могу получить переключатели по идентификатору, имени или имени тега, я хочу получить их по типу, если это возможно, потому что идентификатор и имя автоматически генерируется JSF, и я не хочу это менять.

поэтому требование таково: получить только все переключатели (не все входы) внутри таблицы, чтобы я мог зацикливаться на них.


person Mahmoud Saleh    schedule 11.06.2012    source источник
comment
document.getElementsByTagName('input'). Проверьте тип каждого элемента.   -  person UltraInstinct    schedule 11.06.2012


Ответы (3)


Я надеюсь, что есть только один набор переключателей. В этом случае может помочь что-то вроде этого:

var inputs = yourForm.elements;
var radioes = [];
for (var i = 0; i < inputs.length; ++i) {
    if (inputs[i].type == 'radio') {
        radioes.push(input[i]);
    }
}​

В случае, если имеется более одного набора переключателей, лучшим подходом было бы иметь словарь с name в качестве ключа и значением в виде массива переключателей в группе.

person UltraInstinct    schedule 11.06.2012
comment
как поместить все эти переключатели в массив вместе. - person Mahmoud Saleh; 11.06.2012
comment
Ответил в инете :). Если серьезно, рассмотрите возможность использования jQuery. - person UltraInstinct; 11.06.2012

Я знаю, что в вопросе не упоминается jQuery, но я просто хотел продемонстрировать его простоту; пожалуйста, считайте это скорее точкой продажи "эй, посмотри, как хорош jQuery".

// look how pretty I am
var radioButtons = $('table#MyTableId input[type="radio"]');
person Richard    schedule 11.06.2012

Учитывая, что имя вашей формы yourForm ... (<form name = "yourForm">) ... простой способ - просто проанализировать все элементы формы и проверить тип, например:

var your_namespace = {};
your_namespace.your_function = function() {
    var l = document.yourForm.elements.length;
    for (i=0; i<l; i++) {
        var type = yourForm.elements[i].type;
        if (type=="radio") alert("Form element " + i + " is a radio!");
    }   
}

Вместо предупреждения вы можете делать много других вещей с идентификатором элемента.

Это может быть проще при использовании таких фреймворков, как MooTools или JQuery.

person Bjoern    schedule 11.06.2012