のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,646,540人
昨日: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,-17,-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,-20)
>>906
マジかー悩むなぁ
まあ、じゃあvueでいいか。しばらく生きてるだろ
909 : 897 - 2019/04/16(火) 18:48:53.13 ID:???.net (+52,-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,+30,-18)
>>912
ステップ実行とステップインは違うってことですね
近藤してましたが調べてみます
915 : 897 - 2019/04/16(火) 19:48:22.28 ID:???.net (+8,-29,-301)
>>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 (+32,+4,-26)
バスクってmsが発表した言語?jsと何の関係が?
928 : Name_Not - 2019/04/17(水) 15:03:30.58 ID:???.net (+21,+1,-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,-43)
>>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,-35)
>>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 (+32,+4,-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 (+55,+20,-40)
2重ループ脱出には、catch, throw を使うのが定番。
本を読んでないだろ?

配列のインデックスが負数の場合は、配列を後ろから数えるのも定番。
色んな言語を調べてないだろ?
945 : 897 - 2019/04/17(水) 23:50:48.63 ID:???.net (+10,-30,-151)
>>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,-149)
あ、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,-19)
>>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 スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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