JavaScript - Uncaught TypeError: undefined is not a function

   
Vista:

Uncaught TypeError: undefined is not a function

Publicado por Victor (20 intervenciones) el 21/11/2014 12:10:21
Buenas gente.

Estoy tratando de utilizar esta funcion Javascript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function vaciar(id)
{
    alert("<br>Dentro de vaciar id vale=>"+id);
    if(confirm("Esta seguro de que desea vaciar los controles"))
    {
 
        //var controlesNideras= document.getElementById("controlesVaciarNideras").getElementsByTagName("input");
        var controlesNideras=document.getElementsByClassName("controlesVaciarNideras").getElementsByName("input");
        for(i=0;i<controlesNideras.length;i++)
        {
            controlesNideras[i].value="";
        }
        this.reload();
    }
}

El alerte muestra el valor adecuado pero la consola me muestra el mensaje:
Uncaught TypeError: undefined is not a function interiorBoxNideras.php?valor=2:46

En esta linea hay esto:
1
var controlesNideras=document.getElementsByClassName("controlesVaciarNideras").getElementsByName("input");

Antes usaba el codigo comentado,el cual uso en otra partes de la pagina y funciona bien.
El control controlesVaciarNideras es un div tiene ese valor tanto como id como en class,pero lo de obtener lo controles con getElementsByClassName a sido despues de ver que con getElementById(la linea comentada) no me funcionaba.

Alguna sugerencia?

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Uncaught TypeError: undefined is not a function

Publicado por xve (1594 intervenciones) el 21/11/2014 20:07:29
Hola Victor, getElementsByClassName() te devuelve un array de valores, no un objeto, por lo que no lo puedes adjuntar con getElementsByName("input"), tendrías que hacer un bucle por cada uno de los elementos que te devuelve getElementsByClassName() para revisar si el nombre se llama "input".

Algo así:
1
2
3
4
5
var controlesNideras=document.getElementsByClassName("controlesVaciarNideras");
for(var i in controlesNideras)
{
    ....controlesNideras[i]....
}

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uncaught TypeError: undefined is not a function

Publicado por Victor (20 intervenciones) el 24/11/2014 10:44:33
Buenos días.

Ese problema concreto ya lo arreglé,mediante una chapuza todo hay que decir,pero me apuntaré lo que me has comentado por que tiene pinta de ser mas eficiente y seguro que lo que yo he hecho.

Muchas gracias,saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar