Qualcuno saprebbe indicarmi una guida all'argomento?
Qualcuno saprebbe indicarmi una guida all'argomento?
document.getElementById('ID_SPAN').innerHTML = "codice da inserire";
Poi per quello ceh ci puo` stare dentro puoi vedere le guide HTML/XHTML.
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Sto tentando di apprendere...ho provato questo semplice codiceNelle mie intenzioni quando si clicca su "primo radio" dovrebbe apparire la scritta CODICE su "secondo radio", e quando si clicca su quest'ultimo la scritta CODICE dovrebbe passare sul primo, ma nella realtà viene scritto solo una volta e non cambia piùcodice:<script language="javascript"> function scrivivalore(nome){ if (document.form1[nome].checked = true) { document.getElementById('20').innerHTML = "codice"; document.getElementById('1').innerHTML = ""; } else { document.getElementById('1').innerHTML = "codice"; document.getElementById('20').innerHTML = ""; } } </script> <body> <form name="form1" method="post" action=""> <input name="radiobutton" type="radio" onclick="scrivivalore(this.name);" value="20"> primo radio <span id="1"></span></p> <input name="radiobutton" type="radio" onclick="scrivivalore(this.name);" value="1"> secondo radio <span id="20"></span></p> </form> </body>
Aspetta! Ho trovato un sistema, però è ancora molto imprecisoil problema è che è troppo statico e funziona bene solo se ci sono 2 sole opzioni, così ho provato a renderlo un pò più dinamico, ma non scrive niente a video (e non da nessun errore)! Nelle precedenti prove con soli due radio funzionava, però impostavo direttamente la variabile "testo"codice:<script language="javascript"> var vecchio_valore_radio = 0; function vecchiovalore(nome) { for (i=0;i<document.form1[nome].length;i++){ if (document.form1[nome][i].checked==true) { vecchio_valore_radio = document.form1[nome][i].id; break } else { vecchio_valore_radio = 0; } } } function scrivivalore(nome){ for (i=0;i<document.form1[nome].length;i++){ if (document.form1[nome][i].checked==false) { testo = ""; } else { testo = " ["+(Math.round(document.form1[nome][i].id)-Math.round(vecchio_valore_radio))+"]"; } } id_span = document.form1[nome][0].value; if(document.getElementById('id_span')) { document.getElementById('id_span').innerHTML = testo; } else { return false; } } </script> <body> <form name="form1" method="post" action=""> <input name="radiobutton" type="radio" onfocus="vecchiovalore(this.name);" onclick="scrivivalore(this.name);" id="50">Primo radio <span id="primo"></span></p> <input name="radiobutton" type="radio" onfocus="vecchiovalore(this.name);" onclick="scrivivalore(this.name);" id="13">Secondo radio <span id="secondo"></span></p> <input name="radiobutton" type="radio" onfocus="vecchiovalore(this.name);" onclick="scrivivalore(this.name);" id="100">Terzo radio <span id="terzo"></span></p> </form>
Questo non mi sembra molto corretto.
Forse funziona in IE, che digerisce anceh i sassi, ma non in browser seri.
Anzitutto
id="20"
20 non e` un valore valido per un id: deve iniziare per lettera e contenere solo lettere e numeri
Poi:
document.form1[nome]
forse volevi scrivere:
document.form1.elements[nome]
Comunque mi sembra molto farraginoso (non sono riuscito a seguire il tutto).
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
In effetti è molto artigianale , ma è il primo script che provo a scrivere da solo. L'ultima versione è su http://www.grinderweb2.altervista.org/prova.htm ed è da rifare perchè vale solo se ci son 9 radio e non di meno, non è dinamico insomma! Però il concetto sarebbe quello...
Non riesco proprio a seguire quel codice.
Non potresti cercare di:
1. usare i nomi e gli id correttamente
2. usare gli oggetti per il loro significato: mi pare che gli id come fossero dei value (e non so a che ti servono quei value)
3. usare le funzioni predefinite (o i metodi) per quel che servono: mi pare che usi Marth.round() al posto di parseInt()
4. semplificare il codice: io userei dei vettori al posto dei vari case
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Gli id dei radio servono per calcolare il prezzo in un altro script (se però è il caso potrei mettere un campo option). I value devono rimanere così perchè servono ad un altro script ancora...il Math.round è provvisorio, in seguito devo formattare la stringa con due decimali fissi. Questo codice è solo di prova, quando avrò trovato il sistema giusto lo applicherò alla pagina
In effetti sto proprio cercando il modo di semplificarlo e dinamicizzarlo...sapere come però
Il tuo progetto (che io non conosco) parte con il piede sbagliato. Si basa sull'uso improprio degli oggetti del DOM. Potrebbe anche funzionare in qualche browser, ma non in tutti; e poi se la cosa si complica non funziona piu` nella tua testa, e allora hai voglia cercare di metterci le pezze... .
Inizia un passo alla volta, ma fai le cose giuste.
Se serve puoi anche inserire due o piu` cose diverse in un value (basta separarle opportunamente, ad esempio con il carattere |).
Errori che saltano all'occhio:
- Math.round() non si puo` applicare alle stringhe
- form1[nome] - forse vuoi scrivere form1.elements[nome]
- onfocus="vecchiovalore(this.name); a che serve passare il name di un campo?
- vecchio_valore_radio = 0; vecchio_valore_radio deve contenere sempre una stringa: non ha senso che ogni tanto contenga un numero.
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Il mio risultato finale deve essere come questo sito, dove quando cambi un componente ti aggiorna automaticamente la differenza di prezzo degli altri componenti della stessa categoria...non è che avresti un esempio da qualche parte?