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

    私的良スレ書庫

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

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

    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
    901 : 897 - 2019/04/16(火) 16:55:54.13 ID:???.net (+59,-29,-26)
    ということで本題

    http://jsfiddle.net/u3zbswhk/

    いつもどおりjQueryを導入した(笑)

    131行 -> 96行 -> 83行
    902 : Name_Not - 2019/04/16(火) 17:30:35.23 ID:???.net (+0,-18,-2)
    速度てw
    903 : Name_Not - 2019/04/16(火) 17:43:34.66 ID:???.net (+157,+29,-4)
    >>901
    この状態で13押したら
    こうなるぞ
    失格
    でなおしてこい
    904 : Name_Not - 2019/04/16(火) 17:48:32.30 ID:???.net (+41,-17,-71)
    http://ics.media/entry/17451/
    > WAI-ARIAはHTML要素の属性を動的に書き換えなければならないため、生JSやjQueryで制御しようとすると、正直、骨が折れます。

    これ本当?
    生JSで大変なのは分かるけど、jQuery使っても簡単にならないの??
    905 : Name_Not - 2019/04/16(火) 17:49:41.33 ID:???.net (+69,+26,-1)
    >>903
    映ってねーぞバーカw
    906 : Name_Not - 2019/04/16(火) 18:08:35.17 ID:???.net (+39,-30,-76)
    >>904
    ■ピュアJSの場合
    要素.aria = 値;

    ■jQの場合
    要素.attr({ aria : 値 });

    ってのを、わざわざJS用意して書くじゃん?
    なんならこれやる前に、要素にアクセスする必要もある

    vueとかだと、それをHTML側に直に書けるから便利だねっつー話だと思う
    まあそれぞれフレームワーク毎に特殊な書き方するわけだけど
    907 : Name_Not - 2019/04/16(火) 18:29:51.50 ID:???.net (+72,+29,-14)
    >>885,888
    ここで聞いて大正解でした
    本当にありがとうございます
    908 : Name_Not - 2019/04/16(火) 18:47:09.71 ID:???.net (+63,+29,-19)
    >>906
    マジかー悩むなぁ
    まあ、じゃあvueでいいか。しばらく生きてるだろ
    909 : 897 - 2019/04/16(火) 18:48:53.13 ID:???.net (+53,-29,+0)
    >>903
    ワロタw いや失敬失敬。
    でもそこは本質的な所じゃないから後よろ!
    xとyの情報も持ってるからそれでできるはず!

    >>904
    相変わらず「脱jQuery」が目的になっちゃってる(感じがする)ダメなタイトルだなw

    これ2つの意味がある。
    1. ブラウザネイティブのDOM APIを使いましょう。
    2. DOM操作(DOM API含む)をするのをやめましょう。

    この記事は2みたいだけど、DOM操作をやめる = それが必要ないフレームワークを
    使いましょうってことだけど、まあ、そのフレームワークの導入も正直骨が折れるだろうねw

    で話を戻すけど、この人、頭がアプリ脳になってるんだと思う。
    作り方がね。アプリの作り方。要素にARIA属性をつけようと思ったら、
    その要素ごとにいちいちにコードを書かなきゃいけないと思ってる。
    要素ごとにいちいち書くよりもフレームワーク使ってパーツを作ったほうが良い。という発想。

    でもjQueryは特定のセレクタに対して横断的に処理を追加するもの。
    要素ごとじゃなくて、クラスごとに1個書けばいいだけなの。

    例えばリンク先のaria-checkedであれば、<button class="checked-button"> みたいに
    クラスをつけておけば、jQueryでそのクラスに対して横断的に、aria属性を書き換える
    処理を追加する。だから要素ごとにコード書く必要もないし、HTMLはシンプルになる。
    910 : 897 - 2019/04/16(火) 18:49:58.47 ID:???.net (+57,+29,-33)
    > 昔のコードはHTMLを組み立てるのに文字列を結合するというストイックなやり方でした。

    まあ、こんな事書いてるし、昔のコードがクソすぎるってだけなわけでw
    911 : Name_Not - 2019/04/16(火) 18:51:10.48 ID:???.net (+79,-30,+0)
    function(d){
    // 1から15までのパネル及びブランク(null)の位置関係を調べるための配列
    // 長さは4x4の16。座標(x,y)に位置する要素は、配列上ではpannels[x+y*4]に存在する
    const pannels = [];

    let container = null; // パズル本体

    // パネルをスライドさせる処理
    // x, y はパネルの座標でそれぞれ0以上4未満の整数
    function slide(elem, dx, dy) {
    const x = Math.max(Math.min(3, parseInt(elem.dataset.x) + dx), 0);
    const y = Math.max(Math.min(3, parseInt(elem.dataset.y) + dy), 0);
    elem.style.left = x * 25 + "%";
    elem.style.top = y * 25 + "%";
    elem.dataset.x = x;
    elem.dataset.y = y;
    }
    助言を受け、スライドパズルのソースのここまでをchromeのデベロッパツールから実行してみたのですが、どういう処理が行われているか確認するには、これをコンソールなどに出力してみるってことでしょうか
    912 : Name_Not - 2019/04/16(火) 19:03:53.12 ID:???.net (+96,+29,-17)
    >>911
    ステップインを使う
    これ分からないならもう止めたほうが良いぞ
    913 : Name_Not - 2019/04/16(火) 19:10:22.10 ID:???.net (+72,+29,-11)
    >>909
    間違ってるものをドヤ顔で晒して人様の手を煩わせておいて失敬失敬はないだろ
    914 : Name_Not - 2019/04/16(火) 19:47:00.17 ID:???.net (+70,+29,-6)
    >>912
    ステップ実行とステップインは違うってことですね
    近藤してましたが調べてみます
    915 : 897 - 2019/04/16(火) 19:48:22.28 ID:???.net (+8,-29,-302)
    >>904
    http://ics.media/entry/17451/
    > WAI-ARIAはHTML要素の属性を動的に書き換えなければならないため、生JSやjQueryで制御しようとすると、正直、骨が折れます。

    って書いてあったから、サンプル作ったよ。リンク先にある。gridLayoutとlistLayoutの切替部分
    http://jsfiddle.net/j3k94sz0/

    正直、ボタンでラジオボタンのようなものを作るから面倒なことになるんだが、
    そのお題で、汎用的なjQueryのコードにした。
    「切り替えボタン+関連する要素にボタン情報を伝える」汎用コンポーネント

    リンク先には
    > JSのロジックにはWAI-ARIAの一切の処理が入っていません。
    とか書いてあるが、HTMLにWAI-ARIAの処理(JavaScript)が入っていて
    思考の切り替えが必要になる。HTMLに埋め込まれたJavaScriptも「JSのロジック」とみなせば、
    「JSのロジック」にWAI-ARIAの処理が入ってるじゃんwってことになる。

    俺が書いたコードは「HTMLにはJavaScriptの一切の処理が入っていません」
    わずか6行のjQueryのコードで「ボタンによる切り替え」に対応している。
    もちろんこれが複数あっても対応できる。別のプロジェクトでも使えるだろう。

    っていうか、普通にラジオボタン使って作れば、もう少しわかりやすくできるんだがw
    916 : Name_Not - 2019/04/16(火) 22:57:40.00 ID:???.net (+72,+29,-9)
    >>911
    本家が懇切丁寧に説明してくださってるんで
    読みながら真似してみれば良いんでね?
    http://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints?hl=ja
    http://developers.google.com/web/tools/chrome-devtools/javascript/step-code?hl=ja
    917 : Name_Not - 2019/04/17(水) 00:23:02.46 ID:???.net (+32,-29,-5)
    unityに匹敵するjavascript用ゲームエンジンを作って欲しい。
    918 : Name_Not - 2019/04/17(水) 01:51:00.61 ID:???.net (+62,+29,-3)
    >>917
    よし、お前さんが基礎を作って旗を振るんだ
    919 : Name_Not - 2019/04/17(水) 09:03:23.40 ID:???.net (+33,-25,-3)
    unityは以前、javascriptが使えていたのに…。
    残念。
    920 : Name_Not - 2019/04/17(水) 09:41:06.61 ID:???.net (+42,+24,-2)
    誰かつくって
    921 : Name_Not - 2019/04/17(水) 09:43:00.90 ID:???.net (+56,+28,+0)
    >>919
    結構最近だよね
    922 : Name_Not - 2019/04/17(水) 11:17:14.20 ID:???.net (+1,-29,-23)
    htmlのonclickを使わず、idの取得だけでクリックイベントを作ることは出来ますか?
    923 : Name_Not - 2019/04/17(水) 11:31:26.70 ID:???.net (-7,-29,-11)
    >>922
    click()
    924 : Name_Not - 2019/04/17(水) 12:56:43.36 ID:???.net (-6,-29,-21)
    >>922
    Mouse鮻vent
    925 : Name_Not - 2019/04/17(水) 14:26:02.60 ID:???.net (+57,+29,-13)
    ロジック学んでいれば他の言語でも同じようにやれますか?
    926 : Name_Not - 2019/04/17(水) 14:41:23.59 ID:???.net (+75,+25,-14)
    じゃバスク版ユニティを作れ。
    >>948
    927 : Name_Not - 2019/04/17(水) 14:52:17.20 ID:???.net (+29,+1,-26)
    バスクってmsが発表した言語?jsと何の関係が?
    928 : Name_Not - 2019/04/17(水) 15:03:30.58 ID:???.net (+20,+0,-32)
    >>874-878
    前から配列内の要素を削除していくと、
    削除した瞬間に、後ろの要素が前にずれるから、バグる!

    だから、配列の要素の削除は、難しい
    929 : Name_Not - 2019/04/17(水) 15:51:28.39 ID:???.net (+8,-30,-117)
    >>876
    Ruby で作った。単純に、1文字ずつ比べる

    filepaths = %w(abcd ab ab abc abcd aby)

    index = nil
    catch( :exit ) do # 2重ループを、一気に抜ける
    filepaths.first.each_char.with_index do | char, idx |
    # p [ char, idx ]

    filepaths.each do | fp | # 1文字ずつ比較する
    throw :exit if char != fp[ idx ]
    end
    index = idx
    end
    end

    p index #=> 1。つまり、ab まで一致する
    930 : Name_Not - 2019/04/17(水) 16:02:22.62 ID:???.net (+24,-29,-44)
    >>911
    そんな、ややこしいものをやらなくて良い

    君がやるべきは、x から、2, 3 には行けるけど、右・下には行けない。
    こういうチェック

    0 は番兵。行けない部分に、壁を作って、判定を簡単にしている。
    プログラミングよりも先に、図を描くのが重要!

    0 0 0 0
    0 1 2 0
    0 3 x 0
    0 0 0 0
    931 : Name_Not - 2019/04/17(水) 16:10:37.69 ID:???.net (+33,-29,-34)
    >>929
    chromeでもfirefoxでもsafariでも動きませんでした。
    もしかしてあなた私より初心者なのでは?w
    932 : 897 - 2019/04/17(水) 16:49:19.07 ID:???.net (+10,-30,-290)
    >>930
    問題はそこではなくて、これはデータを1次元配列で持ってるのが面倒くさい原因
    2次元配列で持っていれば、別に番兵を作る必要もない。配列の範囲外は必ずundefined。
    Rubyと違ってa[-1]が配列の後ろから1番目なんて変な仕様はないから自然な番兵となる。

    もしくは直感と反するが
    0 0 0 0 0 0
    0 1 2 3 4 0
    0 5 6 7 8 0
    0 9 A B C 0
    0 D E F x 0
    0 0 0 0 0 0

    から上下の0を取り除いて
    0 1 2 3 4 0
    0 5 6 7 8 0
    0 9 A B C 0
    0 D E F x 0

    最初と最後の0を取り除いて(_ に置き換えてる)
    _ 1 2 3 4 0
    0 5 6 7 8 0
    0 9 A B C 0
    0 D E F x _

    1次元配列にして、連続する0を1個にする。
    1 2 3 4 0 5 6 7 8 0 9 A B C 0 D E F x

    このデータで、現在のパネルの、左右を+1/-1、上下を+5/-5として扱えば動くぞ。
    それを実装たのがこれだhttp://jsfiddle.net/gqvn87k5/

    >>913 ほれ、なおしたぞ。ドヤ?
    933 : Name_Not - 2019/04/17(水) 17:12:43.80 ID:???.net (+52,+29,-53)
    出たよrubyのクソ仕様w
    C時代の番兵でいろんなスレでアスペ荒らししてたのはRubyのクソ仕様が原因だったwww
    934 : Name_Not - 2019/04/17(水) 18:16:37.62 ID:???.net (+43,+20,-6)
    jsでゲーム作るならどんなのが?
    935 : Name_Not - 2019/04/17(水) 18:24:55.68 ID:???.net (+62,+29,-63)
    >>931
    本人ではないが、サーバサイドスクリプトがクライアントサイドで動くわけなかろう
    「サーバで動かせ」という意図ぐらいは察したらどうだ?
    936 : Name_Not - 2019/04/17(水) 18:49:54.62 ID:???.net (+33,+5,-4)
    nodeでも動きませんでした。
    せめて動くjs書けないのww
    937 : Name_Not - 2019/04/17(水) 18:57:56.93 ID:???.net (+56,+28,-5)
    Rubyと書いてあるじゃん
    まあJavaScriptのスレでRubyで答える方がおかしいんだけど
    938 : 897 - 2019/04/17(水) 19:06:15.77 ID:???.net (+57,+29,-20)
    しかもこういう用途に例外を使うとかいうクソ発想の持ち主w
    939 : Name_Not - 2019/04/17(水) 21:18:21.23 ID:???.net (+43,+25,+0)
    爆釣やな
    940 : 926 - 2019/04/17(水) 21:22:10.36 ID:???.net (+117,+29,-46)
    スレは、答えを書く所ではない。
    Ruby などの擬似コードで、考え方・ヒントを教える所

    それをヒントにして考える・コードを書くのは、質問者自身がやるべき!

    答えをコピペする奴は、進歩もしないし、どうにもならない
    941 : Name_Not - 2019/04/17(水) 21:26:39.17 ID:???.net (+70,+29,-11)
    >>940
    ruby書くとこじゃねえんだよ
    死ねや
    942 : 897 - 2019/04/17(水) 22:13:35.57 ID:???.net (+106,+28,-18)
    > Ruby などの擬似コードで、考え方・ヒントを教える所

    ダメなコードから学べるのは
    ダメなコード例です。
    943 : Name_Not - 2019/04/17(水) 22:22:10.95 ID:???.net (+46,+3,-5)
    >>940
    >Ruby などの擬似コードで、考え方・ヒントを教える所
    死ね
    944 : Name_Not - 2019/04/17(水) 22:47:48.66 ID:???.net (+56,+21,-40)
    2重ループ脱出には、catch, throw を使うのが定番。
    本を読んでないだろ?

    配列のインデックスが負数の場合は、配列を後ろから数えるのも定番。
    色んな言語を調べてないだろ?
    945 : 897 - 2019/04/17(水) 23:50:48.63 ID:???.net (+10,-30,-150)
    >>944
    そもそも2重ループなんてするものじゃないから(笑)

    filepaths = %w(ab abc abc abc abcd abc)

    index = (filepaths.first.chars.find_index.with_index do |char, idx|
    !filepaths.all? { |fp| char == fp[idx] }
    end || filepaths.first.length) - 1

    p index
    946 : 897 - 2019/04/17(水) 23:52:46.81 ID:???.net (+3,-30,-148)
    あ、filepaths の内容戻すの忘れてたw

    filepaths = %w(abcd ab ab abc abcd aby)

    index = (filepaths.first.chars.find_index.with_index do |char, idx|
    !filepaths.all? { |fp| char == fp[idx] }
    end || filepaths.first.length) - 1

    p index

    これもう少し簡潔にかけそうな気がしてるんだけど、
    すぐに思いつかない。
    947 : 897 - 2019/04/17(水) 23:54:42.95 ID:???.net (+57,+29,-22)
    jQueryが得意な人は、いろんなものが得意なんやで?w
    948 : Name_Not - 2019/04/18(木) 02:12:45.30 ID:???.net (+163,+29,-18)
    >>942
    jQueryばかり勧める人がよくいえたもんだな
    949 : Name_Not - 2019/04/18(木) 08:22:16.98 ID:???.net (+58,+30,+0)
    950 : 897 - 2019/04/18(木) 08:36:37.81 ID:???.net (+131,+29,-76)
    >>948
    jQueryを勧めるのはjQueryがふさわしいからであって、
    何もアプリを作る時にjQueryなんか勧めませんよ?

    ウェブでアプリ作ろうなんて人はめったにいませんからね。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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