Передача данных на новую страницу и запись ее - PullRequest
0 голосов
/ 06 февраля 2012

Я пытаюсь передать данные из текстовых полей, используя 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 .

Это кнопка, которая запускает функцию mypopup:

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

Все работает, кроме document.getElementById ('p_name') никогда не возвращает значение, как будто оно не может его найти.

Я уверен, что это можно сделать легко (я новичок в этом).

Ответы [ 4 ]

1 голос
/ 06 февраля 2012

почему бы вам не повысить ценность своего события 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;

Я думаю, это исправит это. Надеюсь, это поможет.

1 голос
/ 06 февраля 2012

Если ваша форма имеет name, а текстовое поле имеет name, вы можете использовать document.myForm.myTextbox.value.

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

Кроме того, убедитесь, что ваша страница действительно полностью загружена, прежде чем вывыполнять действия на DOM - если ваш page_preview.html запускает JavaScript ДО загрузки текстового поля, это всегда будет nil.

0 голосов
/ 06 февраля 2012

document.write перезаписывает HTML на вашей странице, поэтому после выполнения этой строки <input type="text" name="name" id = "p_name"/> больше не существует. Попробуйте вместо этого изменить содержимое div (или span или p и т. Д.).

Пример 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.
0 голосов
/ 06 февраля 2012

Попробуйте использовать jQuery

$('#p_name').val()
...