う〜ん。忙しい〜ぞ。でもちょっとだけ。
document./*@cc_on @if(@_jscript) attachEvent('on' + @else @*/addEventListener(/*@end @*/ 'click', function (event) { var target = event.target || event.srcElement; if(target.nodeName != 'INPUT' || target.form.id != 'Test1' || target.name != 'a'){ return false; } console.log(target); var select = target.form.foo; console.log(select); var i = (select.selectedIndex + 1) % 4; select.options[i].style.display ? select.options[i].style.display = '' : select.options[i].style.display = 'none'; },false);
Jscriptの条件付きコンパイル『/*@cc_on〜』なんだけど、やっぱり見難い。しかも1行が長くなる。
OKWaveに登録している関係で、そちらから見ると、ちょっと見栄えが悪くなってしまった。
そこで最近、1行が短くなるようにしようと思っています。
//@cc_on document./*@if( @_jscript ) attachEvent('on' + @else @*/ addEventListener( /*@end @*/ 'click', function ( Event ) { 〜 }, false);
var target = event.target || event.srcElement;
せっかく、条件付きコンパイルを利用するなら、これもやってしまいたい。
IEだと、event.targetを評価してからだから、きっと遅くなる。(まじどうでも良いことだけど)
var target = event./@if( @_jscript ) srcElement @else@*/ target /*@end@*/;
いつも自分でも悩むときがある。ターゲットの要素の特定は、.id のチェックだけで良いのではないかと・・・。
if(target.nodeName != 'INPUT' || target.form.id != 'Test1' || target.name != 'a'){ return false; } if(target.id != 'hoge' ) return false;
こういうときにこそ、with なんだろうなぁ〜
var i = (select.selectedIndex + 1) % 4; select.options[i].style.display ? select.options[i].style.display = '' : select.options[i].style.display = 'none';
select.options[i].style.display = select.options[i].style.display ? '': 'none'; with( select.options[i].style) display = display ? '' : 'none'; vat tmp = select.options[ ( select.selectedIndex + 1 ) % 4 ].style; tmp.display = tmp.display ? '' : 'none';
いやっ!つっこみどころが違った。これがおかしい!
select.options[i].style.display = '' ;
これもよく迷う。こうすべきかどうか・・。
var select = target.form.foo; var select = target.form.elements[ 'foo' ]; var select = document.getElementById('xxx'); //もしくは、最初から外側で代入か・・。
わかりやすく!&サンプルだし!
それは痛いほどよくわかるんだ!
俺なんか投稿してからいつもミスに気づく。
かなりおっちょこちょい。
マジ無駄に回答が多いよなぁ〜
教えてgooで、ひどい突っ込みいれると、削除されるんだよね。
だけどつっこまれて、進歩すると思う。
そんなことより、仕事たまり過ぎ!どうする俺!?