我有两个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>
提前致谢
答案 0 :(得分:2)
可能最简单的方法就是通过cookie来做你想做的事。它是存储在客户端上的一个小文本文件,可以跨页面持久保存值。如果您未指定过期日期,则当用户关闭浏览器时,cookie将过期。
修改强>
您可以做的其他事情是使用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参数。