[過去ログ]
JavaScript の質問用スレッド vol.125 (1002レス)
JavaScript の質問用スレッド vol.125 http://mevius.5ch.net/test/read.cgi/tech/1659855460/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
41: デフォルトの名無しさん (ワッチョイ a52d-bBdM [220.100.64.9]) [sage] 2022/09/03(土) 00:11:31.61 ID:8AM/s+hA0 連想配列から特定のキーを検索して、重複がないもののみ取り出した配列を取得したいのですが、 このコードだと速度的に問題がありました。何か良い方法があったら教えていただけないでしょうか const a= [ {'id': 1, 'category': 'animal', 'kind': 'dog'}, {'id': 2, 'category': 'fruit', 'kind': 'apple'}, {'id': 3, 'category': 'fruit', 'kind': 'orange'}, {'id': 4, 'category': 'animal', 'kind': 'dog'}, {'id': 5, 'category': 'animal', 'kind': 'cat'}, {'id': 6, 'category': 'fruit', 'kind': 'grape'}, ] var b=a.filter((x,y,z)=>z.slice(0,z.length).filter(w=>w.kind==x.kind).length==1); console.log(b); http://mevius.5ch.net/test/read.cgi/tech/1659855460/41
42: デフォルトの名無しさん (ワッチョイ ad5f-wuTS [106.185.148.64]) [sage] 2022/09/03(土) 02:15:20.35 ID:Wm/0iruN0 >>41 const buckets = a.reduce((buckets, current) => { if (!buckets[current.kind]) { buckets[current.kind] = [current]; } else { buckets[current.kind].push(current); } return buckets; }, {}); const b = Object.values(buckets) .filter((items) => items.length === 1) .flat(); 速度は測ってないけどたぶんO(n^2)→O(n)になって速いはず http://mevius.5ch.net/test/read.cgi/tech/1659855460/42
43: デフォルトの名無しさん (スプッッ Sd03-5GnA [1.75.244.51]) [sage] 2022/09/03(土) 03:34:12.57 ID:E5gjC2rTd Mapで似たようなこと考えてた http://mevius.5ch.net/test/read.cgi/tech/1659855460/43
44: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:05:53.47 ID:RJZpwhgn0 >>41 要素数や重複要素のばらつき具合によって結果は変わるが、最終的には力業が最速な事が多い https://jsfiddle.net/gft5ah0n/ 極端な結果になっているのは重複要素がすぐそばにあり、while文による検索ですぐに見つかる為だ 重複要素が遠い位置にあるなら、while文による検索が遅くなるケースも十分にある >>41のコードが比較的高速なのも重複要素が比較的近くにある為だ Object.valuesやArray#filterによる変換コストが検索コストより高くついているので、他のコードが比較的遅い 重複検知が頻繁に発生するようであれば、データのも持ち方を new Map や new Set を使うように変更した方がいい 配列はユニークな値を得るのに向いていない http://mevius.5ch.net/test/read.cgi/tech/1659855460/44
45: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:08:20.30 ID:RJZpwhgn0 >>44の補足 jsfiddleのconsoleはconsole.time()を実装していないようだ ベンチマーク結果はブラウザのコンソールで確認する必要がある http://mevius.5ch.net/test/read.cgi/tech/1659855460/45
46: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:28:11.32 ID:RJZpwhgn0 すまん >>44のwhile_loopは期待通りに動かないので忘れてほしい(console.assert()のコードをミスって気づかなかった) 重複要素のばらつき具合によるが、(>>41の配列においては)暫定最速は>>41 http://mevius.5ch.net/test/read.cgi/tech/1659855460/46
47: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:46:53.92 ID:RJZpwhgn0 >>46 console.assert()の修正、重複チェックをkindのみに修正したら、mapが最速になった https://jsfiddle.net/bw8z2acf/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/47
48: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 11:16:26.73 ID:RJZpwhgn0 >>47 高速化で考えるべきは「ループ回数の削減」と「変換回数の削減」 >>41 source >>42 reduce >>47 map reduceはループ回数は削減されているが、変換回数がsourceよりも多い 要素数6では「変換コスト > 検索コスト」になってしまい、sourceよりも遅い 要素数192では「変換コスト < 検索コスト」となるので、sourceよりも速い mapの変換回数は2回で Array.from() と results.values() のみ ループ回数、変換回数ともにsource,reduceよりも少ない 要素数6、要素数192のいずれも map が最速となる 実際のところ、変換を一度も発生させないコードが理想となる データの持ち方として配列(new Array)であるべきなのか、はよく考えた方がいい http://mevius.5ch.net/test/read.cgi/tech/1659855460/48
49: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 11:42:14.57 ID:RJZpwhgn0 >>39 a要素でマークアップされているなら、難しくはない for (let a of document.querySelectorAll('a[href]')) a.target = '_blank'; window.open()などでリンクを開く挙動もJavaScriptで制御しているなら、コードを読んでリンク先を得る手段を考える必要がある http://mevius.5ch.net/test/read.cgi/tech/1659855460/49
50: デフォルトの名無しさん (ワッチョイ 9534-9i1j [14.14.181.44]) [sage] 2022/09/04(日) 09:22:10.61 ID:eAq4eNQY0 >>40 >>49 ありがとうございます。 テーブルの表示となっていて、行全体にリンクが設定されているようです。 以下のような記載が複数並んでおり、通常は左クリックでリンク先に移動しかできず、新しいタブで開くことができません。 <tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”> <td class=”〇〇〇”></td> <td class=”〇〇〇”></td> </tr> 素人ながらいくつかブックマークレットで試したのですが、逆に実行するとリンクが無効になる事が多々でした。 アドバイスをいただければ幸いです。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/50
51: デフォルトの名無しさん (ワッチョイ d510-bEl6 [180.12.82.129]) [] 2022/09/04(日) 12:38:54.82 ID:FoFuUBY00 <div style="width:100%;height:200px;border:Solid 3px #0000ff" id="test"></div> これのcss初期設定を取得したいのでstyle="○○"の○○部分を抽出したいんだけどやり方がわかりません。 element.style.widthみたいに取得すると途中で値を書き換えられると初期設定が得られないので 最初にタグに埋め込んであるものを取得したいんです。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/51
52: デフォルトの名無しさん (ワッチョイ 955f-EB17 [14.8.104.32]) [sage] 2022/09/04(日) 20:07:02.96 ID:KWOOnIlI0 getAttributeとか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/52
53: デフォルトの名無しさん (ワッチョイ 7561-rTOP [222.144.116.143]) [sage] 2022/09/04(日) 20:23:24.42 ID:FTTWPGH/0 element.style.hoge=fugaしたらstyle属性値も連動するんだから 書き換える前に取得しとくしかなくね? http://mevius.5ch.net/test/read.cgi/tech/1659855460/53
54: デフォルトの名無しさん (ワッチョイ 3501-vbgY [126.94.243.226]) [sage] 2022/09/04(日) 21:15:03.99 ID:SMoCQy1h0 >>51 ・直後にscript書いて書き換え前にstyleを取得しておく ・Fetch APIでhtmlをGETしてCSPでscript無効化してparseしてstyleを得る http://mevius.5ch.net/test/read.cgi/tech/1659855460/54
55: デフォルトの名無しさん (ワッチョイ d510-bBdM [180.12.82.129]) [] 2022/09/04(日) 22:38:54.08 ID:FoFuUBY00 >>52-54 ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/55
56: デフォルトの名無しさん (ワッチョイ d52c-6nWD [180.52.202.152]) [sage] 2022/09/04(日) 23:03:12.95 ID:9ocqxCfk0 >>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 } } http://mevius.5ch.net/test/read.cgi/tech/1659855460/56
57: 56 (ワッチョイ d52c-6nWD [180.52.202.152]) [sage] 2022/09/04(日) 23:14:48.88 ID:9ocqxCfk0 >>56 // URL を設定する window.location.href = href みたいに直接、window.location.href に設定しているけど、 この場合、Ctrl + クリックや、 右クリックメニューから新しいタブで開くことは出来ないのかな? http://mevius.5ch.net/test/read.cgi/tech/1659855460/57
58: デフォルトの名無しさん (ワッチョイ e3b7-9TNW [211.124.165.35]) [sage] 2022/09/04(日) 23:26:45.19 ID:RdtW7bNN0 >>50 遷移する時にdata-targetが使われることを見込んでこれでいけるかもね for (let tr of document.querySelectorAll('tr.〇〇〇')) tr.dataset.target = '_blank' ※〇〇〇はtrのクラス名で http://mevius.5ch.net/test/read.cgi/tech/1659855460/58
59: デフォルトの名無しさん (JP 0H93-Dk2f [103.163.220.88]) [sage] 2022/09/05(月) 18:27:01.95 ID:XvLqNcU6H document内の要素で、textContentに'xxx'を持つクラスを取得するにはどうしたらいいですか? 全部の要素総当たりでtextContent調べるしかないんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/59
60: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/05(月) 18:51:10.83 ID:ng2JfbNn0 >>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()なんてレガシーコード書きたくないからあえてa要素を使っているが、 イベントを横取りできるなら、既存イベントハンドラと同じコードにしても良い http://mevius.5ch.net/test/read.cgi/tech/1659855460/60
61: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/05(月) 19:18:18.86 ID:ng2JfbNn0 >>59 XPath式を使えば、textContentを使わなくて済む https://jsfiddle.net/kb5e740f/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/61
62: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/05(月) 19:25:28.71 ID:ng2JfbNn0 >>61 テキストノードを子に持つ要素ノードを捕捉するコードにすればよかった https://jsfiddle.net/kb5e740f/1/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/62
63: デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.180.164]) [] 2022/09/07(水) 17:04:03.05 ID:zBxXyTwva プログラミング初心者でJavaScriptを勉強してます。 メンバ変数A、メソッドBを持つクラスがあり、メソッドBの中で変数Aを活用(Aを用いた処理やAの変更)したいのですが、 Aを引数としてBに渡して返り値として受け取るのと、Bの中で直接this.Aと記述して処理するのは何か違いがありますか? メソッドBに別の変数を渡す可能性があるなら前者でないといけないのでしょうが、そうでなければ後者の書き方でよいでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/63
64: デフォルトの名無しさん (ワッチョイ 6501-vbgY [60.85.61.123]) [sage] 2022/09/07(水) 18:23:46.99 ID:LU0OXBc/0 >>63 this.Aは全てのインスタンスメソッドで参照できる this.Aはインスタンスを参照可能なスコープ上で参照可能 仮引数AはメソッドBの関数スコープ外から参照不可能 http://mevius.5ch.net/test/read.cgi/tech/1659855460/64
65: デフォルトの名無しさん (ワッチョイ 232c-HH83 [219.162.239.51]) [sage] 2022/09/07(水) 19:11:15.04 ID:8NMkvrFG0 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> http://mevius.5ch.net/test/read.cgi/tech/1659855460/65
66: デフォルトの名無しさん (スッップ Sd43-5GnA [49.98.171.228]) [] 2022/09/07(水) 19:17:44.81 ID:GIiuva0od >>64 それ何にも疑問の解決になってないだろう http://mevius.5ch.net/test/read.cgi/tech/1659855460/66
67: デフォルトの名無しさん (ワッチョイ 6501-bBdM [60.85.61.123]) [] 2022/09/07(水) 20:26:24.25 ID:LU0OXBc/0 >>66 ↓のsetAとcalcAの違いを聞いてるんじゃないのか? class Foo { constructor (a) { this.A = a; } setA (a) { this.A = calc(a); } calcA (a) { return calc(a); } } わかっているらしいあなたが回答すれば済む話だが http://mevius.5ch.net/test/read.cgi/tech/1659855460/67
68: デフォルトの名無しさん (ワッチョイ 2b7c-QaXK [113.43.107.134]) [] 2022/09/08(木) 00:18:00.64 ID:rIQlC2lz0 すいません。以下の様な状況で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; } } http://mevius.5ch.net/test/read.cgi/tech/1659855460/68
69: 65 (ワッチョイ 232c-HH83 [219.162.239.51]) [sage] 2022/09/08(木) 07:17:36.21 ID:eI1uoUaK0 Ruby では、>>65 に書いたように、 def f_1 @x = 1 end みたいに、クラス内のインスタンスメソッド・f_1 内で、 インスタンス変数・@x を使えるので、一々、引数で渡す必要がない http://mevius.5ch.net/test/read.cgi/tech/1659855460/69
70: デフォルトの名無しさん (ワッチョイ 955f-Iguz [14.13.137.64]) [sage] 2022/09/08(木) 19:40:45.35 ID:6QKcdu8L0 オブジェクト指向の一般的な話としては、クラス内の関数であればクラス内のメンバはいじっても問題ないと思う。 ただ、「どこの関数がこのメンバを触ってるのかわからない」ってほどクラスが巨大化するなら、もはやそれはたちの悪いグローバル変数そのものなので設計からおかしい。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/70
71: デフォルトの名無しさん (ワッチョイ 6501-CzlZ [60.85.61.123]) [sage] 2022/09/08(木) 22:51:00.93 ID:D/mmzJCP0 >>68 一つ一つのコードの意味を理解して、一つ一つのコードでなぜをそれを使うのか、と自問して答えを出せば、自ずと答えが出てくる 質問していない部分で突っ込みどころが多すぎて、「何も考えてないんだな」と思わせられる https://jsfiddle.net/qem7cLyf/ ・なぜ 全ての関数は返り値を持たないのか? ・なぜ Foo1#funcB は静的関数ではないのか? ・なぜ Foo1#funcC,Foo2#funcC は返り値ではなく、グローバル変数に演算結果を格納したのか? ・なぜ Foo2#varA の初期化にコンストラクタの引数を使わないのか? こういう質問全てにこたえられるぐらいに考えられないと良いコードはかけない https://jsfiddle.net/s27mxepn/ ・可能な限り、変数のスコープはせまくあるべき ・可能な限り、関数は参照透過性を持つべき 今後、インスタンスプロパティを拡張する予定があるならclassを使うべきだし、そうでないなら静的関数で十分 >>64で示した挙動の違いだけで十分に判断できる http://mevius.5ch.net/test/read.cgi/tech/1659855460/71
72: デフォルトの名無しさん (オッペケ Sr81-3vxq [126.254.237.221]) [sage] 2022/09/08(木) 23:10:43.06 ID:DGEh14TYr それがプログラミング初心者に投げつける言葉かよ・・・ そういう知識や判断力もゆくゆくは必要だけども物事には順序ってもんがあってまだその域ではなかろう マウントが取りたいだけならもっと近いレベルの相手にやんなよ http://mevius.5ch.net/test/read.cgi/tech/1659855460/72
73: デフォルトの名無しさん (テテンテンテン MM4b-HSKh [133.106.60.103]) [sage] 2022/09/08(木) 23:23:08.03 ID:xrpQvLAzM >>63 いいと思うよ というかBに汎用性を持たせるのは微妙 http://mevius.5ch.net/test/read.cgi/tech/1659855460/73
74: デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.156.188]) [] 2022/09/09(金) 09:56:50.51 ID:Rq87TVpoa this.Aで書いた方が手っ取り早いことが多い気がしたのですが、そちらでもいいけどスコープに注意しないとバグの要因になる、グローバル変数を濫用しないようにというのと相似形の似たような話という認識でいいでしょうか。 下手したら必然性なく両者を混在させてしまったりしそうなので注意したいと思います。参照透過性とか言葉自体知りませんでした… 参考になりました。ありがとうございます。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/74
75: デフォルトの名無しさん (スップ Sd03-5GnA [1.75.3.22]) [] 2022/09/09(金) 11:06:49.13 ID:hB1+BppPd >>74 今は>>70の理解でいいと思うよ 今の時点であまり詰め込んでもしょうがないし >>71みたいなののせいで萎縮しないでね http://mevius.5ch.net/test/read.cgi/tech/1659855460/75
76: デフォルトの名無しさん (ワッチョイ 6501-CzlZ [60.85.61.123]) [sage] 2022/09/09(金) 19:12:54.25 ID:0zkp1JmC0 >>72 > 物事には順序ってもんがあってまだその域ではなかろう 順序が大切なことには同意 ダメ出しがたくさんあるのは「学習の順序」が間違っているから いろいろと学習を飛ばしてコードを書いており、その質問をする域に達していない 初心者だからこそ、もっと基礎的な課題から取り組むのが現実解だと俺は思う 今までの受け答えを見る限り、付け焼刃で知識をつけているように俺には見える > マウントが取りたいだけならもっと近いレベルの相手にやんなよ マウントを取りたいわけじゃない http://mevius.5ch.net/test/read.cgi/tech/1659855460/76
77: デフォルトの名無しさん (ワッチョイ 232c-HH83 [219.162.235.49]) [sage] 2022/09/09(金) 20:14:57.93 ID:n8dQNxep0 だから、オブジェクト指向とかプログラミングは、Ruby から始めるべき。 JavaScript(JS)みたいなややこしいもので、デザインパターンを学ぶべきではない 改訂2版 Ruby逆引きハンドブック の1冊だけで、かなりのモジュール・ライブラリの使い方も分かる 同じページ数でも、JSなら、文法だけで終わる。 20年以上のJSの歴史を追っかけて行くから、文法だけでもRubyの5倍ぐらいある だから、こういう言語へ手を出したらダメ。 Rubyist は、JSなどをコピペで済ます。 深い所までやらない。分量的に切りがない http://mevius.5ch.net/test/read.cgi/tech/1659855460/77
78: デフォルトの名無しさん (ワッチョイ a95f-pw5f [14.8.104.32]) [sage] 2022/09/10(土) 00:48:49.86 ID:1NdnS3vZ0 学習の順序とか提示せずに「何も考えてない」と切り捨てるのはマウンティングに入らないんですか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/78
79: デフォルトの名無しさん (ワッチョイ 1901-T2pD [60.85.61.123]) [sage] 2022/09/10(土) 06:13:53.00 ID:Cpvx7Vnj0 回答者相手にマウントとってる人に真面目に答えるだけ無駄か そんな暇があったら、質問者に回答すればいいのに http://mevius.5ch.net/test/read.cgi/tech/1659855460/79
80: デフォルトの名無しさん (オッペケ Src5-qUKH [126.254.242.25]) [sage] 2022/09/10(土) 09:58:22.29 ID:aLnVTfHzr 君は高圧的な正しさで初心者を殴ってるだけ 人にものを教えるのには向いてないと思うよ http://mevius.5ch.net/test/read.cgi/tech/1659855460/80
81: デフォルトの名無しさん (ワッチョイ 1901-V+uT [60.85.61.123]) [sage] 2022/09/10(土) 11:01:57.14 ID:Cpvx7Vnj0 >>80 5chはそういうものと思っていたが、それがこのスレの流儀なら気を付ける だが、回答者に高圧的だったり、回答者にマウントをとる人も是正されるような公平な世界であってほしいね http://mevius.5ch.net/test/read.cgi/tech/1659855460/81
82: デフォルトの名無しさん (オッペケ Src5-qUKH [126.254.179.217]) [sage] 2022/09/10(土) 11:48:27.08 ID:DabBJhVCr 具体的にどの発言に対して言ってるのかわからんけど そういう何か言い返さないと気がすまないって気持ちは心の中にしまっておいた方がいいんじゃないかな http://mevius.5ch.net/test/read.cgi/tech/1659855460/82
83: デフォルトの名無しさん (スップ Sd33-A6fq [49.97.111.223]) [sage] 2022/09/10(土) 13:25:36.79 ID:JRksiUpNd 自分の過ちを認めると負けたみたいでプライドが傷つくから 俺も悪かったけどお前らも悪いから引き分けだよねということにしたい心理の表れ http://mevius.5ch.net/test/read.cgi/tech/1659855460/83
84: デフォルトの名無しさん (ワッチョイ 6910-Vaw7 [180.12.82.129]) [] 2022/09/11(日) 20:15:23.24 ID:yDUj5jeF0 元の配列を関数内で空にしたいけどうまくいきません 100と表示されてしまったので空になっていませんでした。 配列は参照渡しなので元の配列も書き換えられると思ったんだけど どうやれば関数内で元の配列を空にできますか?returnは使いたくないです。 let a_list = [100,200,300]; test(a_list); function test(b_list){ b_list = []; } alert(a_list[0]) http://mevius.5ch.net/test/read.cgi/tech/1659855460/84
85: デフォルトの名無しさん (ワッチョイ 818b-pqEy [210.228.102.1]) [sage] 2022/09/11(日) 20:29:51.41 ID:bqV48/aB0 >>84 function test(b_list) { b_list.length = 0 } http://mevius.5ch.net/test/read.cgi/tech/1659855460/85
86: デフォルトの名無しさん (ワッチョイ 6910-V+uT [180.12.82.129]) [] 2022/09/11(日) 21:06:49.62 ID:yDUj5jeF0 >>85 できました ありがとうございます http://mevius.5ch.net/test/read.cgi/tech/1659855460/86
87: デフォルトの名無しさん (オッペケ Src5-yIeJ [126.205.215.107]) [] 2022/09/12(月) 09:29:51.85 ID:ptOOOLgwr b_list = []; が何故ダメかというとb_listを空にしてるんじゃなくて b_listに新しい配列を代入してるだけだから ということは覚えておこう http://mevius.5ch.net/test/read.cgi/tech/1659855460/87
88: デフォルトの名無しさん (ワッチョイ 6dbd-fO9i [122.133.74.218]) [sage] 2022/09/23(金) 01:20:03.32 ID:93J4lVSi0 ブラウザで動かすとき、グローバルスコープでの demo って名前は何かある? この名前の関数作ってボタンの onclick から呼び出そうとしたら関数未定義のエラーになる。 別の名前にすると呼び出せる。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/88
89: デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.97.207]) [sage] 2022/09/23(金) 09:32:58.81 ID:CDwP7FtJd タイポかスコープの勘違いとかじゃないの? コンソールでdemo関数定義して実行したら普通に動いたけど http://mevius.5ch.net/test/read.cgi/tech/1659855460/89
90: デフォルトの名無しさん (ワッチョイ 9501-Zrsu [126.242.174.70]) [sage] 2022/09/23(金) 10:32:57.61 ID:UxdKoKVd0 >>88 再現可能なコードを出してみたら? https://ja.stackoverflow.com/help/minimal-reproducible-example http://mevius.5ch.net/test/read.cgi/tech/1659855460/90
91: デフォルトの名無しさん (ワッチョイ 23bd-fO9i [125.194.52.138]) [sage] 2022/09/23(金) 15:04:58.71 ID:i+SKzCkA0 >>90 こんな感じだけど、ちょっと分かってきた。 全体貼ろうとしたらセキュリティチェックかなにかに引っ掛かって書けないから、scriptタグの中身と body の中身だけ。 function demo() { alert('DEMO'); } <form> <input type="button" name="demo" value="DEMO" onclick="demo()"> </form> この onclick にとっての demo は多分 form内の input要素の demo になるんだね。 スコープがこの form になると。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/91
92: デフォルトの名無しさん (ワッチョイ 23bd-fO9i [125.194.52.138]) [sage] 2022/09/23(金) 15:06:34.97 ID:i+SKzCkA0 エラーは未定義関数じゃなく、demo is not a function だった。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/92
93: デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.96.176]) [sage] 2022/09/23(金) 17:05:20.97 ID:bbK6e07Hd thisとthis.formがスコープに入る仕様だそうな https://qiita.com/hakatashi/items/40fbedf61a3dd79f21fc 有効に使う機会よりも謎の挙動にどハマりするケースの方が多そう http://mevius.5ch.net/test/read.cgi/tech/1659855460/93
94: デフォルトの名無しさん (ワッチョイ 9501-Zrsu [126.242.174.70]) [sage] 2022/09/23(金) 18:38:15.96 ID:UxdKoKVd0 >>91 window.demoかaddEventListenerを使ってみては? 後者がベター http://mevius.5ch.net/test/read.cgi/tech/1659855460/94
95: デフォルトの名無しさん (ワッチョイ bf01-4MOF [126.242.174.70]) [sage] 2022/09/25(日) 08:59:26.24 ID:oCqDdJBP0 回答もらった途端にいなくなる質問者多いな http://mevius.5ch.net/test/read.cgi/tech/1659855460/95
96: デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]]) [sage] 2022/09/25(日) 17:53:11.47 ID:hlHjM9NA0 こんにちは ブラウザから、ローカルのファイル(画像など)を「関連付けされたソフトで開く」というのはできますか? HTMLの<a href=#></a>だと、ブラウザ(Chrome)内で開いてしまいますが、これを別の画像ビューアで開きたいです http://mevius.5ch.net/test/read.cgi/tech/1659855460/96
97: デフォルトの名無しさん (ワッチョイ bf01-4MOF [126.242.174.70]) [sage] 2022/09/25(日) 20:26:11.45 ID:oCqDdJBP0 >>96 参考情報 https://akaki.io/2021/url_scheme_hijack http://mevius.5ch.net/test/read.cgi/tech/1659855460/97
98: デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]]) [sage] 2022/09/26(月) 17:57:53.84 ID:E/HZ+YPY0 ありがとうございます 「カスタムURLスキーム」を調べてやったみましたが、ローカルのファイルを指定ができません(画像ビューアは開くがファイルが開かない) JavaScriptの質問ではないので恐縮ですが、どうやって指定できますかね? https://qiita.com/kojimadev/items/74100c8557a92939ef69 例えば上のサイトを参考に、画像ビューアをhogeでレジストリ登録して下のようにすると、画像ビューアだけ起動してファイルは見つからなかったと出ます(hoge:file:///C:...などもダメ) <a href="hoge:C:/tmp/sample.jpg"></a> http://mevius.5ch.net/test/read.cgi/tech/1659855460/98
99: デフォルトの名無しさん (ワッチョイ e27c-bwfb [221.241.223.58]) [sage] 2022/09/26(月) 22:44:18.29 ID:Xyg4q6vF0 >>98 違ってるかもだけど、Windowsだったらパスの区切り文字は/じゃなくて\または¥じゃないのかな で、\は制御文字として扱われるからエスケープして\\にしないとダメとか http://mevius.5ch.net/test/read.cgi/tech/1659855460/99
100: デフォルトの名無しさん (ワッチョイ a2bd-ZJWq [125.198.8.233]) [sage] 2022/09/26(月) 23:02:16.56 ID:adbpU9F00 >>98 アプリの方もURLスキームでの起動に対応してないとだめなんじゃない? URLスキームはその URLの書式をアプリ独自に決めてあって、アプリはその書式でアクションや対象を判別して動作するように作られてるんだと思う。 とりあえず与えられた引数が分かるテストアプリを見繕って hoge として登録してみたら何か分かるかもよ。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/100
101: デフォルトの名無しさん (JP 0Hd7-ruke [210.228.21.53]) [sage] 2022/10/06(木) 16:54:22.37 ID:bvSP9gLaH Xhrで非同期通信するサーバーサイドのファイル(api.php)の中に登録されてる関数を実行することって出来るかな? api.phpのfunction hoge()を実行するって感じ http://mevius.5ch.net/test/read.cgi/tech/1659855460/101
102: デフォルトの名無しさん (ワッチョイ 7301-AcZi [126.88.47.26]) [sage] 2022/10/06(木) 17:40:38.15 ID:mWLza3X30 >>101 リクエストのハンドラがその関数を呼べばいいだけじゃない? http://mevius.5ch.net/test/read.cgi/tech/1659855460/102
103: デフォルトの名無しさん (ワッチョイ 3f7c-pIDl [43.235.241.201]) [sage] 2022/10/06(木) 18:17:20.20 ID:tI414gt60 >>101 ん? フレームワークも何も使ってないならそもそも該当のphpファイルを指定するから その中で実行したい事を書けば良いだけでは? http://mevius.5ch.net/test/read.cgi/tech/1659855460/103
104: デフォルトの名無しさん (ワッチョイ 9fda-Eaf/ [125.202.99.65]) [sage] 2022/10/19(水) 06:40:09.61 ID:+dFS1Lme0 if (a==b){} と書くべき所を、 間違って if (a=b){} と書いたら、 a<>b な値を入れても true が返ってくる 何が起きているんでしょう? http://mevius.5ch.net/test/read.cgi/tech/1659855460/104
105: デフォルトの名無しさん (ワッチョイ 9701-FGyv [60.115.215.187]) [sage] 2022/10/19(水) 06:51:04.23 ID:PuLzlRQU0 >>104 a=bの評価値はb bがtruthyならifの次の文が実行される http://mevius.5ch.net/test/read.cgi/tech/1659855460/105
106: デフォルトの名無しさん (アウアウウー Sa5b-UrA8 [106.146.102.221]) [sage] 2022/10/19(水) 11:19:00.04 ID:4XenNUmUa bが0以外なら{}が実行される。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/106
107: デフォルトの名無しさん (ワッチョイ 9fda-Eaf/ [125.202.99.65]) [sage] 2022/10/20(木) 01:45:20.86 ID:sarICcZm0 >>105 >>106 それじゃifにする意味がない状態だったんですね ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/107
108: デフォルトの名無しさん (JP 0Hdf-KIw6 [103.163.220.59]) [sage] 2022/10/20(木) 05:56:13.16 ID:BavO7XJlH uBlockで要素取得した時の名前が###contentsです これをTampermonkeyのJSで要素getするにはどうしたらいいでしょうか? getElementById、getElementsByTagName、getElementsByClassName、querySelectorAll等ではだめでした http://mevius.5ch.net/test/read.cgi/tech/1659855460/108
109: デフォルトの名無しさん (ワッチョイ f7bd-p3V3 [122.133.73.156]) [sage] 2022/10/20(木) 12:03:03.14 ID:qg4xQu9m0 >>107 条件の中にあえて代入を入れるケースは無くはない。 if (result = func()) ... みたいな感じとか。 これは比較してるんじゃなくこういうこと。 result = func(); if (result) ... 比較と組み合わせて if ((result = func()) == 100) ... みたいな書き方もある。 メリットは単に短く書けるということもあるし、別の言語も含めれば while ((line = fgets(fp)) != EOF) ... みたいな、代入と比較が一緒じゃないと書き方的に面倒になる部分に使う。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/109
110: デフォルトの名無しさん (ワッチョイ 9f47-y3r4 [131.129.209.7]) [sage] 2022/10/20(木) 12:59:50.47 ID:QXtRAkax0 >>108 getElementById('contents') or querySelector('#contents') http://mevius.5ch.net/test/read.cgi/tech/1659855460/110
111: デフォルトの名無しさん (JP 0Hdf-7o11 [103.163.220.77]) [sage] 2022/10/20(木) 13:20:03.60 ID:C0rWwrYjH >>110 なるほど、#つけたらいけました ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/111
112: デフォルトの名無しさん (ワッチョイ 9701-FGyv [60.115.215.187]) [sage] 2022/10/20(木) 15:12:09.85 ID:MJUQgOR60 >>106 0だけがfalsyなわけではないはず https://262.ecma-international.org/13.0/#sec-toboolean >>109 代入と組み合わせることですっきり書ける場合があるよな whileは割と使ってる http://mevius.5ch.net/test/read.cgi/tech/1659855460/112
113: デフォルトの名無しさん (ワッチョイ d75f-2/eE [14.8.104.32]) [sage] 2022/10/20(木) 21:55:34.73 ID:1vPPjI2Y0 whileって原始的かつ結構直感的だから使いやすいよね http://mevius.5ch.net/test/read.cgi/tech/1659855460/113
114: デフォルトの名無しさん (ワッチョイ 3d10-w3aL [180.12.82.129]) [] 2022/10/23(日) 10:06:21.98 ID:6Nh0kUN40 <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と取得できるんだけど http://mevius.5ch.net/test/read.cgi/tech/1659855460/114
115: デフォルトの名無しさん (ワッチョイ ab2d-85pP [121.102.18.226]) [sage] 2022/10/23(日) 11:43:18.26 ID:hW6qdPXA0 console.dirでsheetの中身を覗いて探せば見つかるかと http://mevius.5ch.net/test/read.cgi/tech/1659855460/115
116: デフォルトの名無しさん (ワッチョイ 557c-w3aL [122.212.16.94]) [sage] 2022/10/23(日) 16:29:44.52 ID:l4Ll+vUb0 iPhone6などの古い環境のSafariで、ES6以降の各ES(ES2022等)のどこまでサポートしているか、というのはどのように確認すればよいでしょうか? iOSは12で、UAではSafari Webkit 604.1 となっています。 ESも毎年更新されてPCや現行スマホなら問題なく表示できますが、サポートの終わった古い端末でも表示させるにはどの機能がNGかを確認したいのですが・・・ iOSバージョンやブラウザバージョンを指定して、それがどこまでサポートしているかが分かるサイトや、実際の端末を使ってどの機能がNGかテストするとか、PC上でデバッグ可能(エラー表示)なエミュレータなどあれば教えていただきたいです。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/116
117: デフォルトの名無しさん (ワッチョイ fd5f-jOkU [14.8.104.32]) [sage] 2022/10/23(日) 16:34:31.24 ID:sfEqSuvv0 MacBookを買いましょう http://mevius.5ch.net/test/read.cgi/tech/1659855460/117
118: デフォルトの名無しさん (ワッチョイ 3d4f-Y/ct [180.0.191.133]) [sage] 2022/10/23(日) 16:44:23.51 ID:YzYXhWAT0 Can I use のサイトとか、npm のbrowserslist とか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/118
119: デフォルトの名無しさん (ワッチョイ 557c-w3aL [122.212.16.94]) [sage] 2022/10/23(日) 16:55:32.04 ID:l4Ll+vUb0 >>118 ありがとうございます。 Can I useのサイトで各ESxxxを検索して概ねサポートされる範囲が分かりました。 Safari 12だとES2020の一部からサポートされない機能があるので、そこら辺が境界ぽいことが分かりました。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/119
120: デフォルトの名無しさん (ワッチョイ 3d10-Vrxx [180.12.82.129]) [] 2022/10/23(日) 17:46:05.51 ID:6Nh0kUN40 >>115 cssRules[0].cssRules[0].seletctorTextとすることでできました ありがとうございます http://mevius.5ch.net/test/read.cgi/tech/1659855460/120
121: デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) [sage] 2022/10/24(月) 22:47:10.94 ID:VafCOtMO0 JavaScriptは大変難しい言語です。Rubyの難易度を2、Cの難易度を5、C++の難易度を8にすると、 JavaScriptの難易度は12ぐらいあると思います。 このコーディングガイドはそんなJavaScriptの深みに嵌まらないようにするためのJavaScriptの書き方を規定したものです。 初級者1のための物ですので、わかってやっている人に好きにやってください。 このコーディングガイドは絶対に従わなければならないものではありません。 私は一切強制はしませんし、初級者が従わなければならないという義務もありません。採用するしないはみなさんの自由です。 禁止編 JavaScriptには安易に使用してはいけない機能があります。 下記の機能は、それぞれの機能を使っても良い、または、使うべきであるという理由を説明できない限り、使用してはいけません。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/121
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 881 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s