JavaScript の質問用スレッド vol.126 (308レス)
1-

1
(2): (オッペケ Sr9f-tek/ [126.254.232.20]) 2023/12/09(土)17:40 ID:Mnb70srnr(1/5) AAS
!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.125
2chスレ:tech VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
279
(1): >>277の続編 グダグダな自問自答 (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*]) 01/25(土)04:32 ID:TAq0uG+90(1/4) AAS
🥳なるぼど、もしかして、

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
(1): >>277 の続編の続編 (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*]) 01/25(土)08:48 ID:TAq0uG+90(2/4) AAS
👤ま、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
(1): >>277 の続編&#179; (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*]) 01/25(土)13:17 ID:TAq0uG+90(3/4) AAS
💃(←初登場:ナゾの女性 という設定)
あら、これ再帰プログラム❓
信じられなーーい。ありえなーーい。

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

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

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)
}

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

てか、どっち に しようかな。
てか、どっち の 仕様がいいのかな。
てか、どっち を 使用しようかな
285: (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]]) 01/27(月)20:38 ID:DmLoR8Bu0(1/5) AAS
>>284
ChatGPTに聞いてみたけど、全部は掲載できないので結論だけ転載

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

俺の使ってるChatGPTと同じとは思えない
290: (ワッチョイ 1200-wGFo [221.118.182.158]) 01/27(月)21:44 ID:mnVLXxyY0(1/2) AAS
ChatGPT君はわりと利用者に忖度した回答するので、利用者次第で馬鹿にもなる
291: (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]]) 01/27(月)21:56 ID:DmLoR8Bu0(5/5) AAS
いや、質問をそのままGPTにペーストしたよ
利用者の意見なんて1つも入れてない
292: (ワッチョイ 1200-wGFo [221.118.182.158]) 01/27(月)22:13 ID:mnVLXxyY0(2/2) AAS
質問の仕方に利用者の知識量とか思考が入り込んで、ChatGPTはそれに応じた回答をする。回答のレベルは質問のレベルに合致する
293: (ワッチョイ de4b-OnvR [119.150.245.179 [上級国民]]) 01/28(火)03:33 ID:7uzvZSX70(1) AAS
それはそうだけど、正確性からそんなに大きく逸脱はしてないでしょう
というか、客観的に大多数に正しいと思われる解決法を提示してくれるから助かる
無料のは今だに嘘が混じってる事が多いんだけど、有料のPlusは結構正確になった
参照してる知識量が無料のものの何倍もあるみたい
294: (アウアウウー Sa79-mO6r [106.130.52.8]) 02/06(木)13:59 ID:FTswYlc4a(1) AAS
外国のサイトにある動画から字幕を抜き出したくて色々試したけど上手く行かなかった(www.francetvinfo.frというとこ)
でもffmpegだとあっさり成功した
もしJavaScriptに詳しければffmpegというツールに頼らず抜き出せたのだろうか?
chatGPTに聞くとDOMで作成してるみたいな答えが帰ってきたので字幕作成はJavaScriptで行っているのかなと思った
今字幕抜き出せた喜びとツールに頼った悔しさが入り混じってるけど皆なら自力で抜き出せた?
295
(1): (JP 0H96-qIVI [133.106.33.6]) 02/13(木)12:33 ID:DZyx9aKAH(1) AAS
失礼します。
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)

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

そもそも不可能である場合、不可能であると断言して頂けると幸いです。
296: (ワッチョイ 9eba-k2ZP [2001:240:241a:56bf:*]) 02/13(木)13:01 ID:xGLXSNfR0(1) AAS
:last-of-typeとか:last-childとかで出来るけどそういうの知らなくても”配列の長さ-1”くらいは思いつこうよ
297: 295 (ワッチョイ b149-GKZ3 [180.221.149.54]) 02/13(木)13:14 ID:8KNio/Em0(1/2) AAS
> 296
つまりあまたはわたしをアホとおっしゃるのですか?
298: 295 (ワッチョイ b149-GKZ3 [180.221.149.54]) 02/13(木)13:15 ID:8KNio/Em0(2/2) AAS
💩
299: (ワッチョイ 5e0b-XAIF [153.164.41.34]) 02/13(木)13:39 ID:tamKTj1t0(1) AAS
>>295
hoge[hoge.length-1].insertAdjacentElement("afterend", elemDiv);
300
(1): (ワッチョイ 7d7c-F9OP [122.212.18.110]) 04/05(土)12:51 ID:7VBJ2biq0(1) AAS
関数定義するとき、
function funcName() { ~}

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

なんとなくconst~で書いてたときがあるんですが、VSCodeでアウトライン表示したときに、functionで定義するとメソッドのアイコンになるけど、constで書くと変数扱いになるで他の変数と(ツリー上)区別が付きにくくなり、functionの書き方に戻しました。
301: (ワッチョイ 058f-iziL [2001:ce8:137:595f:*]) 04/05(土)21:28 ID:sUMv9Ks50(1) AAS
>>300
巻き上げがあるから関数宣言はやめた方がいい
302: (ワッチョイ 0507-pzHV [2001:240:2463:dde5:*]) 04/05(土)21:48 ID:lcZxDDXa0(1) AAS
巻き上げがあったら困る場合だけ関数式

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

ぬこの手 ぬこTOP 0.550s*