基本的に、特定のクラス名を持つすべての要素を見つけて、別のクラスに切り替えようとしています。これを元のクラス名に戻す別の関数があります。ここでのonclickでトリガのMy機能です:上記のクラスを持つすべての要素のCSSクラスをJavascriptで変更します。
function showEventsAppliedTo() {
var myObj = document.getElementsByClassName('notApplied');
while (myObj.length >= 0) {
myObj[0].className = 'mblListItem notAppliedOut';
}
AppliedToButton.set('style', 'display:none;');
EventListingButton.set('style', 'display:block;');
}
私はこのmyobj [0]は未定義であるというエラーを取得しています。なぜこれが起こっているのか?
メモとして、私たちはDojoを使用しています。したがって、関数の最後の行です。私はjQueryで簡単にこれを行うことができますが、私たちはそれを使用していないので、別のフレームワークを読み込むことは意味がありません。
ご協力いただきありがとうございます。アビシェーク・ミシュラからヘルプに
EDIT
おかげで、私はこのループを処理していますどのように変更され、私が望ましいものですJUST道場、でそれを行う方法を発見しました。コードは次のとおりです。
function listingClassToggle() {
dojo.query(".notApplied").addClass("notAppliedOut");
dojo.query(".notApplied").removeClass("notApplied");
}
私の以前の解決策よりもはるかに単純でコードがずっと軽いです。あなたのすべての協力に感謝します。私はこれが他の誰かを助けることを望む。
おそらくdojoのforEachを使ってmyObjをループすることができます。それで、ゼロをチェックする必要はありません。 http://dojotoolkit.org/reference-guide/1.7/dojo/forEach.html。また、 'dojo.query( '。notApplied');' –
のようなCSSベースのクエリの 'dojo.query'は、私が使用している方法よりも速く実行するのだろうか?以下の答えはそれを修正しましたが、私はこの方法も検討します。その問合せメソッドはgetelementよりも良いかもしれません – chazthetic
dojoの 'query'はブラウザ間でより互換性があると私は信じています。 'getElementsByClassName'は良いですが、IE 7と8では動作しません;)http://caniuse.com/#search=getElementsByClassName –