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

发布于 2024-09-03 06:51:46 字数 50 浏览 6 评论 0原文

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

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

I would like to change the class for all the fields in a specific fieldset.

Is there a way to loop through the fields in a fieldset?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

心是晴朗的。 2024-09-10 06:51:46

您可以使用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 早于它。)

You can use 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';
    }
}

(If you only care about input fields, you could lose the outer tag loop.)

If you needed them in document order (rather than grouped by tag) you'd have to walk over the elements manually, which will be a pain and a bit slow. You could use fieldset.querySelectorAll('input, textarea, select, button'), but not all browsers support that yet. (In particular, IE6-7 predate it.)

薔薇婲 2024-09-10 06:51:46

使用 jQuery(耶!):

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

Using jQuery (yay!):

$('#fieldset-id :input').each(function(index,element) {
    //element is the specific field:
    $(element).doSomething();
});
懷念過去 2024-09-10 06:51:46

请注意,以下解决方案适用于非 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();
};

Note the solution below is for NON-JQUERY Implementations.

Implement a getElementsByClassName Method like this:

After you implement the code below you can then use document.getElementsByClassName("elementsInFieldSetClass") it will return an array of the elements with that class.

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();
};
树深时见影 2024-09-10 06:51:46

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

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

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

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

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

Another jQuery solution here.

If you are simply adding a class(es) to the elements, it's this simple:

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

.addClass() (like many other jQuery functions) will work on all of the elements that match the selector.

Example: http://jsfiddle.net/HANSG/8/

瞳孔里扚悲伤 2024-09-10 06:51:46

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

当用户点击某些东西时? jQuery 方式:

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

Permanently? Find & replace in your editor of choice.

When the user clicks something? jQuery way:

$('fieldset <selector>').each(function() {
  $(this).removeClass('old').addClass('new');
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文