从文档中的提示框写入值

时间:2009-12-12 22:48:40

标签: javascript

当访问者访问我的页面时,我希望他们使用方框提示,询问他们的姓名,并在文本中使用该名称。我创建了一个这样的脚本:

function askname() {
var x=prompt("What is your name?","");
}

我把那个脚本放在头部标签之间。然后,我写<body onload="askname()">。该框成功提示。 现在,我想在文本中使用'x'。首先,我刚写了

<script type="text/javascript">document.write(x)</script>

但它根本不起作用!有没有其他方法可以做到这一点?不过,我打算不使用任何JavaScript库。所以我请求你的帮助。对不起,如果这是一个愚蠢的问题,我是JS的新手。抱歉我的英语不好......

5 个答案:

答案 0 :(得分:6)

使用document.write是不好的做法,除非在文档加载后调用它,否则会覆盖它。 innerHTML在这里是合适的,因为这是一个相对简单的任务,如果你遇到更复杂的事情,你应该使用DOM方法,创建元素并填充nodeValue属性。

使用内联事件处理程序和内联JS也是一种不好的做法,你应该把它们分开,我会将它放在一个外部脚本中,所以它实际上是缓存的,从不隐藏我的代码样本,因为它只是一个样本,但它应该如何在一个真实的页面上完成。

<body>
<div id="message"></div>
<script>
window.onload = function() {
    var name = prompt('What is your name?', '');
    if ( name ) {
        document.getElementById('message').innerHTML = name;
    }

}
</script>
</body>

答案 1 :(得分:2)

您的脚本有两个问题。一个是x变量是函数的本地变量,因此当你退出函数时,字符串就消失了。另一个问题是document.write在函数之前执行,所以即使变量按预期工作,它也不会被分配。

不是写出名称的脚本,而是放置一个带有标识符的元素:

<span id="name"></span>

在函数中,在从用户获取名称后将名称放在元素中:

function askname() {
   var x = prompt("What is your name?","");
   document.getElementById('name').innerHTML = x;
}

答案 2 :(得分:1)

除了meder和Guffa的问题,还有一个问题!

即:prompt在IE7 +中不再起作用。出于安全考虑,据微软称,但它们完全是虚假的。不管怎样,window.prompt实际上已经死了。如果您想接受来自用户的输入,您必须制作自己的页面表单并在提交中附加点击处理程序以获取名称的值。

有许多库提供了一种方法,看起来有点像prompt,但它们永远不会成为替代品,因为prompt的同步特性无法再现在事件驱动的JavaScript中。

答案 3 :(得分:0)

var xaskname函数的本地。你想要document.write(prompt("what is your name?", ""))

答案 4 :(得分:0)

而不是prompt,我建议做更多像这样的DOM:

<input type="text" id="textinput">

<input type="button" value="OK" onClick="document.getElementById('txtarea').innerHTML=document.getElementById('textinput').value;">

<span id="txtarea"></span>

您还可以在输入元素周围使用<div>,当您点击该按钮时,<div>消失document.getElementById('inputdiv').style.display = 'none';

祝你好运!!!!!!