"Variabili" HTML

mikla90

Nuovo Utente
65
0
Ciao a tutti.
Mi trovo in questa situazione: devo creare una semplice pagina HTML con un elenco a tendina in cui scegliere un modello preciso. Da lì alla pressione del pulsante "Start" deve partire il test del modello specificato nel menù a tendina sopra.
Ora, io di HTML non ne capisco quasi nulla. Tutto quello che sono riuscito a fare è frutto di pezzi di codice reperiti ed editati da me, quindi vi chiedo di andarci piano e semplice con me.

Ho provato come nell'esempio, ma non funziona. Come devo modificare il pezzo qui sotto? Grazie!

Codice:
<select name="Model_selection">
   
    <option value="Model_1">Model_1</option>
    <option value="Model_2">Model_2</option>
    <option value="Model_3">Model_3</option>

</select>
 
  <input type="submit" value="Start">
  <input type="hidden" name="Model_Selection" size="20px" value="1">
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
L'html è un linguaggio di markup e non un linguaggio di programmazione.
Se devi inserire delle azioni/interazioni devi utilizzare dei veri e propri linguaggi di programmazione* php o javascript.

Spiega meglio quello che un eventuale script deve fare al click del pulsante submit.

* per gli utenti più pignoli tecnicamente questi sono linguaggi di scripting..
 

mikla90

Nuovo Utente
65
0
Mi sono spiegato male io, purtroppo. La pagina HTML comanda un Siemens S7-1200. Non mi serve che venga settata una variabile vera e propria. Di fatto, mi basta che il nome del modello selezionato venga copiato, anche come testo semplice, nella parte "hidden" del pulsante start.
 
M

Mursey

Ospite
HTML:
<select name="Model_list">
    <option value="Model_1">Model_1</option>
    <option value="Model_2">Model_2</option>
    <option value="Model_3">Model_3</option>
</select>
<input type="submit" value="Start" onclick="setSelected()">
<input type="hidden" name="Model_selection" size="20px" value="">

<script>
function setSelected() {
    var e = document.getElementsByName("Model_list")[0];
    var value = e.options[e.selectedIndex].value;
    document.getElementsByName("Model_selection")[0].value = value;
}
</script>
 

mikla90

Nuovo Utente
65
0
Di nuovo, mi scuso ma mi dimentico pezzi per strada.
La funzione di Mursey fa esattamente quello, ora però anche con un altro tasto devo poterla mettere ad 1.
In pratica, scegliendo il modello dal menù a tendina devo poter mettere il Model_<n> ad 1. Posso farlo anche con due tasti, ad esempio Load e Start, dove Load potrebbe essere una cosa simile alla funzione qui sopra e Start mette poi ad uno il Model_<n>.

Idee? O è impossibile con HTML?
 
M

Mursey

Ospite
Di nuovo, mi scuso ma mi dimentico pezzi per strada.
La funzione di Mursey fa esattamente quello, ora però anche con un altro tasto devo poterla mettere ad 1.
In pratica, scegliendo il modello dal menù a tendina devo poter mettere il Model_<n> ad 1. Posso farlo anche con due tasti, ad esempio Load e Start, dove Load potrebbe essere una cosa simile alla funzione qui sopra e Start mette poi ad uno il Model_<n>.

Idee? O è impossibile con HTML?
Tutto è possibile con Javascript :figo:
però bisogna capire bene cosa vuoi fare...

Intendi che invece di mettere il valore Model_2 debba finirci 2 ?
Se è così basta che cambi i value dei singoli <option>

Se invece devi mettere 1 agli elementi della lista... perchè ?
 

mikla90

Nuovo Utente
65
0
No, non intendo quello.
In pratica... Il modello selezionato deve poi essere messo a "1" in modo da far partire il ciclo di test. Di fatto, quel "1" è lo una variabile booleana nel PLC. Quindi, da il consenso a far partire il test.

Nella vecchia versione del codice, che funzionava, era così

Codice:
<tr>
<td>Model_1</td>
<form method="post"  action="">
<td><input type="submit" value="GO">     <!-- to start the test -->
<input type="hidden" name='Model_1' size="20px" value="1"></td>
</form>
<form method="post"  action="">
<td><input type="submit" value="Reset">   <!-- to stop the test -->
<input type="hidden" name='Model_1' size="20px" value="0"></td>
</form>
</tr>

Spero di aver reso l'idea! A mio avviso, il problema è abbastanza semplice, è spiegarlo che è difficile... Ribadisco che anche questo codice è per lo più preso da internet e riadattato per cui mi scuso se non è perfetto.
 
M

Mursey

Ospite
Una cosa così ?
HTML:
<select name="Model_list">
    <option value="Model_1">Model_1</option>
    <option value="Model_2">Model_2</option>
    <option value="Model_3">Model_3</option>
</select>
<input type="submit" value="Start" onclick="start()">
<input type="submit" value="Reset" onclick="stop()">
<input id="status" type="hidden" name="" size="20px" value="">

<script>
function start() {
    var e = document.getElementsByName("Model_list")[0];
    var value = e.options[e.selectedIndex].value;
  
    document.getElementById("status").name = value;
    document.getElementById("status").value = "1";
}
function stop() {
    document.getElementById("status").value = "0";
}
</script>
 

mikla90

Nuovo Utente
65
0
Purtroppo, no. Non funziona, nemmeno copiandolo pari pari. Ti faccio un paio di domande:
- nella riga <input id="status" type="hidden" name="" size="20px" value=""> se io mettessi il valore a 1 sempre ( value="1" ) come dovrei fare per far cambiare solo il contenuto di name? Però non con le virgolette, bensì come nel mio esempio, cioè name='Model__1'

- posso semplicemente eliminare la riga di Stop e la relativa funzione? Le gestirei in un altro modo con un pulsante di Reset che va a modificare un'altra variabile.

Edit: che differenza c'è tra name='Model_1' e name="Model_1"? Lo chiedo perchè per gestire le variabili devo aggiungere una riga di commento che fa così:

Codice:
<!-- AWP_In_Variable Name='Model_1' -->

Però viene espressamente indicato con l'apostrofo, non le virgolette. Non so se cambia qualcosa.
 
Ultima modifica:
M

Mursey

Ospite
Purtroppo, no. Non funziona, nemmeno copiandolo pari pari.
Strano perchè io lo ho testato e funziona:
la mia idea era settare name e value nel caso dello start e value a 0 nel caso di stop.

Se hai vogli di dirmi che errore ti dà,
se poi intendi che non funziona perchè non fa il vero start sul PLC allora è un'altro discorso...

Comunque
- nella riga <input id="status" type="hidden" name="" size="20px" value=""> se io mettessi il valore a 1 sempre ( value="1" ) come dovrei fare per far cambiare solo il contenuto di name? Però non con le virgolette, bensì come nel mio esempio, cioè name='Model__1'
document.getElementById('status').name = value;

- posso semplicemente eliminare la riga di Stop e la relativa funzione? Le gestirei in un altro modo con un pulsante di Reset che va a modificare un'altra variabile.
Si, basta che cambi anche il suo uso nel onclick

Edit: che differenza c'è tra name='Model_1' e name="Model_1"? Lo chiedo perchè per gestire le variabili devo aggiungere una riga di commento che fa così:

Codice:
<!-- AWP_In_Variable Name='Model_1' -->

Però viene espressamente indicato con l'apostrofo, non le virgolette. Non so se cambia qualcosa.
In Javascript puoi usare " o ', al massimo devi stare attento al contesto dove le usi ma in generale non dovresti avere problemi anche a mischiarle.
 

mikla90

Nuovo Utente
65
0
Aspetta, adesso forse dirò una cavolata. Ma gli script sono in javascript? Perchè il plc non li supporta, solo semplice HTML. Lo so, è una domanda stupida, ma sono ignorante davvero in materia di HTML.

Poi, come faccio a vedere che errore mi da? La pagina la compila normalmente e la apre, poi per editare il codice uso Notepad++. Non ho un debugger.

Per la questione dello stop, semplicemente metterei questo

Codice:
<input type="submit" value="Reset">   <!-- to stop the test -->
<input type="hidden" name='Reset_All' size="20px" value="1">

Dove Reset_All semplicemente riporta a zero tutte le variabili nel PLC e fine.
 
M

Mursey

Ospite
Gli script sono in Javascript ma modificano lo HTML e quindi se il PLC lo usa dovrebbe andare.
L'errore (se c'è) lo vedi nel browser premendo F12 e andando nella console.

Forse non va perchè c'è qualche regola da rispettare nel HTML altrimenti il PLC non capisce... ?
 

mikla90

Nuovo Utente
65
0
Che io sappia, niente di particolare. Solo aggiungere le variabili all'inizio nei commenti.
Domani riprovo e vi aggiorno! Più che altro, la pagina viene generata dal PLC partendo dal file html. Non credo capisca gli script.
 
M

Mursey

Ospite
Allora proviamo a prendere una strada diversa...

Prima però ti chiedo:
Questo
HTML:
<input type="submit" value="Start">
<input type="hidden" name="Model_1" size="20px" value="1">
funziona e l'unico cambiamento è rendere il name variabile ma senza usare Javascript ?
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili