如何使用javascript访问其他HTML表单中的一个HTML表单元素?

时间:2013-05-29 12:31:00

标签: javascript html

我有两个html网页,一个是parent.htm,另一个是child.html我已在href child.html parent.htm' to parent.htm {, here i have to access the elements of中提供了in {1}} child.html`,这是我的两个文件

parent.htm

<!DOCTYPE html>
<html>


<body>
<form>
<input id=text1 type=text name="test2">
<a href="child.html" target="_self">Open kid</a>
</form>
</body>
</html>

child.html

<html>
<script type="text/javascript">
function parent(){
    //here i want to access values from parent.htm page, but does not work
var value = parent.getElementById('text1').value;
    var value2=top.getElementById('text1').value;
alert(value);
}
</script>
<body onload="parent()">
<form>
    </form>
</body>
</html>

提前致谢

5 个答案:

答案 0 :(得分:2)

可能最简单的方法就是通过cookie来做你想做的事。它是存储在客户端上的一个小文本文件,可以跨页面持久保存值。如果您未指定过期日期,则当用户关闭浏览器时,cookie将过期。

Cookie tutorial

修改

您可以做的其他事情是使用Javascript通过点击链接提交表单。我认为这是formname.submit() - 这将允许您从表单发布中读取值。 (虽然这比仅仅阅读cookie还要多一些工作)

如果你只传递一两个字段,我会使用cookie。除此之外,您可能需要考虑通过Javascript提交表单。

答案 1 :(得分:1)

您应该能够使用window.opener来获取对父窗口的引用。

var parent = window.opener

<击>

我知道 - 您无法通过javascript(AFAIK)从上一页页面访问DOM元素。

传统上使用HTTP post变量处理,通过一些后端程序将表单变量集合传递给后续页面。

(如Moje所说)在新窗口中打开页面,以便 可以window.opener 访问父级

答案 2 :(得分:1)

首先更改以下内容: -

<a href="child.html" target="_self">Open kid</a>

来: -

<a href="child.html" target="_blank">Open kid</a>

target =“_ self”表示子页面将在同一父窗口中打开,实际上会破坏父级及其代码。

然后,使用以下命令访问父级的表单文本框元素: -

var parentTextBox = window.opener.document.getElementById('text1');

答案 3 :(得分:1)

我认为你不能这样做,至少你正在尝试。

点击“打开小子”后,您当前的页面将被新的页面替换,因此您无法访问该属性。

您应该能够通过使用Cookie,在网址中传递所需的值或Web Storage来解决这个问题。

答案 4 :(得分:1)

parent.htm

<!DOCTYPE html>
<html>
  <body>
    <form method="GET" id="myform" action="child.html">
      <input id=text1 type=text name="test2">
      <a href="child.html" target="_self" onclick="document.getElementById('myform').submit();">Open kid</a>
    </form>
  </body>
</html>

child.html

<!DOCTYPE html>
<html>
<body onload="alert(window.location.toString().split('?')[1].split('=')[1])">

</body>
</html>

可能包含一些拼写错误,但想法是通过GET向孩子提交表单,然后在加载child.html后从window.location读取GET参数。