Ajax getElementById

Summer

Nuovo Utente
29 Apr 2010
9
0
0
Buongiorno a tutti,
Premetto che non conosco bene java...

vorrei realizzare in una pagina web, un menu con diversi bottoni che settino il valore di una variabile quando vengono premuti, per poi passarla a una funzione.

come abbinare il valore della variabile al bottone?

ad esempio se utilizzo un campo di input, scrivo nel campo, invio e tutto funziona, ma se cerco di sostituire il tutto con un bottone,no.

posto il codice interessato....

Codice:
function passa() {
var tP = document.getElementById('tP').value;
ecc..

così funziona
Codice:
<input type="text" name="tP" id="tP" size="15">
<br/>
<input type="button" onClick="passa()" value="Invia">

così no
Codice:
<button type="button" onclick="passa()" name="tP" id="tP" value="TESTO DA PASSARE">TESTO DA PASSARE</button>

fondamentalmente l'incaglio è questo:
il "value" che viene letto da getElementId in caso di utilizzo di button come deve essere espresso?:confused:

Ringrazio in anticipo, buonaserata
 
Una cosa ma fondamentale: Java è un linguaggio, Javascript un altro!
Usa JS se non ti va di scrivere tutto, ma non usare la parola Java perché confonde le idee. Grazie :)

Ora veniamo al tuo problema se riesco a risolverlo.
Dal manuale dell'html si evince (madonna che parolona) che button funziona come qualsiasi altro elemento di un form, e mi pare giusto vista la standardizzazione di base, quindi:
http://www.diodati.org/w3c/html401/interact/forms.html#edef-BUTTON
value viene passato alla pressione e quindi il DOM deve poterlo rilevare, non è che ti riferivi al testo interno prima della chiusura dell'elemento button? In quel caso mi pare che il nome della variabile sia proprio text, ma non ne sono sicuro al 100%.
 
Prima di tutto grazie per la risposta! scusate per la confusione tra js...
cmq ho risolto così:
Codice:
<button id="tP" name="tP" type="button" onClick="passa()" value="txtdapassare">
però se i pulsanti diventano due, cambiando il value, dopo che uno è stato premuto il valore della variabile non cambia con una successiva pressione.

approfitto ancora di questa discussione per chiedere gentilmente se è corretto avere + oggetti (i menu) con lo stesso id (ho provato a cambiare la funzione con getElementByName ma non funziona più nulla), e se resettare il testo da passare ad ogni pressione du un bottone sia la via più giusta.
 
Allora: se usi l'elemento button, sappi che questo deve avere necessariamente anche il tag di chisura, a questo punto se non devi metterci del tetso o un'immagine, tanto vale che usi l'elemento input
Codice:
<input type="button" id="tP" name="tP" type="button" onClick="passa()" value="txtdapassare">
e no id identifica un valore univoco, non ci possono essere duplicati, d'altra parte lo capisci da te, se usi più tasti con testi diversi come fai a distinguerli?
Quindi la tua funzione "passa" può diventare tranquillamente:
Codice:
function passa (testo) {
var tp = testo.value;
}
mentre nell'html:
Codice:
<input type="button" id="tP" name="tP" type="button" onClick="passa(this)" value="txtdapassare">
 
&

grazie mille per l'auito! funziona tutto perfettamente!

Facendo un passo avanti però... se utilizzo il metodo .open è possibile inserire un url php che contenga il carattere &?

mi spiego meglio:

Codice:
	http.open('get', 'server.php?tp='+tP'&'lg='+lg, true);
non funzionante

Codice:
	http.open('get', 'server.php?tp='+tP, true);
funzionante

dopo vari tentativi, penso che il carattere & sia la causa del blocco... ma non riesco a trovare il sistema per passarlo comunque...

ho provato a convertire il tutto in una stringa, ma il problema dell'& non l'ho risolto

Codice:
var url = "server.php?tp="+tp"&lg"+lg;

	http.open('get', url, true);
 
approfitto ancora di questa discussione per chiedere gentilmente se è corretto avere + oggetti (i menu) con lo stesso id (ho provato a cambiare la funzione con getElementByName ma non funziona più nulla), e se resettare il testo da passare ad ogni pressione du un bottone sia la via più giusta.
 
No, non è semanticamente corretto. L'ID deve essere un identificatore univoco, quindi per un solo elemento DOM. Se hai più oggetti usa l'attributo "class" al posto di "id" e recupera gli elementi con getElementsByClassName().
 

Discussioni simili