以下のソースで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();">
よろしくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:2007/05/22 11:49:10
  • 終了:2007/05/28 11:08:29

回答(2件)

id:susie-t No.1

susie-t回答回数99ベストアンサー獲得回数182007/05/22 12:24:48

ポイント35pt

要件がちょっと掴めない部分があるのですが、勝手に解釈させてもらうと「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/

参考になれば幸いです。

id:hopefully

すいません。

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

function startEvent(name,test_flg){

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

結果alert(bb)としたら

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

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

2007/05/22 12:46:28
id:susie-t No.2

susie-t回答回数99ベストアンサー獲得回数182007/05/22 13:51:37

ポイント35pt

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

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>

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

id:hopefully

なりましたw

ありがとうございます。

2007/05/28 11:08:18
  • id:susie-t
    すみません、上記コードのbody部は以下のようにしてください。
    -------------------------
    <body onload="init();">
    <div id="test"></div>
    </body>
    -------------------------
    失礼しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません