1 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 15:57:40.26 ID:TS5TGpUB0.net] !extend:checked:vvvvvv:1000:512 JavaScript を自ら学ぶ人のための質問スレッドです。 >>2-5 のテンプレを読んだ上で質問してください。次スレは>>950 が>>2 の「次スレの立て方」を元に立ててください ■質問を書く上で (1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。 (2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。 (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など) (3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。 (4) 常に自発的に調べる心構えを持ってください。 具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。 わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。 (5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。 (6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。 ※必ず「問題の事象が再現されること」を確認してください。 必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。 (7) サンプルコードに HTML が含まれる場合は validator.w3.org/ で [Check] してみてください。 (8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2 の質問テンプレートを活用してみてください。 (9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。 (10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。 ■前スレ JavaScript の質問用スレッド vol.124 https://mevius.5ch.net/test/read.cgi/tech/1636525464/ VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
52 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 20:07:02.96 ID:KWOOnIlI0.net] getAttributeとか?
53 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 20:23:24.42 ID:FTTWPGH/0.net] element.style.hoge=fugaしたらstyle属性値も連動するんだから 書き換える前に取得しとくしかなくね?
54 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 21:15:03.99 ID:SMoCQy1h0.net] >>51 ・直後にscript書いて書き換え前にstyleを取得しておく ・Fetch APIでhtmlをGETしてCSPでscript無効化してparseしてstyleを得る
55 名前:デフォルトの名無しさん [2022/09/04(日) 22:38:54.08 ID:FoFuUBY00.net] >>52-54 ありがとうございました
56 名前:デフォルトの名無しさん (ワッチョイ d52c-6nWD [180.52.202.152]) mailto:sage [[ここ壊れてます] .net] >>50 開発者が、どのフレームワークを使っているのか分からないけど、 例えば、Ruby on Rails, Stimulus を使っているなら、 [Rails]Stimulusを使ってtableの行全体<tr>をリンクにする(jQuery不要) https://zenn.dev/necocoa/articles/rails-stimulus-tr-link これのhref_controller.js に、 export default class extends Controller { toHref(event) { // 既定の動作を取り消す event.preventDefault() // data-href 属性に入っている、URL を取得する const href = event.currentTarget.dataset['href'] // URL を設定する window.location.href = href } }
57 名前:56 mailto:sage [2022/09/04(日) 23:14:48.88 ID:9ocqxCfk0.net] >>56 // URL を設定する window.location.href = href みたいに直接、window.location.href に設定しているけど、 この場合、Ctrl + クリックや、 右クリックメニューから新しいタブで開くことは出来ないのかな?
58 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 23:26:45.19 ID:RdtW7bNN0.net] >>50 遷移する時にdata-targetが使われることを見込んでこれでいけるかもね for (let tr of document.querySelectorAll('tr.〇〇〇')) tr.dataset.target = '_blank' ※〇〇〇はtrのクラス名で
59 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 18:27:01.95 ID:XvLqNcU6H.net] document内の要素で、textContentに'xxx'を持つクラスを取得するにはどうしたらいいですか? 全部の要素総当たりでtextContent調べるしかないんでしょうか?
60 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 18:51:10.83 ID:ng2JfbNn0.net] >>50 JavaScriptコードが不明なので正確な回答は不可能 >>58 の想定通りなら、おそらくその実装が一番楽 tr要素ノードにclickイベントハンドラでwindow.openする実装と仮定して、下記実装が考えられる 1. elementdataset.hrefでリンク先アドレスを得る 2. createElementでa要素ノード生成 3. replaceChildで(A)のDOMになるよう調節 4. tr要素ノードの仕掛けられたであろうclickイベントハンドラをevent.stopImmediatePropagation()で封印 (A) <tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”> <td class=”〇〇〇”><a href=”★リンク先アドレス★”></a></td> <td class=”〇〇〇”><a href=”★リンク先アドレス★”></a></td> </tr> window.open()なんてレガシーコード書きたくないからあえて
61 名前:a要素を使っているが、 イベントを横取りできるなら、既存イベントハンドラと同じコードにしても良い [] [ここ壊れてます]
62 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 19:18:18.86 ID:ng2JfbNn0.net] >>59 XPath式を使えば、textContentを使わなくて済む https://jsfiddle.net/kb5e740f/
63 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 19:25:28.71 ID:ng2JfbNn0.net] >>61 テキストノードを子に持つ要素ノードを捕捉するコードにすればよかった https://jsfiddle.net/kb5e740f/1/
64 名前:デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.180.164]) [[ここ壊れてます] .net] プログラミング初心者でJavaScriptを勉強してます。 メンバ変数A、メソッドBを持つクラスがあり、メソッドBの中で変数Aを活用(Aを用いた処理やAの変更)したいのですが、 Aを引数としてBに渡して返り値として受け取るのと、Bの中で直接this.Aと記述して処理するのは何か違いがありますか? メソッドBに別の変数を渡す可能性があるなら前者でないといけないのでしょうが、そうでなければ後者の書き方でよいでしょうか?
65 名前:デフォルトの名無しさん (ワッチョイ 6501-vbgY [60.85.61.123]) mailto:sage [[ここ壊れてます] .net] >>63 this.Aは全てのインスタンスメソッドで参照できる this.Aはインスタンスを参照可能なスコープ上で参照可能 仮引数AはメソッドBの関数スコープ外から参照不可能
66 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:11:15.04 ID:8NMkvrFG0.net] Ruby で書くと、 initialize は、constructor class A def initialize @x = 0 end def f_1 @x = 1 end def f_2( num ) @x = num end end p a = A.new #<A: @x=0> a.f_1 p a #<A: @x=1> a.f_2( 2 ) p a #<A: @x=2>
67 名前:デフォルトの名無しさん [2022/09/07(水) 19:17:44.81 ID:GIiuva0od.net] >>64 それ何にも疑問の解決になってないだろう
68 名前:デフォルトの名無しさん [2022/09/07(水) 20:26:24.25 ID:LU0OXBc/0.net] >>66 ↓のsetAとcalcAの違いを聞いてるんじゃないのか? class Foo { constructor (a) { this.A = a; } setA (a) { this.A = calc(a); } calcA (a) { return calc(a); } } わかっているらしいあなたが回答すれば済む話だが
69 名前:デフォルトの名無しさん [2022/09/08(木) 00:18:00.64 ID:rIQlC2lz0.net] すいません。以下の様な状況でfuncCからfuncBまたはB'が呼ばれる状況を考えていました。B'のほうが楽な気がして。そもそも意味不明な質問だったら申し訳ないです… ``` class Foo{ varA; // varAの値はよそから取得 funcB (a){ //aに対する処理 return a;} funcB' (){ //this.varAに対する処理 } funcC(){ ans = funcB(this.varA); または funcB'(); ans = this.varA; } }
70 名前:65 mailto:sage [2022/09/08(木) 07:17:36.21 ID:eI1uoUaK0.net] Ruby では、>>65 に書いたように、 def f_1 @x = 1 end みたいに、クラス内のインスタンスメソッド・f_1 内で、 インスタンス変数・@x を使えるので、一々、引数で渡す必要がない
71 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 19:40:45.35 ID:6QKcdu8L0.net] オブジェクト指向の一般的な話としては、クラス内の関数であればクラス内のメンバはいじっても問題ないと思う。 ただ、「どこの関数がこのメンバを触ってるのかわからない」ってほどクラスが巨大化するなら、もはやそれはたちの悪いグローバル変数そのものなので設計からおかしい。
72 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 22:51:00.93 ID:D/mmzJCP0.net] >>68 一つ一つのコードの意味を理解して、一つ一つのコードでなぜをそれを使うのか、と自問して答えを出せば、自ずと答えが出てくる 質問していない部分で突っ込みどころが多すぎて、「何も考えてないんだな」と思わせられる https://jsfiddle.net/qem7cLyf/ ・なぜ 全ての関数は返り値を持たないのか? ・なぜ Foo1#funcB は静的関数ではないのか? ・なぜ Foo1#funcC,Foo2#funcC は返り値ではなく、グローバル変数に演算結果を格納したのか? ・なぜ Foo2#varA の初期化にコンストラクタの引数を使わないのか? こういう質問全てにこたえられるぐらいに考えられないと良いコードはかけない https://jsfiddle.net/s27mxepn/ ・可能な限り、変数のスコープはせまくあるべき ・可能な限り、関数は参照透過性を持つべき 今後、インスタンスプロパティを拡張する予定があるならclassを使うべきだし、そうでないなら静的関数で十分 >>64 で示した挙動の違いだけで十分に判断できる
73 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 23:10:43.06 ID:DGEh14TYr.net] それがプログラミング初心者に投げつける言葉かよ・・・ そういう知識や判断力もゆくゆくは必要だけども物事には順序ってもんがあってまだその域ではなかろう マウントが取りたいだけならもっと近いレベルの相手にやんなよ
74 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 23:23:08.03 ID:xrpQvLAzM.net] >>63 いいと思うよ というかBに汎用性を持たせるのは微妙
75 名前:デフォルトの名無しさん [2022/09/09(金) 09:56:50.51 ID:Rq87TVpoa.net] this.Aで書いた方が手っ取り早いことが多い気がしたのですが、そちらでもいいけどスコープに注意しないとバグの要因になる、グローバル変数を濫用しないようにというのと相似形の似たような話という認識でいいでしょうか。 下手したら必然性なく両者を混在させてしまったりしそうなので注意したいと思います。参照透過性とか言葉自体知りませんでした… 参考になりました。ありがとうございます。
76 名前:デフォルトの名無しさん [2022/09/09(金) 11:06:49.13 ID:hB1+BppPd.net] >>74 今は>>70 の理解でいいと思うよ 今の時点であまり詰め込んでもしょうがないし >>71 みたいなののせいで萎縮しないでね
77 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 19:12:54.25 ID:0zkp1JmC0.net] >>72 > 物事には順序ってもんがあってまだその域ではなかろう 順序が大切なことには同意 ダメ出しがたくさんあるのは「学習の順序」が間違っているから いろいろと学習を飛ばしてコードを書いており、その質問をする域に達していない 初心者だからこそ、もっと基礎的な課題から取り組むのが現実解だと俺は思う 今までの受け答えを見る限り、付け焼刃で知識をつけているように俺には見える > マウントが取りたいだけならもっと近いレベルの相手にやんなよ マウントを取りたいわけじゃない
78 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 20:14:57.93 ID:n8dQNxep0.net] だから、オブジェクト指向とかプログラミングは、Ruby から始めるべき。 JavaScript(JS)みたいなややこしいもので、デザインパターンを学ぶべきではない 改訂2版 Ruby逆引きハンドブック の1冊だけで、かなりのモジュール・ライブラリの使い方も分かる 同じページ数でも、JSなら、文法だけで終わる。 20年以上のJSの歴史を追っかけて行くから、文法だけでもRubyの5倍ぐらいある だから、こういう言語へ手を出したらダメ。 Rubyist は、JSなどをコピペで済ます。 深い所までやらない。分量的に切りがない
79 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:48:49.86 ID:1NdnS3vZ0.net] 学習の順序とか提示せずに「何も考えてない」と切り捨てるのはマウンティングに入らないんですか?
80 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 06:13:53.00 ID:Cpvx7Vnj0.net] 回答者相手にマウントとってる人に真面目に答えるだけ無駄か そんな暇があったら、質問者に回答すればいいのに
81 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 09:58:22.29 ID:aLnVTfHzr.net] 君は高圧的な正しさで初心者を殴ってるだけ 人にものを教えるのには向いてないと思うよ
82 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:01:57.14 ID:Cpvx7Vnj0.net] >>80 5chはそういうものと思っていたが、それがこのスレの流儀なら気を付ける だが、回答者に高圧的だったり、回答者にマウントをとる人も是正されるような公平な世界であってほしいね
83 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:48:27.08 ID:DabBJhVCr.net] 具体的にどの発言に対して言ってるのかわからんけど そういう何か言い返さないと気がすまないって気持ちは心の中にしまっておいた方がいいんじゃないかな
84 名前:デフォルトの名無しさん (スップ Sd33-A6fq [49.97.111.223]) mailto:sage [[ここ壊れてます] .net] 自分の過ちを認めると負けたみたいでプライドが傷つくから 俺も悪かったけどお前らも悪いから引き分けだよねということにしたい心理の表れ
85 名前:デフォルトの名無しさん [2022/09/11(日) 20:15:23.24 ID:yDUj5jeF0.net] 元の配列を関数内で空にしたいけどうまくいきません 100と表示されてしまったので空になっていませんでした。 配列は参照渡しなので元の配列も書き換えられると思ったんだけど どうやれば関数内で元の配列を空にできますか?returnは使いたくないです。 let a_list = [100,200,300]; test(a_list); function test(b_list){ b_list = []; } alert(a_list[0])
86 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 20:29:51.41 ID:bqV48/aB0.net] >>84 function test(b_list) { b_list.length = 0 }
87 名前:デフォルトの名無しさん (ワッチョイ 6910-V+uT [180.12.82.129]) [[ここ壊れてます] .net] >>85 できました ありがとうございます
88 名前:デフォルトの名無しさん [2022/09/12(月) 09:29:51.85 ID:ptOOOLgwr.net] b_list = []; が何故ダメかというとb_listを空にしてるんじゃなくて b_listに新しい配列を代入してるだけだから ということは覚えておこう
89 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 01:20:03.32 ID:93J4lVSi0.net] ブラウザで動かすとき、グローバルスコープでの demo って名前は何かある? この名前の関数作ってボタンの onclick から呼び出そうとしたら関数未定義のエラーになる。 別の名前にすると呼び出せる。
90 名前:デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.97.207]) mailto:sage [[ここ壊れてます] .net] タイポかスコープの勘違いとかじゃないの? コンソールでdemo関数定義して実行したら普通に動いたけど
91 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 10:32:57.61 ID:UxdKoKVd0.net] >>88 再現可能なコードを出してみたら? https://ja.stackoverflow.com/help/minimal-reproducible-example
92 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 15:04:58.71 ID:i+SKzCkA0.net] >>90 こんな感じだけど、ちょっと分かってきた。 全体貼ろうとしたらセキュリティチェックかなにかに引っ掛かって書けないから、scriptタグの中身と body の中身だけ。 function demo() { alert('DEMO'); } <form> <input type="button" name="demo" value="DEMO" onclick="demo()"> </form> この onclick にとっての demo は多分 form内の input要素の demo になるんだね。 スコープがこの form になると。
93 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 15:06:34.97 ID:i+SKzCkA0.net] エラーは未定義関数じゃなく、demo is not a function だった。
94 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 17:05:20.97 ID:bbK6e07Hd.net] thisとthis.formがスコープに入る仕様だそうな https://qiita.com/hakatashi/items/40fbedf61a3dd79f21fc 有効に使う機会よりも謎の挙動にどハマりするケースの方が多そう
95 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 18:38:15.96 ID:UxdKoKVd0.net] >>91 window.demoかaddEventListenerを使ってみては? 後者がベター
96 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 08:59:26.24 ID:oCqDdJBP0.net] 回答もらった途端にいなくなる
97 名前:質問者多いな [] [ここ壊れてます]
98 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 17:53:11.47 ID:hlHjM9NA0.net] こんにちは ブラウザから、ローカルのファイル(画像など)を「関連付けされたソフトで開く」というのはできますか? HTMLの<a href=#></a>だと、ブラウザ(Chrome)内で開いてしまいますが、これを別の画像ビューアで開きたいです
99 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 20:26:11.45 ID:oCqDdJBP0.net] >>96 参考情報 https://akaki.io/2021/url_scheme_hijack
100 名前:デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]]) mailto:sage [[ここ壊れてます] .net] ありがとうございます 「カスタムURLスキーム」を調べてやったみましたが、ローカルのファイルを指定ができません(画像ビューアは開くがファイルが開かない) JavaScriptの質問ではないので恐縮ですが、どうやって指定できますかね? https://qiita.com/kojimadev/items/74100c8557a92939ef69 例えば上のサイトを参考に、画像ビューアをhogeでレジストリ登録して下のようにすると、画像ビューアだけ起動してファイルは見つからなかったと出ます(hoge:file:///C:...などもダメ) <a href="hoge:C:/tmp/sample.jpg"></a>
101 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 22:44:18.29 ID:Xyg4q6vF0.net] >>98 違ってるかもだけど、Windowsだったらパスの区切り文字は/じゃなくて\または¥じゃないのかな で、\は制御文字として扱われるからエスケープして\\にしないとダメとか
102 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 23:02:16.56 ID:adbpU9F00.net] >>98 アプリの方もURLスキームでの起動に対応してないとだめなんじゃない? URLスキームはその URLの書式をアプリ独自に決めてあって、アプリはその書式でアクションや対象を判別して動作するように作られてるんだと思う。 とりあえず与えられた引数が分かるテストアプリを見繕って hoge として登録してみたら何か分かるかもよ。
103 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:54:22.37 ID:bvSP9gLaH.net] Xhrで非同期通信するサーバーサイドのファイル(api.php)の中に登録されてる関数を実行することって出来るかな? api.phpのfunction hoge()を実行するって感じ
104 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 17:40:38.15 ID:mWLza3X30.net] >>101 リクエストのハンドラがその関数を呼べばいいだけじゃない?
105 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 18:17:20.20 ID:tI414gt60.net] >>101 ん? フレームワークも何も使ってないならそもそも該当のphpファイルを指定するから その中で実行したい事を書けば良いだけでは?
106 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 06:40:09.61 ID:+dFS1Lme0.net] if (a==b){} と書くべき所を、 間違って if (a=b){} と書いたら、 a<>b な値を入れても true が返ってくる 何が起きているんでしょう?
107 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 06:51:04.23 ID:PuLzlRQU0.net] >>104 a=bの評価値はb bがtruthyならifの次の文が実行される
108 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 11:19:00.04 ID:4XenNUmUa.net] bが0以外なら{}が実行される。
109 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 01:45:20.86 ID:sarICcZm0.net] >>105 >>106 それじゃifにする意味がない状態だったんですね ありがとうございました
110 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 05:56:13.16 ID:BavO7XJlH.net] uBlockで要素取得した時の名前が###contentsです これをTampermonkeyのJSで要素getするにはどうしたらいいでしょうか? getElementById、getElementsByTagName、getElementsByClassName、querySelectorAll等ではだめでした
111 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 12:03:03.14 ID:qg4xQu9m0.net] >>107 条件の中にあえて代入を入れるケースは無くはない。 if (result = func()) ... みたいな感じとか。 これは比較してるんじゃなくこういうこと。 result = func(); if (result) ... 比較と組み合わせて if ((result = func()) == 100) ... みたいな書き方もある。 メリットは単に短く書けるということもあるし、別の言語も含めれば while ((line = fgets(fp)) != EOF) ... みたいな、代入と比較が一緒じゃないと書き方的に面倒になる部分に使う。
112 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 12:59:50.47 ID:QXtRAkax0.net] >>108 getElementById('contents') or querySelector('#contents')
113 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 13:20:03.60 ID:C0rWwrYjH.net] >>110 なるほど、#つけたらいけました ありがとうございました
114 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 15:12:09.85 ID:MJUQgOR60.net] >>106 0だけがfalsyなわけではないはず https://262.ecma-international.org/13.0/#sec-toboolean >>109 代入と組み合わせることですっきり書ける場合があるよな whileは割と使ってる
115 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 21:55:34.73 ID:1vPPjI2Y0.net] whileって原始的かつ結構直感的だから使いやすいよね
116 名前:デフォルトの名無しさん [2022/10/23(日) 10:06:21.98 ID:6Nh0kUN40.net] <style id="test"> @media screen and (min-width:751px){ #aaa{ width:700px; } } @media screen and (max-width:750px){ #aaa{ width:100%; } } </style> <スクリプト> let sheet = document.getElementById("test").sheet; let st = sheet.cssRules[0].selectorText; alert(st); </スクリプト> このようなmedia screen付きのcssのselectorTextを取得したいんだけど このようにやってもundefinedになってしまいます。どうすれば取得できますか? media screenがなければちゃんとselectorTextは#aaaと取得できるんだけど
117 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 11:43:18.26 ID:hW6qdPXA0.net] console.dirでsheetの中身を覗いて探せば見つかるかと
118 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:29:44.52 ID:l4Ll+vUb0.net] iPhone6などの古い環境のSafariで、ES6以降の各ES(ES2022等)のどこまでサポートしているか、というのはどのように確認すればよいでしょうか? iOSは12で、UAではSafari Webkit 604.1 となっています。 ESも毎年更新されてPCや現行スマホなら問題なく表示できますが、サポートの終わった古い端末でも表示させるにはどの機能がNGかを確認したいのですが・・・ iOSバージョンやブラウザバージョンを指定して、それがどこまでサポートしているかが分かるサイトや、実際の端末を使ってどの機能がNGかテストするとか、PC上でデバッグ可能(エラー表示)なエミュレータなどあれば教えていただきたいです。
119 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:34:31.24 ID:sfEqSuvv0.net] MacBookを買いましょう
120 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:44:23.51 ID:YzYXhWAT0.net] Can I use のサイトとか、npm のbrowserslist とか?
121 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:55:32.04 ID:l4Ll+vUb0.net] >>118 ありがとうございます。 Can I useのサイトで各ESxxxを検索して概ねサポートされる範囲が分かりました。 Safari 12だとES2020の一部からサポートされない機能があるので、そこら辺が境界ぽいことが分かりました。
122 名前:デフォルトの名無しさん [2022/10/23(日) 17:46:05.51 ID:6Nh0kUN40.net] >>115 cssRules[0].cssRules[0].seletctorTextとすることでできました ありがとうございます
123 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 22:47:10.94 ID:VafCOtMO0.net] JavaScriptは大変難しい言語です。Rubyの難易度を2、Cの難易度を5、C++の難易度を8にすると、 JavaScriptの難易度は12ぐらいあると思います。 このコーディングガイドはそんなJavaScriptの深みに嵌まらないようにするためのJavaScriptの書き方を規定したものです。 初級者1のための物ですので、わかってやっている人に好きにやってく
124 名前:ださい。 このコーディングガイドは絶対に従わなければならないものではありません。 私は一切強制はしませんし、初級者が従わなければならないという義務もありません。採用するしないはみなさんの自由です。 禁止編 JavaScriptには安易に使用してはいけない機能があります。 下記の機能は、それぞれの機能を使っても良い、または、使うべきであるという理由を説明できない限り、使用してはいけません。 [] [ここ壊れてます]
125 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 23:16:49.94 ID:Sn3QmQ+W0.net] >>121 中途半端に@raccyの記事をコピペした意図は何? https://qiita.com/raccy/items/bf590d3c10c3f1a2846b
126 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:00:55.86 ID:IMqCQD810.net] ラッシーこそだよ。欄版は。
127 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:02:07.20 ID:IMqCQD810.net] マンタリーな、シェシェ。 ぐーむ菜素図。i-ku
128 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:02:49.43 ID:IMqCQD810.net] 天ら万重も近し。
129 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 02:28:40.06 ID:iqiTxlhy0.net] >>123-125 日本語でOK
130 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 14:16:06.20 ID:S5n6e8jb0.net] ファイルを読み込んでArrayBufferから配列へbyteデータにしたいです。 <input type="file" id="file"> <script> let fileInput = document.getElementById('file'); fileInput.onchange = () => { var fileReader = new FileReader(); fileReader.onload = function(e) { var ary = new Uint8Array(fileReader.result); } }; これでaryに数値が代入されているんですが 選んだファイルが約100,000kb程のサイズなんですが 処理後のaryのサイズが約1600,000kbとなってしまいます。 なぜ大きくなってしまうのでしょうか? 同じサイズになるようにするにはどこを訂正するといいですか?
131 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 15:28:48.49 ID:S5n6e8jb0.net] すいません勘違いだったようです。
132 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:11:46.89 ID:jIOTtTPX0.net] 初心者です、関数を配列オブジェクトに入れて findでオブジェクトを取得して、そのオブジェクトの中の関数を呼び出すといったことがしたいです 初心者むけのネット記事なんかを見て組んだのですが、エラーが出てしましいます。 今のソースはこんな状態なんですが、間違っているところはありますでしょうか? struct = [ {hoge:huga, func:functionA}, {hoge:hage, func:functionB} ] callfunction(check){ var gets = struct.find((v) => v.hoge === check); gets.run()←ここでAとBを使い分けて呼びたい }; functionA = {} functioA.run = function(){ ~動かしたい処理A~ } functionB = {} functioB.run = function(){ ~動かしたい処理B~ }
133 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:13:23.18 ID:jIOTtTPX0.net] すみません少し修正です struct = [ {hoge:huga, func:functionA}, {hoge:hage, func:functionB} ] callfunction(check){ var gets = struct.find((v) => v.hoge === check).func; gets.run()←ここでAとBを使い分けて呼びたい }; functionA = {} functionA.run = function(){ ~動かしたい処理A~ } functionB = {} functionB.run = function(){ ~動かしたい処理B~ }
134 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:47:25.32 ID:dHKYynBEd.net] あまり複雑なことはせずに↓みたいなのではダメだろうか https://jsfiddle.net/6x7yusjL/ これではダメで、どうしても>>130 のエラーを解消したいなら出ているエラーの内容ぐらいは書くようにしよう
135 名前:デフォルトの名無しさん [2022/10/25(火) 17:58:30.53 ID:IMqCQD810.net] >>121 14位.JavaScript 難易度:★★☆☆☆ 今回ご紹介するプログラミング言語の中で最も難易度が低いのがJavaScriptです。 初学者がプログラミングの学習を始めるのに適した言語の一つ。 Webサイトなどで動きのある見た目を実現する為に利用されます。 JavaScriptから派生したフレームワークも数多く、 そちらのフレームワークを学習する場合には難易度が高くなります。 ただ、JavaScriptをそのまま利用して学習を進めるであれば、 他の言語と比べて開発環境の構築が不要であることや関連書籍が数多くでていることから、 難易度は低い言語といえるでしょう。
136 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 18:17:09.25 ID:jFHnOV8wa.net] >>131 ありがとうございます。 まず進捗させないとけないんでそのやり方でやってみて、後々何がエラーの原因なのかは自決できるように調べてみます。
137 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 23:20:22.24 ID:RDzJGkEc0.net] JavaScript(JS)は、Ruby の数倍難しい 初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、2017 例えば上の本は、サイの表紙のサイ本と呼ばれるけど、 これだけ勉強しても、文法しか学べない 改訂2版 Ruby逆引きハンドブック、2018 一方、サイ本と比べて、上の本は、多くの主要モジュールの使い方まで説明している。 大体のコーディングパターンまで学べる。 つまり中級者向けなのは、文法のページが少ないから JSだと、ES3, ES5, ES6 の20年に及ぶ、膨大な文法の変遷を追っていかなければならない。 ES2015(ES6)から、ようやくクラスも出来て、Rubyっぽくなってきた ちょっとした比較でも、あいまい比較演算子== は使ってはならない。 厳密比較演算子=== だけを使うとか、初心者がはまる罠が多い 学ぶ順序としては、Ruby → JS を勧める
138 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 23:31:33.41 ID:RDzJGkEc0.net] >>131 では、callback 関数が呼ばれる前に、どちらの処理が呼ばれるか、既に分かっている状態でしょ。 直接引数に、呼ばれる処理を入れている callfunction('huga'); callfunction('hage'); 一方、>>130 では、callback関数が呼ばれる前には、どちらの処理が呼ばれるか、まだ分からない状態。 callback関数の中で初めて、どちらの処理が呼ばれるかが決まる
139 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 00:55:25.26 ID:WkGW4dkw0.net] コンソールからは実行出来るのに、 拡張機能からだと無視されるのは何?
140 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 19:58:11.00 ID:radnZEOF0.net] >>132 14位 やっぱ簡単なんだな。
141 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 14:20:33.37 ID:dQ+2i/bt0.net] 乱数の生成について質問です。 日付をシードとした乱数を生成したいのですがどうも偏ります。 シードの採用の仕方にルールなどがあるのでしょうか? xorshiftのものを2個試しましたが 2ことも偏っていました。 https://jsfiddle.net/4dz70wxp/3/
142 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 17:22:23.79 ID:mktFZgumd.net] ちょっとだけ違う初期値に対して乱数がほしいという用途は想定外だろう 欲しいものはMurmurHash3みたいなハッシュ関数ではないか?
143 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 18:09:17.06 ID:HM5QgWcQd.net] 一発目のnext()の値を捨てれば良さそうな気も https://jsfiddle.net/ny0cpm5v/
144 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 18:36:54.83 ID:HM5QgWcQd.net] もう少しいじってみたけどどうやらシードの桁数不足が問題なのかな new Xorshift32(seed * 1000000) とかにするだけで最初の値にもだいぶ幅が出る いやいや偏りってそういうことじゃなくてって話ならごめんだけど
145 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 19:03:49.78 ID:dQ+2i/bt0.net] >>139 不勉強でよくわかってないですが やりたいのは後で再現できる単純にランダムな遅延時間がほしいだけです。 >>140 delayMaxを100にしてみましたら3回目ぐらいから取れそうと感じました。 シードが小さすぎるということは 一般的には シードを与えるなら 乱数関数が受けられるシードの最大数/関数で生成されるシードの最大数をかけて でシードの範囲を広げたほうがいいということなのでしょうか。 それとも単純に今回はシードが小さすぎて特殊事例であまり気にする必要はないと言う感じでしょうか。 お二人ともありがとうございます。
146 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 20:24:11.90 ID:HM5QgWcQd.net] next()が与えられた値にビット演算をあれこれやって次の値を出してるから シードが2桁整数ではほとんどのビットがゼロなために 最初の演算結果が狭い範囲に収まってしまってるんでないかと
147 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 21:20:56.67 ID:dQ+2i/bt0.net] >>143 ありがとうございます https://jsfiddle.net/4dz70wxp/5/ 42億あるうちの下一桁をいじるだけではだめみたいですね。 一日かわればseedも大きく変わるようにして 念の為、3回目あたりをとってみます。 ありがとうございました。
148 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 22:43:22.03 ID:HM5QgWcQd.net] https://jsfiddle.net/f9h4zu1x/ 少し間違ってた 桁数が少ないのが問題じゃなくて、ビットの可変幅が狭いのが問題 だから桁数増やしてもシードの増分が1なら結局同じ 日付を上の桁に持っていけば1回目も改善する
149 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:24:18.98 ID:8PfyXsoj0.net] ブラウザ上での音声認識と録音について質問です。 現在、マイクから音声認識を行い、簡単な対話を行うWebアプリを作成しようとしています。 Web Speech APIのSpeechRecognitionを使用して音声認識には成功しましたが、これに加えて録音も同時に行いたいです。 SpeechRecognitionは喋っている内容を取っているので、そこから音声ファイルを作成できないかとやったのですが、目的の資料を見つけることができませんでした。 そのため、SpeechRecognitionと並行してmediaDevices.getUserMediaを使い録音する形で実装しました。 PCでは成功したのですが、スマホ(Android、iOS共に)だとmediaDevices.getUserMediaでストリームを使用とした時点で音声がすべてそちらに取られてしまい、音声認識が出来なくなってしまいました。 今度は録音した音声データをGCPのSpeech-to-Textの音声認識に回すかたちで実装してみましたが、即座に認識結果が得られず、対話のテンポが悪くなるため、微妙な感じになってしまいました。 音声認識と録音を両立する良い方法はないでしょうか?
150 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:30:07.55 ID:yKYFejXH0.net] 他人が書いたJavaScriptのコードは読みにくいですよね?
151 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:34:06.32 ID:Wk8IFz/p0.net] >>147 自分が書いたコードすら後から見るとよく分からないなんてことはザラ
152 名前:デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]]) mailto:sage [2022/11/02(水) 15:53:32.48 ID:3LaOl4E/0.net] function double(number){ const result=number*2; return result; }; const a=double(10); console.log(a); でコンソールに20と表示されますが、return resultの所のイメージがつかめません function double(number){ const result=number*2; }; console.log(result); もっと簡単にこれでは20と表示されないんでしょうか?