のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,490,749人
昨日: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
    601 : Name_Not - 2019/05/08(水) 18:13:42.84 ID:???.net (+122,+24,-31)
    そう?
    引数が文字列か数字かオブジェクトか関数
    みたいな関数造ったときとか、わりと必要なんじゃね?
    判別
    602 : Name_Not - 2019/05/08(水) 18:25:18.34 ID:???.net (+40,+29,-97)
    お前らGoogle.ioの発表見たか?
    ついにAIがWebサイト経由でフォームとか使って予約とかしてくるようになるそうだな
    つまりフルCanvasとかメチャクチャなサイトは駄目ということだ
    勿論10年後までにはそういうのもなくなるとは思うけどな
    603 : Name_Not - 2019/05/08(水) 19:30:33.61 ID:???.net (+120,+29,-17)
    >>601
    神々によって天罰を与えられる原因になった建築物使ったら?
    オプショナル関数呼び出しが仕様策定中
    604 : Name_Not - 2019/05/08(水) 19:35:52.56 ID:???.net (+98,+29,-1)
    >>600
    これはさすがに三流思考
    605 : Name_Not - 2019/05/08(水) 19:40:03.12 ID:???.net (+78,+4,-31)
    >>603
    それでもやっぱり判別は必要なんじゃね?

    例えばreplaceって第一引数が文字列か正規表現
    第二引数が文字列か関数になるでしょ?
    そういうの
    606 : 598 - 2019/05/08(水) 19:57:01.81 ID:???.net (-10,-30,-174)
    >>599
    この呼び出し方だとTypeError: evt.target.id is not a functionとなるようです

    >>600
    clickイベントなのですがリスナーは1つしか使わないで
    event.target.idで処理をするか判別してるため
    関係ないidも渡される可能性があります
    if (event.target.id == "foo") {
     foo(evt);
    } else if (event.target.id == "bar") {
     bar(evt);
    }
    (switch含めて)こうすれば問題はないし
    処理をわけずベタ書きすれば問題はないのですが読みにくく長くなりすぎるので…
    607 : Name_Not - 2019/05/08(水) 20:10:50.98 ID:???.net (+64,+20,-4)
    >>603
    オプショナル関数呼び出しってどんなの?
    608 : Name_Not - 2019/05/08(水) 20:13:01.72 ID:???.net (+62,+29,-169)
    >>606
    グローバル関数なら、グローバルオブジェクトのプロパティとして参照可能
    だが、HTMLにjsコードを埋め込むようなものなので、id属性値に関数名を埋め込まない方が良い

    foo,barに何をさせるつもりか知らんが、一元管理するなら、処理の実行条件があるはずで、それを元に処理分けを行う
    WeakMapで要素ノードに関数を結びつけれるほうほうもあるが、個別処理を一元管理するのは相反するものを強引に繋げているようなもので、他に良い実装があると思う
    609 : Name_Not - 2019/05/08(水) 20:34:57.71 ID:???.net (+41,+15,-24)
    >>606
    あーごめん
    event.targetのidに関数が文字列として入ってるのか
    勘違いした


    …すげーなその作り
    610 : Name_Not - 2019/05/08(水) 20:37:04.34 ID:???.net (+57,+29,-20)
    いや関数であるとは限らんぞ
    何れにせよevalしなきゃならんのはどうかと思うが
    611 : 600 - 2019/05/08(水) 21:08:00.32 ID:???.net (+80,+29,-39)
    >>601
    > 引数が文字列か数字かオブジェクトか関数
    > みたいな関数造ったときとか、わりと必要なんじゃね?

    俺が書いたことを、お前が真似して言うな

    >>604
    何も言い返せないなら書き込む意味ないですよw
    612 : Name_Not - 2019/05/08(水) 21:11:05.46 ID:???.net (+83,+29,-16)
    また来たかローカル君
    普段は回答者側なんだろうな
    613 : 600 - 2019/05/08(水) 21:13:27.54 ID:???.net (+1,-30,-166)
    >>606
    > clickイベントなのですがリスナーは1つしか使わないで
    > event.target.idで処理をするか判別してるため

    それが間違いだからそれを直せば?

    jQueryならこれでいいだろ?
    $('#foo, #bar, #baz').click(function() {
     ・・・
    });

    処理を分けたいなら3つかけばいい。
    $('#foo').click(function() {
     ・・・
    });
    614 : 600 - 2019/05/08(水) 21:14:07.78 ID:???.net (+51,+17,+0)
    >>612
    嫌なら見るな
    615 : 600 - 2019/05/08(水) 21:19:02.85 ID:???.net (-1,-29,-50)
    IDごとに専用のリスナー関数を作る・・・正解

    IDが違うけど、なぜかリスナー関数をまとめて
    せっかくまとめたのに、IDごとの専用の関数に分岐させる・・・無駄なことをしている
    616 : Name_Not - 2019/05/08(水) 21:20:24.43 ID:???.net (+64,+29,-17)
    少なくとも識別子を処理に組み込むのはマズイと思う
    617 : Name_Not - 2019/05/08(水) 21:39:58.51 ID:???.net (+61,+29,-23)
    >>589-590
    お返事遅れて申し訳ないです。
    ありがとう、こういう書き方をするのですね。
    ランダムパスワードのチェックをしようとしていました。
    勉強になりました。
    618 : Name_Not - 2019/05/08(水) 22:40:48.64 ID:???.net (+57,+29,-10)
    このガイジはすべてのプログラムを一人で書くんだと思ってるんだろうな
    619 : Name_Not - 2019/05/08(水) 22:47:03.26 ID:???.net (+57,+29,-30)
    他人が読んでもわかるようなコードをかこう

    なんでこう書いたんですか?今までそうやってきたから
    などというのはやめよう
    620 : Name_Not - 2019/05/08(水) 23:12:55.16 ID:???.net (+68,+29,-5)
    >>605
    有効性の判定とその他の判定を一緒くたに話すのはどうかと思うよ
    621 : Name_Not - 2019/05/08(水) 23:42:08.88 ID:???.net (+13,-29,-95)
    そういうのは、Ruby on Rails など、フレームワークが使うメタプログラミングだけ

    動的に関数名が増える場合に、define_method で、動的に関数定義する。
    この場合は、事前に関数名が書けないから

    Lodash とか、誰かのライブラリに、
    動的に関数定義する、デザインパターンは無いのか?
    622 : 598 - 2019/05/09(木) 04:16:36.70 ID:???.net (+20,-30,+0)
    レスありがとうございます
    jQueryは使ってないのですが

    window.addEventListener("click", function(evt){
     if (evt.target.id == "foo")...
     if (evt.target.id == "bar")...
    },false);

    ではなく

    document.querySelector('#foo').addEventListener('click', ...
    document.querySelector('#bar').addEventListener('click', ...

    のようにしろということでしょうか?

    そうするとwindow.onloadで読み込ませないと動かないようですが
    window.addEventLister('load', function(){
     document.querySelector('#foo').addEventListener('click', ...
     document.querySelector('#bar').addEventListener('click', ...
    }, false);

    こんな感じにすればよいのでしょうか?
    623 : Name_Not - 2019/05/09(木) 05:23:54.07 ID:???.net (+11,-29,-83)
    >>616も言ってるが固有情報のidはやめたほうがいい
    classNameのようなnodesならいいんじゃね?
    じゃないとnodesに片っ端から適用するセンス0のマヌケコードになる
    windowに1つだけイベントつけて発火した都度に発生源から調べると
    ifを通す分cpuには負担だが微々たるもんだし
    メモリには優しい設計だしリークも起きにくい
    624 : 621 - 2019/05/09(木) 07:58:13.21 ID:???.net (+62,+29,-65)
    Event Listener は、漏れなら、1つにまとめないで、わかりやすい所で、複数個に分ける。
    まあ、要素が親子関係なら、1つにまとめるかも

    1つにまとめると、分岐処理が出来るから、コードが複雑になる
    625 : Name_Not - 2019/05/09(木) 11:12:47.18 ID:???.net (+57,+29,-21)
    初心者は、役割ごとに関数を分けない。
    やってる処理で関数を分けようとする
    626 : Name_Not - 2019/05/09(木) 11:15:05.52 ID:???.net (+4,-30,-74)
    >>622
    jQueryを使え。onloadなんか使わずとも

    $(document).on('click', '#foo', function() { ... })
    $(document).on('click', '#bar', function() { ... })

    ってかけばいい
    627 : Name_Not - 2019/05/09(木) 11:24:33.06 ID:???.net (-1,-29,-24)
    scriptタグはbody閉じタグ直前に書く
    もしくはdefer属性を使う
    セオリーを守れば今時jQueryとかいらんし
    628 : Name_Not - 2019/05/09(木) 11:32:18.46 ID:???.net (+25,-2,-18)
    jQueryが解決するのは

    > コードが複雑になる

    これ
    629 : Name_Not - 2019/05/09(木) 11:42:05.65 ID:???.net (-2,-30,-34)
    >scriptタグはbody閉じタグ直前に書く
    lint脳だとheaderに書きたがるからな
    630 : Name_Not - 2019/05/09(木) 11:50:00.98 ID:???.net (-1,-29,-25)
    scriptタグをbody閉じタグ直前に書いても
    動的に要素が追加される場合には対応できないんだよな
    631 : Name_Not - 2019/05/09(木) 11:56:19.71 ID:???.net (+57,+29,-40)
    jQuery使え云々はおいといて別にload時に追加すればよくね?
    なんとなく生理的に嫌なコードなのはわかるよ
    jQueryほどじゃないけど
    632 : Name_Not - 2019/05/09(木) 12:11:49.43 ID:???.net (+0,-29,-19)
    >>622
    イベント名をloadではなく
    DOMContentLoadedにするのがいいんじゃないかな

    loadだと時間かかっちゃうっしょ
    633 : Name_Not - 2019/05/09(木) 12:18:30.82 ID:???.net (+39,-29,-53)
    そういや昔無限に円周率を表示するページが有ったけど、
    DOMContentLoadedっていつ発動するの?
    634 : Name_Not - 2019/05/09(木) 12:24:35.50 ID:???.net (+98,+30,+0)
    635 : Name_Not - 2019/05/09(木) 12:31:47.97 ID:???.net (+154,+29,-29)
    >>634
    あー、やっぱり永久に発動しないんだ。

    ってことはさ、普通のサイトでも僅かな時間とはいえ、
    画面は表示されてるけど、ページが全部読み込み終わってないって
    タイミングが有るわけだから、やっぱりheadに入れるのがいいんじゃないの?
    636 : Name_Not - 2019/05/09(木) 12:42:18.92 ID:???.net (+50,+2,-5)
    >>635
    意味が分からんな
    </body>手前に置いた方が遅いとでも思ってるのか?
    637 : Name_Not - 2019/05/09(木) 12:43:40.09 ID:???.net (+69,+29,-69)
    発生するでしょ
    ずっと同期的に書き加えてたらブラウザがハングアップしかねないし表示が更新されないかもしれないから
    連続表示というのは間隔を開けるのが当たり前でその隙間で発生するでしょ
    それにもし仮にJS実行が途切れないとしたらイベントループが回らないんだからハンドラが実行されるはずがないでしょう
    638 : Name_Not - 2019/05/09(木) 12:51:40.09 ID:???.net (+14,-29,-96)
    >>636
    永遠に円周率を表示するサイトっていうのは、
    </body>が永遠に来ないってことだよ。

    もっとも該当のサイトはただのテキストページだったけどね
    でもHTMLでずーっと</body>が登場しないページは作れるし、
    巨大なページで格安SIMで速度制限されてるときとかさ、
    ページの上の部分は表示されてるけど、終わりはまだ来てないってことあるでしょ?
    639 : Name_Not - 2019/05/09(木) 12:51:50.28 ID:???.net (+15,-29,-38)
    >>635
    コンテンツ表示からjs実行までのタイムラグを減らすなら、該当JTMLの直後に<script>を書くだろうに、なぜ<head>がいいという結論になるんだ?
    640 : Name_Not - 2019/05/09(木) 12:53:30.93 ID:???.net (+12,-29,-86)
    >>637
    > 発生するでしょ
    DOMContentLoaded = DOMを全部読み込み終わってから発動する
    = DOMを全部読み込み終わってないんだから発動しないよ

    DOMContentLoaded が発生するまで
    ブラウザはレンダリングしないわけじゃないんだから
    ブラウザはハングアップしたりしない。
    641 : Name_Not - 2019/05/09(木) 12:54:16.93 ID:???.net (+13,-29,-38)
    >>638
    HTML出力途中なら、DOMContentLoadedも発火しないと思うが、試してみたのか?
    642 : Name_Not - 2019/05/09(木) 12:56:01.64 ID:???.net (+4,-29,-45)
    >>639
    そりゃ「該当HTML」が複数あった場合、
    それぞれに<script>を置くのか?って話だよ

    例えば、同じclassの要素が複数あったら
    全部の要素の後に<script>を書く?多重読込してしまうなw
    643 : Name_Not - 2019/05/09(木) 12:56:44.50 ID:???.net (+2,-29,-38)
    >>641
    > HTML出力途中なら、DOMContentLoadedも発火しないと思うが、試してみたのか?

    だからそう言ってるじゃんw
    644 : Name_Not - 2019/05/09(木) 13:00:04.55 ID:???.net (+35,-29,-40)
    >>642
    何で何度も実行させる発想になるんだよ
    読み込みたい要素を全て出力した後に一回書けばいいだろ
    それぞれの要素出力直後に実行させたいなら、Mutation?bserverを使え
    645 : Name_Not - 2019/05/09(木) 13:01:35.32 ID:???.net (+2,-29,-9)
    >>643
    </body>手前でもほぼ同じだろ
    </body>の後にタグを書いてるのか?
    646 : Name_Not - 2019/05/09(木) 13:02:14.56 ID:???.net (+71,+29,-51)
    >>644
    自分で書いたことを忘れてない?

    > コンテンツ表示からjs実行までのタイムラグを減らすなら、
    そうコンテンツ表示からjs実行までのタイムラグを(極限まで)減らしたい。

    > 読み込みたい要素を全て出力した後に一回書けばいいだろ
    読み込みたい要素を全て出力するまでタイムラグがある
    647 : Name_Not - 2019/05/09(木) 13:03:30.88 ID:???.net (-1,-29,-13)
    >>645
    だから、</body>の手前で<script>を書けって言ってるのは俺じゃないって。
    648 : Name_Not - 2019/05/09(木) 13:05:30.53 ID:???.net (+11,-29,-60)
    >>646
    DOMContentLoadedよりは早いだろ
    比較論を語ってるのに「0じゃないだろ」なんて極論を語るな
    極論を語るなら、MutationObserverを使え
    649 : Name_Not - 2019/05/09(木) 13:20:01.49 ID:???.net (+2,-29,-25)
    そのMutationObserverはどこで読み込むのでしょうかねぇ(苦笑)
    650 : Name_Not - 2019/05/09(木) 13:21:02.23 ID:???.net (+33,-29,-63)
    >>648
    お前さ、DOMContentLoadedを勘違いしてるだろ?
    DOMContentLoadedは、DOM要素が一つ一つ現れる毎に
    発生するものだと思ってるだろ?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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