- ベストアンサー
javascriptのイベント処理について。
イベント今回の場合は、onloadです。 この場合、 function a(){ 条件(1) 条件(2) 条件(3) } これを、例えば、条件(2)を実行した場合に、 html側で、(2)を実行したと判断するには、無理なのでしょうか。 どう考えても、イベントなので、戻り値を返す場所がないですよね。 何か良い方法はないでしょうか。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 IE10では検証していませんが、 // キャンセルした場合の値を取得して、asf.jpgの背景の変更したいです。 //document.write('<BODY BACKGROUND="asf.jpg">');ここで書いてしまうと、 //当然ながら、 //htmlが全て消えてしまい、背景しか表示されません。 // スタイルを動的に変える document.getElementsByTagName('body')[0].style.backgroundImage = 'url(/images/circle_green.png)'; // スタイルを動的に変える の部分を追加してみてください。 キャンセルで背景画像が切り替わります。
その他の回答 (3)
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >最初の背景色は黒です、そして、キャンセルした場合に背景をasf.jpgに変更したいのです。 >現在は、上記の内容なので、常に、asf.jpgが表示される状態です。 >出来るのであれば、宜しくお願いします。 >難しいのであれば、どのあたりを克服すれば、出来るか教えて頂ければ >勉強致します。 すみません、動きが良くつかめないので確認させてください。 このHTMLにアクセスされると 1.モーダル表示で別ウィンドウが表示される(このときメインのウィンドウは何も表示されていない) 2.モーダルウィンドウでパスワードを入力 3.キャンセルの場合は背景を変更する?キャンセルでは無い場合はパスワードをチェックして条件に該当した場合はHTMLを動的に生成する? document.writeで作らなくちゃ駄目でしょうか? document.writeは後から一部だけ変更するという動きには向いていません。 if ( str!=undefind)だったときに全て画像の変更ではなく、全てのHTMLを作成する必要がありそうです。 JavaScriptによるDOMの操作を勉強してみると良いと思います。 また、html内で<center>とか使われていますが、利用できないタグです。 この際、いろいろ勉強してみると良いと思います。
補足
回答有難う御座います 原因は、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1211093226... IE10で廃止になった事です 実際のhtml ie9以前を使用している人は、今までは、最初は黒背景、そして、キャンセルした場合には、背景が変わるようになってしました。 (現在修正中、IE9以前でも変更されません) 出来ないと言われれば完全に諦めます >document.writeで作らなくちゃ駄目でしょうか? そんな事はないです、どんな方法でも変更出来ればよいです。 どうぞよろしくお願いいたします
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >そこでもう一つ質問ですが、その値を使用して、まだ処理を続行したいのですが、 >例えば、リターン値が12345と設定した場合、 >if文で聞く場合ねどのようにすれば宜しいでしょうか。 <body onload = "if(a()==='12345') { alert ( '12345だよ' ); } else { alert ( '12345じゃない'); }"> と書けばa()の戻り値が'12345'の場合という条件になりますが普通はインラインで書かないと思います。 <script> function a() { if ( b(1) === '12345' ) { //'12345'の時の処理 document.getElementById('result').innerHTML = '12345だった'; } } function b(val) { // valが1の時は'12345'を返す return val === 1 ? '12345' : ''; } </script> <body onload="a();"> <span id="result"></span> </body> こんなイメージですか? まずonloadでa()が呼ばれます。 次にbを引数1で読み出します。 bは引数が1だったら'12345'を返します。 ''12345'が返って来たので条件が真となりid="result"のhtml内容を書き換えます。 具体的にやりたいことを明記していただければ適切な回答が出来るかと思います。
補足
何度も有難う御座います。 私のしたい事を書きますので、宜しくお願いします。 <script type="text/javascript"> <!-- function settei(){ var i=1; var str=window.returnValue; while(i<=3){ str = showModalDialog("../../x/1pass2.html","document.dia.apu.value","status:no;dialogWidth:388px;dialogHeight:258px;help:no;center:yes;scroll:no;edge:raised;"); if(str==undefined) { alert("ログインはキャンセルされました。"); // キャンセルした場合の値を取得して、asf.jpgの背景の変更したいです。 //document.write('<BODY BACKGROUND="asf.jpg">');ここで書いてしまうと、 //当然ながら、 //htmlが全て消えてしまい、背景しか表示されません。 return true;} else if(str=="") { alert("パスワードが入力されていません。"); } else if(str.length != str.indexOf("1")+6){ alert("パスワードが違います。"); } else { document.writeln("<html><head><title>おめでとうございます。</title>"); document.writeln("<style type='text/css'><!--"); document.writeln("a{color:#462300;text-decoration:none;font-size:18pt;border-width:5px;border-style:outset;background-color:#f0ffff;font-weight:bold;}"); document.writeln("a:hover{color:#ffffff;background-color:#000000;}--></style></head>"); document.writeln("<body topmargin=200 bgcolor=#808080 oncontextmenu='return false;'>"); document.writeln("<center><div style='color:#804000'><big><b>クリアだと思いますよ?<br>"); document.writeln("Enter をクリックしてお入り下さい。<br><br>"); document.writeln("<a href='"+str+"'> Enter </a>"); document.writeln("</b></big></a></div>"); document.write("</center></body></html>"); document.close(); return true;} i++;} } // --> </script> <script type="text/javascript"> <!-- //実際に、何らかの条件を不可して、下の背景に変更したいのです。 //ここで変更する事によって、htmlが全て表示され、背景も変更されます。 document.write(' '); document.write('<BODY BACKGROUND="asf.jpg">'); // --> </script> </head> <!-- **************************************************************************** --> <body onload="settei();" oncontextmenu="return false;" topmargin="25"> テスト </body> まとめますと、 最初の背景色は黒です、そして、キャンセルした場合に背景をasf.jpgに変更したいのです。 現在は、上記の内容なので、常に、asf.jpgが表示される状態です。 出来るのであれば、宜しくお願いします。 難しいのであれば、どのあたりを克服すれば、出来るか教えて頂ければ 勉強致します。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >html側で、(2)を実行したと判断するには、無理なのでしょうか。 HTML側で判断というのがちょっと読み取れないのですが具体的にどのようにしたいのでしょうか? <script> function a() { return "条件2"; } </script> <body onload="alert(a());"> とすればalert表示で"条件2"が表示されます。 returnで返せていると思いますが違いますか。
補足
回答有難う御座います。 先にごめんなさい、昔の人間なので、メインとサブ的な考え方で書いてしまいました。 hrtmlをメインとすれば、jsファイルの方をサブ的なイメージです。 なので、jsで設定した値をメイン側、htmlで取得出来るかと言う質問でした。 話は元に戻します。 結果、アラートで表示されました、有難う御座います。 そこでもう一つ質問ですが、その値を使用して、まだ処理を続行したいのですが、 例えば、リターン値が12345と設定した場合、 if文で聞く場合ねどのようにすれば宜しいでしょうか。 質問内容が不備な部分は、お許し下さい。
お礼
長い間、有難う御座います。 私は、別な方法で一応解決しましたが、以前とは少し変わってしまったし、 色々と変更してしまったので、みにくいロジックとなってしまいました。 こんな簡単に、出来るのですね、流石にプロは違いますね。 でも私には、それをまだ理解出来ていないので、さらなる勉強して意味を理解したいと思います。 本当にこんな私につきあって頂き感謝の言葉もありません。 有難う御座いました。