Estoy tratando de usar un botón HTML para llamar a una función de JavaScript.
Aquí está el código:
<input type="button" value="Capacity Chart" onclick="CapacityChart();">
Sin embargo, no parece funcionar correctamente. ¿Hay una mejor manera de hacer esto?
Aquí está el enlace: http://projectpath.ideapeoplesite.com/bendel/toolscalculators.html haga clic en la pestaña de capacidad en la sección inferior izquierda. El botón debe generar una alerta si los valores no cambian y debe generar un gráfico si ingresa valores.
javascript
html
para descanso
fuente
fuente
Respuestas:
Hay algunas formas de manejar eventos con HTML / DOM. No hay una forma correcta o incorrecta real, pero diferentes formas son útiles en diferentes situaciones.
1: Lo está definiendo en el HTML:
2: Hay que agregarlo a la propiedad DOM para el evento en Javascript:
3: Y se adjunta una función al controlador de eventos usando Javascript:
Tanto el segundo como el tercer método permiten funciones en línea / anónimas y ambos deben declararse después de que el elemento se haya analizado del documento. El primer método no es válido XHTML porque el atributo onclick no está en la especificación XHTML.
Los métodos primero y segundo son mutuamente excluyentes, lo que significa que usar uno (el segundo) anulará al otro (el primero). El tercer método le permitirá adjuntar tantas funciones como desee al mismo controlador de eventos, incluso si el primer o segundo método también se ha utilizado.
Lo más probable es que el problema se encuentre en algún lugar de su
CapacityChart()
función. Después de visitar su enlace y ejecutar su script, se ejecuta la función CapacityChart () y se abren las dos ventanas emergentes (una se cierra según el script). Donde tienes la siguiente línea:Pruebe lo siguiente en su lugar:
EDITAR
Cuando vi su código pensé que lo estaba escribiendo específicamente para IE. Como otros han mencionado, deberá reemplazar las referencias
document.all
condocument.getElementById
. Sin embargo, aún tendrá la tarea de corregir el script después de esto, por lo que recomendaría que funcione al menos en IE primero, ya que cualquier error que cometa al cambiar el código para que funcione en varios navegadores podría causar aún más confusión. Una vez que esté funcionando en IE, será más fácil saber si está funcionando en otros navegadores mientras actualiza el código.fuente
$("#clickMe").bind('click', function () { alert('hello!'); };)
Yo diría que sería mejor agregar el JavaScript de una manera discreta ...
si usa jQuery podría hacer algo como:
fuente
Su HTML y la forma en que llama a la función desde el botón se ven correctos.
El problema parece estar en la
CapacityCount
función. Recibo este error en mi consola en Firefox 3.5: "document.all is undefined" en la línea 759 de bendelcorp.js.Editar:
Parece que
document.all
es una cosa solo de IE y es una forma no estándar de acceder al DOM. Si lo usadocument.getElementById()
, probablemente debería funcionar. Ejemplo: endocument.getElementById("RUnits").value
lugar dedocument.all.Capacity.RUnits.value
fuente
Esto se ve correcto. Supongo que definiste tu función con un nombre diferente o en un contexto que no es visible para el botón. Por favor agregue un código
fuente
Para que lo sepas, no se supone que el punto y coma ( ; ) esté allí en el botón cuando llamas a la función.
Entonces debería verse así:
onclick="CapacityChart()"
entonces todo debería funcionar :)
fuente
Un problema importante que tiene es que está utilizando el rastreo del navegador sin una buena razón:
Estoy en Chrome, así
navigator.appName
que no lo estaréNetscape
. ¿Chrome es compatible?document.all
? Tal vez, pero de nuevo tal vez no. ¿Y qué hay de otros navegadores?La versión del código en la
Netscape
rama debería funcionar en cualquier navegador desde Netscape Navigator 2 desde 1996, por lo que probablemente debería seguir con eso ... excepto que no funcionará (o no está garantizado que funcione) ) porque no ha especificado unname
atributo en losinput
elementos, por lo que no se agregarán a laelements
matriz del formulario como elementos con nombre:Déles un nombre y use la
elements
matriz, o (mejor) useque funcionará en todos los navegadores modernos, sin necesidad de ramificaciones. Solo para estar seguro, reemplace esa búsqueda de una versión de navegador mayor o igual a 4 con una verificación de
getElementById
soporte:Probablemente también desee validar su entrada; algo como
ayudaría.
fuente
document.getElementById
y eliminar las otras cosas.Su código falla en esta línea:
Traté de pisarlo con Firebug y falla allí. eso debería ayudarte a resolver el problema.
tienes jquery referenciado. También podría usarlo en todas estas funciones. limpiará tu código significativamente.
fuente
Tengo un código de botón inteligente de función de devolución de llamada:
fuente
RESPUESTA SIMPLE:
Donde ID es la ID del campo de entrada.
fuente
forma tonta:
Debe leer sobre JavaScript discreto y utilizar un método de enlace de frameworks para vincular devoluciones de llamada a eventos dom.
fuente
javascript:
protocolo no es necesario en elonclick
evento. El evento onclick ya es javascript. Eljavascript:
protocolo es para ejecutar javascript en el atributo href de un enlace.