プロが教えるわが家の防犯対策術!

下記ソースでVBscriptの配列変数をJavascriptで使うにはどうしたらいいでしょうか。

vbscriptで配列stat2(i)に値セット後javascriptで使いたい

<script type="text/javascript">
<!--
//=====
function test(){
var i;
for (i=0;i<9;i++){ document.form1.text1[i].value=<%=stat2(i)%>; <-これだとエラー
}
}
//======
//-->
</script>

A 回答 (2件)

サーバーサイドスクリプトのオブジェクト(変数など)をクライアントサイドスクリプトで使うことはできません



%で括られているブロックはWebサーバー上で実行される部分です

<script type="text/javascript">
</script>
の部分はページを閲覧しているクライアント上で実行されます

両者に共有する部分はありませんよ

クライアント側だけで実行すればいいのでは?

<script type="text/javascript">
<!--
  var stat2;
  // stat2の初期化ルーチン
  function myload()
  {
    stat2 = new Array(10);
    for( var i = 0; i < stat2.Length; i++ ) {
      stat2[i] = i+1;
    }
  }

  // SELECTのonchangeイベント
  function test()
  {
    for( var i = 0; i < stat2.length; i++ ) {
      document.form1.text1[i].value = stat2[i];
    }
  }

  window.onload = myload;

//-->
</script>
といった具合ですが ...

サーバサイド側で何らかの処理を行ってその結果をクライアント側に反映したいのであれば
hiddenエレメントなどに設定しておいて
このデータを分割、各テキストボックスへのデータの代入
といった処理が必要でしょう
    • good
    • 0
この回答へのお礼

ありがとうございました。サーバサイド側で処理を行ってからなので考えてみます。

お礼日時:2009/04/22 15:54

よーく考えましょう



サーバサイドのスクリプトとクライアントサイドのスクリプトが同時に動くことはありませんよ

<% %>でくくられたサーバサイドのスクリプトが実行されるのは
ページを構築している段階です
これに対して クライアントスクリプトの実行される段階は
何かのアクション等に対してこのJavaScriptの関数が呼び出された時点です

この2つのタイミングはまったく違う時期ですし、実行される場所も違います

ご希望のことがやりたいならフォームの中のinputタグを
<input type="text" name="Text1" value="<%= stat2(0) %>">
<input type="text" name="Text1" value="<%= stat2(1) %>">
<input type="text" name="Text1" value="<%= stat2(2) %>">
<input type="text" name="Text1" value="<%= stat2(3) %>">
<!-- 同様に8まで設定する -->
<input type="text" name="Text1" value="<%= stat2(8) %>">
といった具合でしょう

この回答への補足

説明不足ですみません。
全体は下記のような感じです。
SELECTのONCHANGEでJAVASCRIPT中でVBSでセットした値を使いたいのです。

test.asp
<%@LANGUAGE=VBScript%>
<%
Dim stat2(1)
Dim i
for i=1 to 10
stat2(i)=i
next
%>
<html>
<head>
<script type="text/javascript">
<!--
//=====
function test(){
var i;
for (i=0;i<9;i++){ document.form1.text1[i].value=<%=stat2(i)%>; <-これだとエラー
}
}
//======
//-->
</script>
</head>
<html>
<body>
<select name="name" onchange="test()">
<option .....>
</select>
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
<input type="text" name="text1">
</body>
</html>

補足日時:2009/04/21 08:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!