tonyven ha scritto:
In una casella di testo inserisco dei valori e premendo il pulsante mi dovrebbe visualizzare a video i valori inseriti.
Quando devi "visualizzare a video" qualsiasi cosa, devi stabilire dove questa informazione deve comparire e modificare il DOM tramite JavaScript di conseguenza.
tonyven ha scritto:
Caspita! Non pensavo che document.write() potesse creare tutti questi problemi.
Non c'è alcun problema creato da
document.write(): funziona perfettamente, se viene usato per lo scopo per il quale è progettato, ossia per fare sì che durante la creazione del DOM della pagina si possa inserire - chiamando appunto
document.write() - un testo in cui quel punto.
tonyven ha scritto:
Però l'ho già usato in un'altro script e non mi ha dato problemi.
Tutti gli usi di questa funzione che trovi in giro sono scritti in modo che la chiamata a
document.write() venga eseguita mentre si sta scaricando il codice HTML della pagina ed eseguendo pertanto gli script che si trovano all'interno.
In breve, mentre il browser fa il parsing del markup HTML della pagina scaricato, se trova script all'interno li esegue, e ovunque vi sia un
document.write() questo interviene sul meccanismo inserendo in quel punto il testo specificato, che entra a far parte della pagina assieme al resto, come se fosse stato "parsato" in diretta ovvero come se fosse presente all'interno della pagina nel momento della chiamata.
tonyven ha scritto:
Sto provando a separare in due file distinti il codice html da quello js e vedere se funziona.
Sebbene non risolverà alcun problema, separare il codice JavaScript dalla pagina HTML che lo richiama creando file differenti è utile per mantenere isolati la parte di rappresentazione della pagina (file HTML) dal codice di scripting che la gestisce (file JS).
tonyven ha scritto:
Se nel document.write() inserisco una stringa ,funziona tutto come vorrei.
Mentre se prendo il valore con getElementById().value e poi lo passo a document.write() non funziona.
Il tuo contesto è completamente differente, e basta pensarci un attimo per capirlo: tu scrivi
document.write() perché vorresti visualizzare un testo quando fai clic, ma... dove dovrebbe andare a finire questo testo? in quale punto della pagina? all'inizio, a metà o in fondo? La chiamata si trova all'interno di una funzione che non viene chiamata quando si carica la pagina ma solo successivamente, e solo se si fa click sul pulsante, senza alcuna elaborazione in corso del documento, ossia della pagina Web.
Quello che devi fare è recuperare il valore dell'elemento, e poi usare le funzioni del DOM (accessibili dall'oggetto
document, o
window.document per dirlo in altro modo) allo scopo di recuperare il riferimento all'elemento nel quale vuoi mostrare il contenuto, oppure creandolo ex-novo e inserendolo nell'albero degli oggetti che costituiscono il suddetto DOM, ovvero il modello ad oggetti che rappresenta la struttura della pagina corrente (leggi
questa introduzione).
In breve, potresti aggiungere un elemento nella pagina - inizialmente vuoto - che successivamente ospiterà il valore recuperato quando avviene il click.
Nella pagina HTML basta aggiungere una cosa del genere:
<div id="target"></div>
e nella funzione codificare una cosa simile alla seguente:
function realizzaTempo() {
numero = parseInt(document.getElementById("number").value);
document.getElementById("target").innerText = numero;
}
P.S.
JavaScript è un linguaggio
case sensitive: le maiuscole e le minuscole sono diverse, quindi se scrivi una cosa del tipo
document.getElementbyID non funzionerà, perché il nome corretto del metodo è questo:
document.getElementById.
Ciao!