我想更改特定字段集中所有字段的类。
有没有办法循环遍历字段集中的字段?
答案 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函数一样)将适用于与选择器匹配的所有元素。
答案 4 :(得分:-1)
永久?找到&在您选择的编辑器中替换。
当用户点击某些内容时? jQuery方式:
$('fieldset <selector>').each(function() {
$(this).removeClass('old').addClass('new');
});