• ベストアンサー

二次元配列に値をセットしたいんですが

ASP(html)での変数をJavaScriptに渡して 二次元配列を作成したいのですが、どうもうまくいきません。 どなたか、ご教授願います。 サンプル 変数:strFact = "'工場1', 1000, 20/'工場2', 500, 90/'工場3', 2000, 100/'工場4', 900, 10" -------------------JavaScript strFact_WK = <%=strFact %>  ※1 var test = new Array(); var rows = strFact_WK.split("/"); for( var i in rows) { test.push(new Array()); var cols = rows[i].split(","); for( var j in cols) { test[i].push(cols[j]); } } ---------------------- 当然ですが、 ※1の所で strFact_wk = "'工場1', 1000, 20/'工場2', 500, 90/'工場3', 2000, 100/'工場4', 900, 10" とすると作成されます。

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

  • ベストアンサー
回答No.2

var v = "'工場1', 1000, 20/'工場2', 500, 90/'工場3', 2000, 100/'工場4', 900, 10"; var a = v.replace(/'/g,'').split('/'); var i=0; while (a[i]) a[i] = a[i++].split(','); alert(a[1][2]); //90 きっと、またごみ。

yop_ikunan
質問者

お礼

回答ありがとうございます。 が、説明が分かり難くてスイマセン。 JavaScript内で変数に値をセットするのであれば、 質問のコードでもOKなんです。 ASP側から、変数をJavaScriptに受け渡す際に サンプルの変数が受け渡らないので、悩んでいます。 現在、回答#3を検証中です。

yop_ikunan
質問者

補足

同コードですが、 babu_baboo様の方が、簡単ですので使わせていただきます。 ありがとうございました。

その他の回答 (2)

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.3

原因は #1 JavaScript に落とすときに、" が抜けてしまうため。 どうせ配列にするなら、JSON で渡す。 var test = [<% Response.Write( "[" + Regex.Replace( strFact, "\/", "],[" ), RegexOptions.Singleline ) + "]" %>]; ASP には明るくないので参考までに。

yop_ikunan
質問者

お礼

回答ありがとうございます。 私はJavaScriptに加え、ASPも初心者なので、回答を理解し、自分のコードに修正できませんでした。スイマセン。 で、今回の質問は ASP上での変数をinputタグに入れることで解決できました。 ありがとうございました。 ---------------------- <Form Method="post" Name="test"> <input type="hidden" name="strFact" value="<%=strFact %>"> </Form> <script type="text/javascript"> <!-- var cities; function factSet() { strFact = document.test.strFact.value; factry = strFact.replace(/'/g,'').split('/'); var i=0; while (factry[i]) factry[i] = factry[i++].split(','); } //--> </script> ---------------------------------

  • atse
  • ベストアンサー率83% (36/43)
回答No.1

おそらく、変数strFactで使われている""の囲いは ASP上で文字列として認識させる為のものだと思うので、 出力されたHTML上のjavascriptでは、 strFact_WK = '工場1', 1000, 20/'工場2', 500, 90/'工場3', 2000, 100/'工場4', 900, 10 のようになっていると推測します。 ASPを扱ったことがないのでわかりませんが、 strFact_WK = "<%=strFact %>"; といった記述の変更をする必要があるのではないでしょうか。 HTML内などに出力されたjavascriptを見ることが出来るのならば、 それを見るのが解決の早道かと思いますよ。

yop_ikunan
質問者

お礼

回答ありがとうございます。 >のようになっていると推測します。 いいえ、最初の「工場1」しか取り込めないんですよ。 なので、回答#3を検証中です。

関連するQ&A