のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,490,851人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
701 : Name_Not - 2019/05/09(木) 23:41:37.84 ID:???.net (+72,+29,-7)
>>700
バブリングに反対などない
両j方対応している物を試しているだけだろう
いい加減、煽って情報を得るのは止めろ
702 : Name_Not - 2019/05/09(木) 23:44:16.66 ID:???.net (+91,+29,-28)
そもそも、「バグリングでもキャプチャリングでも親ノードで持てるんだが」は何の反論にもなってないな
この煽り癖は例の奴と判断した
もう回答はしない
703 : Name_Not - 2019/05/09(木) 23:44:17.08 ID:???.net (-1,-29,-4)
> バブリングに反対などない

> useCapture Optional
> Boolean 値で、

Boolean 値なんだよねw
704 : Name_Not - 2019/05/09(木) 23:45:11.18 ID:???.net (+20,+29,-43)
>>702
バグリングと親ノードで持てることの関係を言わないから
こういうことになるんやで?自業自得だ
705 : Name_Not - 2019/05/09(木) 23:46:16.44 ID:???.net (+57,+29,-16)
こいつはバグリングといってるから別物なんだろうよ
使い慣れない言葉を知ったかで使うからこうなる
706 : Name_Not - 2019/05/09(木) 23:48:11.80 ID:???.net (+126,+29,-23)
> そもそも、「バグリングでもキャプチャリングでも親ノードで持てるんだが」は何の反論にもなってないな

バグリング、クソワロタw
こいつバカやでwww
707 : Name_Not - 2019/05/09(木) 23:50:34.97 ID:???.net (+53,+29,-13)
うむ、引用元の>>700が糞バカだな。
>>692とか>>704とか、しつこいぐらいに間違えているぐらいだからな。
708 : Name_Not - 2019/05/09(木) 23:59:00.88 ID:???.net (+57,+29,-7)
引用されている事に気が付かず、墓穴を掘るとはね
709 : Name_Not - 2019/05/10(金) 00:11:24.30 ID:???.net (+57,+29,-28)
これ文体がいつもの人だし、jQuery信者っぽいね
今度から、バグリング君と呼ぼうか
710 : Name_Not - 2019/05/10(金) 00:11:58.82 ID:???.net (+0,-29,-7)
>>682
ファイルは、4つ同時に、並列でダウンロードするけど
711 : Name_Not - 2019/05/10(金) 00:12:28.39 ID:???.net (+57,+29,-38)
JQuery君かつローカル君かつバグリング君か
もう去ればいいのに…
712 : Name_Not - 2019/05/10(金) 00:18:57.79 ID:???.net (+57,+29,-6)
彼は体をはって失笑ネタを提供してくれているのだろう
713 : Name_Not - 2019/05/10(金) 07:06:57.90 ID:???.net (+57,+29,-17)
煽ってくるからもう相手しちゃだめだよみんな
714 : Name_Not - 2019/05/10(金) 13:31:44.81 ID:???.net (+83,-30,-130)
document.querySelectorAll('.class').forEach(function(item){
 item.addEventListener('click', function(){
 }, false);
});

window.addEventListener('click', function(evt){
 if (evt.target.className == 'class') {
 }
}, false);

itemがいっぱいあるときはどっちがいいですか?
715 : Name_Not - 2019/05/10(金) 13:47:23.12 ID:???.net (+7,-29,-46)
要素を取得して、その要素の値を使ってあれこれしたいってとき結構多いじゃないですか
なのでquerySelectorAllで取得してループさせてっていうのをやるわけですが
querySelectorAll().forEachがどうみても便利なのにforEachは使っちゃダメみたいな雰囲気なのですが
何か理由があるんですか??
716 : Name_Not - 2019/05/10(金) 13:57:55.07 ID:???.net (+57,+29,-13)
forEach使っちゃダメってどんな文脈で言われたの?
717 : Name_Not - 2019/05/10(金) 14:16:11.36 ID:???.net (+42,-29,-20)
>>714
下は class="class foo bar" とか書いてある時に
動かないので同等のコードになっていない
718 : Name_Not - 2019/05/10(金) 14:16:55.60 ID:???.net (+38,-29,-10)
>>715
querySelectorAll() に forEach が必ずあるとは限らない
719 : Name_Not - 2019/05/10(金) 14:17:52.55 ID:???.net (+63,+29,-21)
>>714
itemが後から増えるかどうかにもよる
どっちがいいかは、速度とメンテナンス性、何を重視するかによる
720 : Name_Not - 2019/05/10(金) 14:20:40.09 ID:???.net (+9,-30,-105)
>>714

$('.class').on('click', function() {
});

$(document).on('click', '.class', function() {
});

itemがいっぱいあるときは後者が速度とメモリ効率が良い
itemが増減する時は後者がメンテナンス性が良い
後者は少しタイプ数が多い。その程度。
一般的には後者がいい

jQueryを使わない場合は知らん
721 : Name_Not - 2019/05/10(金) 15:42:52.66 ID:???.net (+3,-30,-92)
filter関数について
function isBigEnough(value) {
return value >= 10;
}

var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
というコードがあるとき(上記はMDNのサンプルコードです)
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);の行を
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough());としたらエラーが出てしまいました
関数を呼び出す時は 関数名() で呼び出すのではないのですか?
722 : Name_Not - 2019/05/10(金) 15:51:28.70 ID:???.net (+4,-29,-13)
()を付けると即実行されて、その戻り値がfilterに渡されるからエラーになる
関数を渡すには関数名だけで
723 : Name_Not - 2019/05/10(金) 16:15:13.31 ID:???.net (+72,+30,-55)
実際はしらんが>>714の上はプロセスがいっぱい起動してるようなイメージがある
リソース的にはちょっとなあという感じ

>>717の指摘通り複数classを適用してると
判定部分が複雑になって毎回クリックのたびにそこを通ると思うと
ちょっとなあという感じ

まあどちらにしても問題になるような次元じゃないと思うけどね
724 : Name_Not - 2019/05/10(金) 18:45:31.88 ID:???.net (+0,-29,-14)
>>718
PolyfillでOK
725 : Name_Not - 2019/05/10(金) 18:48:37.84 ID:???.net (+16,-30,-255)
>722
ありがとうございます
重ねて質問すみません
()を付けると即実行されて、
というのはどういうことでしょうか?

>filter() は、与えられた callback 関数を配列の各要素に対して一度ずつ呼び出し、
>callback が真と評価される値を返したすべての要素からなる新しい配列を生成します。(MDNから)
isBigEnough() と、()を付けると
filter()がcallback関数を呼び出す前に実行されてしまうんですか?

ググっていて下記サイトを見つけたのですが、その中で
JavaScriptの「コールバック関数」とは一体なんなのか
http://sbfl.net/blog/2019/02/08/javascript-callback-func/
>関数を値として扱うには後ろのカッコをつけずに書きます。
とあるのですが、isBigEnoughにカッコを付けてはいけないのも同じ理由でしょうか?

変な質問ですみません
たぶん、コールバック関数が何なのか解っていないんだと思います
「filter()の引数にはコールバック関数を指定する、コールバック関数なので()を付けてはいけない」
くらいの認識でも良いんでしょうか?この解釈は間違っていますか?
726 : Name_Not - 2019/05/10(金) 18:49:30.10 ID:???.net (+3,-29,+0)
>>717
classListに変更すれば良い
727 : Name_Not - 2019/05/10(金) 18:55:54.17 ID:???.net (+4,-29,-4)
728 : Name_Not - 2019/05/10(金) 19:13:12.35 ID:???.net (-1,-29,-4)
>>718
そんなん[...querySelectorAll()].forEachでええやろ
729 : Name_Not - 2019/05/10(金) 19:14:13.89 ID:???.net (-1,-29,-7)
まちがえた[...document.querySelectorAll()].forEachだった
730 : Name_Not - 2019/05/10(金) 19:36:32.48 ID:???.net (+5,-30,-173)
>>725
> たぶん、コールバック関数が何なのか解っていないんだと思います

少なくともJavascriptにおいては、ただの関数です。
var tadanokansuu = function() {
console.log('hello, world!');
};
ただの関数を呼び出すとき、以下のように()つけて呼び出しますね?
tadanokansuu();
//=> hello, world!
一方、世の中には以下のような、引数として関数を取る関数があります。
var kansuuwotorukansuu = function(nanikanokansuu) {
nanikanokansuu();
};
このような、引数として関数を取る関数に、引数として渡す関数、これを「コールバック関数」と呼びます。
kansuuwotorukansuu(tadanokansuu);
//=> hello, world!
↑の例ではtadanokansuuがコールバック関数『として』kansuuwotorukansuuに渡されています。

このように、「コールバック関数」という特殊な関数があるのではなく、引数としてコールバック(関数)を取る関数kansuuwotorukansuuがある、kansuuwotorukansuuに引数としてtadanokansuuをコールバック(関数)として渡す、などと考えればよいと思います。
731 : Name_Not - 2019/05/10(金) 20:02:55.90 ID:???.net (+67,+29,-31)
>>718の話自分にはよくわからないのですがどういうことですか?
見つからなかったら空の配列をまわそうとしてなんかエラーが出たりするってことですか?
732 : Name_Not - 2019/05/10(金) 20:08:02.37 ID:???.net (+31,-29,-3)
733 : Name_Not - 2019/05/10(金) 20:30:26.20 ID:???.net (+50,+18,-3)
>>732
ああ、対応してないブラウザ(IE)があるってことですね
ありがとうございます
734 : Name_Not - 2019/05/10(金) 23:00:31.89 ID:???.net (+57,+29,-18)
そういう細かいこと考えるのが嫌だからjQueryを使う
735 : Name_Not - 2019/05/10(金) 23:44:12.41 ID:???.net (+57,+29,-45)
もうそんな時代も終わるだろ
っていいたいところだがIEがなかなかしぶとい
IE11ならだいたいのネイティブコード動いたとおもったが
forEachはだめなのか?まだまだ世話のかかる厄介なやつだな
736 : Name_Not - 2019/05/10(金) 23:51:45.42 ID:???.net (+53,+25,-16)
edgeにIEモードってことはMSもそろそろIE畳むつもりはありそうだが
737 : Name_Not - 2019/05/11(土) 00:14:44.95 ID:???.net (+23,-29,-41)
JSの文字列置き換えって正規表現によるreplaceとsplit+joinしか選択肢ないんですか?
どちらも(;´゚д゚`)エエーって感じなんだけど
738 : Name_Not - 2019/05/11(土) 00:19:17.44 ID:???.net (+3,-30,-23)
739 : Name_Not - 2019/05/11(土) 00:19:47.83 ID:???.net (+48,+18,-2)
>>737
他に例えば?
740 : Name_Not - 2019/05/11(土) 01:15:53.40 ID:???.net (+4,-30,-48)
>>739
正規表現である必要がないので
"2019-01-01".replaceAll("-", "/")
こんなんでいいと思うんです
741 : Name_Not - 2019/05/11(土) 05:36:03.78 ID:???.net (+3,-30,-117)
Ruby では複数置換でも、ブロックを渡して、変形できる。
$& はマッチした部分

puts "1a23bc4d".gsub( /\d+/ ) { '<' + $& + '>' }
#=> <1>a<23>bc<4>d

JS でも同様に、replace に、callback 関数を渡して、変形できる

function replacer( matched ) { return '<' + matched + '>' }

var str = "1a23bc4d".replace( /\d+/g , replacer );
742 : Name_Not - 2019/05/11(土) 05:51:30.96 ID:???.net (+3,-30,-188)
Ruby のNokogiri とか、Selenium WebDriver などは、
要素の発見を、1つだけのものは、find_one とか、
複数みつかるものは、find_all など、関数名を分けている

find_oneで、1つなら該当する要素を返すが、0個なら、nil を返すとか、
find_allは、配列を返すとか、ややこしい

jQuery だけは、すべて配列で返すから、0, 1, 複数のすべてで、同じ書き方ができる!

だから、jQueryを使ってないと、バグだらけで、開発費が何倍も掛かる。
リリースしてからも、しょっちゅうバグるから、やり直しばっかり!

机上デバッグでも、手間が掛かる。
ごちゃごちゃと何をやっているのか、説明できない
743 : Name_Not - 2019/05/11(土) 07:09:23.03 ID:???.net (+94,+29,-30)
jQueryはJavaScriptのラッパーだろ
やってることはその域を超えない
置換にしてもJavaScript同様無駄の多い処理をしてるはずだ
744 : Name_Not - 2019/05/11(土) 07:23:23.82 ID:???.net (+75,+29,-54)
>>743
それを言ったら、高級言語はすべてアセンブラのラッパーだ
ラッパーは素晴らしい。冗長で分かりづらいコードを
わかりやすくしてくれる。

jQueryはJavaScriptのラッパーだ
つまりそれは素晴らしいものということだ
745 : Name_Not - 2019/05/11(土) 07:25:18.78 ID:???.net (+63,+29,-30)
> 置換にしてもJavaScript同様無駄の多い処理をしてるはずだ

その仕事を、人間がやるか
コンピュータにやらせるかだ。

人間が楽になれば、コンピュータの仕事は増える
コンピュータの仕事を増やすことこそ、正しい姿だ。
746 : Name_Not - 2019/05/11(土) 07:27:27.24 ID:???.net (+36,-30,-145)
いやいや正規表現エンジン通すとか配列に分割してまたくっつけるとか
そういうのがイラネっていってるだけだろ
例えば
pos = str.indexOf(search);
while(pos > -1) {
 str = str.substring(0, pos) + replacement + str.substring(pos + 1);
 pos = str.indexOf(search, pos);
}
こんなコードをネイティブで実装してないのか?って話じゃねーの
747 : Name_Not - 2019/05/11(土) 09:55:19.82 ID:???.net (+62,+29,-10)
>>746
頼むから、バグリング君に関わるのは止めてくれ
彼に話が通じるわけないだろう
748 : Name_Not - 2019/05/11(土) 11:37:03.45 ID:???.net (+99,+29,-158)
不特定多数のDOM要素を相手にしてごちゃごちゃやるのなら
それをいい具合に扱えるjQueryが最高というのは分かるが
今どきそれはナンセンス
コンポーネントにわけて1つ1つの機能の担当範囲を分けて
柔軟なことがしたいときはShadowDOMだったりHoudini系のAPIを使って
中を詰めていくのが基本
そういった技術にjQueryは適さない
749 : Name_Not - 2019/05/11(土) 12:04:50.56 ID:???.net (+112,+29,-123)
>>748
> コンポーネントにわけて1つ1つの機能の担当範囲を分けて
> 柔軟なことがしたいときはShadowDOMだったりHoudini系のAPIを使って
> 中を詰めていくのが基本

そこに「顧客が本当に必要だったもの」の観点は有るのかい?
顧客にそうしてくれと言われたのかい?
750 : Name_Not - 2019/05/11(土) 12:38:20.15 ID:???.net (+111,+30,-91)
>>749
君はどうか知らないが俺は言われたものを作るロボットではないから
自分の作りたいものを自分がいいと思うように表現するためにWebを使ってる
勿論どうして作りたいかの部分に顧客が含まれることはあっても
作りたいものを作りたいから作ってるってことが俺にとっては一番大事だから

あとここはお仕事お助け板ではないからね
純粋にJSを学びたい人のためのスレ
あんまり仕事でどうこうっていうのを持ち込むのは良い気はしないね
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について