Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-使用数组更改类名_Javascript - Fatal编程技术网

Javascript-使用数组更改类名

Javascript-使用数组更改类名,javascript,Javascript,我正在尝试更改数组列表中名称为“make”或“model”的所有字段。我肯定我没有做一些简单的事情来让这一切顺利进行。但是下面的函数不起作用。如何更改数组列表中多个字段的类名 CSS hide { display: none; } array = ['make','model']; function deactivateField( array ) { count = array.length; for (i = 0; i < count; i++) {

我正在尝试更改数组列表中名称为“make”或“model”的所有字段。我肯定我没有做一些简单的事情来让这一切顺利进行。但是下面的函数不起作用。如何更改数组列表中多个字段的类名

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;
    }
}