Ciao Sono nuovo di javascript e vorrei che mi aiutassi a capire perché non riesco a ottenere il risultato del generatore di numeri casuali su appaiono nel tag span dopo che l'utente fa clic su un pulsante di calcolo utilizzando il numero minimo e massimo inseriti. Credo che non ci sia nulla di sbagliato nella funzione di numeri casuali, è solo quando voglio usare la funzione numero casuale come gestore di eventi per l'evento onclick per il pulsante che non funziona. beh, quello che ho fatto è stato, ho creato una funzione chiamata answer per raccogliere gli input degli utenti e utilizzare quell'input come parametro per la funzione di numero casuale che viene chiamata all'interno della funzione di risposta.aggiungendo un risultato di un calcolo a uno span con javascript dopo aver fatto clic su un pulsante
Quindi ho usato la funzione di risposta come gestore di eventi per il onclick pensando che avrebbe avuto il risultato del generatore di numeri casuali e avrebbe applicato tale messaggio al onclick. e l'ho memorizzato in var chiamato storage in modo da poter inserire il risultato dell'evento nel tag span in seguito.
Ecco il js fiddle del codice. puoi aiutarmi a risolvere il mio problema ottenendo il risultato della funzione random_number nello span $ ("output") dopo che il pulsante $ ("calcola") clicca?
solo javascript puro, nessuna jquery per favore.
Grazie in anticipo per il vostro aiuto. e mi dispiace se ho sbagliato la terminologia e la cattiva sillabazione. http://jsfiddle.net/jack2ky/WDyMd/
<label for="min">Enter the min:</label>
<input type="text" id = "min" /> <br />
<label for="max">Enter the max:</label>
<input type="text" id = "max" /> <br />
<input type="button" id = "calculate" value = "calculate"/>
<span id ="output"> </span>
<script>
var $ = function(id){
return document.getElementById(id);
}
window.onload = function() {
var random_number = function(min, max, digits){
digits = isNaN(digits) ? 0 : parseInt(digits);
if(digits < 0){
digits = 0;
}else if (digits > 16){
digits = 16
}
if(digits == 0){
return Math.floor(Math.random() * (max - min +1)) +min;
}else {
var rand = Math.random() * (max - min) + min;
return parseFloat(rand.toFixed(digits));
}
}
var storage = $("calculate").onclick = answer;
var answer = function(){
var miny = $("min").value;
var maxy = $("max").value;
return random_number(miny, maxy);
}
$("output").firstChild.nodeValue = storage;
}
</script>
</body>
</html>
Grazie per il vostro aiuto. Funziona :) Mi confondo su questo window.onload object property thing.alcune volte sono in grado di chiamare le cose nella funzione window.onload e funziona e altre volte no. Questa è una cosa che spero di risolvere nei miei progressi con l'apprendimento js. Penso di aver capito cosa hai fatto. Ma a proposito di parseInt ho pensato che un buon esempio di usare parseInt è quando un utente inserisce un numero con decimali come 198.345 lo interromperà a 198. perché in questo caso fa una differenza per il risultato emettendo 111 quando un utente mette 1-10max lasciando fuori parseInt. –
Felice di sapere che ha funzionato :). La funzione parseInt() analizza una stringa e restituisce un numero intero. Questo è necessario in questo caso perché stai ottenendo il valore minimo e massimo dalla casella di testo che viene valutata come stringa numerica per impostazione predefinita. Quindi se 'min = 5; max = 10' l'output di espressioni come 'min + max' sarà' 510' invece di '15'. Puoi usare 'parseFloat()' per analizzare i numeri in virgola mobile. Sì, puoi anche usare 'parseInt()' per tagliare il numero con decimale, ma non è l'uso effettivo di esso. – Konsole