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>
È stato utile?

Soluzione

Il tuo JavaScript ha alcuni problemi.

  1. si passa una variabile non definita namebox a getElementById. Hai bisogno di mettere questo tra virgolette ('namebox').
  2. È necessario controllare il valore di text contro la stringa vuota, non null.
  3. È necessario utilizzare il valore dell'ingresso (text.value piuttosto che semplicemente text) 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:

  1. Non utilizzare document.write. Invece, utilizzare i metodi DOM per creare un nuovo elemento e inserirlo nel DOM.
  2. Usa JavaScript discreto. Collega il tuo comportamento dopo il caricamento del documento invece di utilizzare i gestori di eventi in linea.
  3. Usa === e !== per condizioni per evitare il tipo di coercizione e per garantire che stai ricevendo il risultato ti credi di essere.
  4. 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?)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top