ショボ短歌会

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ごとのフラグ管理を行いたいのですが、どのようにするのでしょうか?

A 回答 (2件)

Javascriptの配列のキーは数値以外も扱うことができるので


配列で管理でいいかと思います。

var spflag = new Array();//配列として定義

function special内で値を入れる/参照する。
if(spflag[i]){
 ~ trueの時の処理
 spflag[i]=false;
} else {
 ~ falseの時の処理
 spflag[i]=false;
}

ただし、値の設定前に参照するとfalseとして判定されるので
あらかじめ初期化をするか、初期値falseとして動作するようにプログラミングする必要があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
そういう方法もあるのですね。
ただ、先に回答いただいたtalooさんのような方法の方がスマートだと思いました。
私は最初
var spflag[i]=0
spflag[i]==1見たいな感じでvarの所がうまくいかなくてこの質問にいたったのでした。
でも、こちらの方もほかの場面で利用できそうなので、覚えておきます。 ありがとうございました。

お礼日時:2008/07/11 19:14

> これのspflagにiの名前を(iはID)足してIDごとのフラグ管理を行いたいのですが、


よくわかりませんが、
spflag={};
として、spflag[i]ではダメでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます、こんな感じです!
初期値を0にはできませんでしょうか?
0にしなくても処理はできますが、もし方法があるなら知っておいた方がいいかな?と思いまして。

お礼日時:2008/07/11 19:06

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