Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/08/2009, 15:24
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: al hacer click sobre el boton no llama a la funcion..

Cita:
pero el boton REMUEVE no hace nada, alguien sabe porque?
tienes un problema de identificadores. cuando digo identificadores, no me refiero a los ID de elementos sino a los nombres que se le asigna a las variables y funciones. tecnicamente asi es como se le llama, identificadores.

ahora bien, tu problema es que tu funcion se llama quita y donde se llama, el elemento contiene el mismo valor para el atributo name. la solucion es simple, simplemente cambia el identificador de la funcion por otro. como norma general, se recomienda que nunca dupliques los identificadores aunque esten en diferentes area para evitar este problema. para ilustrarlo,
Código:
// aqui es donde esta el problema;
<input type="button" name="quita" value="Remueve" onclick="quita()" />
como referencia adicional. quizas te preguntes porque crea problema si quita es una funcion en javascript e <input name="quita" ... /> es un elemento HTML el cual se entiende que no deberia confligir. la repuesta esta en el contexto (o scope) donde se ejecuta el codigo. los eventos tienen sus propios scope y comienzan a partir del elemento. entonces, sucede que cuando el interprete lee quita desde el evento, el iterprete comienza buscando identificadores con ese nombre, comienza a partir desde el elemento y subiendo por sus ancestro. debes recordar que los atributos HTML se convierten en propiedades, de modo que cuando el interprete llega al elemento FORM, quita es una propiedad que hace referencia al elemento <input name="quita" ... />. y ahi es precisamente donde esta el conflicto, el navegador te indica que quita no es una funcion, porque el interprete nunca llego al scope donde reside la funcion.

por cierto, la otra solucion en lugar de cambiar el identificador, tienes que preceder la funcion con window.
Código:
<input ... onclick="window.quita();" />
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 27/08/2009 a las 15:30