JavaScript の質問用スレッド vol.126

2023/12/23(土) 20:16:48.44ID:87/jUj+m0
>>47-48
起源というかね、こういうのは歴史的経緯を辿って理解した方が判りやすいという話よ
君らのつまらんレスを読むよりはずっとね
Javascriptでやってる事は関数のポインタとはわけが違うんだから
2023/12/23(土) 20:22:17.26ID:seU0bwIPM
>>49
それは絶対にない>わかりやすい
2023/12/23(土) 20:30:53.27ID:1KvsNCZl0
歴史を追いかけられるくらい論理的に文章組み立ててくれないか?
2023/12/23(土) 20:34:16.96ID:6J3b/0Sr0
>Javascriptでやってる事は関数のポインタとはわけが違うんだから

LISPが違うのはわかるけどJavaScriptは関数ポインタとそんなに違うんだっけ?
2023/12/23(土) 20:55:11.83ID:RHehsd3K0
>>49
賛同されなかったからつまらんレスとか言い出すのは大人げないよ
2023/12/24(日) 14:20:26.14ID:eKX/4s7na
>>52
だいぶ違うぞ
クロージャって言葉知ってる?
定義された場所のローカル変数を参照できるの
そしてローカル変数がクロージャによってキャプチャされたら
その変数はクロージャが死なない限りずっと保持される
これは関数ポインタとは訳が違う
そしてそれこそがscheme信者のアイクが取り入れたかったもの
クロージャじゃないなら関数ポインタと大して変わらんっちゃ変わらん
2023/12/24(日) 15:20:54.55ID:D70pmwho0
>>54
関数がクロージャを形成するかどうかと
関数を受け渡すときに関数へのポインタを使ってるかどうかは直交した別の問題
実際どのJavaScriptエンジンも関数へのポインタを使って変数への代入や関数の受け渡しを実現している

C言語はクロージャをサポートしないのでC言語の関数ポインタを使ってもクロージャにはならないのは当たり前

もう少し言えば関数を受け渡し可能にするためのスコープ解決の仕組み/ルールと受け渡す際に関数へのポインタを使ってるかどうかは別の問題
2023/12/24(日) 15:53:19.34ID:D70pmwho0
別スレで見かけたトンデモ記事書いてる人だと思うけどレキシカルスコープの話と第一級関数の話とレキシカルスコープを使ったクロージャによって第一級関数を実現する話を混同してるんじゃないか

Schemeはレキシカルスコープを使ったクロージャという考え方を広く普及させた言語ではあるがレキシカルスコープや第一級関数はScheme以前の昔から実現されてたものだし
レキシカルスコープを使ったクロージャもScheme以前の昔からあった考え方

Schemeが初めてレキシカルスコープを定義したかのように書くのはやめよう
2023/12/24(日) 16:19:26.43ID:+dT+Yo8pd
>>56
ちょっと指摘させてもらうと
誰も起源の話なんてしてないよ
2023/12/24(日) 16:48:55.22ID:awd0q31Fa
>>56
いや別に起源とかはどうでも良くて関数ポインタとは違うよって話をしてるだけなんだけど
2023/12/24(日) 18:14:29.42ID:uJ8b4azy0
>>57
>>43がしてるでしょ
この人同じように間違ったことをあちこちで書いてるから指摘しただけ
2023/12/24(日) 19:40:11.40ID:3LVtZ1UM0
彼は命題論理が理解できなくて、120年前の古文書まで読み返して、それでも分からなくて200年前の哲学書まで遡った結果、今でも命題論理が分かってないって人間だから、彼の歴史的経緯を遡れば理解しやすくなるって主張は実は彼自身によって反証されてたりする
2023/12/24(日) 22:35:22.54ID:ietP5AWI0
>>38 が分かりやすかったかどうか答えてくれれば解決だな
6238 (ワッチョイ bf74-uzyf [211.124.81.22])
垢版 |
2023/12/24(日) 23:33:56.01ID:M3Ha8RQ30
さっぱり分からん
2023/12/24(日) 23:38:36.92ID:3LVtZ1UM0
おっIP同じやし38本人やん
まあそうだよな。あの説明でわかりやすく人間なんておらんやろ
2023/12/25(月) 06:04:30.08ID:G5r1XQvR0
クロージャは第一級市民関数。
関数外のローカル変数などの文脈を取り込む。
つまり、スコープがゆるい

一方、Ruby の関数はスコープがきつくて、
関数外のローカル変数を通さないので、第一級関数ではない。
ただし、ブロックはブロック外のローカル変数を通すから、クロージャ

他に、レシーバーとメソッドを持ち運ぶ、メソッドオブジェクトもある
2023/12/25(月) 08:32:20.98ID:xnbzJK+y0
>>38,62
何がどうわからないのか、を詳しく説明してくれ。
具体的なところがさっぱり分からん。
2023/12/25(月) 21:05:49.32ID:HhwD874b0
そりゃそもそもLISPやSchemeを全く知らない人だったんでしょ
分かりやすくなる要素なんて1ミリもないわな
2023/12/25(月) 21:28:48.99ID:XllulW5ca
struct Closure {
struct Env env;
struct Function func;
};

Closureの最もシンプルな実装
Envはキャプチャしたローカル変数を保持する環境
Functionは関数ポインタやらを保持してるオブジェクトだと思ってくれ
たったこれだけのことに過ぎない
関数ポインタにenvが追加されただけのものだ
2023/12/26(火) 01:40:31.83ID:XlP1bh7b0
クロージャやレキシカルスコープがどうやって実現されてるかという質問なら[[Environment]]のことを教えてあげるのはいいと思うけど
そういう話は誰もしてないからねぇ
2023/12/26(火) 12:17:20.00ID:iZHdB3Jl0
結局のところ>>38の問題って関数は変数に代入できないものだっていう固定観念を他の言語に持ち込んでるところだと思う

プログラミング言語なんて所詮ヒトがそれぞれの都合で作ったものであって言語が違えば考え方や常識も違う
そこを理解して他の言語の固定観念を持ち込まないようにしないとこの先もしっくりこないこと、受け入れられないことだらけだろう
2023/12/26(火) 18:41:41.07ID:DtaEhUmP0
関数を変数に直接代入できないCの系譜の言語が最も広く普及してるから
そういう言語をやってきた人が関数を変数に直接代入できる言語に初めて接したら>>38のように驚くのは極々自然のこと

何が固定観念なのかなんてそれが覆るまで分からないんだから固定観念を持ち込むなとか言っても何の役にも立たないよ
2023/12/26(火) 19:02:16.70ID:ar+aUrwZ0
今回のことで固定観念だったと気づければそれでいいと思うよ
そうすれば次からは疑ってかかることができるわけだし
2024/01/05(金) 08:36:00.72ID:kvxPBg+iM
糞長い式が真値のときだけ変数に代入したくて
if (糞長い式) {
X = 糞長い式
}
と書いてるんですが糞長い式を一度で済ますにはどうしたらいいですか
73デフォルトの名無しさん (ワッチョイ 1f74-rafF [211.124.81.22])
垢版 |
2024/01/05(金) 09:10:31.40ID:PLcvVAqJ0
>>72
いますぐ糞をして寝ることだ。
糞!
74デフォルトの名無しさん (ワッチョイ 1f74-rafF [211.124.81.22])
垢版 |
2024/01/05(金) 09:12:10.60ID:PLcvVAqJ0
X = 糞長い式 ? 糞長い式2 : X;
2024/01/05(金) 09:26:22.59ID:B0YNzjLy0
Y = 糞長い式
if (Y) {
X = Y
}
2024/01/05(金) 09:52:24.63ID:UVxCqy8T0
2回評価したくないときもあるし>>75

https://docs.python.org/ja/3/whatsnew/3.8.html#assignment-expressions
そこまで糞長くないならセイウチ演算子
2024/01/05(金) 11:11:29.09ID:j+cl8so10
X = 糞長い式 || X;
わかりやすい>>75でいいと思うわ
2024/01/05(金) 18:15:32.86ID:xFVV62H30
カルノー図やクワイン・マクラスキー法で書けないほど複雑だと
どうにもならない
if else if else にうまく展開するか
switch 文をうまく使うとかかなあ
79デフォルトの名無しさん (ワッチョイ fd9f-stEI [122.133.203.183])
垢版 |
2024/01/08(月) 08:24:08.50ID:HV7sMHf30
質問させていただきます。

タグの属性onclick等で設定したイベント処理では
処理側の関数ではeventオブジェクトを参照出来ないのでしょうか?

色々探してるのですが見つけられなくて・・・よろしくお願い致します。
2024/01/08(月) 10:20:56.34ID:FNFcnj+v0
>>79
onclick属性のイコールの右側にある値は無名関数をそのままラップしたもので、eventオブジェクトはその関数の第一引数に渡される
つまり<タグ onclick="func(arguments[0]);">とすれば取得できる
81デフォルトの名無しさん (ワッチョイ 8d43-iBaE [114.148.50.247])
垢版 |
2024/01/08(月) 10:51:13.68ID:adS5ZNXz0
>>79
引数で渡されてくるけど?
HTMLのタグの中に書く事例では意味も解らずその引数を省略しているのが多い

それより、今どきはHTMLと分離した、こっちの書き方がおすすめ
https://developer.mozilla.org/ja/docs/Web/API/Element/click_event
2024/01/08(月) 13:07:07.19ID:cXOMuDOl0
>>79
onclick属性値の中でもeventは使える。
<p onclick="console.log(event);">

ところで、「処理側の関数」とは?
2024/01/08(月) 13:58:47.00ID:pIW6TUAd0
ブラウザの開発者ツールにあるデバッガをつかえば気づける
止めたところの環境が丸見えになるから
2024/01/08(月) 20:55:54.87ID:gJaMg8aw0
例えば、jQuery なら、これで5つのキーのkeydown をキャッチできる

$( function ( ) {
$( 'body' ).keydown ( function( e ) {
switch( e.key ) {
// 32:空白、37:←、38:↑、39:→、40:↓
case " " :
case "ArrowLeft" :
case "ArrowRight" :
case "ArrowUp" :
case "ArrowDown" : console.log( e.key );
}
} )
} );
2024/01/08(月) 21:08:17.54ID:Jg6SbkUr0
<button onclick="hoge(this)">ってやると意図しない動きすることあるからルールで禁止してるところもあるよね
86デフォルトの名無しさん (ワッチョイ 0510-JApz [180.12.82.129])
垢版 |
2024/01/11(木) 09:49:12.76ID:L0eqWFW50
子要素は含まないようにelementを取得するにはどうすればいいですか?
これだとテーブルの中のフォームをスライドさせてもalertが表示されてしまいます。
子要素は含まないテーブルのみのelementを取得することはできますか?


<table style="width:500px;height:300px;background:#ffff00" id="aaa">
<tr><td><input type="range" style="width:inherit"></td></tr>
</table>

<スクリプト>
const elm = document.getElementById("aaa");

elm.addEventListener(

"mousedown",
function(e){alert("www");}

);
</スクリプト>
87デフォルトの名無しさん (ワッチョイ b536-QPx5 [2400:4052:5062:9ff0:*])
垢版 |
2024/01/11(木) 10:30:37.07ID:8+5yXztZ0
何をやりたいのかがわからない説明
とりあえずプログラムを意識せずに
やりたいことの要件を日本語でよろしく
 
2024/01/11(木) 10:35:49.26ID:oja63d6W0
function(e){
// input要素以外をクリックした場合の処理
if (e.target.tagName !== 'INPUT') {
alert("www");
}
}
89デフォルトの名無しさん (ワッチョイ 0510-zseD [180.12.82.129])
垢版 |
2024/01/11(木) 13:03:40.31ID:L0eqWFW50
>>87
子要素を除外したelementを取得したいってことっす
>>88
ありがとうございます試してみます
90デフォルトの名無しさん (ワッチョイ b536-QPx5 [2400:4052:5062:9ff0:*])
垢版 |
2024/01/11(木) 14:18:15.97ID:8+5yXztZ0
それ、バブリングを意識しないとダメかもよ
91デフォルトの名無しさん (ワッチョイ 231b-JApz [2400:4151:a4a0:6500:*])
垢版 |
2024/01/11(木) 14:44:36.31ID:bfPtSoSL0
先ほどは手元にソースコードがなかったので即席で質問してしまいました。
やりたいことはテーブル部分でタッチムーブしたときブラウザのスクロールを禁止にしたいのですが、
テーブルにあるスライダーまでロックされて動かせないようになってしまうので、
スライダーを除外したテーブル部分のelementだけ取得できれば上手くできるのでは?と思ったから先ほどのような質問をしてしまいました。
ようするにブラウザのスクロール禁止にするけどスライダーは動かせるようにしたいんです。

<table style="width:500px;height:300px;background:#ffff00" id="aaa">
<tr><td><input type="range" step="1" min="0" max="10" value="1"></td></tr>
</table>

<スクリプト>
const elm = document.getElementById("aaa");

elm.addEventListener(
"touchmove",
function(e){

e.preventDefault(); //ブラウザのスクロールを禁止にする
}
);
</スクリプト>
2024/01/11(木) 15:08:55.09ID:k0wEY4GK0
よく分からんが、cssでそんなのがあるな
https://developer.mozilla.org/ja/docs/Web/CSS/overscroll-behavior
2024/01/11(木) 16:34:13.87ID:tWeEPqJO0
>>91
preventDefault()をstopPropagation()に変えるだけでいいかもしれない
この場合は多分preventDefault()はいらない
94デフォルトの名無しさん (ワッチョイ 8d43-n7AJ [114.166.5.254])
垢版 |
2024/01/11(木) 22:20:25.19ID:vnpK4WpS0
clickやmousedownに仕込む話したど思ったのでバブリングを指摘したけれど
スマホの場合にスライダー操作でスクロールしちゃうのを止めたい場合の話なら別問題
スクロールはブラウザ側の仕組みでDOMのイベントバブリングを止めてもダメ
それとターブルじゃなくて、スライダーをtouchmoveしたときにスクロールを止めたいのじゃないですか

要件としては
スライダーのtouchstartでブラウザのスクロール機能を無効にして
スライダーのtouchendでブラウザのスクロール機能を有効に戻す
スクロールの有効・無効は、スクロール要素のcssのスタイルで制御できるので、JavaScriptでstyle要素のoverflowYまたはoverflowXを'hidden'または'auto'と値を切り替える
95デフォルトの名無しさん (ワッチョイ 231d-JApz [2400:4151:a4a0:6500:*])
垢版 |
2024/01/11(木) 22:41:54.15ID:bfPtSoSL0
>>93
ありがとうございます。
スライダーのelementにe.stopPropagation()をしたらスライダーを動かせるようになりました
>>94
ありがとうございます。試してみます。
96デフォルトの名無しさん (ワッチョイ 85e7-UQX2 [2404:7a87:26a0:9e00:*])
垢版 |
2024/01/13(土) 03:22:15.94ID:bBKen2/T0
すいません、vueの質問はここでいいですか?
2024/01/13(土) 11:42:05.46ID:sUiBS1y50
↓あたりにどうぞ
JavaScriptフロントエンド総合 Part.11
https://mevius.5ch.net/test/read.cgi/tech/1660898820/

Vue vs React vs Angular vs Svelte Part.11
https://mevius.5ch.net/test/read.cgi/tech/1660969032/
98デフォルトの名無しさん (ワッチョイ ad01-1c9G [126.168.252.135])
垢版 |
2024/01/14(日) 17:21:53.60ID:vAN1c9wS0
ありがとうございます
2024/01/26(金) 17:25:13.36ID:2+81uqBd0
WebフロントエンドでのJavaScriptを勉強中です
「jQueryでできることは素のJSでもできるのがほとんどになったから、jQuery不要」という話しが出てきますが、
エレメントの操作などで、素のJSだと記述する文字が長く、jQueryだとすごく短く書けるので、それだけでも十分便利と感じています。

document.querySelector('selector')
⇒ $('selector')

jQuery不要の場合、効率良く書くために代わりに何を使っているのか気になります。
大型のフレームワークとかでしょうか?フレームワーク使うと、ここのエレメントの参照・操作などはもはや不要になるのでしょうか?
2024/01/26(金) 19:57:32.14ID:vs+8Yc4d0
jQueryの技術覚えてもjQueryにしか使えない。素のJS技術はどんなフレームワーク使っても役に立つ
2024/01/26(金) 20:11:15.77ID:Uafucq2BM
>>99
コード補完機能(任意のスニペット呼び出しを含む)のある現代のエディタではその全てをキータイプする必要は無いし、どうしても短く書きたいならショートハンドを定義すればいい
たとえば、5ch互換掲示板ビューアであるブラウザ拡張機能「read.crx 2」では、同拡張機能の共同メンテナの方が作成したjQueryライク(互換ではない)なショートハンドライブラリ「shortQuery.js」が使われてる(だいぶ前にいわゆる「脱jQuery」のお供として導入されたハズ)

なんにせよ、初心者が今からjQueryを学ぶのは悪手
2024/01/26(金) 20:12:23.71ID:Z5KyuX5d0
素のjs分からずにjquery使えるわけないだろ
2024/01/26(金) 21:41:55.02ID:bxMKu9aD0
>>99
その通り
ReactやVueに代表されるような昨今のフレームワークは開発者がDOMを直接操作しない
2024/01/26(金) 21:48:25.16ID:KJ09lp1IM
そう思ってるとこんなん当然知ってますよねみたいなノリでevent処理とかrefとか出て詰むゾ
2024/01/28(日) 11:39:44.53ID:WhNL7KNN0
>>99
jQueryの現在はHPフロントエンジニアさんが
抱負なライブラリでHPに花をそえるために使っているだけ
ウェブアプリ屋さんはjQueryが邪魔くさい時があるので使わない
どの分野を目指すのかが決まっているなら
その分野で何が主流なのかを見極めたほうがいい
2024/01/28(日) 19:30:17.30ID:1z8oB9tQ0
動的に作られる特定の要素にだけイベント追加するのがラク

jQueryがバニラJSに勝ってる唯一の点だけど、そういう処理を入れるくらいDOMの操作使ったアプリ作るなら他のフレームワークのほうが良いだろう
2024/01/28(日) 20:16:55.07ID:9hZosd/l0
ゆうて古から続くjqueryの資産はいたる所にあるから、読めることくらいは出来ないとな
難しいもんではないんだし
2024/01/28(日) 23:52:21.72ID:Plt7vTfv0
>>106
バニラでも祖先ノードでmatches(selectors)を使えば対応可能なので、それほどjQueryに優位性はない気がする。
それから、jQueryはバブリングフェースのみ対応という弱点がある。
バブリングしないイベントタイプに関してはaddEventListener()に優位性がある。
2024/01/29(月) 01:34:06.63ID:fIBxeYXl0
他から持ってきたコードが指すjQueryが最近のじゃなくて
だれが互換性担保するのってのが一番困る
jQueryを直接つかう分には検証できるけど
依存しているライブラリは採用せんでほしい
110デフォルトの名無しさん (ワッチョイ f95a-w/9U [2400:4052:5062:9ff0:*])
垢版 |
2024/01/30(火) 09:12:09.86ID:GdANFjKZ0
jQuery使いの人は行き当たりばったりな人が多い
jQueryライブラリファイルの読み込みが沢山あってなんじゃこりゃみたいな
2024/01/30(火) 11:06:06.79ID:kUs11O+K0
jQueryが出た頃はSelectors APIもなかったからな
行き当たりばったりというより昔の標準APIが貧弱でライブラリに頼るしかなかった
2024/01/31(水) 00:18:29.61ID:Z4CJtIhd0
jQuery は短く書けるので、ちょっとしたデモには良い。
でも、React, Vue.js では使わない

Bootstrap も、5 からは使わない。
popper.js に変わった
2024/01/31(水) 08:00:03.26ID:8Xe2gISY0
>>110
しかもバージョンがところどころ違ったり読込先や仕方が違ったりする
2024/02/03(土) 01:34:02.49ID:VXfZdpMe0
>>99
■jQueryの良さは健在だが……
機能のある程度はES2015で代替出来るが
jQueryの良さは健在、そこはお前さんの言ってる通り

それとは全く別の話
手続き型的な手法でDOMを触ってるのが前時代的

■DOMを触るのが不味い理由
DOM作り直しは要素の改ざんな訳だ
DOMを更新するためには、探索して選択、それを作り変えるの2ステップがあるけど

別の機能がDOMを消したり書き換えたら
見つけられなくてエラー出るかも知れないよね?
選択できても改ざんされてて加工出来ずにエラー吐くかも知れないよね?

担保するのは全て貴方の目視テスト
10機能作ったら10x9の90通りのマトリックステスト作ってね
このように機能を作る度にnの2乗みたいなテストを目視でさせられる
全部で100機能作りましょうとかなるとありえん無理

■代替はJSフレームワーク
HTML作るテンプレートエンジンでsmartyやBlade、pugとか色々あるけど
あんな感じでDOMを生成する何かを用意しておいて
JS内で変数が変更されたのを検知して、勝手に新しいDOMツリーを作り直して嵌め込んでくれよって思わん?

その思想で作られてるのがReactやVue、Angular等のJSフレームワーク
JSフレームワークが用意した「変数の変更通知を行う」お作法を覚えて動かすとDOMが常に最新のあるべき姿になる

これによりDOM操作回りはJSフレームワークという外部の業者が全て責任持ってやってくれる
俺達はDOMの元であるテンプレートを読み込ませたら
ただ変数がちゃんと正しい値になってるか?を保証すれば完璧に動作するよね

変数書き換えたら常にあるべき姿のDOMに書き換わるシステムに、jQueryで改ざんし始めると衝突して邪魔になる
次のDOM更新でjQueryが書き換えた内容そっくり消えるしな

だからこれからのWeb開発にjQueryは不要なんだよ
決してES2015が優れてて代替出来るから不要になったという話では無い
2024/02/03(土) 06:58:45.76ID:hL2W++6M0
変数更新してるだけに見えて、別処理が勝手に動くというのも実はアレだけどな
今はリアクティブが流行してるからそこにケチつける風潮ないけれど
2024/02/03(土) 10:15:49.25ID:HeN++Rh50
>>99 (ワッチョイ 4d7c-MQtI [122.212.16.94])
これだけ回答をもらって無反応か
最近の質問者はこういう人が多いな
2024/02/03(土) 10:49:13.33ID:YZYv2rY+a
反応欲しいなら知恵袋にしとけって
2024/02/04(日) 02:28:25.82ID:ipvGCo7I0
JavaScriptで作れるプログラムって、webブラウザ以外になにかありますか?
全然ユーザーがいないのはダメだけど
ある程度需要がありそうな用途
2024/02/04(日) 03:05:45.75ID:w9OYnB1OM
>>118
WebブラウザとWebページを区別できるようになろう
2024/02/04(日) 05:18:25.36ID:7DDGpERD0
でもまあwebブラウザが全てではあるよね
他に出番無いし
2024/02/04(日) 07:00:09.01ID:wRU34d220
今はNode.jsでサーバ側もJSってこともある
122デフォルトの名無しさん (ワッチョイ bd43-tydm [114.148.57.9])
垢版 |
2024/02/04(日) 10:50:30.37ID:Vls4Se8V0
そうだね
node.jsでJavaScriptはサーバサイドだけじゃくてデスクトップアプリでも使われている
代表格はVScode(node.js+Electron)がある
Webpackもnode.jsだし
身近なところでは汎用掲示板ビューアSikiがnode.js+ElectronでJavaScriptだね
   
2024/02/04(日) 12:44:47.52ID:ieWwGMGa0
CSSもHTMLも生で書くのは平成だしな
普通SASSやらPugやら使うだろ
JSだってWebpackやらBrowserify越しに使うやろ

まぁNode.jsじゃトランスパイル遅いから
GOやRustのツールに置き換える流れにはなってるが
じゃあ最初からCやGO、Rustでやれば良かったよねとはならないフットワークの軽さがNode.jsにはあるからな
2024/02/04(日) 12:55:11.06ID:m4gIKl+m0
Rustで書いたJSトランスパイラは速いけどRust自体のコンパイルは遅い
2024/02/04(日) 23:16:57.06ID:/yrx0E0+0
あることをローカルマシンでやりたくて、Python入ってっから、それでやろうとしたらできなくて(いや正確にはすごく遅い)Node.jsになってしまった。何かは言わない。
126デフォルトの名無しさん (ワッチョイ fd09-tjaG [210.131.245.99])
垢版 |
2024/02/05(月) 09:44:15.86ID:Q9Y3g4UN0
node.jsの良さはJavaScriptでプログラミングできる事
Electron使えばUIもHTMLで書けるので便利
なれたらJavaScriptでデスクトップアプリを書くのが楽しくなった
2024/02/05(月) 15:57:34.49ID:thNH7tNN0
>>126
Electronはファイルがデカいから
俺が何か作る時はCLI一択だわ

対話的な物作る時は
Tauriで作ってみたいなぁと思う
2024/02/05(月) 18:19:30.64ID:1m9RfVzn0
>>118
Visual Studio Codeがjavascriptで作られている
2024/02/05(月) 19:17:51.68ID:+Fh+RIwSa
vscodeが糞な理由が分かった気がした
2024/02/06(火) 07:31:11.51ID:JsprpZ5q0
ElectronとAngularで作られてるシステム見させてもらったんだけど、reactに書き換えるって言ってたな

ならnativeでよくね?
2024/02/06(火) 14:51:45.98ID:nsw90RpoM
reactとreact nativeって書き換えが必要なの?
ゴミかな?
132デフォルトの名無しさん (ワッチョイ bd43-tydm [114.148.57.9])
垢版 |
2024/02/06(火) 15:07:15.20ID:4bvVpi0E0
>>0127
TauriはWebViewなので
Electronの様にWebRequestを簡単に操れない
Rustに拘らないのなら
使い慣れた開発言語でWebViewを組み込んだ方が手っ取り早い
2024/02/07(水) 01:01:55.81ID:8Eizk2eA0
YouTube 動画で見たけど、

北米では、Flutter よりも、React Native が多いらしい
134デフォルトの名無しさん (ワッチョイ fd09-tydm [210.131.245.99])
垢版 |
2024/02/07(水) 10:23:32.40ID:Q0zrTHJg0
JavaScriptで書ける環境の話から
かなり脱線気味
2024/02/11(日) 13:06:38.03ID:4EmF6N4v0
業務がWebアプリなのは危険だと言い出した管理職がいて
Electronでチャチャとデスクトップソフト風にしたら
仕事が早いとお褒めいただいたw
何も変わっちゃいなんだけれどそれはナイショ
136デフォルトの名無しさん (ワッチョイ 0e46-9m7S [2001:240:242e:628f:*])
垢版 |
2024/02/11(日) 14:27:08.42ID:cAyMWgFh0
危険だという懸念が素人の無理解から来てるだけなのか妥当な懸念なのか分からないから何とも言えんな
前者なら悪くない回避策
2024/02/11(日) 21:47:35.74ID:VNWSIW9O0
ブラウザのアドインに情報吸われる危険性は下がるね
2024/02/11(日) 23:27:36.16ID:Z05z2D4x0
まあ一般的に考えて危険やな
その認識は正しいさすが管理職
2024/02/12(月) 12:55:25.07ID:3q7oTZTX0
管理職が正しい
どんなに堅牢なシステムでも狙われたら終わり
だから今はクラウドじゃなくてオンプレ回帰してる
2024/02/12(月) 15:27:53.80ID:2z81MgsB0
もうネット使うなよ
2024/02/12(月) 15:53:51.52ID:BAGnA5Sa0
Access でいいよ
2024/02/17(土) 10:17:04.46ID:eAolMzZEd
VBAとC#でちょくちょくアプリ作ってる程度のもんなんですけど
最近VS Code使ってjavascriptの勉強始めたわけですよ
デフォルトの環境で扱ってる限り、typoの指摘が甘くて気づくのに時間かかってしまってつらいです
Visual StudioでC#つかってるとかなり丁寧に指摘してくれるんで助かるんですが
Codeはその辺厳しいですね

Code Spell Checkerを入れてみたんですけど、よさそうな対策は他にありますか?
2024/02/17(土) 10:48:07.30ID:Hugfzc2R0
JSはデフォだとどんなパラメータも持ちうるのでtypoを機械的に見つけにくい言語。
なのでjsdocゴリゴリ書く(もっとやるなら@ts-checkも)かTypeScript使うと良いよ
2024/02/17(土) 14:57:51.18ID:eAolMzZEd
>>143
ありがとうございます
TypeScriptも視野にいれてちょい調べてみます
2024/02/17(土) 15:05:36.03ID:MLAS2UwQ0
>>142
VSと比較するならWebStormじゃなきゃ辛いし
VSCodeのままでもLSPなりで魔改造すれば頑張れるやろ
2024/02/17(土) 17:54:57.60ID:3rmfz0Aa0
>>142の言うtypoが具体的にどんなのか気になる
厳しいのはCodeじゃなくてJavaScriptなのを誤解してそう
2024/02/17(土) 18:56:27.31ID:snWQTW2N0
JSもDataflow Proposalsが導入されたら
普通に使い続けるんだがなぁ
148デフォルトの名無しさん (ワッチョイ 7310-HqFJ [180.12.82.129])
垢版 |
2024/02/19(月) 18:24:10.88ID:waVDHmuE0
マウスボタンを押しながらマウスを移動させてからマウスボタンを離すと
マウスボタンを離したときにmouseupだけでなくmousemoveも反応してしまうんだけど仕様ですか?
これ知らなくて動作が思うように行かなかった。
2024/02/20(火) 00:12:35.13ID:n1uvc9Mt0
手元で試したところmouseup直後に同じ座標でmousemoveが発火してるのを確認
うまく判定して後続処理が走らないようにすれば良さそうではある
150デフォルトの名無しさん (ワッチョイ 7310-HqFJ [180.12.82.129])
垢版 |
2024/02/20(火) 12:26:48.30ID:jaWYglX60
>>149
ありがとうございます
そうしてみます
2024/02/20(火) 12:38:34.44ID:SYHvuSDa0
>>148
mouseoverはマウスが何かの要素の上を移動すれば毎回出てくるから
マウスを持ってる限り常に垂れ流し続けるぞ

ドラッグアンドドロップを実装したいなら
イベント(関数発火)が非同期かつ大量に垂れ流しになること前提で組む必要がある

一案としては上のスコープで何個か変数を定義

mousedown -> 直下の要素を掴んでhold変数に放り込む
mousemove -> hold変数に値が入ってないなら即return、座標変数に座標情報を格納
mouseup -> 精算、hold変数と座標変数をnullにする
2024/02/28(水) 10:59:38.09ID:j/HFCr6sd
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
2024/02/28(水) 11:00:05.73ID:j/HFCr6sd
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
2024/02/28(水) 11:09:45.91ID:74XehS+p0
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
2024/02/28(水) 11:10:03.68ID:74XehS+p0
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
2024/02/28(水) 11:34:49.79ID:j/HFCr6sd
すみません。5個書き込まれてしまいました。すみません。
2024/02/28(水) 12:19:36.32ID:bgJbuEEB0
>>152
そもそもjQueryは時代遅れだから
ReactなりVue.jsなりのJSフレームワーク覚えて移行しろ
理由は>>114

誰が作ったか分からん動くかも全く保証されてないし、10年前からもうメンテすらされてない
fixForSafariMobileなんてプラグインなんて持ち出してきて
意図通りに動きませんとか動くわけないし、アドバイス出来る訳ない

プラグインの作者は神様でも何でもない
俺らとそう変わらない腕前の奴が少しの善意と承認欲求で作ったコード片でしかない

どうしてもjQuery+プラグインでやりたいならその作者のsylvain-hamelさんにでも聞くか
GitHubで公開されてるコードを全て読んでちゃんと理解して手直ししなよ
2024/02/28(水) 18:05:41.24ID:j/HFCr6sd
レスありがとうございます。昔からあるjsやjQueryは今は時代遅れなんですね。
ただ、今回は15年動いているものの改修作業なんです。
fixForSafariMobileはjQueryソースからselectboxからlistに変換するということはわかりました。

$("selectTarget").selectValue(ul, val)で、できそうだと思ったのですが、ulで何を渡すかまでは来ました。
valからulを検索して取得してからこれなんですかね?
2024/02/29(木) 00:27:46.28ID:XLzCkQ6P0
>>158
なるほどなぁ、なら何とかツギハギで頑張ってパッチするわけか

んで、.selectValueで出来そうだと思いました!って言われても
そんなメソッドjQueryには無いぞ
ttps://api.jquery.com/

何らかのライブラリなりで
jQueryのメソッドを拡張・追加すれば実現出来るが
それを何の前提知識も無く「どうやって使えば良いですか?」と言われても何もアドバイス出来んぞ

jQueryはもう相当うろ覚えだが
.valメソッドとかを使うんじゃなかったか?
セレクトボックスは動きが特殊だから.valで動かんかったら他のメソッド探してみろ

jQueryの公式ドキュメントを読め
JavaScriptの話ならMDNをちゃんと読め
そうとしか言えんわ頑張れ
160質問者 (ワッチョイ 23e7-MEMs [118.87.46.101])
垢版 |
2024/03/01(金) 23:06:30.38ID:Id25sy0k0
いろいろとありがとうございます。
2024/03/01(金) 23:23:12.37ID:Id25sy0k0
やりたいこと
・プログラムのデバッガみたいなステップ実行ができるWEBで作成されたものを改修。
・スクロールしていくので、複数行リストボックスで現在行を選択表示して、実現。PC版では動く。
・しかし、モバイル版では、html形式の複数行リストボックスは1行のドロップダウンリストBOXになってしまう。

どうもこれは、モバイルの仕様なようで、実現するのは不可能ぽい。
過去にある人がjqueryで、モバイルで複数行リストボックスみたいな事は実現しているが、これはあくまでも表示のみで選択は不可。
・複数行リストボックスをリスト型で実現している。なので、Val()でも、スクロールして、選択表示できない。

ほかの方法で考えた方が良いですかね?ただ、改修なので、別のフレームワークに変えるのは無理ですね。
2024/03/02(土) 00:10:12.99ID:Rcnd56Cm0
sizeが指定されているSELECTタグのdisplayをnoneにして消す
代わりに自分でsize分だけのリストなりボタンなりを追加する

これをjsでモバイル表示のときだけ実現すりゃいいんじゃない
2024/03/02(土) 11:13:20.78ID:TgRbMsKE0
>代わりに自分でsize分だけのリストなりボタンなりを追加する
>これをjsでモバイル表示のときだけ実現すりゃいいんじゃない

レスありがとうございます。

データが100行あります。
今、複数行選択リストボックス(select size=25)では、25行表示できるエリアがあって、75行が隠れています。
99行目のListをスクリプトで選択(人間は選択しません。見てるだけです。)したら、自動的にそこまでスクロールしてくれます。
リスト(ul,li)ではスクロールまでしてくれず、隠れてしまって、実現はできないと思うのですが...
2024/03/02(土) 11:46:08.42ID:TgRbMsKE0
<html>
<select id='now_exe_prg_row' size=25>
<option value="1">プログラム1行目</option>
<option value="2">プログラム2行目</option>
:
<option value="100">プログラム100行目</option>
</select>

<js>
$('now_exe_prg_row').val('99')

これをlistで実現したいのですが、無理ですよね?
2024/03/02(土) 12:45:11.55ID:Rcnd56Cm0
無理じゃない
jsでdom操作はいくらでもできる
ul liでoptionのような動作をするカスタムのリストボックスも作成可能でcssフレームワークではよくつかう手法

そういうカスタムのWebComponentを作るといいよ

selectから情報をひっぱってきて外観をul liでカスタムコンポーネントを作り、liのクリックイベントリスナーでselect要素のselectedIndexを変更すればいい

select要素はモバイル環境ではdisplayをnoneにする
2024/03/02(土) 12:47:42.36ID:Rcnd56Cm0
再利用しないのならWebComponent書くまでもなくそのままjsで書けばいい
2024/03/02(土) 12:52:06.03ID:Ac/Ek54X0
>>164
CSSでul > liの見栄えを調整しろ
・メディアクエリの画面横幅で適応されるCSSを切り分ける
・heightをliの25行分の高さに指定
・overflow: scrollを付けてul内でスクロール出来るようにする

CSSを見栄えを整える能力は
Webで食ってく行くならこの先ずっと使うから覚えろ

CSS2の頃はまだ「技術的にも無理です!」ってケース多かったが
CSS3までフル動員させたら「それお前が無知なだけ」ってケースばかりだぞ
2024/03/02(土) 13:00:31.15ID:Rcnd56Cm0
仕事で受けてるのならこのくらいできないとヤバいぞ

カスタムコンポーネントにすれば

customListBox.size = 25
customListBox.selectIndex = 99

みたいに設定できるようにメソッド追加すると便利
169デフォルトの名無しさん (ワッチョイ 8f43-04EL [114.166.8.189])
垢版 |
2024/03/02(土) 14:29:55.91ID:83dahe0E0
無理にiOSでも同じUIにする必要ないのと違う
ぐるぐる回るドラム式がiOSのSafari流でかっこいいじゃんと褒め殺せば
林檎ユーザー特有の優越感をくすぐりOKもらえる気がする
2024/03/02(土) 15:39:45.46ID:Ozqjn7Yu0
>>164
細かい要件が分からないけどただそれっぽく表示するだけならこんなのでいいんじゃないの?
jsfiddle.net/sj3xkrad/1/
2024/03/03(日) 22:00:44.67ID:719to9SO0
皆さんレスありがとうございます。今日休みで明日から参考にさせていただきます
2024/03/04(月) 10:08:20.56ID:ORhetY7X0
Bootstrap, Tailwind, Bulma などに、
使えそうなコンポーネントは無いの?
2024/03/05(火) 18:22:59.72ID:dRdKhnsT0
質問で、
chrome.tabs.query({}, function(tabs) {
で全タブを取得した各タブに関して、
そのタブのwindowType(appとかnormalなど)って取得できますか?
2024/03/05(火) 18:47:33.98ID:qENbjC0BM
>>173
個別のtab.windowIdから引けるハズ

もっとも、はじめからwindow.getAll()を使った方がいいとは思うが
2024/03/06(水) 10:35:08.32ID:c6agTDKp0
>>174
お、できた!
ありがとう!

ネットでtabs.WindowTypeってのが載ってたので、それで惑わされてた…
2024/03/06(水) 10:42:44.31ID:c6agTDKp0
>>174
取得した各tabに対して取得したかったので、
chrome.windows.get()を使いました。
177デフォルトの名無しさん (ワッチョイ 5fad-VtrB [124.141.209.120])
垢版 |
2024/03/29(金) 14:50:19.65ID:yy1PP2Jg0
非同期処理を同期処理から呼び出すラップ関数を作りたいのですが方法がわかりません
AIに聞いたら次のコードが返ってきましたが、当然awaitが使えないので失敗します
-------------------------------
//非asyncな呼び出し元から、asyncメソッドを呼び出し、結果が帰るまで待って返却する
function FromSyncToAsync() {
const result = await [値を返すだけの非同期な関数]();
return result
}
-------------------------------
調べても呼び出し元をasyncにする方法しかみつかりません…
178デフォルトの名無しさん (ワッチョイ 5fad-VtrB [124.141.209.120])
垢版 |
2024/03/29(金) 15:40:17.46ID:yy1PP2Jg0
これはエラーはおきないけど失敗。戻り値がpendingになりました
-------------------------------
function SyncToCallAsync(){
return getWasmFileLastModified().then((result) => {
// 結果を返却
return result;
});
}
-------------------------------
2024/03/29(金) 16:32:26.02ID:utPNPoKt0
>>177
残念ながら不可能
一度非同期の世界に入ると
同期処理の世界には戻って来られないぞ

・非同期処理から値を受け取る箇所はPromise値を返す関数にする
・前処理や後処理を含めて色々やってくれる関数をasync関数で定義する
・極力此処の関数やクラスメソッドは小さくして、関係ない値を持たせない事で全てをasync関数にする事を防ぐ

JavaScriptという言語がイベント駆動やイベントループ前提で作られてる以上
こういう作りを維持し続けるしかない

まぁ、ロジックを司るデカい所は基本async関数だよ
作り直す許可を上長や顧客からもぎ取るのが仕事やね

そういう交渉が出来ないなら細かくPromise.thenで作業していくしかない
180デフォルトの名無しさん (ワッチョイ 5fad-VtrB [124.141.209.120])
垢版 |
2024/03/29(金) 16:55:52.54ID:yy1PP2Jg0
ありがとうございます。いくつかのAIに聞いても堂々と回答実現不能なコードばかり返してくるので困っていました。できないとわかったほうが先に進めます
2024/03/29(金) 17:39:27.22ID:D+b6Pa3z0
現時点ではAIは不可能なことを不可能と答えないケースが多い
信用しすぎないように
2024/04/05(金) 21:57:54.50ID:otPTbv2G0
test
2024/04/05(金) 21:58:17.84ID:J45N4zHg0
test
2024/04/13(土) 22:59:37.70ID:3VlMmSMB0
すいません、Reactの質問ってここでいいですか?
2024/04/13(土) 23:23:14.15ID:i7geu5sV0
まずスレ一覧をReactで検索するぐらいしてみたら?
186デフォルトの名無しさん (ワッチョイ 298b-29lp [240d:1a:7fe:ef00:*])
垢版 |
2024/04/20(土) 13:04:04.45ID:/vy8T+9K0
昔、私が大学でプログラミングを習ったとき(C言語でした)には円周率など特別な値については定数にしろと言われはしましたが、その他の変数については定数にしろとは言われませんでした。
Javascriptの本を今読んでいるのですが、再代入を行わない場合にはすべて「let」ではなく「const」を使えと書いてあります。
このようなことが言われるようになったのはいつ頃からでしょうか?
私がそう習わなかっただけで、昔から言われていたことでしょうか?
2024/04/20(土) 14:12:14.37ID:7dIwEOD00
>>186
JavaScriptはCromeやFirefox等のブラウザ作ってる所が各自で動作するエンジン作れと丸投げしてるが

仕様書にあたるECMAScriptが長い間ES5というバージョンのまま止まってた
その頃には変数宣言はvarのみだった

流石に今時のプログラミング言語にしようぜって事でECMAScriptの強化が始まり(ES6というプロジェクト)
最終的に2015年からは毎年強化した仕様を出しましょうという話になった

その最初の成果物とも言えるES2015で変数宣言としてvarの他にletとconstの2つが追加

for (var i = 0; i < 5; i++) {
setTimeout(() => console.log(i))
}

これの出力結果が4が5個連続で表示される
違和感があるが、
letのブロックスコープによって解消されてるのでvarはもう二度と使うなという風潮が出来た
(それ以外にもvarは関数の先頭で纏めて書かないと変な動きする箇所がちらほら見受けられ、コーディング規約で制限されていた)

また値がコロコロ変わる状態変数が多いと
登場人物がやたら多い粗悪な小説みたいになって作業者が困るので
「再代入禁止の変数」を求める声が元々多かった

その要望を汲んだ再代入禁止のconstも実装されたため
必要になるまで全てconstでプログラミングして、必要な箇所だけ最小限にletを使いましょうという風潮が比較的早く出来た
2024/04/20(土) 14:22:49.70ID:7dIwEOD00
constは直訳すれば定数だが

JSのconstは再代入しちゃいけませんよってだけで
基本は普通の変数として取り扱う
配列やオブジェクト、関数、インスタンスなんかもconstで宣言出来るね

他言語のletみたいなものと考えると良い

constで宣言したオブジェクトや配列は再代入禁止なだけで、中身は普通に加工出来てしまうのも作りとして良くない

const arr = [1, 2, 3];
arr.push(4);
console.log(arr);
// [1, 2, 3, 4]

この辺は勝手に加工しないよう運用でカバーやね
値は基本的に複製しまくってガベージコレクションで掃除してもらう

パフォーマンスチューニングで仕方なく一つの値を加工しまくる時はライブラリ化したり関数で固めたりして、メインロジックの邪魔にならないようにすること
189デフォルトの名無しさん (ワッチョイ 298b-29lp [240d:1a:7fe:ef00:*])
垢版 |
2024/04/20(土) 14:53:24.59ID:/vy8T+9K0
>>187-188
ありがとうございました。
190デフォルトの名無しさん (ワッチョイ 6b21-9wFU [121.2.134.225])
垢版 |
2024/04/20(土) 21:40:49.05ID:KOUUOZ8l0
すみません。
以前からJSフレーム・ワークについて
疑問を持っていたのですが
フレーム・ワークを使う人は、

1. JavaScriptに精通しているので
中規模程度のサイトなら
素のJavaScriptと_lodash等だけでも組めるが
効率が悪いのでフレーム・ワークを
その内部構造をも理解して使っている。

2. JavaScriptの基本的な仕組みと
DOM操作の基本は理解しているが
素のJavaScriptではサイトを作れないので
フレーム・ワークの仕様仕組みを理解して使っている。

の2種類に大別できると思うのですが
結局ブラウザは素のJavaScriptで動いているだけなので
「1」の技能習得に向かわざるを得ないと思うのですが
いかがでしょうか。
2024/04/20(土) 22:07:39.36ID:xlVv2mR90
どこから突っ込んでいいのかわからなくて答えようがない
2024/04/20(土) 22:27:55.19ID:7dIwEOD00
>>190
lodashは関数型プログラミング的な値の加工を司るフレームワークだぞ
一部だけ利用させて頂いて関数片の集合体ライブラリとして使うことも出来るがな

フレームワークは機能を提供するライブラリであると共に
大きなプロダクトを作っていく為のファイル・関数・モジュール置き場をルールで区切ってここに設置してくださいねー
こういう司書さんみたいな役割も担ってる

複数人でプロダクトを触ったり
半年後にどれどれ?と帰ってきて読み直した時にナニコレ?にならない為に
プログラミングスキルの良し悪しに限らず
適切なフレームワークがあるなら使った方が良い

フレームワークを使わん機能を作る時でも
関数やファイルを作って保管するタイミングで「このフレームワークの考え方は好きだな、同じディレクトリ名を作ってそこに保管しよう」
自然とこういう発想が生まれる

なのでフレームワークを使い分けてる人間は引き出しが多くなっていき
可読性の良いプロダクトを作る能力も養われる

結局フレームワーク無しで適当に関数やファイルを作って放り投げるばかりで
読み辛いプロダクト作ってる奴なんて3流の雑魚だよ
193デフォルトの名無しさん (ワッチョイ d721-K5o/ [121.2.134.225])
垢版 |
2024/04/21(日) 00:20:10.62ID:R6fhRdj50
>>191 >>192
ありがとうございます。

ご教示参考にさせて頂き
精進いたします。
2024/04/21(日) 02:22:30.51ID:9CBVBBl20
>>186
サイの表紙のサイ本。
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017

ECMA Script は、ES6(ES2015)で大きな改正があった。
var を非推奨にして、let/const を使う

オブジェクトの場合は、たいていconst を使う。
代入はできないが、オブジェクトの中身は更新できるから

const a = { x: 1 }

a.y = 'あ'
a //=> { x: 1, y: 'あ' }

a = 2 //=> エラー。再代入はできない!
195デフォルトの名無しさん (ワッチョイ 0979-208W [110.2.64.150])
垢版 |
2024/04/28(日) 21:53:35.47ID:zlR73q8o0
スレ立てあらしスクリプト対抗age
196デフォルトの名無しさん (ワッチョイ 3fd8-HeGF [240b:11:92e0:d400:*])
垢版 |
2024/06/09(日) 04:17:47.61ID:7bXOQjjM0
お願いします。
let test = [{id: 1,name: '太郎'},{id: 2,name: '二郎'},{id: 3,name: '三郎'}];
console.log(test); //forEach実行前
test.forEach((value) => {
delete value.id;
})

console.log(test); //forEach実行後

これを実行してlogを見ると

0:{name: '太郎'}
1:{name: '二郎'}
2:{name: '三郎'}

forEach実行後だけでなく実行前の値もオブジェクトのidプロパティが削除されていたのですが理屈がわかりません。

試しに配列ではなくて配列の中のオブジェクトをconsole.logで調べると
let test = [{id: 1,name: '太郎'},{id: 2,name: '二郎'},{id: 3,name: '三郎'}];
console.log(test[0]);
test.forEach((value) => {
delete value.id;
})
console.log(test[0]);

forEach前のオブジェクトにはidプロパティが存在して
forEach後には削除されている期待通りの結果になるのですが
どんな理屈なのかわかりません。

初歩的な質問で申し訳ありませんが教えてください
2024/06/09(日) 04:55:12.99ID:Wajupa1KH
paiza.ioで試したが再現しなかった

JavaScriptの実行エンジンがあらかじめ使いもせずすぐdeleteするような無駄な処理を削ぎ落とすとかしてるんじゃね?知らんけど
2024/06/09(日) 04:59:29.38ID:eQJZpcgM0
>>196
「JavaScript 参照の値渡し」でググれ
初歩的な事柄だろ?すぐ理解出来るだろ
2024/06/09(日) 05:22:49.71ID:Wajupa1KH
あーjsをhtmlに直書きしてFireFox/Edgeで読み込んだら再現したわ

jsじゃなくて開発者ツールのコンソール表示の仕様だと思う
配列内のオブジェクトみたいなネストされてるモノについては、その時点の値じゃなく表示を求められた時点の値が表示されるとかじやないかな
200デフォルトの名無しさん (ワッチョイ 3f12-HeGF [240b:11:92e0:d400:*])
垢版 |
2024/06/09(日) 06:13:08.40ID:7bXOQjjM0
>>198
ありがとうございます。
参照渡しがメモリ上のアドレスを参照してるのは知っていたのですが
初めのconsole.logをした時点ではまだ値を変更していないのに
なぜ変更後の値が表示されるのか理屈が分かりませんでした

>>197>>199
一度テキストに書いたものを貼ったので^^;お手数をおかけました
コンソール表示の仕様ですか、なんとなくですが納得できました
丁寧にありがとうございます。
201デフォルトの名無しさん (ワッチョイ 43e9-qUdF [222.15.234.152])
垢版 |
2024/06/09(日) 06:25:46.35ID:v+ppJ5f30
id を別な文字に変えると
202デフォルトの名無しさん (ワッチョイ ff0c-xov0 [240b:253:a100:e600:*])
垢版 |
2024/06/09(日) 08:02:18.06ID:GyoPGP3N0
全ての波【電磁波】で下記の症状が起きる
理由は電磁波が強いために起こるか電磁波が通過すれば磁気が生じて鉄分が振動して間接的に鼓膜などが振動する
マイクロ波聴覚効果を用いた音声伝送に関する検討
2018/03/05
https://www.bookpark.ne.jp/cm/ieej/detail/IEEJ-ZT181039-PDF/
マイクロ波聴覚効果 Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E6%B3%A2%E8%81%B4%E8%A6%9A%E5%8A%B9%E6%9E%9C
>>マイクロ波を照射された被験者は、クリック音やブザーのようなうなり音が聞こえる
早大、物質中の創発磁気モノポールに起こる集団振動現象を理論的に発見
2024/06/04
https://news.mynavi.jp/techplus/article/20240604-2958879/
理研、電子ビームの電子回折をアト秒で制御できる技術を開発
2024/06/06
https://news.mynavi.jp/techplus/article/20240606-2960578/
※電磁波も振動させれると記載あり
最低でも下記ノ電磁波の威力が必要なら行っている者全員補足されている
GPSの電波は超微弱
https://gigazine.net/news/20240421-gypsum-gps-receiver/
[22]米国特許5868100号
【GPS位置情報を使用した動物コントロール・システム】
一例ですが年々受信機の感度は向上している
東工大、磁束集中器を用いない高感度「ダイヤモンド量子センサ」を開発
2024/06/07
https://news.mynavi.jp/techplus/article/20240607-2961238/
電磁波音波攻撃をされている部位ごとにホルモンや異常物質などの観測
パーキンソン病の原因物質、脳内の可視化に成功
2024年6月6日 0時00分
https://www.asahi.com/articles/ASS652V7RS65ULBH00GM.html
2024/06/09(日) 08:21:10.79ID:kTI4ZAed0
>>196
>>199 でも指摘のある通りconsole.logの仕様かな
オブジェクトを渡した場合、開発者ツールで見ることのできるのはそのオブジェクトの現在の状態
デバッグで delete の行で止めてみれば確認できるはず
2024/06/09(日) 16:12:58.02ID:Q+r4d53/0
単純なオブジェクトならconsole.log(JSON.stringify(hoge))とかするのも手だね
2024/06/09(日) 17:12:03.63ID:bzc/s2Ac0
ここが詳しいね↓
Chrome の console.log でハマらないために
http://nmi.jp/2022-11-14-Be-careful-about-console-log-in-chrome
2024/06/09(日) 18:59:00.31ID:47AcMhsH0
>let test
オブジェクトtest に再代入していないから、const test を使う。
内部を変更しているだけだから(破壊的変更)

配列オブジェクトtest の、内部のオブジェクトを変更している。
value は参照渡し。
内部のオブジェクトをコピー・再構築して、引数に渡すのではない!

C/C++ 以外の言語は参照渡し。
コピー・再構築せずに、現存するオブジェクトをそのまま引数に渡す

const test = [{id: 1,name: '太郎'}];
console.log(test);
//=> forEach 実行前は、[ { id: 1, name: '太郎' } ]

test.forEach((value) => {
delete value.id;
})

console.log(test);
//=> forEach 実行後は、[ { name: '太郎' } ]
2024/06/13(木) 23:54:51.41ID:UwmoZOtM0
console.log厄介だな…プリントデバッグ卒業しないと駄目か
2024/06/14(金) 00:22:57.99ID:QtqbLyKp0
卒業しなくていい
2024/07/02(火) 17:17:44.53ID:kFuGoUXg0
ループの中でwindow.openして、ポートだけが違う同じドメインの同じ画面を複数開くとchromeのタスクマネージャーでは全部同じプロセスIDでcpuコア分散してくれないのだけれどそういうものでしょうか?
最初は同じオリジンでやってたんだけどふか高くて、ポート変えて別オリジンならプロセスも変わってコア使い回してくれるかなと思ったのだけれどそうはならず、回避方法模索中です
2024/07/02(火) 20:47:10.76ID:nZysD7UJ0
詳しくは分からないけどJavaScriptのコードで関与できる部分じゃないような
まずchromeのスレあたりで挙動について質問してみたら?
2024/07/02(火) 21:33:51.40ID:kFuGoUXg0
>>210
ありがとうございます
イロイロ試したけど挙動的にwindow.openで同じドメインのページ開くと同じプロセスに囲われてしまうっぽいです
で、hostsに同じipを別ホスト名に定義してそのホスト名で呼んだら別プロセスになってくれた
気持ち悪いけど一旦これで逃げられるか検証したいと思います
2024/07/03(水) 18:29:30.68ID:YlCf6WAf0
>>211
子ウィンドウから opener で親を参照できる間柄だと CPU を分けるわけにはいかないんじゃない?
2024/07/03(水) 18:30:11.37ID:YlCf6WAf0
>>212
CPU じゃない、プロセスか
2024/07/03(水) 20:03:48.10ID:QL5YeWa80
>>213
大元画面
→A機能群メイン画面
→B機能群メイン画面
→C機能群メイン画面

みたいな構成で大元からワンクリックでA,B,C画面がバババっと別Windowで表示のイメージで
大元とA,B,Cは親子関係いらないしA,B,C間も参照不要だから別プロセスで上げてコア分散して欲しいんだけどA,B,Cが同一プロセスになっちゃうって感じなのです
2024/07/04(木) 04:55:13.57ID:O++Z8oMX0
>>214
それらが同じドメインにあってセキュリティ上も子画面から親画面を opener で参照できちゃう間柄だから、スクリプトエンジンも同じインスタンスじゃないといけなくて同じプロセスになるってことなんじゃないかな。
間に別ドメインを挟んでリダイレクトでもするとプロセスが分かれるかもね。
2024/07/04(木) 08:37:45.29ID:7WHO1Maz0
Chromeのプロセスマネジメントの仕組みについて説明すると、Chromeは各タブや拡張機能を個別のプロセスで管理することで、ブラウザの安定性とセキュリティを向上させています。しかし、同じオリジン(スキーム、ホスト、ポートが同じ)からのリクエストに対しては、プロセスを共有することが一般的です。ポート番号が異なる場合でも、同じドメインからのリクエストは同じプロセスで処理されることが多いです。

CPUコアの分散については、Chromeのプロセスマネジメントに依存するため、開いているタブや実行中のスクリプトの数が多くても、同じプロセスで実行される場合があります。そのため、CPUコアが均等に分散されないことがあるのです。
2024/07/05(金) 09:45:00.80ID:Js1ZcPln0
acrobatで選択した単語をJavascriptに渡せないのは仕様?
api使いたいのにその前段階で躓いている
2024/07/05(金) 10:34:02.07ID:Js1ZcPln0
自己解決した。
渡せないんだねえ。
ハイライト経由で渡すんだね。
面倒くさくな。
2024/07/05(金) 10:37:09.77ID:Beou0vig0
ブラウザの制約を厳しくしないと
すぐクレカ番号やログイン情報を抜かれるからな

特殊な事をしたければデスクトップアプリやCLIをベースにした方が無難
2024/07/05(金) 11:02:03.90ID:Js1ZcPln0
デスクトップアプリのAcrobat DCで英文自動翻訳注釈作成機を作ろうとしてるんですけどねえ
2024/07/06(土) 16:41:04.11ID:ixa6zhE30
acrobatというかPDFに英文箇所を翻訳したいってことだよね
acrobatでやるならプラグインでも入れないと無理なんじゃないかな
やる事の割に大変な手間だから有償だったりするね
2024/07/06(土) 19:00:07.61ID:SVaQBkcr0
>>221
Wordで簡単に出来たことがこんなに大変で驚いてる
selectionオブジェクトがないのに驚きました
223デフォルトの名無しさん (ワッチョイ c24b-Wzaw [203.139.76.105 [上級国民]])
垢版 |
2024/07/27(土) 23:26:18.23ID:6J8KNmw/0
iOSのブラウザだと指をつまむようにピンチ操作するとタブ一覧になりますがこれを防ぐ方法ってないんでしょうか
touchstart, touchmove, touchendのそれぞれでpreventDefaultしても無理でした
2024/08/11(日) 18:28:32.58ID:tgahoj8r0
東京都の低所得者向け支援事業のページですが、
https://kurashiouen.metro.tokyo.lg.jp/login

ここのフォームに毎回手動で入れるのが面倒なんで
TamperMonkeyで入れようとしたんですが、
うまく値が入らないです。
(メアド登録すれば向こうから知らせてくるのだけどメアドを広範囲に振りまくのはなるべく避けたい)

inputタグのvalueプロパティに
値を入れてその値が画面に出ていても
そのinputにフォーカスすると消えてしまいますし、
ページのjavascriptからは正常な値が入っていると認識されていないようです。
(生年月日のselectタグも同じ)
2024/08/11(日) 18:28:49.67ID:tgahoj8r0
最初の世帯識別番号を全部フィルしてから(全部4ケタ)
一番下の規約同意チェックボックスをクリックしないと
ログインボタンが有効にならないという動作のようです。
(チェックボックスを.checked=trueにするだけではダメ)

うまく自動で値を入力するにはどうすればいいでしょうか?
セレニウムやAutoHotKeyを使えばできるような気もしますが
できればTamperMonkeyでやりたい
2024/08/11(日) 21:08:30.34ID:lbk/Z2Eg0
>>224
それぞれイベント発火時に値を読み取るようなので
inputに対しては.valueに値設定したら.dispatchEvent(new Event("input"))
selectは.dispatchEvent(new Event("change"))
チェックボックスは.click()
2024/08/12(月) 18:41:31.15ID:dTbtx1jA0
>>226
できました!
ありがとうございます
なるほど

なお
チェックボックスの.click()だけはわかってたんですが、
ちゃんと書いておりませんで、すみませんです。。。
2024/08/23(金) 05:01:35.54ID:GNzk6D2z0
ここ1年くらいで本格的に学び始めたものです
数カ月前にmicromatchていう正規表現ライブラリに脆弱性が指摘されてCVEに登録されたみたいんなんですが
これ使ってるライブラリは芋づる式で全部npmでSeverity:moderateの警告が出てるはずで
その中にtypescript-eslintも入ってるので、これ使ってるフレームワークのテンプレート、
ほとんど影響受けてると思うんですが、各ライブラリのissueとか探しても全然話題になっていないみたいです。
皆、moderateくらいのセキュリティ警告はほとんど気にしないんですか?
それとも開発環境Onlyの依存関係だから?
2024/08/23(金) 16:45:00.54ID:bCxVN52K0
>>228
botがプルリク送ってきたとて放置
2024/08/27(火) 21:06:37.83ID:lR/Nrb/N0
バニラJSって流行ってんですか?
2024/08/28(水) 07:37:45.61ID:RARaVMf40
>>228
devDependency なら伝播はしないだろ。
npm audit で確認してみりゃいい。
232デフォルトの名無しさん (ワッチョイ 25a5-sJ2H [2400:4051:e720:2600:*])
垢版 |
2024/08/30(金) 21:40:56.02ID:iQc2EzH00
拡張機能でページの読み込み完了時に動作するスクリプトを書いたが、
完了前に発動してしまい、
ラッセーラー、ラッセーラー
2331000て事にしよっと 999よりデカい (ワッチョイ 8dc0-gcOT [2400:2200:671:c292:*])
垢版 |
2024/09/03(火) 06:53:50.48ID:3ofcqTVt0
《言語 javascript》
for(let i = 0;i < 10; i++){
 if (i === 99999){
  break; // とにかく脱出
 }
}
console.log("i="+i)
は、ダメである
varは非推奨らしいけど、この意味は
T》varは、使用しないことは、推奨
U》varは、使用は、推奨は、しない
等 イロイロな解釈の余地はあるな
by 🤡自称プロマネ

letは地球人が推奨するヤバイやつ∴
letは、宇宙人的には、使用は、🈲ずる
by 👤自称ウチュ〰人 本日もモチ暴言

質問ぢゃない質問。ウチュ〰人素晴らしい
by 🥳ウチュ〰人に忖度するバカッテスタ
234デフォルトの名無しさん (ワッチョイ c18d-v++5 [240d:f:2a0:600:*])
垢版 |
2024/09/09(月) 00:14:27.71ID:0tBQa8Zr0
node.jsで「http://www.amecs.co.jp/solar/index.html?hlat=36.00&hlon=140.25」の
textareaの「0,0,0,0...」という文字列を取得したいです。

以下のようなコードで実行すると結果は
 Textarea value:
となり、うまく取得できません。
もし原因がわかれば教えてください。

<コード>
const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://www.amecs.co.jp/solar/index.html?hlat=36.00&hlon=140.25');

// ページが完全に読み込まれるのを待ちます
await page.waitForSelector('#sdata');

// textareaの値を取得します
const textareaValue = await page.$eval('#sdata', el => el.value);
console.log('Textarea value:', textareaValue);

await browser.close();
})();
2024/09/09(月) 01:15:24.84ID:/+PLPYVG0
>>234
非表示になってる#sdataがもう一つ存在してそっちを拾ってるせい
セレクタを'#overLayer > #sdata'等詳細にする
236デフォルトの名無しさん (ワッチョイ c1ed-BHET [240d:f:2a0:600:*])
垢版 |
2024/09/09(月) 07:40:59.09ID:0tBQa8Zr0
>>235
ありがとう!解決しました

ちなみに何を見ると非表示の#sdataがあることを確認できますか?
2024/09/10(火) 01:02:40.92ID:pJ+fs1Xn0
>>236
ブラウザF12の開発ツールの要素タブでCtrl+Fして#sdataで検索
238デフォルトの名無しさん (ワッチョイ c1b3-BHET [240d:f:2a0:600:*])
垢版 |
2024/09/11(水) 23:50:48.17ID:HwHYDYw50
>>235
ありがとう!解決しました

ちなみに何を見ると非表示の#sdataがあることを確認できますか?
2024/09/26(木) 10:16:59.99ID:Wk3ylYwqM
document.getElementById("test_id");
を使わずに
test_id.value
と、直接使うと何か問題がありますか?
240今の所はポクのは問題は未だ無い (ワッチョイ 3ffb-dFxZ [2400:2200:5d5:5428:*])
垢版 |
2024/09/26(木) 21:22:05.89ID:hoEdOj9E0
📕はCanvasタグID 、📘はAタグID
─ ─ ─ ─ ─ ─ ─
🔴 = document.getElementById("📕");
🔵= document.getElementById("📘");
var 🟢 = 🔴.toDataURL("image/png");
🔵.href = 🟢;
BY 🤡 んー素晴らしい
─ ─ ─ ─ ─ ─ ─
オレッちのパソコン環境だと
pure な javascript のハズだけど
document.getElementById は不要

var 🟢 = 📕.toDataURL("image/png");
📘.href = 🟢;
BY 👤 ヤバぃのかな。こんな実装
─ ─ ─ ─ ─ ─ ─
タグID がjavascriptのグローバル変数❓
そんなのは、教科書は、見たことは、
ナイナイナイ 在る。
てか、そぅなら、以下一行で済むぢゃん
📘.href = 📕.toDataURL("image/png");
BY 🥳
─ ─ ─ ─ ─ ─ ─
地球の
javascriptは超進化したのだろうか?!
BY 👤
241デフォルトの名無しさん (ワッチョイ b310-Qw5I [180.12.82.129])
垢版 |
2024/10/03(木) 08:27:00.36ID:EHJ+UvFT0
const str = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
という文字列を[]で囲まれた部分を取り出して配列にしたいんだけど
どうやればいいですか?
aaa,bbb,cccとddd,eee,fffとggg,hhh,iiiの3つの要素を持つ配列ってことです
2024/10/03(木) 08:38:25.14ID:G42V7GDMM
外側を[]で囲んでeval
2024/10/03(木) 08:40:52.73ID:WRRjekij0
aaaとかbbbとかの形式によってはJSON.parseで良くないか
244デフォルトの名無しさん (アウアウエー Sa72-xere [111.239.153.138])
垢版 |
2024/10/08(火) 10:57:59.20ID:BetB/9MOa
const str = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
str.split(",");
2024/10/08(火) 11:13:58.37ID:BetB/9MOa
// こうか?
const str = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
str.replace("[","").replaceAll("],","").replace("]","").split("[");
246デフォルトの名無しさん (アウアウエー Sa72-xere [111.239.153.138])
垢版 |
2024/10/08(火) 11:28:09.41ID:BetB/9MOa
// こっちか
const strArray = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
// 角括弧で囲まれた要素を二重引用符で囲んでJSON形式に変換
const jsonFormattedStr = strArray.replace(/(\w+)/g, '"$1"');
// JSON.parse()を使って配列に変換
JSON.parse(`[${jsonFormattedStr}]`);
// [ ["aaa", "bbb", "ccc"], ["ddd", "eee", "fff"], ["ggg", "hhh", "iii"]]
2024/10/11(金) 07:13:33.54ID:tTImpqsq0
久々にプログラミングしてるのですが、今のjavascriptって即時関数の中にコードを書くのが普通なんですか?
昔javascript触ってた時はそういうのなかったので
2024/10/11(金) 07:51:03.87ID:o/ilE/ed0
JSは15年くらい前から無名関数使い倒す文化だと思うけど
2024/10/11(金) 09:47:24.63ID:uRIO12V20
2005年頃には即時関数を使い倒す文化が確立されてたぞ
むしろ2015以降は代替手段ができたからQuick and Dirtyなコードじゃなければ即時関数の利用シーンはかなり減ってる
2024/10/11(金) 09:52:14.18ID:SCGEnJgQ0
letとconstができたから即時間数なんてもういらない
2024/10/11(金) 11:05:14.15ID:cc/oW7+2M
個人的には 1) その場限りのコールバック、2) 一連の手続きの中で中間変数(説明変数含む)が多くなるケース、で即時関数をよく使う
後者は「結果の局所化」及び「意図と実装の分離」の効果をサクッと得られる
2024/10/11(金) 11:29:01.18ID:uRIO12V20
即時関数は即時実行関数式(IIFE)の略で無名関数とは違うと思うんだけど>>251は無名関数について書いてない?
2024/10/11(金) 11:48:22.92ID:o/ilE/ed0
すまん。俺が無名関数とか言い出したから良くなかったんだろうと思う
254デフォルトの名無しさん (ワッチョイ b70e-3m9W [2400:2200:6f3:9a36:*])
垢版 |
2024/10/15(火) 06:39:54.87ID:/S0KwaUI0
そもそも、基本的に関数なんていらん。
ほぼ全部、変数は、グローバル変数で宣言し
とにかく、サブルーチンは
イベンリスナー系を除いて不要だよな

てゆぅかさ、goto文がないようだし、
goto文のラベルの代わりに
無名じゃない関数
(モビロン引数はなし∵全部グローバル変数)

これが、無限年後のJavaスクリプトの常識だぜ
てか、無名関数廃止して、gotoとラベルを
無限以内に復活しようよ

これで、ド初心者の人気No.ワン言語、確実
2024/10/15(火) 09:34:04.49ID:vvxZNDvq0
>>241
Ruby のJSON.parse なら、

require 'json'

# 改行を削除する。削除しなくても同じ結果
json_str = <<'JSON'.delete( "\n" )
[ {"あ":[{"い":1}, "x"]},
[] ]
JSON

p json_obj = JSON.parse( json_str )
#=> [{"あ"=>[{"い"=>1}, "x"]}, []]
2024/10/19(土) 15:37:37.54ID:67I5xGKq0
スクリプトの問題とは微妙に話が違いますが、
tampermonkeyじゃなくてgreasemonkey使っている人いますか?
firefoxで使ってるんですが、
greasemonkeyだと自作スクリプトって簡単にはインストールできないですよね?
zipに固めないとインストールできないと思うのですが、
みなさんはどうやってるんでしょうか?
2024/11/19(火) 23:39:35.70ID:Jroeim880
JavaScriptのwindow.openで第2引数にウィンド名を指定して画面を開きます 続いて全く同じ引数で同じ画面をwindow.openで開いてるのに別ウィンドウで開いてしまいます
broadcastchannelを使っている画面でこのような事象が見られるように思えるのですが、broadcastchannelを使っている画面はwindow.openで第2引数を指定しても別ウィンドウで開いてしまうのでしょうか
因みに関連ウィンドウは全て同オリジンでウィンドウ名は半角空白も含まれない半角英文字のみです
258デフォルトの名無しさん (ワッチョイ 0ed1-iDGe [240a:61:11c0:64d6:*])
垢版 |
2024/11/20(水) 09:20:12.24ID:GmME3X9l0
開いたウインドウにナビゲートするのではなく?
2024/11/20(水) 10:44:47.45ID:0q/8r7xH0
>>258
同じurl window.nameのページが普通に別ウィンドウで開いちゃいますね
2024/11/21(木) 20:21:30.75ID:/JpQPFMK0
>>259
単なるロジックバグでした
お騒がせしました
261デフォルトの名無しさん (JP 0Ha3-/Vqe [103.151.173.94])
垢版 |
2024/11/25(月) 21:37:59.73ID:NYf/jFroH?2BP(1000)

EchoAPIはVS Code環境に素晴らしい追加で、APIテストが超楽になった!
262デフォルトの名無しさん (ワッチョイ 1755-Dj8N [2400:4151:a4a0:6500:*])
垢版 |
2024/12/07(土) 12:00:11.18ID:Hozm9f1q0
画像の読み込みが完了したら動作するのはできたけど、動画の読み込みが完了したら動作するのはimgの部分をvideoに変えてもできませんでした。
どのようにやれば動画の読み込みが完了して動作するようにできますか?

const img_elm = document.createElement("img");
document.body.appendChild(img_elm);
img_elm.src = "./test.png";
img_elm.style.position = "absolute";
img_elm.style.top = "0px";
img_elm.style.left = "0px";

img_elm.onload = function(){

alert("画像の読み込み完了");

}
2024/12/07(土) 13:15:33.00ID:UdJyqKqA0
>>262
https://developer.mozilla.org/ja/docs/Web/HTML/Element/video
video要素で発生するイベントはloadではなくloadeddataやloadedmetadata
264デフォルトの名無しさん (ワッチョイ e310-aw/E [180.12.82.129])
垢版 |
2024/12/07(土) 20:39:58.70ID:Ho+7zKXc0
>>263
そうなんですか
ありがとうございます
2024/12/14(土) 01:19:41.44ID:vTrcqbr80
var x = 1;
if (x===1){let z = 10;}
else if (x===2){let z = 20;}
else {let z = 30;}
console.log("z = " + z);

で、エラーになります。
でもlet をvarへ変更したら、
エラーにならず、z = 10 と表示された

このようなプログラミングでは
letは使うのは、いけない事のようです。
でも、何が何でもvarよりlet推奨ぽぃし
でも、そんなの無視してやはり、
推奨されてないvarで指定すべきですか?

とゆぅか、ポクはletとconstが嫌いですが
でも、ポクは、varが好きです。

皆さんは、varは嫌いですか❓
2024/12/14(土) 06:46:27.36ID:zVdiZk6o0
釣りネタつまらん
2024/12/14(土) 20:33:37.99ID:B6x89OP40
>>265
好きとか嫌いとかで決めるものではない
2024/12/23(月) 07:23:14.55ID:X/5iZgP80
letの無いIEやHTAで開発する場合var宣言が必要だから好きとか嫌いとかではない
つまり古いブラウザのjavascriptでも動かしたい場合必然的にvarだらけになる
2024/12/26(木) 11:59:20.77ID:YCJOeewg0
JS初心者です。Electron使用しています。
カウントダウンで3→2→1と表示させようとした時、For文で組もうとするとFor文が終了した一瞬で終了してしまうので以下のように一度に作動させることで解決しました。
が、もっと効率の良い組み方があればご教示頂きたいです。よろしくお願いします。
駄目だった文(3→1に飛んでしまう)
for (let i = 3; i > 0; i--) {
setTimeout(() => {
Element.innerHTML = "";
Element.insertAdjacentHTML('beforeend', i);
}, 1000)
} return

動作しているけど改善できればと思っている文
Element.insertAdjacentHTML('beforeend', 3);
setTimeout(() => {
Element.innerHTML = "";
Element.insertAdjacentHTML('beforeend', 2);
}, 1000)
setTimeout(() => {
Element.innerHTML = "";
Element.insertAdjacentHTML('beforeend', 1);
}, 2000)
setTimeout(() => {
Element.innerHTML = "";
}, 3000)
2024/12/26(木) 12:33:27.44ID:t8P1jyWN0
setTimeout の第2引数をiを使って変えればいい
iが3→2→1と減っていくなら、例えば1000*(4-i)とか
271デフォルトの名無しさん (ワッチョイ a392-/oXw [2404:7a84:8ea0:d700:*])
垢版 |
2024/12/26(木) 12:59:38.81ID:YCJOeewg0
>>270
ありがとうございます。動きました。
また別の問題出てきましたが、それはそれでPromiseとか勉強してちょっと頑張ります。
272デフォルトの名無しさん (ワッチョイ b6e0-cPla [2400:2200:634:ad7a:*])
垢版 |
2024/12/26(木) 13:44:41.88ID:rxD7DMeD0
ウチュ〰人からのお告げという事にしてほしいが
//絶対位置指定∵動かすために
XXX.style.position = "absolute";
//位置10へ動かす
XXX.style.top = 10 + "px";

( async ()=> {
for( let y=-300; y<10; y=y+10 ) {
XXX.style.top = y + "px";
await new Promise(
res => setTimeout( res, 5) );
}
XXX.style.top = "10px";
} )();

※async関数の直下、直下、直下へ
 await new Promise をコーディング
 する事が必要ぢゃ
 ただし 動作環境等による。
 でも、当方の動作環境等では、
 async関数の直下、直下、直下へ
 await new Promise をコーディング
 する事が必要ぢゃ 
2024/12/26(木) 14:00:17.69ID:31Mawuna0
>>269
setInterval使え
インターバルに間に合わない可能性のある処理をするならsetTimeoutを再帰しろ

ループごとに必要もなくinsertAdjacentHTMLなんかするな
値を書き換えれば十分だろ
視覚効果を狙ってるならCSSアニメーション使え
274265 (ワッチョイ b6e0-cPla [2400:2200:634:ad7a:*])
垢版 |
2024/12/28(土) 04:01:21.72ID:4NKxKk420
>>265 ポクはどっちも、嫌いデス
ちょっと🤏前の自分へ返信
なに、varとlet どっちが嫌いとか
なに言ってるんだ。好き嫌いの問題でない
今のポクは、どっちも嫌い。varもlet嫌い
てっゆぅか、varとかletとかconstant
とか使わなきゃヨシ (๑•̀ㅂ•́)و✧

てなワケで、翻訳アプリ作ってみたぁ

x = 2;
if (x === 1) { y = "イチ";}
else if (x===2){y = "ニッ"}
else if (x===3){y = "サン"}
else {y = " 知ら無いアル "}
console.log("y = " + y)

なお、こんなコーディングして
エライ人に怒られても、
気にしちゃダメ在る。
2024/12/28(土) 06:58:46.94ID:vWbq3x/3H
>>274
それは質問ではないな
質問スレは日記を書く場所ではない
276>>274 (ワッチョイ ebe0-AFTv [2400:2200:634:ad7a:*])
垢版 |
2024/12/30(月) 09:51:50.06ID:Yh06n1a50
>>274 ちょっと前の自分へ返答
var x7 = 1;
var x7 += 2; //var再宣言・再代入OKだろ

は❌var x7 += 2;となった
やっぱvarも使っちゃダメだよな。てなワケで
今のところは、274が大正解
277自問自答してみた (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
垢版 |
2025/01/24(金) 06:19:41.63ID:Dgfkru+90
👤コールバック地獄(ファンクション地獄)
setTimeout(function() {
console.log(1)
setTimeout(function() {
console.log(2)
setTimeout(function() {
console.log(3)
}, 1000) }, 1000) }, 1000)
// end setTimeout×3

ちな、下記ロジックとは違うぞ
setTimeout(function() {
console.log(1)
}, 1000)  // end setTimeout
setTimeout(function() {
console.log(2)
}, 1000) // end setTimeout
setTimeout(function() {
console.log(3)
}, 1000) // end setTimeout

🤡じゃ下記ならどお!
setTimeout(function() {
console.log(1)
}, 1000)  // end setTimeout
setTimeout(function() {
console.log(2)
}, 2000) // end setTimeout
setTimeout(function() {
console.log(3)
}, 3000) // end setTimeout
2025/01/24(金) 06:29:52.53ID:Dgfkru+90
>>277の自作自演は、>>269様のご質問内容により閃いた
文学作品である。そしてこれは、
async await promise を実装したjavascriptエンジン
v8 の機能が以下にヤバイ位スゴイかを暗に物語ってる
複雑なCSSアニメーションより
javascriptでの任意の要素をアニメーション簡単に
実装できることを暗示してる。

上記文学作品を閃かせてくれた弐六九様へ感謝したい
THANK YOU FOR 269
279>>277の続編 グダグダな自問自答 (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
垢版 |
2025/01/25(土) 04:32:37.95ID:TAq0uG+90
🥳なるぼど、もしかして、

for(let t=1000; t<=3000; t+=1000){
setTimeout(function() {
console.log(t/1000)}, t)
}
でどう❓

👤んー、恐らくは、机上では、
非同期の部分は、setTimeout内の
関数(コールバックの意)だけ、故に
それは、以下と等価

for(let t=1000; t<=3000; t+=1000){
}
setTimeout(function() {
console.log(t/1000)}, t)

然るに、机上ぢゃ、そこで
t は undefined故に動かない

🥳 でへへ、それがちゃんと
🤡 マジ❓
🥳 マジですよー❢ルンルン❢
👤 机上OKで実際はNGはよくあるが
  机上NGで実際はOKは有りえ無い
🥳 それは、机上した👤は、
  🐴🦌 かつ、
  ポクは、超天才の証明なのだァァァ
👤 ・・・
280>>277 の続編の続編 (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
垢版 |
2025/01/25(土) 08:48:00.93ID:TAq0uG+90
👤ま、setTimeoutは使用はヨロシイぞ
 しかし、そのロジックは再帰でなく
 単なるループだ。for文のループ

🤡再帰?、再帰って地獄かもよ?
setTimeout(function() {
console.log(1)
setTimeout(function() {
console.log(2)
setTimeout(function() {
console.log(3)
}, 1000) }, 1000) }, 1000)

🥳コールバック地獄大好き
てか、再帰プログラミングて地獄なの❓

👤いや(⁠゜⁠o⁠゜⁠; アウウ いやいや(⁠・⁠o⁠・⁠;⁠)
🤡再帰的アルゴリズムとは
 for等のループ的アルゴリズムなら
 オレは、どっちも好きだ
 コールバック地獄は嫌いだし
 async proなんちゃらも嫌いだけど
👤矛盾した主張だな
🥳コールバック地獄とfor文組合せよう。
👤🤡 それ検討したが挫折 バイバイ
281>>277 の続編&#179; (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
垢版 |
2025/01/25(土) 13:17:37.74ID:TAq0uG+90
💃(←初登場:ナゾの女性 という設定)
あら、これ再帰プログラム❓
信じられなーーい。ありえなーーい。

マジ、超本物の再帰プログラミングは、
自身の関数を呼び出すのが本物です。
スナワチ、以下の通りよ。

var cnt = 0 ; // Global変数にしてみた
setTimeout(fff(), 1000) ;
function fff() {
console.log(cnt);
cnt++;
if (cnt < 5) setTimeout(fff(), 1000) ;
}

アナタ達の再帰は、再帰とは言えません。
モチロン、asyncとかfor文は不要ですよー
async forは🈲止です。

🥳これが本物の再帰なのか
コールバック地獄と同様に、
意味がわからないコードだぜっ。
本物の再帰プログラミング嫌いです。
てゆぅか、コールバック地獄大好き

🤡めちゃくちゃコードレビュー
だからぁぁぁーーforやって
async await promise が一番ですよぉっ

👤そもそもjsvsscriptなんてやめちゃえー
で、CSSでアニメーションやれ。
2025/01/25(土) 15:30:48.00ID:e0C8gdKs0
>>277-281
質問スレにいつまで居座るつもりなのかね
283デフォルトの名無しさん (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
垢版 |
2025/01/25(土) 16:34:31.47ID:TAq0uG+90
あっそうだ、setTimeout の再帰はおいておいて
setInterval というのも在るのか。それは、時間がないから
そろそろ、オイトマとするtimeにするかも知れない
ま、再帰しなしsetTimeoutで、かつ async promiseは使用しない
のが、一番バッチリという感触。今は。では、またいつか。5日ではないいつか
(^_^)/~ 👤🤡🥳💃一同 実は同一人物だけど(⁠・⁠_⁠・⁠;⁠)
284やっぱ過疎化防止で、また来ちゃった (ワッチョイ deaf-opVO [2400:2200:438:4658:*])
垢版 |
2025/01/27(月) 06:54:39.55ID:/Hv0VvQW0
ふと、どうでもヨイ疑問が湧いた。

for(let t=1000; t<=3000; t+=1000){
setTimeout(function() {
console.log(t/1000)}, t)
}

と、

for(let n=1; n<=3; n+=1){
setTimeout(function() {
console.log(n)}, 1000*n)
}

どっちも問題はないけど・・・
どっちが見やすい?。
誤差とかわかり易さとかの観点で

てか、どっち に しようかな。
てか、どっち の 仕様がいいのかな。
てか、どっち を 使用しようかな
2025/01/27(月) 20:38:29.10ID:DmLoR8Bu0
>>284
ChatGPTに聞いてみたけど、全部は掲載できないので結論だけ転載

1. 「時間」を基準にして明示的に処理を進めたいなら t
2. 「ループ回数」を基準にするのが直感的なら n
個人的にはtの方が汎用性が高く、特に時間管理が重要なケースでは使いやすいと思います。
2025/01/27(月) 20:44:15.26ID:DmLoR8Bu0
1. 可読性
tを使ったコードでは、時間そのもの(1000, 2000, 3000)が直接書かれており、「時間に基づいた処理」という意図が明確。
一方、nを使ったコードでは、「ループの回数を基準に処理」していることが読み取れる。
一般的には、「時間を意識した処理」ならt、「回数を意識した処理」ならnを使ったほうが直感的です。
2025/01/27(月) 20:44:38.45ID:DmLoR8Bu0
2. 精度と誤差
setTimeoutは指定した時間で必ず正確に実行されるわけではなく、若干の誤差が発生します。どちらもこの点においては同じですが、**tの方が「時間の計算結果が直接書かれているため誤差の発生ポイントが少ない」**という印象を受けます。
例えば:
1000 * n // 計算で導出
1000, 2000, 3000 // そのまま指定
上記の違いから、誤差を気にするならtの方が直接的で分かりやすいです。
2025/01/27(月) 20:46:35.01ID:DmLoR8Bu0
3. メンテナンス性
tのコード
時間間隔を変更したい場合、初期値・上限値・増加値だけを変更すればよく、スケール感の変更がしやすい。
nのコード
「1000を掛ける」という計算式が直接書かれているため、変更時に計算式部分にも目を配る必要がある。
2025/01/27(月) 21:16:45.23ID:T51mrGlF0
一般常識があるやつならtを使うメリットなんて一つも無いと分かるはずなんだがChatGPTはいまだにこんな意味のない回答するんだな

俺の使ってるChatGPTと同じとは思えない
2025/01/27(月) 21:44:29.89ID:mnVLXxyY0
ChatGPT君はわりと利用者に忖度した回答するので、利用者次第で馬鹿にもなる
2025/01/27(月) 21:56:48.37ID:DmLoR8Bu0
いや、質問をそのままGPTにペーストしたよ
利用者の意見なんて1つも入れてない
2025/01/27(月) 22:13:58.10ID:mnVLXxyY0
質問の仕方に利用者の知識量とか思考が入り込んで、ChatGPTはそれに応じた回答をする。回答のレベルは質問のレベルに合致する
2025/01/28(火) 03:33:19.87ID:7uzvZSX70
それはそうだけど、正確性からそんなに大きく逸脱はしてないでしょう
というか、客観的に大多数に正しいと思われる解決法を提示してくれるから助かる
無料のは今だに嘘が混じってる事が多いんだけど、有料のPlusは結構正確になった
参照してる知識量が無料のものの何倍もあるみたい
2025/02/06(木) 13:59:21.74ID:FTswYlc4a
外国のサイトにある動画から字幕を抜き出したくて色々試したけど上手く行かなかった(www.francetvinfo.frというとこ)
でもffmpegだとあっさり成功した
もしJavaScriptに詳しければffmpegというツールに頼らず抜き出せたのだろうか?
chatGPTに聞くとDOMで作成してるみたいな答えが帰ってきたので字幕作成はJavaScriptで行っているのかなと思った
今字幕抜き出せた喜びとツールに頼った悔しさが入り混じってるけど皆なら自力で抜き出せた?
295デフォルトの名無しさん (JP 0H96-qIVI [133.106.33.6])
垢版 |
2025/02/13(木) 12:33:25.69ID:DZyx9aKAH
失礼します。
insertBeforeでHTML要素にnodeを追加する際、複数ある要素(class)の1番最後にのみnodeを挿入したいのですが、可能でしょうか?


<div class="unko"></div> //1
<div class="unko"></div> //2
<div class="unko"></div> //3
<div class="unko"></div> //4
<div class="unko"></div> //~以下ランダムで増減


このように、ユーザーが投稿するコメントのようなランダムで増減するclass要素があり、その繰り返しの1番最後にnodeを挿入したいのですが、

hoge[0].parentNode.insertBefore(elmDiv, hoge[0].nextSibling)

これを改良して

hoge[※最後の要素].parentNode.insertBefore(elmDiv, hoge[※最後の要素].nextSibling)

とするにはどうすればいいでしょうか?

そもそも不可能である場合、不可能であると断言して頂けると幸いです。
2025/02/13(木) 13:01:37.54ID:xGLXSNfR0
:last-of-typeとか:last-childとかで出来るけどそういうの知らなくても”配列の長さ-1”くらいは思いつこうよ
297295 (ワッチョイ b149-GKZ3 [180.221.149.54])
垢版 |
2025/02/13(木) 13:14:34.23ID:8KNio/Em0
> 296
つまりあまたはわたしをアホとおっしゃるのですか?
298295 (ワッチョイ b149-GKZ3 [180.221.149.54])
垢版 |
2025/02/13(木) 13:15:37.17ID:8KNio/Em0
💩
2025/02/13(木) 13:39:50.07ID:tamKTj1t0
>>295
hoge[hoge.length-1].insertAdjacentElement("afterend", elemDiv);
2025/04/05(土) 12:51:42.18ID:7VBJ2biq0
関数定義するとき、
function funcName() { ~}

const funcName = () => { ~ }
で、関数内でthisの参照先を気にしないとすると、どっちの書き方のほうがいい、とかありますか?

なんとなくconst~で書いてたときがあるんですが、VSCodeでアウトライン表示したときに、functionで定義するとメソッドのアイコンになるけど、constで書くと変数扱いになるで他の変数と(ツリー上)区別が付きにくくなり、functionの書き方に戻しました。
2025/04/05(土) 21:28:14.07ID:sUMv9Ks50
>>300
巻き上げがあるから関数宣言はやめた方がいい
2025/04/05(土) 21:48:41.97ID:lcZxDDXa0
巻き上げがあったら困る場合だけ関数式

関数宣言のほうが
- 巻き上げがあるからトップダウンで書ける
- 名前付きの関数なのでdebugabilityが高い
ので迷ったらまずはこっち
2025/05/08(木) 23:46:11.91ID:fGnrU9Lw0
constに入れておかないと、チーターに簡単に上書き改竄されたりすんのか
2025/05/11(日) 01:02:25.07ID:N+caZpkb0
水前寺清子?
2025/05/11(日) 17:20:56.05ID:NQ286Pqc0
バイナリをいじる場合はconstとか関係ない。
2025/05/30(金) 22:49:08.32ID:1o7EfCHn0
愚痴ですが…
当方プログラミングはC言語やVBA、ほんの少しPythonを触ったことがあるぐらいのド素人です
今はサポートされてない昔の測定機器のSDKですが、dllファイルがVBAからライブラリとして読めない現象が発生
原因分からず、VBA詳しい友人にdllファイルをアンコンパイルして解析してもらうとC++で書かれているためそもそもVBAで読めないと言われました
ChatGPTにも相談すると中間Wrapper作りますよ!と言われ、紆余曲折有りながら出来上がったものをVBAで読み込んでも動作せず
諦めてダメ元で公式のサポートを頼るも、日本国内の代理店からは対応できないと断られ、やむを得ず国際電話で計測器メーカー直轄の韓国の拠点へ電話
後日メール返すとのこと
疲れた
2025/05/30(金) 22:50:16.72ID:1o7EfCHn0
ちなみに今回の対応も韓国への国際電話も自腹です(^q^)
何やってるんだろうな俺
308デフォルトの名無しさん (ワッチョイ e3b4-nntB [2400:4151:a4a0:6500:*])
垢版 |
2025/10/11(土) 20:33:48.15ID:n5gETjNc0
video_elm.addEventListener(
"ended",
function(){
alert("全て見た");
}
);
動画を再生しきると「全て見た」と出るけど
video_elm.currentTime = 0;で再生位置を最初に戻してまた再生しても
「全て見た」と出ませんでした。
このイベントは1回限りなんですか?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況