出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど   tamaさん [2001/11/06 18:56:43] [912]
  Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど   Tomitomiさん [2001/11/06 19:59:27] [913]
    Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど   tamaさん [2001/11/06 20:26:02] [916]
      Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど   Tomitomiさん [2001/11/06 21:09:28] [917]
        Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど   tamaさん [2001/11/06 21:37:31] [919]
          【補足説明】サーバ・サイドとクライアント・サイドについて   北岳さん [2001/11/06 22:03:26] [920]
            Re:【補足説明】サーバ・サイドとクライアント・サイドについて   tamaさん [2001/11/06 22:14:36] [921]
  Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど   Tomitomiさん [2001/11/06 20:05:16] [914]

[912] JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど
投稿者:tamaさん 2001/11/06 18:56:43
いつも、おせわになっています、tamaです。

<form method="POST" name="F1">

<script language=JavaScript>
<!--
/* retはある関数の戻り値です */
if( ret == 0 ) {
document.F1.flg.value = 0;
} else {
document.F1.flg.value = 1;
}
-->
</script>

<% If FLG = 0 Then %>
<!-- 処理 -->
<% End If %>
<input type="hidden" value="<%= FLG %>" name="flg" >
</form>

JavaScriptである関数の戻り値が0の場合はFLGを0または戻り値が1の場合は1を書き込み、FLGが0の時だけある処理を行いたいんですけど、うまく判定してくれません。
この記述ではだめなのでしょうか?どなたか、教えてもらえませんか?

[913] Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど
投稿者:Tomitomiさん 2001/11/06 19:59:27
こんばんは、おなかすいたなーTomitomiです。


> <form method="POST" name="F1">
>
> <script language=JavaScript>
> <!--
> /* retはある関数の戻り値です */
> if( ret == 0 ) {
> document.F1.flg.value = 0;
> } else {
> document.F1.flg.value = 1;
> }
> -->
> </script>
>
> <% If FLG = 0 Then %>
> <!-- 処理 -->
> <% End If %>
> <input type="hidden" value="<%= FLG %>" name="flg" >
> </form>
>
> JavaScriptである関数の戻り値が0の場合はFLGを0または戻り値が1の場合は1を書き込み、FLGが0の時だけある処理を行いたいんですけど、うまく判定してくれません。
> この記述ではだめなのでしょうか?どなたか、教えてもらえませんか?


記述は問題ないように見えます。
しかし、「ret 」が気になります。ある関数の戻り値とありますが、
「ret 」はグローバル宣言してますか?

[916] Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど
投稿者:tamaさん 2001/11/06 20:26:02
Tomitomiさん、お返事ありがとうございます。
<form method="POST" name="F1">
<select name="A1">
<% For i=0 To データベースより取得した件数 %>
<script language=JavaScript>
<!--
/* retはある関数の戻り値です */
if( ret == 0 ) {
document.F1.flg.value = 0;
} else {
document.F1.flg.value = 1;
}
-->
</script>
<% If FLG = 0 Then %>
<option value="データ" > データ
</option>
<% End If %>
<% Next %>
</select>
<input type="text" value="<%= FLG %>" name="flg" >
</form>

hidden←textにしてテストしてみたんですけど、なぜかループの最後だけに"1"が表示されます。データベースから取得した分ループさせて、ある条件の時に一覧表示させたいんですけどFLGに書き込みが出来てないんですかね?

retはグローバル宣言していません。グローバル宣言の仕方がわかりません(すみません、馬鹿な質問で)。でも、if文は正常に機能しています。

[917] Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど
投稿者:Tomitomiさん 2001/11/06 21:09:28
こんばんわ、残業中です。Tomitomiです。w



> <form method="POST" name="F1">
> <select name="A1">
> <% For i=0 To データベースより取得した件数 %>
> <script language=JavaScript>
> <!--
> /* retはある関数の戻り値です */
> if( ret == 0 ) {
> document.F1.flg.value = 0;
> } else {
> document.F1.flg.value = 1;
> }
> -->
> </script>
> <% If FLG = 0 Then %>
> <option value="データ" > データ
> </option>
> <% End If %>
> <% Next %>
> </select>
> <input type="text" value="<%= FLG %>" name="flg" >
> </form>
>
> hidden←textにしてテストしてみたんですけど、なぜかループの最後だけに"1"が表示されます。データベースから取得した分ループさせて、ある条件の時に一覧表示させたいんですけどFLGに書き込みが出来てないんですかね?
>
> retはグローバル宣言していません。グローバル宣言の仕方がわかりません(すみません、馬鹿な質問で)。でも、if文は正常に機能しています。


なんかわかったような気がします。
まず、グローバル宣言は、ファンクション部以外で、var 変数; と宣言すればいいだけです。


それで本題ですが、まず上記のプログラムの順番で。


JavaScript
ループ処理
隠し項目へ書き込み処理。


ですよね?プログラムの順番はこうでも、
ASP(サーバサイドスクリプト)とJavaScript(ユーザサイドスクリプト)では、ASPが先に処理されますよね?←*正確な文言ではありません。
ループ後に1が入るというのは、ASP完了後、JavaSctiptが実行されて、retには何も入っていないので、1が入っていると思われます。


サーバサイドスクリプトとユーザサイドスクリプトの違いは、わかるでしょうか?
もし、わかりましたら、失礼をごめん。


[919] Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど
投稿者:tamaさん 2001/11/06 21:37:31
残業中おつかれさまです。

サーバサイドスクリプトは、サーバ側で処理されユーザサイドスクリプトは、クライアント側で処理されるっていう程度しか分かりません。

ASPが先に処理されてるので、JavaScriptで条件を判定して、取得したデータのうち表示したいデータのみを判断させたいと思っていたんですけど、無理なんですね。(残念)

[920] 【補足説明】サーバ・サイドとクライアント・サイドについて
投稿者:北岳さん 2001/11/06 22:03:26
>サーバサイドスクリプトは、サーバ側で処理されユーザサイドスクリプトは、クライアント側で処理されるっていう程度しか分かりません。
 
(基礎中の基礎ですが、私もスクリプトを書いていて、しょっちゅう混乱する部分です。)
 ---------------------------------------------
サーバは、中身がHTMLで拡張子がaspの文書を作って(ここまではサーバ・サイド)クライアントに送り出し、一件落着とします。
送られたあとは、埋め込まれたJavaScriptがどう動作しようが(ここはクライアント・サイド)、サーバには手の届かない場所での話です。
 
if( ret == 0 ) {
document.F1.flg.value = 0;
} else {
document.F1.flg.value = 1;
}
は、送り出されたASP-HTM文中のスクリプトです。
クライアントがflg.value の値をFormやQueryStringでサーバに送り返せば、サーバは改めて次の仕事に取りかかれます。
クライアントが送り返してこない限り、flg.value の値が何であっても、サーバは無関係になります。
-------
ところが<% %> 内に書かれるのは、サーバサイドのスクリプトです。
<% %>は、aspを作るサーバ内部の処理中だけ使用します。
出来あがったaspをクライアントに送り出したら、ご用済み。
 
<% If FLG = 0 Then %>
<!-- 処理 -->
<% End If %>
 
の、<% %>内の記述は、正常なaspならクライアントには出現しません。
(正常でないasp、または拡張子をHTMにすれば、このまま只の文字列としてHTML画面に出てくる可能性はあります。)
--------
要するに
【定石】クライアントに渡ったあとの(中身の実質は)HTML(で、拡張子はasp)では、<% %>の構文は使えません。
【対策】0か1か判断したあとの処理は、クライアント側の(今回の場合は)JavaScript(だけ)で片をつけなければなりません。

[921] Re:【補足説明】サーバ・サイドとクライアント・サイドについて
投稿者:tamaさん 2001/11/06 22:14:36
北岳さん、すごく丁寧に返答くれてありがとうございます。

クライアント側でなんとか片付けてみます。

[914] Re:JavaScriptでフラグをセットしてその後の処理判定に使用したいんですけど
投稿者:Tomitomiさん 2001/11/06 20:05:16
こんばんわ、Tomitomiです。
ごめんなさい。追加です。


> <input type="hidden" value="<%= FLG %>" name="flg" >


これを開発中は、type="text"としてください。
そのほうが値が見れるので開発しやすいです。



TreeBBS For ASP V.0.1.3
Program By YasNet