いつも、お世話になっております。
JSPで使用するonlord について質問させて頂きます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
そこでonlordの優先させて、後にスクリプトレットを動かす事はできるのでしょうか?
不可能です。
スクリプトレットとは<% %>
のようなコードのことですよね?
これはサーバーサイドで実行される処理で、クライアントにページが表示される前の処理になります。
JSPのスクリプトレットが処理された結果がHTMLとして生成されて、これがクライアント側に送信されます。
これに対してonload
はクライアントのブラウザでページが全て表示された後にJavaScriptで実行する処理になるので、スクリプトレットより先にJavaScriptを実行するということはありえません。
これはonload
に限らず、HTML上のどこにJavaScriptを書いても同じです。
onlordの処理が最後に行われる為、スクリプトレットでプルダウンのselectedが解除されてしまう処理になっています。
この部分が意味不明です。もう少しやりたいことや現在の問題点をサンプルコード等で詳細に書いてもらえれば、他の解決策は出てくると思います。
投稿2016/11/29 08:13
編集2016/11/29 08:17総合スコア63
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/29 08:36
2016/11/29 09:20
0
ベストアンサー
onloadの処理をjavascriptで記述していると思いますが、
全て読み込んでいない状況でjavascriptが正常に動作するか怪しいと思います。
(使用するタグなどが読み込まれていないなど)
今回の処理のみだとselectedがあれば何もしないか、
selectedをonloadの処理内で行えば良いかと思います。
あとJSPが全て読み込まれた後というのは正しくない気がします。
JSPで生成されたHTMLが全て読み込まれた後です。
※「JSPが全て読み込まれた後」だとサーバー側の処理のように見えます。
追記:下記のような感じに直せばいけるのでは?
HTML
1<body onlord="document.form.name.focus()selectedDate()">
HTML
1<script> 2function pageOnload() { 3 // ここで選択する値を保持 4 var selectedVal = '<% Bean.getInData %>'; 5 document.form.name.focus(); 6 selectedDate(); 7 8 // ここで保持した値を元にselectタグのオプションを回してselectedをつけるか、新規追加? 9 // ※jQueryとか使っていれば簡単に記述できる 10} 11</script> 12<body onlord="pageOnload()">
投稿2016/11/29 07:57
編集2016/11/29 08:58総合スコア952
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/29 08:18
2016/11/29 08:24
2016/11/29 08:30
2016/11/29 08:50
2016/11/29 09:13
0
onloadに書いてある全て読み込まれた後に実行したくない処理を、全て読み込まれる前の処理に記載すればよいのではないでしょうか。
onloadは全て読み込まれた後に実行されます。
投稿2016/11/29 07:45
総合スコア213
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。