有没有办法循环遍历字段集中的所有字段?

时间:2010-05-25 18:31:49

标签: javascript html fieldset

我想更改特定字段集中所有字段的类。

有没有办法循环遍历字段集中的字段?

5 个答案:

答案 0 :(得分:6)

您可以使用getElementsByTagName

var fieldset= document.getElementById('something');
var fieldtags= ['input', 'textarea', 'select', 'button'];

for (var tagi= fieldtags.length; tagi-->0) {
    var fields= fieldset.getElementsByTagName(fieldtags[tagi]);
    for (var fieldi= fields.length; fieldi-->0;) {

        fields[fieldi].className= 'hello';
    }
}

(如果您只关心input字段,则可能会丢失外部标记循环。)

如果您按文档顺序需要它们(而不是按标签分组),则必须手动遍历元素,这将是一个痛苦而且有点慢。您可以使用fieldset.querySelectorAll('input, textarea, select, button'),但并非所有浏览器都支持此功能。 (特别是,IE6-7早于它。)

答案 1 :(得分:4)

使用jQuery(耶!):

$('#fieldset-id :input').each(function(index,element) {
    //element is the specific field:
    $(element).doSomething();
});

答案 2 :(得分:1)

请注意,下面的解决方案适用于NON-JQUERY实现。

实现这样的getElementsByClassName方法:

在实现下面的代码之后,您可以使用document.getElementsByClassName(“elementsInFieldSetClass”)它将返回该类的元素数组。

function initializeGetElementsByClassName ()
        {
            if (document.getElementsByClassName == undefined) {
                document.getElementsByClassName = function(className)
                {
                    var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
                    var allElements = document.getElementsByTagName("*");
                    var results = [];

                    var element;
                    for (var i = 0; (element = allElements[i]) != null; i++) {
                        var elementClass = element.className;
                        if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
                            results.push(element);
                    }
                    return results;
                }
            }
        }

window.onload = function () {
    initializeGetElementsByClassName();
};

答案 3 :(得分:0)

这里有另一个jQuery解决方案。

如果您只是在元素中添加一个类,就这么简单:

$('fieldset :input').addClass('newClass');

.addClass()(与许多其他jQuery函数一样)将适用于与选择器匹配的所有元素。

示例:http://jsfiddle.net/HANSG/8/

答案 4 :(得分:-1)

永久?找到&在您选择的编辑器中替换。

当用户点击某些内容时? jQuery方式:

$('fieldset <selector>').each(function() {
  $(this).removeClass('old').addClass('new');
});