Frage

Ich versuche, JavaScript zu verwenden, um eine Kontur zu beginnen, wenn ein Benutzer ihre Namen in ein Textfeld setzt und klickt dann auf einen Knopf. Ich habe eine Idee, wie es zu tun, aber mein Skript funktioniert nie voll. Jede Hilfe ist willkommen!

Hier ist, was ich bisher:

<!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>
War es hilfreich?

Lösung

Ihr JavaScript hat ein paar Probleme.

  1. Sie passieren eine undefinierte Variable namebox zu getElementById. Sie müssen diese in Anführungszeichen setzen ('namebox').
  2. Sie müssen den Wert von text gegen die leere Zeichenfolge überprüfen, nicht null.
  3. Sie müssen den Wert des Eingangs verwenden (text.value als nur text Gegensatz) in dem Elemente Sie erstellen.

Hier ist, was Ihr Code wie bei diesem Updates aussehen:

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!!!");
  }
} 

Einige andere allgemeine Vorschläge:

  1. Verwenden Sie document.write nicht. Stattdessen ein neues Element erstellen Methoden Verwendung DOM und in das DOM eingefügt werden.
  2. Verwenden Sie unaufdringlich JavaScript. Bringen Sie Ihr Verhalten nach dem Dokument geladen wird anstelle von Inline-Event-Handler verwenden.
  3. Verwenden Sie === und !== für Bedingungen zu vermeiden Art Zwang und um sicherzustellen, Sie bekommen das Ergebnis, das Sie denken, Sie sind.
  4. Nie, nie marquee verwenden.

Andere Tipps

var text = document.getElementById(namebox).value;

Sie wollen wahrscheinlich nicht document.write für this-- Verwendung document.createElement('marquee') verwenden, um das Element zu erstellen, und es dann an dem Körper der Seite hinzufügen. Sie können Sie zurück auf das Element Attribute wie Richtung festgelegt, und legen Sie seine innerHTML auf den Text, den Sie im Festzelt werden soll.

(P. S. Marquee? Wirklich?)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top