代码之家  ›  专栏  ›  技术社区  ›  Adam P

如何根据用户输入用JavaScript启动字幕?

  •  1
  • Adam P  · 技术社区  · 14 年前

    以下是我目前掌握的情况:

    <!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>
    
    3 回复  |  直到 14 年前
        1
  •  4
  •   Jimmy Nitzan Tomer    14 年前

    你的JavaScript有一些问题。

    1. 您正在传递一个未定义的变量 namebox getElementById 'namebox' ).
    2. text 对空字符串,而不是 null
    3. text.value 而不是仅仅 )在您正在创建的元素中。

    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. 使用 === !== 条件来避免类型强制并确保您得到您认为是的结果。
    4. 永远不要用 marquee .
        2
  •  1
  •   N 1.1    14 年前
    var text = document.getElementById(namebox).value;
    
        3
  •  1
  •   Ben Zotto    14 年前

    你可能不想用 document.write 为此——使用 document.createElement('marquee') innerHTML 到你想要的字幕中。

    (P.S.字幕?是吗?)