Tengo un proyecto de música en Perl que también requiere algo de JavaScript, pero parece que estoy atascado. Necesito ejecutar un programa (ffplay) como una aplicación de línea de comandos para que se ejecute sin mostrar una ventana GUI. El Perl maneja el extremo del servidor de las cosas (acceso a la base de datos sqlite). Necesito JavaScript porque muestro los nombres de las pistas como un botón, que cuando se hace clic se supone que ejecuta 'ffplay' para reproducir la pista nombrada en el código del botón. Pero el clic del botón requiere JavaScript.
Cuando hago clic en el botón del nombre de una pista, solo muestra la primera pista, sin importar en cuál haga clic.
El siguiente código extrae los nombres de las pistas de la base de datos.
$sth=$dbh->prepare (qq{select track from tracks where artistid=$ArtistID and cdid=$cdID order by track}); $sth->execute(); while(@records=$sth->fetchrow_array()) { $Track=$records[0]; print<<EndHTML; <script> var form=window.document.forms[0] function process(form) { alert ("Track: " + form.elements.Track.value) } </script> EndHTML print qq{<form name="Player">}; print qq{<input type="button" onClick="process(this.form)" name="Track" value="$Track"><br/>}; print qq{</form>}; } $sth->finish();SOLUCIONADO.
Cambió la función de JavaScript:
<html lang="en"> <head> <script> function process(value) { var form =document.Player alert ("Track: " + value) } </script> </head> <body> <form name="Player"> <button onClick="process(this.value)" name="Track1" value="[01] Evenfall.flac">[01] Evenfall.flac</button><br/> <button onClick="process(this.value)" name="Track2" value="[02] 6am.flac">[02] 6am.flac</button><br/> <button onClick="process(this.value)" name="Track3" value="[03] Cut.flac">[03] Cut.flac</button><br/> </form> </body>Ahora la alerta me dice correctamente en qué botón se hizo clic.