Come avviare un tendone con JavaScript in base all'input dell'utente?
-
20-09-2019 - |
Domanda
Sto cercando di usare JavaScript per avviare un tendone quando un utente mette il loro nome in una casella di testo e poi fa clic su un pulsante. Ho un'idea di come farlo, ma il mio script funziona mai completamente. Ogni aiuto è apprezzato!
Ecco quello che ho finora:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function StartMarquee() {
var text = document.getElementById(namebox);
if (text != null) {
document.write("<marquee behavior='scroll' direction='right'>Hello " + text + "!</marquee>");
}
else {
alert("Enter your name first!!!");
}
}
</script>
</head>
<body>
<table style="margin:0px auto 0px auto;">
<tr><td>Enter your name!</td>
<td><input type="text" id="namebox"/></td>
<td><input type="button" value="Enter" onclick="StartMarquee()"/></td></tr>
</table>
</body>
</html>
Soluzione
Il tuo JavaScript ha alcuni problemi.
- si passa una variabile non definita
namebox
agetElementById
. Hai bisogno di mettere questo tra virgolette ('namebox'
). - È necessario controllare il valore di
text
contro la stringa vuota, nonnull
. - È necessario utilizzare il valore dell'ingresso (
text.value
piuttosto che semplicementetext
) nell'elemento che si sta creando.
Ecco ciò che il codice sarà simile in queste correzioni:
function StartMarquee() {
var text = document.getElementById('namebox');
if (text.value !== '') {
document.write("<marquee behavior='scroll' direction='right'>Hello " + text.value + "!</marquee>");
}
else {
alert("Enter your name first!!!");
}
}
Alcuni altri suggerimenti generali:
- Non utilizzare
document.write
. Invece, utilizzare i metodi DOM per creare un nuovo elemento e inserirlo nel DOM. - Usa JavaScript discreto. Collega il tuo comportamento dopo il caricamento del documento invece di utilizzare i gestori di eventi in linea.
- Usa
===
e!==
per condizioni per evitare il tipo di coercizione e per garantire che stai ricevendo il risultato ti credi di essere. - Mai, mai usare
marquee
.
Altri suggerimenti
var text = document.getElementById(namebox).value;
Probabilmente non si desidera utilizzare per document.write
questo-- uso document.createElement('marquee')
per creare l'elemento, e quindi aggiungere al corpo della pagina. È possibile impostare attributi come direzione sull'elemento torni, e impostare il suo innerHTML
al testo che si desidera nel tendone.
(P.S. Marquee? Davvero?)