人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のソースでfunction aa()の中の値を
追記していき、functionを呼び出すのですが
そのfunction内で渡された引数で配列を
作成したいのですが可能でしょうか?
<script type="text/javascript">
function aa(){
startEvent('test1','1')
startEvent('test2','2')
}
function startEvent(name,test_flg){
bb = new Array (2);
for (i=1; i<=2; i++) {
bb[name]=test_flg;
}
alert(bb)
}
//-->
</script>
</head>
<body onload="aa();">
よろしくお願い致します。

●質問者: hopefully
●カテゴリ:就職・転職 ウェブ制作
✍キーワード:AA BB name ソース 作成
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● susie-t
●35ポイント

要件がちょっと掴めない部分があるのですが、勝手に解釈させてもらうと「startEvent関数を呼び出した分だけ、オブジェクトにメンバを追加し、最終的にそのオブジェクトを返却する」と仮定させてもらいました。

一番簡単なのは、グローバルエリアにオブジェクトを作成し、そこに追加していく方法です。ただし、メンバ名に文字列を使用していますので、ここでArrayは不適当と思います。Arrayはメンバ名に自然数を想定するものですので。単なるObjectを使用して連想配列のように使用したほうがよいです。

ここではグローバルエリアを使用しない方法を紹介します。ちょっと慣れないかもしれませんが・・・。

<script type="text/javascript">
<!--
function aa(){
 var startEvent = new StartEvent();
 startEvent.set('test1','1');
 startEvent.set('test2','2');
 return startEvent.get();
}
function StartEvent(){
 var bb = new Object();
 this.set = function (name,test_flg){
 bb[name] = test_flg; 
 }
 this.get = function(){
 return bb;
 }
}
function init(){
 var result = aa();
 
 var str = "<table border>";
 for(var i in result){
 str += "<tr><th>" + i + "</th><td>" + result[i] + "</td></tr>";
 }
 str += "</table>";
 document.getElementById("test").innerHTML = str;
}
//-->
</script>

参考:http://www.tokumaru.org/JavaScript/

参考になれば幸いです。

◎質問者からの返答

すいません。

質問がうまく伝わらないようですね。

function startEvent(name,test_flg){

}内で配列を作成したいだけです。

結果alert(bb)としたら

Array ( [test1] => 1 [test2] => 2 )の

ような配列を作成したいだけです。


2 ● susie-t
●35ポイント

質問の意図を取り違えてすみませんでした。

startEvent('test1','1')
startEvent('test2','2')

でstartEvent関数は2回実行されます。それぞれ独立しており、内部変数bbは共通使用できません。対応するためにはグローバルエリアで宣言する必要があります。関数内でfor文を使用して設定する必要もありません。alertは2回表示されます。

この場合、alert(bb);としても値は表示されません。Arrayなのでメンバ名が自然数でないとalertで表示されません。この場合はfor inループでキーと値を取得し、表示用の文字列を作成する必要があります。(もしかして、Arrayに登録する際のキーと値が逆ではないですか?)

<html>
<head>
<html>
<head>
<title></title>
<script type="text/javascript">
function aa(){
 startEvent('test1','1');
 startEvent('test2','2');
}
var bb = new Array();
function startEvent(name,test_flg){
 bb[name] = test_flg; 
 var str = "";
 for(var i in bb){
 str += "[" + i + "] => " + bb[i] + ", " ; 
 }
 alert(str);
}
//-->
</script>
</head>
<body onload="aa();"><div id="test"></div>
</body>
</html><div id="test"></div>
</body>
</html>

参考になりますでしょうか。

◎質問者からの返答

なりましたw

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ