0

私は2つのhtmlページを持っています.1つはparent.htmchild.htmlparent.htm child.html`でchild.html指定hrefした場所です.ここに私の2つのファイルがありますparent.htm' to, here i have to access the elements ofin

親.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() だと思います-これにより、フォーム投稿から値を読み取ることができます。(ただクッキーを読むよりも少し手間がかかりますが)

1 つまたは 2 つのフィールドのみを渡す場合は、Cookie を使用します。それ以上に、Javascript を使用してフォームを送信することを検討してください。

于 2013-05-29T12:56:44.097 に答える
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>

Might contain some typo, but the idea is to submit form by GET to the child and then read GET parameters from window.location after child.html is loaded.

于 2013-05-29T13:03:10.010 に答える
1

window.openerユーザーが親ウィンドウへの参照を取得できる必要があります。

var parent = window.opener

なるほど --のページの DOM 要素に javascript (AFAIK) 経由でアクセスすることはできません。

これは伝統的に HTTP ポスト変数で処理され、いくつかのバックエンド プロシージャを介してフォーム変数コレクションを後続のページに渡します。

または(Mojeが指摘するように)新しいウィンドウでページを開いて、親にアクセスできるようにしますwindow.opener

于 2013-05-29T12:38:04.097 に答える
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

少なくともあなたが試みている方法では、それはできないと思います。

「子供を開く」をクリックすると、現在のページが新しいページに置き換えられるため、その属性にアクセスできなくなります。

Cookie を使用して、URL に必要な値を渡すか、 Web Storageを使用して、これを回避できるはずです。

于 2013-05-29T12:50:42.267 に答える