将数据传递到新页面并进行编写

时间:2012-02-06 03:20:15

标签: javascript html getelementbyid

我正在尝试使用 GetElementById 从文本框传递数据。

这是我的文本框:

<tr>
<td>Your name:</td>
<td> <input type="text" name="name" id = "p_name"/><br /></td>

</tr>

这些是我的职能:

function mypopup()
{
     mywindow = window.open("Page_preview.html","width=200,height=200");
     mywindow.moveTo(0, 0);

}
function load()
{
    document.write("<p>" + Date() + "</p>");

    var myTextField = document.getElementById('p_name');
     if(myTextField.value != "")
     alert("You entered: " + myTextField.value)
}

page_preview.html 正文中调用load方法。

这是启动mypopup功能的按钮:

<input type="button" onclick="mypopup()" value="Show preview" />

除了 document.getElementById('p_name')之外,所有内容都有效,但它永远不会返回值,就像找不到它一样。

我确信它可以轻松完成(我是新手)。

4 个答案:

答案 0 :(得分:1)

如果您的表单中包含name,并且文字字段中包含name,则可以使用document.myForm.myTextbox.value

<form name='myForm'>
    <input type='text' name='myTextbox'>

此外,在对DOM执行操作之前,请确保您的页面实际上已完全加载 - 如果page_preview.html在加载文本字段之前运行javascript,则会导致它始终为nil

答案 1 :(得分:1)

为什么不为onclick事件增加价值?我的意思是将参数传递给您的函数。像这样的东西

<input type="button" onclick="mypopup(document.getElementById('p_name').value)" value="Show preview" />

在你的javascript函数中,它就像这样

function load(p_name)
{
  document.write("<p>" + Date() + "</p>");

  var myTextField = p_name;
  if(myTextField.value != "")
  alert("You entered: " + myTextField.value)
}

或许错误发生在你的getElementById中。请在此部分添加.value:

 var myTextField = document.getElementById('p_name');

像这样:

 var myTextField = document.getElementById('p_name').value;

我认为这样可以解决它。希望有所帮助。

答案 2 :(得分:0)

尝试使用jQuery

$('#p_name').val()

答案 3 :(得分:0)

document.write会覆盖页面中的html,因此在该行执行后<input type="text" name="name" id = "p_name"/>不再存在。尝试修改div(或spanp等)的内容,以替代输出。

示例HTML:

<div id="messages"></div>

示例JS:

var outputElement = document.getElementById;
var msgs = 'This is a better way to monitor output';
var htmlMsgs = '<p>This is a better way to monitor output</p>';
outputElement.innerText = msgs;
//outputElement.innerHTML = htmlMsgs; //for formatted output.