2011-07-06 76 views
0

为什么是它在包含文本框提交按钮一种形式,我可以提醒什么在用户的文本框中输入了,但不能打印这一页?我究竟做错了什么?JavaScript表单输入检索

下面的代码

<form name="Serb" action="" method="get"> 
<input name="Name" type="text" size="15" maxlength="20" /> 
<input name="Join" type="submit" value="Join" onClick="serb(this.form)" /> 

<script type="text/javascript"> 
    function serb(form){ 
    var x = document.Serb.Name.value; 
    alert(x); \\this alerts 
    document.write(x); \\this should print on page 
    } 
</script> 

出于某种原因,警报工作正常,准确地显示在用户按下“加入”后键入用户名框的内容。但是,它不会在页面上打印信息。这是为什么?

+0

你检查错误控制台启动? – Balanivash

+0

尼瓦斯是正确的,检查你的评论,它开始于\\而不是/ /另外,为表格添加结束标签'' – dpp

回答

1

在页面加载/解析后使用document.write()并不是一个好主意。那时,它会用新内容覆盖页面HTML。 document.write()通常用于页面加载时在页面加载时将特定点处的内容插入到页面中。

如果要将值放入页面上的某个项目中,则需要使用适当的DOM方法,将值放入输入字段,将innerHTML设置为div等等......

你可以在这里阅读关于document.write:https://developer.mozilla.org/en/document.write

下面是一个从字段中获取值并将其放入页面中另一个对象而不使用document.write()的示例:http://jsfiddle.net/jfriend00/dU8Sr/

HTML:

<form name="Serb" action="" method="get"> 
<input name="Name" type="text" size="15" maxlength="20" /> 
<input name="Join" type="button" value="Join" onClick="serb(this.form)" /> 
</form> 
<br> 
<br>Output: <span id="output"></span> 

的Javascript:

function serb(form) { 
    var x = document.Serb.Name.value; 
    document.getElementById("output").innerHTML = x; 
} 
+0

当文档关闭时调用* document.write *不会“添加到结尾这一页”。它将首先调用* document.open()*,它完全清除** all **内容的文档,因此它将替换内容,而不是附加到它。 – RobG

+0

好的。我纠正了我的答案。 – jfriend00

2

确实工作。文本框中的值将打印在页面上。

但是:

  1. \\并不意味着在Javascript什么。评论以//开头。这很可能是您没有看到正在写入的值的原因。

  2. document.write用其参数替换HTML页面中的所有内容。 (如果在文档加载后调用它)。所以除非你试图学习Javascript,这不是一个好主意。

    事实上,即使在学习Javascript时使用它也不是一个好主意,除非您正试图学习如何使用document.write。 有灵活的(更好)的方式来处理页面的内容,从不起眼的getElementByIdcomplex DOM manipulation