ページ更新後も保持される変数の利用について

このQ&Aのポイント
  • 初めての質問です。よろしかったらお答えください。複数のインラインフレーム用ページが用意してあり、テキストボックスに入力した番号によって任意のページから10個のインラインフレームを順番に配置するようにしたいのです。
  • 根本的な所から間違っているのでしょうか?
  • 参考にしたサイトはhttp://okwave.jp/qa4019868.htmlです。
回答を見る
  • ベストアンサー

ページ更新後も保持される変数の利用について

初めての質問です。よろしかったらお答えください。 複数のインラインフレーム用ページが用意してあり、 テキストボックスに入力した番号によって 任意のページから10個のインラインフレームを順番に配置するようにしたいのです。 ここを参考に作ったのですがうまくいきません。 http://okwave.jp/qa4019868.html <html> <head> <script language="javascript"> <!-- function init(){ var queries=location.search; if(queries){ var q = queries.replace(/^\?/,'').split('='); n = eval(q[1]); } alert(n); } window.onload= init; // --> </script> </head> <body> <form action="index.htm" method="get"> <input name="number" type="text" value=""> <input type="submit"> </form> <script language="javascript"> <!-- for(i=1 ; i<=10; i++) { document.write("<iframe src='"+n+".htm'>"); n++; } //--> </script> </body> </html> 根本的な所から間違っているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

よく読み取れませんが・・・ フォームで入力した数字(例えば10)とすると、インラインフレームに10.htm、11.htm・・・19.htmという連番のhtmファイルを表示したいということでしょうか?(どのようなことをしたいのか、いまいち実体がイメージできません) いっぱいつっこみどころがあるのですが、とりあえず↑の想定があっているとして、以下の事柄を整理して、もう一度見直してみてください。 1)このファイルを表示した時(もちろんフォーム入力前)に、document.writeでiframeを表示しようとしていますが、表示するものがないはず。 2)formのactionがindexhtmとなっているが、それはこのファイルのことでしょうか?(自分自身を再読込みということか)  index.htmが別にある場合:location.searchの解釈、iframeの出力などはこのファイルには不要でindex.htmに必要なスクリプトです  再読込みの場合:最初の表示(未入力)と2回目以降の表示(iframeの表示)とを分けて制御する必要があるが、まったく考慮されていない。 3)iframeタグが閉じていないので、ブラウザで正しく認識されない。(IEの場合は適当に判断するみたいですが、これは例外的) 4)ついでながら、連番のhtmlを表示するにしても、何番から何番まで用意してあるのでしょうか。入力値をチェックするなりしないと『ファイルを開けません』の表示ばかりになる恐れがある。(本当に連番のファイルを表示するつもりなのでしょうか?) ヒントとして・・・ ご提示のスクリプトは、document.writeを実行しようとした時にnの値が定まっていないので、動作がブラウザによって不定です。 『(1)初期値としてnを定義しておくこと(n=1;とか)と、(2)<iframe>タグを閉じること(</iframe>を入れる)』を修正すれば、とりあえず動作すると思われます。 でも、考えているものとは多分違う動作になるとは思いますが、そこを出発点にして確認しながら作っていってもいいかも。 いずれにしろ、やりたいことを一度整理した上で、どのように制御すればよいのかを考えてみることをお勧めします。

taksim
質問者

お礼

丁寧にありがとうございます。 私の説明不足でした。 顧客情報のようなものを連番(顧客ID)のhtmで自動生成しており、それをインラインフレームを並べることで一覧できるようにする事と検索窓に顧客IDを入力するとそのフレームを表示するようにしたかったのです。 テキストボックス内の数字を保持したまま自分自身(index.htm)を再読み込みして、 インラインフレームを生成するという感じなのですがなかなかうまくいきませんでした。 しかしlocation.searchを理解することでなぞが解けました。 試行錯誤の末自分の思い通りの動きになりました。ありがとうございました。 <head>内に書いたスクリプトの変数nと<body>内に書いた変数nは内容を共有できないのですね。 <html> <head> <title></title> </head> <body> <form action="index.htm" method="get"> <input name="number" type="text" value=""> <input type="submit"> </form> <script language="javascript"> <!-- var queries=location.search; if(queries){ var q = queries.replace(/^\?/,'').split('='); var n = eval(q[1]); } for(i=1 ; i<=10; i++) { document.write("<iframe src='"+n+".htm'></iframe>"); n++; } //--> </script> <iframe src='"+n+".htm'></iframe> </body> </html>

関連するQ&A

  • 別なページにジャンプさせたい

    ボタンをクリックすると指定のページに飛ぶようにしたいのですが、 <html> <head> <script language="JavaScript"> function jump(){ location.href="index.html"; } </script> </head> <body> <form onSubmit="jump()"> <input type="submit"> </form> </body> </html> でも <html> <head> <script language="JavaScript"> function jump(){ location.href="index.html"; } </script> </head> <body> <form> <input type="submit" onClick="jump()"> </form> </body> </html> でも動きません。(そのページを表示したままです) <body onload="jump()">にしたときは正常にジャンプできるので、クリックのイベントが拾えていないと思うのですが、どのように記述すればいいのでしょうか。 よろしくお願いいたします。

  • javascript フォームのエレメント名を変数で設定するには?

    javascriptの初心者です。初めて質問させていただきます。よろしくお願い致します。 下記のスクリプトで、bt_sub1の部分(エレメント名)を、直接記述するのではなく、引数のiを使用して設定したいのですが、うまくいきません。 どのようにすれば良いでしょうか? <SCRIPT language="JavaScript" > function func1(formp, i){ //OKです  formp.bt_sub1.disabled = true; //エラーになりました var a = "bt_sub" + i; formp.a.disabled = true; } </SCRIPT> <HTML> <HEAD> <TITLE> テスト</TITLE> </HEAD> <BODY> <form> <input type="submit" value="送信" name="bt_sub1"> <input type="button" value="使用不可 "onclick="func1(this.form, 1);"> </form> </BODY> </HTML>

  • 変数の宣言?

    以下のように変数の練習をしていたのですが、document.aaa.y.valueを右辺に持ってこないやり方っていうのはあるのでしょうか? また、ifの中身についてなのですが、一応これでも動くんですけど文法的にはどうなのでしょう?お願いします <html> <head> <title>変数の練習</title> <script language="JavaScript"> <!-- function test() { var x= document.aaa.y.value; document.aaa.y.value=x*1+1; if (document.aaa.y.value == "10") { document.aaa.y.value=0; } } //--> </script> </head> <body> <form name="aaa"> カウント:<input name = "y" value=0> <input type="button" value ="+1" onClick = "test()" > </form> </body> </html>

  • VBSからjavascript

    下記ソースの指定の箇所からjavascriptのfunction fun1(1)をよびたいのですがどう記述したらいいでしょうか。 (ちなみにbody onload=は使わない条件です) <%@ LANGUAGE = VBSCRIPT %> <html> <head> <script type="text/javascript"> <!-- //禁止、許可 function fun1(is){ var is; var i; var jj; jj=document.form1.text2.length; for (i=0;i<jj;i++){ if (is==1) document.form1.text2[i].disabled=true; if (is==2) document.form1.text2[i].disabled=false; } } //--> </script> </head> <html> <body> <form name="form1"> <input type="text" name="text2" size="14" maxlength="8" value="ABC"> <input type="text" name="text2" size="14" maxlength="8" value="DEF"> <% <-------------------ここでfun1(1)をよびたい fun(1)と書いてもエラー >% </form> </body> </html>

  • テキストエリア内で改行するには。

    次のスクリプトを実行すると、テキストエリア内に 01234560 と数字が表示されますが、これを 0 1 2 . というように改行も含めてテキストエリアに出力するにはどうすればよいでしょうか。 ¥nという文字を使用するのでしょうか? <html> <head> <script language="JavaScript"> <!-- var textA="" function my1() {for (i=0;i<11;i++){textA=textA+new String(i)} document.form1.text1.value=textA;} //--> </script> </head> <body> <form name="form1"> <textarea name="text1" size="10"></textarea> <input type="button" value="CLICK!" onClick="my1();"> </form> </body> </html>

  • ドキュメントを自ウィンドウに書き出したい

    <html> <head> <script language="JavaScript"> <!-- function doc() { document.write("JavaScript"); } //--> </script> </head> <body bgcolor="#ffffff"> <form name="form1"> <input type="button" value="ボタン" onClick="doc()"> </form> </body> </html> 上のプログラムの場合ボタンを押すとボタンが消えJavaScriptと書き出されてしまうのですが、ボタンの下に書き出すにはどうしたらよいのでしょうか?結果として以下のように表示させたいのですがどうしたらよいのでしょうか? <html> <head> </head> <body bgcolor="#ffffff"> <form name="form1"> <input type="button" value="ボタン"> <p>JavaScript</p> </form> </body> </html> これらのプログラムは自作のものです。

  • JavaScriptで得た値を別ページに反映

    JavaScriptで得た値を別ページに反映させたいと思っています。 同一ページでは上手くいきますが、別ページへの反映ができません。 教えてください、宜しくお願いします。 同一ページのサンプル <html> <head> <title>aa</title> <Script LANGUAGE='JavaScript'> <!-- function fncDisp() { label1.innerHTML = document.form1.txt.value; } --> </Script> </head> <body> <form name='form1' action=''> <div id='label1'>ここに表示</div> <input type='text' name='txt' value=''> <input type='button' name='btn' value='ボタン' onClick='fncDisp()'> </form> </body> </html>

  • 他のページ更新

    こんにちは 今ジャバスクリプトの勉強中です <%@page contentType="text/html; charset=Windows-31j"%> <html> <head> <script type='text/javascript'> <!-- function sta() { var naiyou = document.getElementsByName('aaa')[0].value; if(naiyou == '') { alert('空です'); } } // --></script> </head> <body> <form method="get" action="../HelloWeb" onsubmit="sta()" > <INPUT type='text' name='aaa'> <INPUT type='submit' value='クエリ送信' ><br> <br> </form> </body></html> こういうものを作っていて submitすると 他のページも更新するように (画面を二つにフレームでわり、上で↑のソースつかってます。 下のページで表示したい) したいとおもいます。 上のソースに submitすると他のページ(二分割のした)を更新できるように できますか?方法があれば教えていただきたいです。 下のファイルもJSPで作成しています

  • PHP内にJavaScript

    下記のようなはじめての訪問者に対してようこそ!と表示するJavaScriptをPHP内で動かすにはどのように記入すればよいのでしょうか? ==================================================== <script language="JavaScript"> var key = "freekeyword"; var n = 0; var cookies = document.cookie.split("; "); for(var i=0;i<cookies.length;i++){ var str = cookies[i].split("="); if(str[0] == key){ // n = str[1]; } } window.onload = function() { if(n == 0){ document.getElementById('welcome').innerHTML = 'ようこそ!'; } n++; setCookie(key,n); } function setCookie(key,val){ document.cookie = key + "=" + escape(val) + "; "; } </script> ==================================================== このスクプリトを下記<head>内にどのように記入すればよいので しょうか? PHPの文法などほとんど分からないレベルなのでそもそも質問 自体間違ってるかもしれませんがPHP内で同様の動作をさせたい のです。よろしくお願いします ==================================================== <?php echo ' <html> <head> </head>'; echo ' <body> <div id="welcome"></div> </body></html>'; ?> ====================================================

    • ベストアンサー
    • PHP
  • 数値以外の入力をさせないようにした後・・・

    いつもお世話になっています。 ****************************************************************** <htm> <head> <script language=javascript> <!-- function checkNum() { c=String.fromCharCode(event.keyCode); if("0123456789".indexOf(c,0)<0)return false; return true; } //--> </script> </head> <body> <form> <input type="text" onKeyDown="return checkNum()"> <input type="submit"> </form> </body> </htm> ****************************************************************** 以上のソースでテキストボックス内に数値以外入力できないようにしました。 が、こうすると入力した値を消そうとしてもBackSpace・Deleteキーが使えないのです。 どうしたら入力制限をかけつつ、両キーを有効にできるのでしょうか。

専門家に質問してみよう