Javascript-使用数组更改类名
我正在尝试更改数组列表中名称为“make”或“model”的所有字段。我肯定我没有做一些简单的事情来让这一切顺利进行。但是下面的函数不起作用。如何更改数组列表中多个字段的类名Javascript-使用数组更改类名,javascript,Javascript,我正在尝试更改数组列表中名称为“make”或“model”的所有字段。我肯定我没有做一些简单的事情来让这一切顺利进行。但是下面的函数不起作用。如何更改数组列表中多个字段的类名 CSS hide { display: none; } array = ['make','model']; function deactivateField( array ) { count = array.length; for (i = 0; i < count; i++) {
CSS
hide {
display: none;
}
array = ['make','model'];
function deactivateField( array ) {
count = array.length;
for (i = 0; i < count; i++) {
array[i].className = 'hide' );
}
}
<td id="make" name="make" class="show">aaa</td>
<td id="make" name="make" class="show">bbb</td>
<td id="make" name="make" class="show">ccc</td>
<td id="model" name="model" class="show">111</td>
<td id="model" name="model" class="show">222</td>
<td id="model" name="model" class="show">333</td>
CSS
隐藏{
显示:无;
}
数组=['make','model'];
函数停用字段(数组){
count=array.length;
对于(i=0;i
首先,HTML页面中不能有多个具有给定ID的元素
第二,当你这样做的时候
array[i].className = 'hide'
您需要从数组中获取字符串的属性className
;相当于执行“make”.className
。当然,这是行不通的;您的目的是找到id或名称为“make”的元素,然后更改该元素的类名,而不是单词“make”
如果您确实要传递一个唯一ID数组,那么您可以这样做
for (i = 0; i < count; i++) {
var el = document.getElementById(array[i]);
el.className = 'hide' );
}
for(i=0;i
但是,这同样要求每个元素都有自己的唯一ID。我的回答假设您将为每个元素提供一个唯一ID(因为这是无效的),并且名称属性的值将保持不变
function deactivateField( array ) {
var i = 0, j = 0, elements;
elements = document.getElementsByTagName("td");
for (; i< elements.length; i++) {
for (; j<array.length; j++) {
if (elements[i].name === array[j]) {
elements[i].className = "hide";
}
}
}
}
函数停用字段(数组){
变量i=0,j=0,元素;
元素=document.getElementsByTagName(“td”);
对于(;i
array=['make','model'];
函数停用字段(数组){
count=array.length;
对于(i=0;i
首先,不能有多个id相同的元素。id是唯一的。此外,您拥有的数组实际上并不引用任何元素,它只是一个字符串数组。您需要使用诸如document.getElementsByTagName之类的选择器来获取一组选择器(因为IE不支持GetElementsByCassName)然后在它们之间循环查找具有所需类的元素
array = ['make','model'];
elArray = document.getElementsByTagName("td")
function deactivateField( array ) {
count = elArray.length;
for (i = 0; i < count; i++) {
for(x = 0; x < array.length; x++)
{
if(array[x].test(elArray[i]))
{
elArray[i].className = array[x] + " hide";
}
}
}
<td name="make" class="make show">aaa</td>
<td name="make" class="make show">bbb</td>
<td name="make" class="make show">ccc</td>
<td name="model" class="model show">111</td>
<td name="model" class="model show">222</td>
<td name="model" class="model show">333</td>
array=['make','model'];
elArray=document.getElementsByTagName(“td”)
函数停用字段(数组){
计数=elArray.length;
对于(i=0;i
数组本身不包含元素,只包含与所需ID相对应的字符串。保持ID唯一。然后使用DOM获取节点:document.getElementById('idName');
。然后,您将能够操作实际的元素
另一件事,CSS应该是.hide
,因为hide
试图找到这样的标签。以下是我如何做到这一点的:
function deactivateField( field_array ) {
cnt = field_array.length;
for (a = 0; a < cnt; a++) {
changeClassByName( field[a], 'hide' );
}
}
function changeClassByName( name, classname ) {
var nm = document.getElementsByName( name );
count = nm.length;
for(b = 0; b < count; b++){
nm[b].className = classname;
}
}
功能停用字段(字段数组){
cnt=场_数组长度;
对于(a=0;a
function deactivateField( field_array ) {
cnt = field_array.length;
for (a = 0; a < cnt; a++) {
changeClassByName( field[a], 'hide' );
}
}
function changeClassByName( name, classname ) {
var nm = document.getElementsByName( name );
count = nm.length;
for(b = 0; b < count; b++){
nm[b].className = classname;
}
}