- ベストアンサー
フラグに名前を付けるには?
spflagが0なら指定ID(i)のクラスaを除いてbを付加する、1なら逆のbを除いてaを付加するスクリプトの部分。 var spflag=0 function special(i,a,b){ if (spflag==0){ document.getElementById(i).className = document.getElementById(i).className.split(/\s+/).remove([a], ' '); document.getElementById(i).className = document.getElementById(i).className.split(/\s+/).merge([b], ' '); spflag=1;} else{ document.getElementById(i).className = document.getElementById(i).className.split(/\s+/).remove([b], ' '); document.getElementById(i).className = document.getElementById(i).className.split(/\s+/).merge([a], ' '); spflag=0;} } これのspflagにiの名前を(iはID)足してIDごとのフラグ管理を行いたいのですが、どのようにするのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Javascriptの配列のキーは数値以外も扱うことができるので 配列で管理でいいかと思います。 var spflag = new Array();//配列として定義 function special内で値を入れる/参照する。 if(spflag[i]){ ~ trueの時の処理 spflag[i]=false; } else { ~ falseの時の処理 spflag[i]=false; } ただし、値の設定前に参照するとfalseとして判定されるので あらかじめ初期化をするか、初期値falseとして動作するようにプログラミングする必要があります。
その他の回答 (1)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> これのspflagにiの名前を(iはID)足してIDごとのフラグ管理を行いたいのですが、 よくわかりませんが、 spflag={}; として、spflag[i]ではダメでしょうか?
お礼
ありがとうございます、こんな感じです! 初期値を0にはできませんでしょうか? 0にしなくても処理はできますが、もし方法があるなら知っておいた方がいいかな?と思いまして。
お礼
回答ありがとうございます。 そういう方法もあるのですね。 ただ、先に回答いただいたtalooさんのような方法の方がスマートだと思いました。 私は最初 var spflag[i]=0 spflag[i]==1見たいな感じでvarの所がうまくいかなくてこの質問にいたったのでした。 でも、こちらの方もほかの場面で利用できそうなので、覚えておきます。 ありがとうございました。