1

ユーザーが自分の名前をテキスト ボックスに入力してからボタンをクリックすると、JavaScript を使用してマーキーを開始しようとしています。どうやってそれを行うかについてのアイデアはありますが、スクリプトが完全に機能することはありません。どんな助けでも大歓迎です!

これが私がこれまでに持っているものです:

<!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>
4

3 に答える 3

4

JavaScriptにはいくつかの問題があります。

  1. 未定義の変数nameboxをに渡していますgetElementById。これを引用符で囲む必要があります('namebox')。
  2. textの値を、ではなく空の文字列と照合する必要がありますnull
  3. 作成する要素では、 (text.value単なるではなく)入力の値を使用する必要があります。text

これらの修正を使用すると、コードは次のようになります。

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

その他の一般的な提案:

  1. 使用しないでくださいdocument.write。代わりに、DOMメソッドを使用して新しい要素を作成し、それをDOMに挿入します。
  2. 控えめなJavaScriptを使用します。インラインイベントハンドラーを使用する代わりに、ドキュメントの読み込み後に動作を添付します。
  3. 型強制を回避し、自分が思っている結果が得られるようにするために、andfor条件を使用===します。!==
  4. 決して使用しないでくださいmarquee
于 2010-03-18T01:39:01.800 に答える
1
var text = document.getElementById(namebox).value;
于 2010-03-18T01:25:20.313 に答える
1

おそらくこれには使いたくないでしょう -- を使用document.writedocument.createElement('marquee')て要素を作成し、それをページの本文に追加します。取得した要素に方向などの属性を設定innerHTMLし、マーキーに必要なテキストに設定できます。

(PSマーキー?本当に?)

于 2010-03-18T01:26:29.787 に答える