0

我有两个 html 页面一个是parent.htm另一个是child.htmlhrefparent.htm' tochild.html , here i have to access the elements ofparent.htm inchild.html`中给出的,这是我的两个文件

父.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>

提前致谢

4

5 回答 5

2

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

饼干教程

编辑

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

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

于 2013-05-29T12:56:44.097 回答
1

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

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

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

于 2013-05-29T12:50:42.267 回答
1

父.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 参数。

于 2013-05-29T13:03:10.010 回答
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');
于 2013-05-29T12:49:07.170 回答
1

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

var parent = window.opener

我明白了——您无法通过 javascript (AFAIK)从上一页访问 DOM 元素。

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

或者(如 Moje 注释)在新窗口中打开页面,以便您可以使用window.opener

于 2013-05-29T12:38:04.097 回答