2017-07-06 307 views
0

私はCSSクラス "active"と "inactive"の間で動的に前後に変更したいいくつかの要素を画面上に持っています。だから大丈夫、私は書くことができます:には、asp.net cssclassのクラスを追加/削除/置き換える簡単な方法があります

if active then 
    foo.cssclass="active" 
else 
    foo.cssclass="inactive" 
end if 

しかし、これらの要素もそれらに他のクラスを持っています。私は、クリーンなコーディングの原則は、アクティブ/非アクティブを設定して他のクラスが現在そのオブジェクトにどのようにアタッチされているかを知る必要がないようにする関数を必要とすると思います。だから私が本当に欲しいのは次のようなものです:

foo.cssclass.remove("inactive").add("active") 

これはいいファンタジーですが、CSSCLASSは文字列です。これを行う簡単な方法はありますか?

私は、文字列を操作する関数を書くのは大変な作業ではないと思います。だから、これを行うにはクリーンで簡単な方法がありますか?あるいは私自身の関数を書く必要がありますか?

+0

あなたの実際のコードを投稿してください。あなたは何を試しましたか? – maxspan

+1

アフファイク残念ながら良いスタイルでこれを行う方法はありません... *サムスンにMS * – jAC

+0

@maxspan私は何も試していません。私はこれを行うための組み込み関数があるかどうかを尋ねています。私は機能を試したと言っているわけではありませんし、私は期待された結果を得ていません:私はそのような機能があるかどうかを尋ねています。 – Jay

答えて

0

非常にエレガントしかし、それは動作するはずない:

foo.CssClass = foo.CssClass.Replace("inactive","").Trim() + " active"; 

またはその逆

foo.CssClass = foo.CssClass.Replace("active","").Trim() + " inactive"; 
+0

私は現在の状態が何であるかを確かめることができません。 cssclassがすでに "foo inactive"に等しいとします。今度は2番目のステートメントを実行します。私は "foo in inactive"を得るでしょう。また、最初のものでも最後のものでもよいため、「アクティブ」、つまり前後のスペースを検索することはできません。 – Jay

関連する問題