Wie ein Festzelt mit JavaScript basierend auf Benutzereingaben starten?
-
20-09-2019 - |
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>
Lösung
Ihr JavaScript hat ein paar Probleme.
- Sie passieren eine undefinierte Variable
namebox
zugetElementById
. Sie müssen diese in Anführungszeichen setzen ('namebox'
). - Sie müssen den Wert von
text
gegen die leere Zeichenfolge überprüfen, nichtnull
. - Sie müssen den Wert des Eingangs verwenden (
text.value
als nurtext
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:
- Verwenden Sie
document.write
nicht. Stattdessen ein neues Element erstellen Methoden Verwendung DOM und in das DOM eingefügt werden. - Verwenden Sie unaufdringlich JavaScript. Bringen Sie Ihr Verhalten nach dem Dokument geladen wird anstelle von Inline-Event-Handler verwenden.
- Verwenden Sie
===
und!==
für Bedingungen zu vermeiden Art Zwang und um sicherzustellen, Sie bekommen das Ergebnis, das Sie denken, Sie sind. - 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?)