Foros del Web » Programando para Internet » Javascript »

Error funcion habilita y deshabilita removeAttribute is not a function

Estas en el tema de Error funcion habilita y deshabilita removeAttribute is not a function en el foro de Javascript en Foros del Web. hola que tal compañeros me ando iniciando en javascript, estoy tratando de hacer una funcion que me habilite y deshabilite cierto grupo de campos de ...
  #1 (permalink)  
Antiguo 22/06/2016, 13:37
 
Fecha de Ingreso: febrero-2016
Mensajes: 43
Antigüedad: 8 años, 2 meses
Puntos: 2
Error funcion habilita y deshabilita removeAttribute is not a function

hola que tal compañeros

me ando iniciando en javascript, estoy tratando de hacer una funcion que me habilite y deshabilite cierto grupo de campos de texto mi función que tengo es esta

Código Javascript:
Ver original
  1. function seleccion(cualidades,propiedades,selec){
  2.  
  3.             var rad = document.getElementById(selec);
  4.  
  5.             if(rad.checked){
  6.                 document.getElementsByName(cualidades).removeAttribute('disabled', 'disabled');
  7.                 document.getElementsByName(propiedades).removeAttribute('disabled', 'disabled');
  8.             }else{
  9.                 document.getElementsByName(cualidades).setAttribute('disabled', 'disabled');
  10.                 document.getElementsByName(propiedades).setAttribute('disabled', 'disabled');
  11.             }
  12.         }

y mi html es este

Código HTML:
Ver original
  1. <table border="1">
  2.         <tr>
  3.             <th>A</th>
  4.             <th>B</th>
  5.         </tr>
  6.         <tr>
  7.             <td>
  8.                 <p>Cualidades 1<br>
  9.                     <input type="text" name="cualidades1[]" disabled><br>
  10.                     <input type="text" name="cualidades1[]" disabled><br>
  11.                     <input type="text" name="cualidades1[]" disabled><br>
  12.                     <input type="text" name="cualidades1[]" disabled><br>
  13.                     <input type="text" name="cualidades1[]" disabled><br>
  14.                 </p>
  15.                 <p>Propiedades 1<br>
  16.                     <input type="text" name="propiedades1[]" disabled><br>
  17.                     <input type="text" name="propiedades1[]" disabled><br>
  18.                     <input type="text" name="propiedades1[]" disabled><br>
  19.                     <input type="text" name="propiedades1[]" disabled><br>
  20.                     <input type="text" name="propiedades1[]" disabled><br>
  21.                     <input type="radio" id="1" onclick="seleccion('cualidades1[]','propiedades1[]','1')" name="opcion">
  22.                 </p>
  23.             </td>
  24.             <td>
  25.                 <p>Cualidades 2<br>
  26.                     <input type="text" name="cualidades2[]" disabled><br>
  27.                     <input type="text" name="cualidades2[]" disabled><br>
  28.                     <input type="text" name="cualidades2[]" disabled><br>
  29.                     <input type="text" name="cualidades2[]" disabled><br>
  30.                     <input type="text" name="cualidades2[]" disabled><br>
  31.                 </p>
  32.                 <p>Propiedades 2<br>
  33.                     <input type="text" name="propiedades2[]" disabled><br>
  34.                     <input type="text" name="propiedades2[]" disabled><br>
  35.                     <input type="text" name="propiedades2[]" disabled><br>
  36.                     <input type="text" name="propiedades2[]" disabled><br>
  37.                     <input type="text" name="propiedades2[]" disabled><br>
  38.                     <input type="radio" id="2" onclick="seleccion('cualidades2[]','propiedades2[]','2')" name="opcion">
  39.                 </p>
  40.             </td>
  41.         </tr>
  42.     </table>

la idea es que cuando presione el botón radio se habilite uno u otro grupo de campos de texto,
pero al darle click al radio javascript me arroja este error

Uncaught TypeError: document.getElementsByName(...).removeAttribute is not a function

he tratado de buscar y buscar pero no hallo que estoy haciendo mal.

que puede estar pasando? alguna idea? no se mucho sobre javascript, ojala puedan orientarme un poco

*mando los parámetros de la función porque estos campos vienen de una base de datos

gracias por tu ayuda!!!
  #2 (permalink)  
Antiguo 22/06/2016, 22:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Error funcion habilita y deshabilita removeAttribute is not a function

El método .getElementsByName() devuelve una lista de nodos, por lo que para aplicar el efecto que deseas, tendrás que recorrerlo con ayuda de una estructura cíclica y afectar a cada elemento uno por uno.

Por cierto, el método .removeAttribute() solo acepta un argumento, no dos.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 23/06/2016, 10:53
 
Fecha de Ingreso: febrero-2016
Mensajes: 43
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: Error funcion habilita y deshabilita removeAttribute is not a function

Cita:
Iniciado por Alexis88 Ver Mensaje
El método .getElementsByName() devuelve una lista de nodos, por lo que para aplicar el efecto que deseas, tendrás que recorrerlo con ayuda de una estructura cíclica y afectar a cada elemento uno por uno.

Por cierto, el método .removeAttribute() solo acepta un argumento, no dos.

gracias Alexis88 por tu gran ayuda.

mira lo que he intentado hacer

Código Javascript:
Ver original
  1. <script>
  2.     function seleccion(cualidades,propiedades,selec){
  3.  
  4.         var rad = document.getElementById(selec);
  5.         var cua = document.getElementsByName(cualidades);
  6.         var pro = document.getElementsByName(propiedades);
  7.  
  8.         var totacua = cua.length;
  9.         var totapro = pro.length;
  10.  
  11.         for(var i = 0; i < totacua; i++){
  12.             //console.log("hola");
  13.             if(rad.checked){
  14.                 cua.removeAttribute('disabled');
  15.                 pro.removeAttribute('disabled');
  16.             }else{
  17.                 cua.setAttribute('disabled');
  18.                 pro.setAttribute('disabled');
  19.             }
  20.         }
  21.     }

al presionar el input radio la consola me arroja el error

Uncaught TypeError: cua.removeAttribute is not a function

y no se que pueda estar haciendo mal.

intente hacerlo por el id (document.getElementById) en lugar de usar name y si me funciona con id. Solo que no puedo usar id porque deben ser varios input text y para eso es el name (document.getElementsByName) según entiendo.

bueno ojala puedan orientarme y muchas gracias por tu gran ayuda!!!

Última edición por webtexcoco; 23/06/2016 a las 10:59
  #4 (permalink)  
Antiguo 23/06/2016, 12:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Error funcion habilita y deshabilita removeAttribute is not a function

Te falta indicar el número de elemento que estás editando, como si se tratara de un array. Solo necesitas utilizar la bracket notation:
Código Javascript:
Ver original
  1. cua[i].removeAttribute('disabled');
  2. pro[i].removeAttribute('disabled');

Y, a diferencia del método .removeAttribute(), el método .setAttribute() sí acepta dos argumentos; uno, para indicar el atributo, y dos, para indicar el valor que se asignará al atributo en cuestión.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, function, html, input
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:51.