元スレ+ JavaScript の質問用スレッド vol.132 +

みんなの評価 :
801 = :
確かに今から変更しても
よほど変なコードを書いていない限り問題も出ないでしょうし
変えて欲しいですね
802 = :
そもそも関数のときからホイスティングが嫌なら宣言文じゃなく宣言式使って変数に代入すりゃいいだけだったんだ。
クラスだってせっかく文・式両方用意しといて何やってんだと思った。
確かに機能的には困るものではないが、ソースファイル上のコードレイアウトが無意味に制限されるよね。
あほに合わせたせいで。
関数でもクラスでもいいけど、詳細な実装は下に置いといて、上から抽象度の高いコードをサッと読めるってレイアウト好きなやついるだろ。
もしかしたらダメだと言うやつもいるかもしれんがその是非は問題じゃない。なんでそれを言語仕様で制限されんとならんのじゃということ。
803 = :
今日なんか嫌なことあったの?
804 = :
勢いというか思想というか、が強すぎてちょっと引くけど
>詳細な実装は下に置いといて、上から抽象度の高いコードをサッと読めるってレイアウト好きなやつ
はい
好きです
806 = :
あのーjQueryってDOM操作用ライブラリなんですけど。
最近は調子にのって盛り込んだ本分と関係ない便利機能はコアから取り除いていってるんですけど。
807 = :
調子に乗って盛り込んだわけじゃなくて、昔はCSSのアニメーションとかなかったし
Ajax周りの互換性がブラウザごとになくて、必要だから入れたんだよ
808 = :
>詳細な実装は下に置いといて、上から抽象度の高いコードをサッと読めるってレイアウト好きなやつ
いや、普通に考えると、1クラスで1ファイルにして、
それをimportするのが普通なので、そもそもやり方が悪いとしか
809 = :
まあ確かにimport使って話だなw
でもimportはIEは言うまでもなく、Firefoxは現在の59は対応してないし(次の60から対応する)
Androidも最新以外は対応してないという状況だから
スマホ・タブレット対応するならきついだろう。
だからといって諦める必要はなく、そこででてくるのがbabelなわけ
babelを使ってビルドしてしまえば古いブラウザでも対応できる
810 = :
それが普通だとは思いませんでした
みんなインポートっていうのを使ってるんですか?
811 = :
俺はずっと前からモジュール使ってるな。
メンテナンス性をあげようと思ったらファイルに分けるのが普通だし、
昔から <script>を複数書いてたでしょ?
それも多くなりパフォーマンスが気になりだしたから
ファイル結合から始まって、最終的にモジュールにして
webpackとかでビルドするようになったな
812 = :
勉強してみます
ありがとうございました
813 = :
lodashのdelay関数がsetTimeoutより優れている部分は何ですか?
814 = :
setTimeoutが発動する前に同じ種類のsetTimeoutを実行しようとしたら
前の分はキャンセルする
という処理をしたいのですが
一番いい方法はどういうものでしょうか?
lodashのdelayはそういう機能を追加してるんじゃないかとも思ったのですが
ほとんどsetTimeoutと同じっぽいですね
816 = :
ちょとラップして書けばいいだけじゃん
timeridと種類関連付けてmapで持っておけばいいだけなんだから
817 = :
>>813
lodashのdelayの優れている点は引数を持たせられること
>>814
そういうときは、lodashのthrottleかdebounceを使うんだよ
タイマー自体に持たせるんじゃなくて
多すぎるイベント(タイマー含む)を間引く関数を併用する
818 = :
間引く髪の毛も無いクセに・・・
819 = :
「表のセルをクリックしたらその列のヘッダーセルの色を変える」とかjquery使わないと面倒くさくない?
820 = :
>>816
ラップしたものを書いたら、たしかにすぐに書けました
>>817
>引数を持たせられること
なるほど。引数を持たせられるっていうのはなんとなく関数型っぽい気がします
>throttleかdebounce
debounceを見たら、欲しいのはまさにこれでした
ありがとうございました
821 = :
>>819
> 「表のセルをクリックしたらその列のヘッダーセルの色を変える」とかjquery使わないと面倒くさくない?
面倒くさいだろうけどお題が小さいw
jQuery使って数行なら、jQuery使わなくても、その2倍ぐらいで書けるので
面倒くさくない、頑張ればできるって言いそうw
同じ2倍でも1000行と2000行じゃ大きな差なんだけどね
作ってみた
http://jsfiddle.net/rmhzz1c4/
jQueryで6行、jQuery使わないならその2倍で12行ぐらいかな?
(コードゴルフ的なのは禁止で)
822 = :
classで切り替えるとして、これでいいの?
document.getElementById('targetTd').addEventListener( 'click', function(e){
var children = e.target.parentNode.getElementsByTagName('th')
for(var i=children.length-1; 0<=i; i-- )
children[i].classList.toggle('highlight');
}, false );
ほとんどの場合<th>は<tr>の最初にあるだろうから以下のほうが短い
document.getElementById('targetTd').addEventListener( 'click', function(e){
e.target.parentNode.firstElementChild.classList.toggle('highlight');
}, false );
823 = :
特定のtdではなく特定のテーブルや全テーブルの全部のtdだったら
documentやtable elementに対してaddEventListenerして、1行目でe.target.tagNameを見ればいいな
824 = :
>>822
動かん
ぱっと見でもクリックした列を判定するコードがないし
なんでchhildrenの後ろから探索してるのかも分からん
(コピペプログラマに見える)
classList.toggleしかしてないので同じ列をクリックするたびに
反転するだろうってのが容易に想像できる
e.targetがtdだとして、そのparentNodeはtrだ。
複数テーブルが有った場合は、まあもともとの要件には
入ってないが、対応しているとなお良い
これでいいの?って仕様を聞いてるのかと思ったら
書いたコードにバグがないの?って意味かよw
825 = :
>>822-823は行
行じゃなくて列なら確かにめんどい
colspanやrowspanがどうなってるかわからん
1つでもあれば盛大にズレるんで
確実なところでtd.dataset.に何か目印つけるな
これが一番健全だと思う
826 = :
これも元の要件に書いてないが、クリックしたらその列のヘッダーセルの
色を変えるとして、その他の列のヘッダーセルの色は解除だろって思う。
そのコードも入ってないな。
827 = :
>>826
rowspan/colspanは元の要件に入ってないけど使われたら全部瓦解するよな
対応必要じゃないんか?
829 = :
>>827
> 対応必要じゃないんか?
これは要件が決まらないと実現不可能だから
対応のしようがない
830 = :
このように設計が重要かつもっとも時間がかかるものなのである
コーディングの時間の多寡を考えてはいけない
831 = :
時間がかかるのは設計じゃねーよw
要件だろが
832 = :
>>829
えっ
833 = :
>>832
えじゃねーよw
834 = :
jqueryがDOM操作で大活躍!できるクソ曖昧な要件出してjqueryをageましょう
835 = :
客から言われたわけでもないのに、勝手に仕様を
盛りだくさんにしていく馬鹿っているよなw
836 = :
>>833
えっ だって要件不確定で実現不可能とか言っちゃうならこれ
>その他の列のヘッダーセルの色は解除だろ
「クリックした列の列の背景色をトグル切り替え」かもしれないじゃん
837 = :
俺の要件推測は良い推測!
おまえの要件推測は悪い推測!
jq以前の脳の構造上の欠陥問題
838 = :
動かないのは推測以前だろw
839 = :
俺よりダメなやつがいるから俺は悪くない!
だそうです
840 = :
要件が曖昧なら、推測で作ってもいいよ。
だけど、動かないのは論外だから
841 = :
っていうか文句言う前に、動くもの作れよ。
良い・ダメ以前の問題。
物を作れなきゃ、論外
842 = :
もっとちゃんと泳がせたほうが面白かったのに
843 = :
っていうか、>>819は
> 「表のセルをクリックしたらその列のヘッダーセルの色を変える」とかjquery使わないと面倒くさくない?
「その列のヘッダーセルの色を変える」と明らかに書いているのに、
>>822は、その行を変えているわけで、問題自体を理解してない。
この問題は「列」だからこそ難しいと言ってるのに
その前提を満たしてない
844 = :
うんうんそうだね>>822君は勘違いだねー
「実現不可能」wwww
845 = :
はい、ついでに行クリックで行のヘッダを変えるやつ
http://jsfiddle.net/pztcepet/
$(document).on('click', 'tr', function() {
$(this).addClass('selected').siblings().removeClass('selected')
});
846 = :
>>844
「実現不可能」っていうのはrowspanやcolspanの話だって気づいてるか?
勘違いしてるのはあんたじゃない?
847 = :
>>822 と同じ仕様ならこんな感じかな。thが最初になくても良い
(正確には複数のtable対応だけど、jQueryだと一つに対応するのも複数に対応するのも手間が変わらない)
http://jsfiddle.net/uwf0xu71/
$(document).on('click', 'tr', function() {
$(this).toggleClass('selected');
});
848 = :
>>822はお題を間違えている上に
間違えたお題用のHTMLじゃないと動作確認ができず
そのHTMLすら書いてないんじゃ、どうしようもないなw
誰も検証できない。せめてお題ぐらい間違えるな。
もしくは動くものをjsfiddleなりで用意しろ
849 = :
あんまりいじめすぎるなよ
問題勘違いしただけだろ
まあ>>822も行なら簡単すぎだなって所で気づくべきだが
850 = :
>>847をアロー関数を使って一行になおしてみた
$(document).on('click', 'tr', e => $(e.currentTarget).toggleClass('selected'));
普通に関数を一行にしたほうが短かったw
$(document).on('click', 'tr', function() { $(this).toggleClass('selected') });



類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.122 + (1004) - [97%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.135 + (1002) - [97%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.130 + (974) - [97%] - 2016/10/26 14:18
- + JavaScript の質問用スレッド vol.142 + (984) - [97%] - 2020/8/27 19:15
- + JavaScript の質問用スレッド vol.112 + (1001) - [97%] - 2013/11/27 16:46
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.122 + (116) - [97%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.133 + (1001) - [97%] - 2018/6/8 10:45
- + JavaScript の質問用スレッド vol.134 + (1001) - [97%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.130 + (1001) - [97%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.136 + (1001) - [97%] - 2019/1/8 11:30
- + JavaScript の質問用スレッド vol.142 + (926) - [97%] - 2019/12/23 13:15
- + JavaScript の質問用スレッド vol.137 + (1003) - [97%] - 2019/3/26 11:46
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.138 + (1004) - [97%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
トップメニューへ / →のくす牧場書庫について