2010-03-18 95 views
1

我想用JavaScript来启动一个选框,当用户把他们的名字放入一个文本框然后点击一个按钮。我已经知道如何去做,但我的脚本从未完全正常工作。任何帮助表示赞赏!如何根据用户输入使用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> 
+0

“永不完全有效”是什么意思? – 2010-03-18 01:25:44

+0

永不完全的作品意味着它会吐出一条提示消息,提示“先输入用户名!”或者它会播放一个说“Hello null!”的选取框。 – 2010-03-18 01:31:54

回答

4

您的JavaScript有几个问题。

  1. 您正在传递未定义变量nameboxgetElementById。你需要把它放在引号中('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. 使用===!==来避免类型强制,并确保您获得您认为自己的结果。
  4. 永远不会使用marquee
+0

+1永远不会使用选取框。 – TiansHUo 2010-03-18 02:22:16

1
var text = document.getElementById(namebox).value; 
+0

P.请阅读有关不显眼的JavaScript。 – 2010-03-18 01:30:34

1

你可能不希望使用document.write为this--使用document.createElement('marquee')创建元素,然后将其添加到的身体页。您可以在返回的元素上设置方向等属性,并将其innerHTML设置为您在选取框中所需的文本。

(P.S. Marquee?真的吗?)

+0

亚严重!选取框? – 2010-03-18 01:29:56

+0

是的,真的。 Marquees也不是我最喜欢的,但我正在与我的一位朋友进行比赛。 – 2010-03-18 01:37:13

+0

@APShredder:比赛。好。 – 2010-03-18 01:38:52

相关问题