◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1659855460/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ 1301-RMnj [36.240.123.227])
2022/08/07(日) 15:57:40.26ID:TS5TGpUB0
!extend:checked:vvvvvv:1000:512
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。次スレは>>950>>2の「次スレの立て方」を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

■前スレ
JavaScript の質問用スレッド vol.124
http://2chb.net/r/tech/1636525464/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (ワッチョイ 3f01-RMnj [36.240.123.227])
2022/08/07(日) 15:59:57.05ID:TS5TGpUB0
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 https://plnkr.co/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■次スレの立て方
本文一行目に「!extend:checked:vvvvvv:1000:512」と書いて、>>1-5のテンレの「前スレ」「関連スレ」を最新化して立ててください。

■JavaScriptスレの現状
元々はWeb制作板が本スレでしたが、ライブラリ信者に荒らされ、プログラム板に避難所として本スレが立てられました。
Web制作板の本スレは荒らされてから次スレが立っておらず、重複スレの消化のみとなっています。
実質的に本スレは存在しない為、質問者はWeb制作板、ブログラム板のどちらのスレで質問しても問題ありません。
3デフォルトの名無しさん (ワッチョイ 3f01-RMnj [36.240.123.227])
2022/08/07(日) 16:02:05.65ID:TS5TGpUB0
■関連スレ(Web制作板)
JavaScript の質問用スレッド vol.126 (重複スレの消化)
http://2chb.net/r/hp/1439005423/
JavaScript ライブラリ総合質問所 vol.5
http://2chb.net/r/hp/1465399470/
jQuery 質問用スレッド vol.7
http://2chb.net/r/hp/1466750494/

■各種仕様
◆ECMAScript
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
https://262.ecma-international.org/13.0/ (ECMAScript 2022)
◆HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/ (HTML Living
Standard)
https://momdo.github.io/html/ (HTML Living
Standard日本語訳)
4デフォルトの名無しさん (ワッチョイ 3f01-RMnj [36.240.123.227])
2022/08/07(日) 16:05:31.17ID:TS5TGpUB0
テンプレここまで。

テンプレは前スレ、前々スレを元に、よくある議論(Web制作板へ誘導云々)を独断で追加した。
問題があれば、修正案を提案して頂ければ。
5デフォルトの名無しさん (ワッチョイ 6f5f-RyWk [14.11.194.224])
2022/08/07(日) 16:08:52.26ID:GMB7hjKM0
6デフォルトの名無しさん (ワッチョイ ff01-qy/x [126.242.196.185])
2022/08/07(日) 17:10:09.37ID:r7YsBDkd0
> Javascript はweb制作管理板、CGI はWEBプログラミング板へ。

これは?
7デフォルトの名無しさん (ワッチョイ 3f01-RMnj [36.240.123.227])
2022/08/07(日) 17:57:12.51ID:TS5TGpUB0
>>6
プログラム板のローカルルールか
「今ではNode.jsもあるし、JavaScriptはWeb制作言語に限定されないよね」を理由にプログラム板に立てられた、と記憶してる
Node.jsスレを関連スレに入れるべきだった

【非同期】node.js part.1【javascript】
http://2chb.net/r/tech/1582906877/
8デフォルトの名無しさん (ワッチョイ 4690-Htvk [153.207.71.13])
2022/08/08(月) 23:23:18.64ID:RzP/TMnO0
この板のJavaScript スレは、
web制作管理板が荒らされた時に、緊急避難用として立てられたもの

もう、この板でやる必要はない。
web制作管理板の方へ移動すべし!

全く、HTML, jQuery などに関係ない、
Node.js でも扱うなら、この板でも良いけど、
基本、Ruby on Rails などのフレームワークは、WEBプログラミング板
9デフォルトの名無しさん (ワッチョイ 3f01-RMnj [36.240.56.30])
2022/08/10(水) 07:14:35.84ID:vRPAjQH+0
>>8
本スレがなく、ライブラリ信者が健在なWeb制作板に移動する理由はないと思う
10デフォルトの名無しさん (オッペケ Srff-RMnj [126.254.209.13])
2022/08/10(水) 10:46:13.57ID:j9H+Z2W1r
>>8はRubyを引き合いに出す件の荒らしだから気にしなくていい
11デフォルトの名無しさん (ワッチョイ ab01-adHA [126.80.253.234])
2022/08/14(日) 02:20:20.36ID:/Eqen91K0
🦏
12デフォルトの名無しさん (ワッチョイ 3b68-PvqU [112.70.179.16])
2022/08/18(木) 14:56:28.79ID:ZVXdu8CF0
ローカルのhtmlファイル内に記載してるjsで位置情報取得するコードを書いてるのですが、
毎回位置情報を尋ねられてしまいます。
webサイトのページなら位置情報の使用許可を一度設定すれば、そのサイトでは次から尋ねられなくなりますが、
ローカルのhtmlファイルを開いても同様に永続的に位置情報の使用を尋ねられないようにする方法はありますか?
ブラウザはchrome使ってます。
13デフォルトの名無しさん (アウアウウー Sa0f-oUG4 [106.181.217.92])
2022/08/18(木) 15:27:03.90ID:qt1eMpHHa
https://support.google.com/chrome/a/answer/2657289?hl=ja
https://support.google.com/chrome/answer/114662?hl=ja
14デフォルトの名無しさん (アウアウウー Sa0f-oUG4 [106.181.217.92])
2022/08/18(木) 15:28:26.33ID:qt1eMpHHa
あとは https にしてみたらどうか
atmarkit.itmedia.co.jp/ait/articles/1605/13/news038.html
15デフォルトの名無しさん (ラクッペペ MM7f-RehR [133.106.93.27])
2022/08/18(木) 15:37:16.04ID:P/iDblewM
file:はともかくhttp:にも機能制限かけるのは逆効果だと思う
クラウド売りたい一心なのだろうけどオレオレ証明書が増えてかなわんよ
16デフォルトの名無しさん (ワッチョイ 9f7c-5Ix7 [43.235.241.201])
2022/08/18(木) 19:42:08.69ID:FZFlEvPV0
そもそもwebアプリ作るなら仮想環境なり、dockerなりで開発環境を作った方が良いかと
17デフォルトの名無しさん (ワッチョイ cb01-gduT [60.151.253.164])
2022/08/18(木) 21:17:46.09ID:R8T3nWKo0
すんませんjQueryの質問なんやけど
eachでliタグの子要素のimgタグを取得してalt属性を追加して値はliタグの子要素のemタグのテキストにしたいんだが

全部のliタグの子要素のemタグのテキストを追加してしまう
対応するliタグの子要素のemタグのテキストをそれぞれ追加したいんや!
おせーてくれ!!たのんます!!
18デフォルトの名無しさん (ワッチョイ cb01-7Kul [60.87.221.16])
2022/08/18(木) 21:48:22.57ID:J6oxun4X0
>>17
スレ違い
>>3のjQueryスレへ誘導
19デフォルトの名無しさん (ワッチョイ 6b2c-O3lh [180.52.202.152])
2022/08/19(金) 12:26:38.67ID:l81SyMmZ0
jQuery の質問は、web制作管理板の方へ書き込んでください

確か、jQueryのスレがあったと思う。
無ければ、JavaScript のスレへ
20デフォルトの名無しさん (ワッチョイ ef02-Gxju [175.108.193.88])
2022/08/19(金) 13:26:53.16ID:v8JNzl630
japascriptは難しい。
初心者はまずはRubyから始めること

そしてRuby on Railsを習得する
javascriptyとjQueryはその後で良い。

こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
 ↓
Ruby 初心者スレッド Part 67
http://2chb.net/r/tech/1608837867/
21デフォルトの名無しさん (ワッチョイ 6b10-vj0F [180.12.82.129])
2022/08/19(金) 18:14:31.50ID:KbHvsoqL0
clickのタイミングについて
<input type="button" value="クリック" id="bt">

let aaa=0;
setInterval(
function(){
aaa=100;aaa=200;aaa=300;aaa=400;aaa=500;
},0
);
document.getElementById("bt").addEventListener(
"click",
function(e){alert(aaa);}
);
何回クリックしても500と表示されるけど500以外が表示されることはないんでしょうか?
aaaが200のときにクリックが割り込むとかはないんですか?
22デフォルトの名無しさん (ワッチョイ cb01-6z5t [60.74.210.62])
2022/08/19(金) 18:41:35.47ID:hN4Icouo0
>>21
タイマー処理の関数呼び出しの途中でイベントハンドラが処理されることはない
23デフォルトの名無しさん (ワッチョイ 6b10-vj0F [180.12.82.129])
2022/08/19(金) 18:53:07.56ID:KbHvsoqL0
>>22
どうもです
タイマー以外のfunctionでもfunctionの途中でイベントハンドラが呼び出されることはないってことですか?
24デフォルトの名無しさん (ワッチョイ cb01-6z5t [60.74.223.30])
2022/08/19(金) 21:41:37.23ID:PiTy7UnQ0
JavaScriptは基本シングルスレッド
関数の実行途中に別の関数の処理が割り込んでくるようなことはない
25デフォルトの名無しさん (ワッチョイ cb01-7Kul [60.87.221.16])
2022/08/19(金) 23:29:36.47ID:icsyH/kW0
>>23
非同期処理が混在していなければ、ない
26デフォルトの名無しさん (ワッチョイ 75b1-GYjw [118.105.228.94])
2022/08/20(土) 10:52:07.09ID:y/gx0kbE0
Wan、Lanどちらからもアクセス可能なWebサーバーで
アクセス元がどっちなのかを判断する方法はありますか?
27デフォルトの名無しさん (ワッチョイ 2301-cac/ [219.204.123.70])
2022/08/20(土) 11:45:31.91ID:ThG9yriU0
>>26
送信元アドレス見ればよくね?
28デフォルトの名無しさん (ワッチョイ 75e5-s78Y [118.4.80.52])
2022/08/20(土) 12:02:01.28ID:tDO3e6hW0
サーバーで判断すべきだろう
クライアントで知りたいならサーバーに聞けばいい
29デフォルトの名無しさん (ワッチョイ 75b1-GYjw [118.105.228.94])
2022/08/20(土) 12:48:23.28ID:y/gx0kbE0
確かにそうですよね
サーバー側で何とかしてみます
30デフォルトの名無しさん (スップ Sd43-PAk+ [49.97.96.68])
2022/08/21(日) 00:53:25.42ID:aTZvlMved
ナンセンスな質問かもしれませんが、JavaScriptにおいて関数はデータ型としてオブジェクトであり、一方でオブジェクトはプロパティとメソッドの集まりであると説明されています。
関数とオブジェクトはどちらが先に定義されているのでしょうか?
31デフォルトの名無しさん (ワッチョイ d501-Nnom [60.87.221.16])
2022/08/21(日) 07:04:02.83ID:D11cwWL50
>>30
「先に定義」とは、どのような意味?
32デフォルトの名無しさん (スップ Sd03-PAk+ [1.66.101.132])
2022/08/21(日) 10:31:51.96ID:3ESrn3ezd
>>31
先に存在しているとか先に実装されている(?)というようなイメージです
33デフォルトの名無しさん (ワッチョイ a37c-QAb4 [221.241.223.58])
2022/08/21(日) 10:42:02.01ID:KqCcLvyW0
>>30
定義が無限循環してると言いたいんだろうけど広辞苑にだってそういうのはあるし、関数ノットイコールメソッドと考えれば矛盾はしてない
たぶんオブジェクトが先だろうけどね
34デフォルトの名無しさん (スップ Sd43-PAk+ [49.97.98.169])
2022/08/21(日) 11:25:21.77ID:df/SIE01d
>>33
ありがとうございます

もう少し調べてみると、 https://tc39.es/ecma262/multipage/overview.html#sec-ecmascript-overview でTerms and Definitionsのところに、関数はオブジェクトであってプロパティの他に実行可能なコードと状態を持つもの、という感じのことが書かれてて、メソッドはオブジェクトのプロパティの値である関数のことと書かれていました
こちらの説明で一旦納得できました
35デフォルトの名無しさん (アウアウウー Sad9-dbST [106.181.223.3])
2022/08/21(日) 11:46:37.18ID:j3ukytx2a
v8のソースでも読んでみれば
36デフォルトの名無しさん (ブーイモ MM8b-mKyu [133.159.148.135])
2022/08/21(日) 12:32:17.30ID:IBDK1msSM
オブジェクトが先
オブジェクトはプロパティのコレクション

プロパティとはkey/valueのペアのこと
keyはStringでvalueはプリミティブかオブジェクト
37デフォルトの名無しさん (ブーイモ MM8b-mKyu [133.159.149.74])
2022/08/21(日) 12:39:55.73ID:ZOLz03eMM
オブジェクトを定義するのにオブジェクトを使ったりStringという別のオブジェクト使えるの?
と疑問に思うのかもしれないけど
定義が存在する(名前解決可能である)ことを確認するフェーズと
定義の中身を検証するフェーズを分けることで可能

foo関数の中でbar関数を呼び出しつつ
bar関数の中でfoo関数を呼び出すような関数定義ができるのと同じこと
38デフォルトの名無しさん (ワッチョイ d501-dbST [60.87.221.16])
2022/08/21(日) 15:06:45.69ID:D11cwWL50
>>32
「実装」というが、「仕様」上で両方とも存在しているなら、同時に「実装」されるのでは?

>>34
ES3には「オブジェクト」の定義はあるが、「関数」の定義はない
故に「歴史的にはオブジェクトが先に定義された」といえなくもないが、そんな回答を望んでいるようにも見えない
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/4_Overview.html#section-4.2.1

参考になるかわからないが、typeof演算子は「[[Call]] を持つObject型」の場合に "function" を返す
https://262.ecma-international.org/13.0/#sec-typeof-operator
39デフォルトの名無しさん (スップ Sdc3-JVFl [1.72.7.185])
2022/09/02(金) 16:08:14.77ID:anBQQFEld
ブックマークレットのスレッドかこちらか悩みましたが質問なのでこちらでご相談させていただきます。

他者のWebサイトを閲覧する際、JavaScriptを用いて作成されている場合、リンクを新しいタブで開けない場面があります。
頻繁にページを進んだり戻ったりする場面、可能であればリンク先を別タブで開くようにしたいです。
ブックマークレットを用いて、現在ページのJavaScriptのリンクを別タブで開くように書き換える処理をすることは可能でしょうか?
40デフォルトの名無しさん (ワッチョイ a3b7-83Bc [211.124.165.35])
2022/09/02(金) 16:38:05.47ID:avuNeQJi0
>>39
そのサイト次第かな
クリックした後の画面を一発で開けるURLが用意されてたら基本的に実装できると思う
41デフォルトの名無しさん (ワッチョイ a52d-bBdM [220.100.64.9])
2022/09/03(土) 00:11:31.61ID: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);
42デフォルトの名無しさん (ワッチョイ ad5f-wuTS [106.185.148.64])
2022/09/03(土) 02:15:20.35ID: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)になって速いはず
43デフォルトの名無しさん (スプッッ Sd03-5GnA [1.75.244.51])
2022/09/03(土) 03:34:12.57ID:E5gjC2rTd
Mapで似たようなこと考えてた
44デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/03(土) 10:05:53.47ID:RJZpwhgn0
>>41
要素数や重複要素のばらつき具合によって結果は変わるが、最終的には力業が最速な事が多い
https://jsfiddle.net/gft5ah0n/

極端な結果になっているのは重複要素がすぐそばにあり、while文による検索ですぐに見つかる為だ
重複要素が遠い位置にあるなら、while文による検索が遅くなるケースも十分にある

>>41のコードが比較的高速なのも重複要素が比較的近くにある為だ
Object.valuesやArray#filterによる変換コストが検索コストより高くついているので、他のコードが比較的遅い

重複検知が頻繁に発生するようであれば、データのも持ち方を new Map や new Set を使うように変更した方がいい
配列はユニークな値を得るのに向いていない
45デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/03(土) 10:08:20.30ID:RJZpwhgn0
>>44の補足
jsfiddleのconsoleはconsole.time()を実装していないようだ
ベンチマーク結果はブラウザのコンソールで確認する必要がある
46デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/03(土) 10:28:11.32ID:RJZpwhgn0
すまん
>>44のwhile_loopは期待通りに動かないので忘れてほしい(console.assert()のコードをミスって気づかなかった)
重複要素のばらつき具合によるが、(>>41の配列においては)暫定最速は>>41
47デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/03(土) 10:46:53.92ID:RJZpwhgn0
>>46
console.assert()の修正、重複チェックをkindのみに修正したら、mapが最速になった
https://jsfiddle.net/bw8z2acf/
48デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/03(土) 11:16:26.73ID: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)であるべきなのか、はよく考えた方がいい
49デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/03(土) 11:42:14.57ID:RJZpwhgn0
>>39
a要素でマークアップされているなら、難しくはない

for (let a of document.querySelectorAll('a[href]')) a.target = '_blank';

window.open()などでリンクを開く挙動もJavaScriptで制御しているなら、コードを読んでリンク先を得る手段を考える必要がある
50デフォルトの名無しさん (ワッチョイ 9534-9i1j [14.14.181.44])
2022/09/04(日) 09:22:10.61ID:eAq4eNQY0
>>40
>>49
ありがとうございます。

テーブルの表示となっていて、行全体にリンクが設定されているようです。
以下のような記載が複数並んでおり、通常は左クリックでリンク先に移動しかできず、新しいタブで開くことができません。

<tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”>
<td class=”〇〇〇”></td>
<td class=”〇〇〇”></td>
</tr>

素人ながらいくつかブックマークレットで試したのですが、逆に実行するとリンクが無効になる事が多々でした。
アドバイスをいただければ幸いです。
51デフォルトの名無しさん (ワッチョイ d510-bEl6 [180.12.82.129])
2022/09/04(日) 12:38:54.82ID:FoFuUBY00
<div style="width:100%;height:200px;border:Solid 3px #0000ff" id="test"></div>

これのcss初期設定を取得したいのでstyle="○○"の○○部分を抽出したいんだけどやり方がわかりません。
element.style.widthみたいに取得すると途中で値を書き換えられると初期設定が得られないので
最初にタグに埋め込んであるものを取得したいんです。
52デフォルトの名無しさん (ワッチョイ 955f-EB17 [14.8.104.32])
2022/09/04(日) 20:07:02.96ID:KWOOnIlI0
getAttributeとか?
53デフォルトの名無しさん (ワッチョイ 7561-rTOP [222.144.116.143])
2022/09/04(日) 20:23:24.42ID:FTTWPGH/0
element.style.hoge=fugaしたらstyle属性値も連動するんだから
書き換える前に取得しとくしかなくね?
54デフォルトの名無しさん (ワッチョイ 3501-vbgY [126.94.243.226])
2022/09/04(日) 21:15:03.99ID:SMoCQy1h0
>>51
・直後にscript書いて書き換え前にstyleを取得しておく
・Fetch APIでhtmlをGETしてCSPでscript無効化してparseしてstyleを得る
55デフォルトの名無しさん (ワッチョイ d510-bBdM [180.12.82.129])
2022/09/04(日) 22:38:54.08ID:FoFuUBY00
>>52-54
ありがとうございました
56デフォルトの名無しさん (ワッチョイ d52c-6nWD [180.52.202.152])
2022/09/04(日) 23:03:12.95ID: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
}
}
5756 (ワッチョイ d52c-6nWD [180.52.202.152])
2022/09/04(日) 23:14:48.88ID:9ocqxCfk0
>>56
// URL を設定する
window.location.href = href

みたいに直接、window.location.href に設定しているけど、

この場合、Ctrl + クリックや、
右クリックメニューから新しいタブで開くことは出来ないのかな?
58デフォルトの名無しさん (ワッチョイ e3b7-9TNW [211.124.165.35])
2022/09/04(日) 23:26:45.19ID:RdtW7bNN0
>>50
遷移する時にdata-targetが使われることを見込んでこれでいけるかもね
for (let tr of document.querySelectorAll('tr.〇〇〇')) tr.dataset.target = '_blank'
※〇〇〇はtrのクラス名で
59デフォルトの名無しさん (JP 0H93-Dk2f [103.163.220.88])
2022/09/05(月) 18:27:01.95ID:XvLqNcU6H
document内の要素で、textContentに'xxx'を持つクラスを取得するにはどうしたらいいですか?
全部の要素総当たりでtextContent調べるしかないんでしょうか?
60デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/05(月) 18:51:10.83ID: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要素を使っているが、
イベントを横取りできるなら、既存イベントハンドラと同じコードにしても良い
61デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/05(月) 19:18:18.86ID:ng2JfbNn0
>>59
XPath式を使えば、textContentを使わなくて済む
https://jsfiddle.net/kb5e740f/
62デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226])
2022/09/05(月) 19:25:28.71ID:ng2JfbNn0
>>61
テキストノードを子に持つ要素ノードを捕捉するコードにすればよかった
https://jsfiddle.net/kb5e740f/1/
63デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.180.164])
2022/09/07(水) 17:04:03.05ID:zBxXyTwva
プログラミング初心者でJavaScriptを勉強してます。
メンバ変数A、メソッドBを持つクラスがあり、メソッドBの中で変数Aを活用(Aを用いた処理やAの変更)したいのですが、
Aを引数としてBに渡して返り値として受け取るのと、Bの中で直接this.Aと記述して処理するのは何か違いがありますか?
メソッドBに別の変数を渡す可能性があるなら前者でないといけないのでしょうが、そうでなければ後者の書き方でよいでしょうか?
64デフォルトの名無しさん (ワッチョイ 6501-vbgY [60.85.61.123])
2022/09/07(水) 18:23:46.99ID:LU0OXBc/0
>>63
this.Aは全てのインスタンスメソッドで参照できる
this.Aはインスタンスを参照可能なスコープ上で参照可能

仮引数AはメソッドBの関数スコープ外から参照不可能
65デフォルトの名無しさん (ワッチョイ 232c-HH83 [219.162.239.51])
2022/09/07(水) 19:11:15.04ID: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>
66デフォルトの名無しさん (スッップ Sd43-5GnA [49.98.171.228])
2022/09/07(水) 19:17:44.81ID:GIiuva0od
>>64
それ何にも疑問の解決になってないだろう
67デフォルトの名無しさん (ワッチョイ 6501-bBdM [60.85.61.123])
2022/09/07(水) 20:26:24.25ID:LU0OXBc/0
>>66
↓のsetAとcalcAの違いを聞いてるんじゃないのか?

class Foo {
constructor (a) {
this.A = a;
}
setA (a) {
this.A = calc(a);
}
calcA (a) {
return calc(a);
}
}

わかっているらしいあなたが回答すれば済む話だが
68デフォルトの名無しさん (ワッチョイ 2b7c-QaXK [113.43.107.134])
2022/09/08(木) 00:18:00.64ID: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;
}
}
6965 (ワッチョイ 232c-HH83 [219.162.239.51])
2022/09/08(木) 07:17:36.21ID:eI1uoUaK0
Ruby では、>>65
に書いたように、

def f_1
@x = 1
end

みたいに、クラス内のインスタンスメソッド・f_1 内で、
インスタンス変数・@x を使えるので、一々、引数で渡す必要がない
70デフォルトの名無しさん (ワッチョイ 955f-Iguz [14.13.137.64])
2022/09/08(木) 19:40:45.35ID:6QKcdu8L0
オブジェクト指向の一般的な話としては、クラス内の関数であればクラス内のメンバはいじっても問題ないと思う。

ただ、「どこの関数がこのメンバを触ってるのかわからない」ってほどクラスが巨大化するなら、もはやそれはたちの悪いグローバル変数そのものなので設計からおかしい。
71デフォルトの名無しさん (ワッチョイ 6501-CzlZ [60.85.61.123])
2022/09/08(木) 22:51:00.93ID:D/mmzJCP0
>>68
一つ一つのコードの意味を理解して、一つ一つのコードでなぜをそれを使うのか、と自問して答えを出せば、自ずと答えが出てくる
質問していない部分で突っ込みどころが多すぎて、「何も考えてないんだな」と思わせられる

https://jsfiddle.net/qem7cLyf/
・なぜ 全ての関数は返り値を持たないのか?
・なぜ Foo1#funcB は静的関数ではないのか?
・なぜ Foo1#funcC,Foo2#funcC は返り値ではなく、グローバル変数に演算結果を格納したのか?
・なぜ Foo2#varA の初期化にコンストラクタの引数を使わないのか?

こういう質問全てにこたえられるぐらいに考えられないと良いコードはかけない

https://jsfiddle.net/s27mxepn/
・可能な限り、変数のスコープはせまくあるべき
・可能な限り、関数は参照透過性を持つべき

今後、インスタンスプロパティを拡張する予定があるならclassを使うべきだし、そうでないなら静的関数で十分
>>64で示した挙動の違いだけで十分に判断できる
72デフォルトの名無しさん (オッペケ Sr81-3vxq [126.254.237.221])
2022/09/08(木) 23:10:43.06ID:DGEh14TYr
それがプログラミング初心者に投げつける言葉かよ・・・
そういう知識や判断力もゆくゆくは必要だけども物事には順序ってもんがあってまだその域ではなかろう
マウントが取りたいだけならもっと近いレベルの相手にやんなよ
73デフォルトの名無しさん (テテンテンテン MM4b-HSKh [133.106.60.103])
2022/09/08(木) 23:23:08.03ID:xrpQvLAzM
>>63
いいと思うよ
というかBに汎用性を持たせるのは微妙
74デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.156.188])
2022/09/09(金) 09:56:50.51ID:Rq87TVpoa
this.Aで書いた方が手っ取り早いことが多い気がしたのですが、そちらでもいいけどスコープに注意しないとバグの要因になる、グローバル変数を濫用しないようにというのと相似形の似たような話という認識でいいでしょうか。
下手したら必然性なく両者を混在させてしまったりしそうなので注意したいと思います。参照透過性とか言葉自体知りませんでした…
参考になりました。ありがとうございます。
75デフォルトの名無しさん (スップ Sd03-5GnA [1.75.3.22])
2022/09/09(金) 11:06:49.13ID:hB1+BppPd
>>74
今は>>70の理解でいいと思うよ
今の時点であまり詰め込んでもしょうがないし
>>71みたいなののせいで萎縮しないでね
76デフォルトの名無しさん (ワッチョイ 6501-CzlZ [60.85.61.123])
2022/09/09(金) 19:12:54.25ID:0zkp1JmC0
>>72
> 物事には順序ってもんがあってまだその域ではなかろう

順序が大切なことには同意
ダメ出しがたくさんあるのは「学習の順序」が間違っているから
いろいろと学習を飛ばしてコードを書いており、その質問をする域に達していない
初心者だからこそ、もっと基礎的な課題から取り組むのが現実解だと俺は思う
今までの受け答えを見る限り、付け焼刃で知識をつけているように俺には見える

> マウントが取りたいだけならもっと近いレベルの相手にやんなよ

マウントを取りたいわけじゃない
77デフォルトの名無しさん (ワッチョイ 232c-HH83 [219.162.235.49])
2022/09/09(金) 20:14:57.93ID:n8dQNxep0
だから、オブジェクト指向とかプログラミングは、Ruby から始めるべき。
JavaScript(JS)みたいなややこしいもので、デザインパターンを学ぶべきではない

改訂2版 Ruby逆引きハンドブック
の1冊だけで、かなりのモジュール・ライブラリの使い方も分かる

同じページ数でも、JSなら、文法だけで終わる。
20年以上のJSの歴史を追っかけて行くから、文法だけでもRubyの5倍ぐらいある

だから、こういう言語へ手を出したらダメ。
Rubyist は、JSなどをコピペで済ます。
深い所までやらない。分量的に切りがない
78デフォルトの名無しさん (ワッチョイ a95f-pw5f [14.8.104.32])
2022/09/10(土) 00:48:49.86ID:1NdnS3vZ0
学習の順序とか提示せずに「何も考えてない」と切り捨てるのはマウンティングに入らないんですか?
79デフォルトの名無しさん (ワッチョイ 1901-T2pD [60.85.61.123])
2022/09/10(土) 06:13:53.00ID:Cpvx7Vnj0
回答者相手にマウントとってる人に真面目に答えるだけ無駄か
そんな暇があったら、質問者に回答すればいいのに
80デフォルトの名無しさん (オッペケ Src5-qUKH [126.254.242.25])
2022/09/10(土) 09:58:22.29ID:aLnVTfHzr
君は高圧的な正しさで初心者を殴ってるだけ
人にものを教えるのには向いてないと思うよ
81デフォルトの名無しさん (ワッチョイ 1901-V+uT [60.85.61.123])
2022/09/10(土) 11:01:57.14ID:Cpvx7Vnj0
>>80
5chはそういうものと思っていたが、それがこのスレの流儀なら気を付ける
だが、回答者に高圧的だったり、回答者にマウントをとる人も是正されるような公平な世界であってほしいね
82デフォルトの名無しさん (オッペケ Src5-qUKH [126.254.179.217])
2022/09/10(土) 11:48:27.08ID:DabBJhVCr
具体的にどの発言に対して言ってるのかわからんけど
そういう何か言い返さないと気がすまないって気持ちは心の中にしまっておいた方がいいんじゃないかな
83デフォルトの名無しさん (スップ Sd33-A6fq [49.97.111.223])
2022/09/10(土) 13:25:36.79ID:JRksiUpNd
自分の過ちを認めると負けたみたいでプライドが傷つくから
俺も悪かったけどお前らも悪いから引き分けだよねということにしたい心理の表れ
84デフォルトの名無しさん (ワッチョイ 6910-Vaw7 [180.12.82.129])
2022/09/11(日) 20:15:23.24ID:yDUj5jeF0
元の配列を関数内で空にしたいけどうまくいきません
100と表示されてしまったので空になっていませんでした。
配列は参照渡しなので元の配列も書き換えられると思ったんだけど
どうやれば関数内で元の配列を空にできますか?returnは使いたくないです。

let a_list = [100,200,300];
test(a_list);

function test(b_list){
b_list = [];
}
alert(a_list[0])
85デフォルトの名無しさん (ワッチョイ 818b-pqEy [210.228.102.1])
2022/09/11(日) 20:29:51.41ID:bqV48/aB0
>>84
function test(b_list) {
b_list.length = 0
}
86デフォルトの名無しさん (ワッチョイ 6910-V+uT [180.12.82.129])
2022/09/11(日) 21:06:49.62ID:yDUj5jeF0
>>85
できました
ありがとうございます
87デフォルトの名無しさん (オッペケ Src5-yIeJ [126.205.215.107])
2022/09/12(月) 09:29:51.85ID:ptOOOLgwr
b_list = [];
が何故ダメかというとb_listを空にしてるんじゃなくて
b_listに新しい配列を代入してるだけだから
ということは覚えておこう
88デフォルトの名無しさん (ワッチョイ 6dbd-fO9i [122.133.74.218])
2022/09/23(金) 01:20:03.32ID:93J4lVSi0
ブラウザで動かすとき、グローバルスコープでの demo って名前は何かある?
この名前の関数作ってボタンの onclick から呼び出そうとしたら関数未定義のエラーになる。
別の名前にすると呼び出せる。
89デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.97.207])
2022/09/23(金) 09:32:58.81ID:CDwP7FtJd
タイポかスコープの勘違いとかじゃないの?
コンソールでdemo関数定義して実行したら普通に動いたけど
90デフォルトの名無しさん (ワッチョイ 9501-Zrsu [126.242.174.70])
2022/09/23(金) 10:32:57.61ID:UxdKoKVd0
>>88
再現可能なコードを出してみたら?
https://ja.stackoverflow.com/help/minimal-reproducible-example
91デフォルトの名無しさん (ワッチョイ 23bd-fO9i [125.194.52.138])
2022/09/23(金) 15:04:58.71ID: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 になると。
92デフォルトの名無しさん (ワッチョイ 23bd-fO9i [125.194.52.138])
2022/09/23(金) 15:06:34.97ID:i+SKzCkA0
エラーは未定義関数じゃなく、demo is not a function だった。
93デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.96.176])
2022/09/23(金) 17:05:20.97ID:bbK6e07Hd
thisとthis.formがスコープに入る仕様だそうな
https://qiita.com/hakatashi/items/40fbedf61a3dd79f21fc

有効に使う機会よりも謎の挙動にどハマりするケースの方が多そう
94デフォルトの名無しさん (ワッチョイ 9501-Zrsu [126.242.174.70])
2022/09/23(金) 18:38:15.96ID:UxdKoKVd0
>>91
window.demoかaddEventListenerを使ってみては?
後者がベター
95デフォルトの名無しさん (ワッチョイ bf01-4MOF [126.242.174.70])
2022/09/25(日) 08:59:26.24ID:oCqDdJBP0
回答もらった途端にいなくなる質問者多いな
96デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]])
2022/09/25(日) 17:53:11.47ID:hlHjM9NA0
こんにちは
ブラウザから、ローカルのファイル(画像など)を「関連付けされたソフトで開く」というのはできますか?
HTMLの<a href=#></a>だと、ブラウザ(Chrome)内で開いてしまいますが、これを別の画像ビューアで開きたいです
97デフォルトの名無しさん (ワッチョイ bf01-4MOF [126.242.174.70])
2022/09/25(日) 20:26:11.45ID:oCqDdJBP0
>>96
参考情報
https://akaki.io/2021/url_scheme_hijack
98デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]])
2022/09/26(月) 17:57:53.84ID:E/HZ+YPY0
ありがとうございます

「カスタムURLスキーム」を調べてやったみましたが、ローカルのファイルを指定ができません(画像ビューアは開くがファイルが開かない)
JavaScriptの質問ではないので恐縮ですが、どうやって指定できますかね?

https://qiita.com/kojimadev/items/74100c8557a92939ef69

例えば上のサイトを参考に、画像ビューアをhogeでレジストリ登録して下のようにすると、画像ビューアだけ起動してファイルは見つからなかったと出ます(hoge:file:///C:...などもダメ)

<a href="hoge:C:/tmp/sample.jpg"></a>
99デフォルトの名無しさん (ワッチョイ e27c-bwfb [221.241.223.58])
2022/09/26(月) 22:44:18.29ID:Xyg4q6vF0
>>98
違ってるかもだけど、Windowsだったらパスの区切り文字は/じゃなくて\または¥じゃないのかな
で、\は制御文字として扱われるからエスケープして\\にしないとダメとか
100デフォルトの名無しさん (ワッチョイ a2bd-ZJWq [125.198.8.233])
2022/09/26(月) 23:02:16.56ID:adbpU9F00
>>98
アプリの方もURLスキームでの起動に対応してないとだめなんじゃない?
URLスキームはその URLの書式をアプリ独自に決めてあって、アプリはその書式でアクションや対象を判別して動作するように作られてるんだと思う。

とりあえず与えられた引数が分かるテストアプリを見繕って hoge として登録してみたら何か分かるかもよ。
101デフォルトの名無しさん (JP 0Hd7-ruke [210.228.21.53])
2022/10/06(木) 16:54:22.37ID:bvSP9gLaH
Xhrで非同期通信するサーバーサイドのファイル(api.php)の中に登録されてる関数を実行することって出来るかな?

api.phpのfunction hoge()を実行するって感じ
102デフォルトの名無しさん (ワッチョイ 7301-AcZi [126.88.47.26])
2022/10/06(木) 17:40:38.15ID:mWLza3X30
>>101
リクエストのハンドラがその関数を呼べばいいだけじゃない?
103デフォルトの名無しさん (ワッチョイ 3f7c-pIDl [43.235.241.201])
2022/10/06(木) 18:17:20.20ID:tI414gt60
>>101
ん?
フレームワークも何も使ってないならそもそも該当のphpファイルを指定するから
その中で実行したい事を書けば良いだけでは?
104デフォルトの名無しさん (ワッチョイ 9fda-Eaf/ [125.202.99.65])
2022/10/19(水) 06:40:09.61ID:+dFS1Lme0
if (a==b){} と書くべき所を、
間違って if (a=b){} と書いたら、
a<>b な値を入れても true が返ってくる

何が起きているんでしょう?
105デフォルトの名無しさん (ワッチョイ 9701-FGyv [60.115.215.187])
2022/10/19(水) 06:51:04.23ID:PuLzlRQU0
>>104
a=bの評価値はb
bがtruthyならifの次の文が実行される
106デフォルトの名無しさん (アウアウウー Sa5b-UrA8 [106.146.102.221])
2022/10/19(水) 11:19:00.04ID:4XenNUmUa
bが0以外なら{}が実行される。
107デフォルトの名無しさん (ワッチョイ 9fda-Eaf/ [125.202.99.65])
2022/10/20(木) 01:45:20.86ID:sarICcZm0
>>105
>>106
それじゃifにする意味がない状態だったんですね
ありがとうございました
108デフォルトの名無しさん (JP 0Hdf-KIw6 [103.163.220.59])
2022/10/20(木) 05:56:13.16ID:BavO7XJlH
uBlockで要素取得した時の名前が###contentsです
これをTampermonkeyのJSで要素getするにはどうしたらいいでしょうか?
getElementById、getElementsByTagName、getElementsByClassName、querySelectorAll等ではだめでした
109デフォルトの名無しさん (ワッチョイ f7bd-p3V3 [122.133.73.156])
2022/10/20(木) 12:03:03.14ID:qg4xQu9m0
>>107
条件の中にあえて代入を入れるケースは無くはない。

if (result = func()) ...

みたいな感じとか。
これは比較してるんじゃなくこういうこと。

result = func();
if (result) ...

比較と組み合わせて

if ((result = func()) == 100) ...

みたいな書き方もある。
メリットは単に短く書けるということもあるし、別の言語も含めれば

while ((line = fgets(fp)) != EOF) ...

みたいな、代入と比較が一緒じゃないと書き方的に面倒になる部分に使う。
110デフォルトの名無しさん (ワッチョイ 9f47-y3r4 [131.129.209.7])
2022/10/20(木) 12:59:50.47ID:QXtRAkax0
>>108
getElementById('contents') or querySelector('#contents')
111デフォルトの名無しさん (JP 0Hdf-7o11 [103.163.220.77])
2022/10/20(木) 13:20:03.60ID:C0rWwrYjH
>>110
なるほど、#つけたらいけました
ありがとうございました
112デフォルトの名無しさん (ワッチョイ 9701-FGyv [60.115.215.187])
2022/10/20(木) 15:12:09.85ID:MJUQgOR60
>>106
0だけがfalsyなわけではないはず
https://262.ecma-international.org/13.0/#sec-toboolean

>>109
代入と組み合わせることですっきり書ける場合があるよな
whileは割と使ってる
113デフォルトの名無しさん (ワッチョイ d75f-2/eE [14.8.104.32])
2022/10/20(木) 21:55:34.73ID:1vPPjI2Y0
whileって原始的かつ結構直感的だから使いやすいよね
114デフォルトの名無しさん (ワッチョイ 3d10-w3aL [180.12.82.129])
2022/10/23(日) 10:06:21.98ID: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と取得できるんだけど
115デフォルトの名無しさん (ワッチョイ ab2d-85pP [121.102.18.226])
2022/10/23(日) 11:43:18.26ID:hW6qdPXA0
console.dirでsheetの中身を覗いて探せば見つかるかと
116デフォルトの名無しさん (ワッチョイ 557c-w3aL [122.212.16.94])
2022/10/23(日) 16:29:44.52ID:l4Ll+vUb0
iPhone6などの古い環境のSafariで、ES6以降の各ES(ES2022等)のどこまでサポートしているか、というのはどのように確認すればよいでしょうか?
iOSは12で、UAではSafari Webkit 604.1 となっています。
ESも毎年更新されてPCや現行スマホなら問題なく表示できますが、サポートの終わった古い端末でも表示させるにはどの機能がNGかを確認したいのですが・・・
iOSバージョンやブラウザバージョンを指定して、それがどこまでサポートしているかが分かるサイトや、実際の端末を使ってどの機能がNGかテストするとか、PC上でデバッグ可能(エラー表示)なエミュレータなどあれば教えていただきたいです。
117デフォルトの名無しさん (ワッチョイ fd5f-jOkU [14.8.104.32])
2022/10/23(日) 16:34:31.24ID:sfEqSuvv0
MacBookを買いましょう
118デフォルトの名無しさん (ワッチョイ 3d4f-Y/ct [180.0.191.133])
2022/10/23(日) 16:44:23.51ID:YzYXhWAT0
Can I use のサイトとか、npm のbrowserslist とか?
119デフォルトの名無しさん (ワッチョイ 557c-w3aL [122.212.16.94])
2022/10/23(日) 16:55:32.04ID:l4Ll+vUb0
>>118
ありがとうございます。
Can I useのサイトで各ESxxxを検索して概ねサポートされる範囲が分かりました。
Safari 12だとES2020の一部からサポートされない機能があるので、そこら辺が境界ぽいことが分かりました。
120デフォルトの名無しさん (ワッチョイ 3d10-Vrxx [180.12.82.129])
2022/10/23(日) 17:46:05.51ID:6Nh0kUN40
>>115
cssRules[0].cssRules[0].seletctorTextとすることでできました
ありがとうございます
121デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73])
2022/10/24(月) 22:47:10.94ID:VafCOtMO0
JavaScriptは大変難しい言語です。Rubyの難易度を2、Cの難易度を5、C++の難易度を8にすると、
JavaScriptの難易度は12ぐらいあると思います。
このコーディングガイドはそんなJavaScriptの深みに嵌まらないようにするためのJavaScriptの書き方を規定したものです。
初級者1のための物ですので、わかってやっている人に好きにやってください。

このコーディングガイドは絶対に従わなければならないものではありません。
私は一切強制はしませんし、初級者が従わなければならないという義務もありません。採用するしないはみなさんの自由です。

禁止編
JavaScriptには安易に使用してはいけない機能があります。
下記の機能は、それぞれの機能を使っても良い、または、使うべきであるという理由を説明できない限り、使用してはいけません。
122デフォルトの名無しさん (ワッチョイ 0d01-aUxx [60.78.11.62])
2022/10/24(月) 23:16:49.94ID:Sn3QmQ+W0
>>121
中途半端に@raccyの記事をコピペした意図は何?
https://qiita.com/raccy/items/bf590d3c10c3f1a2846b
123デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73])
2022/10/25(火) 01:00:55.86ID:IMqCQD810
ラッシーこそだよ。欄版は。
124デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73])
2022/10/25(火) 01:02:07.20ID:IMqCQD810
マンタリーな、シェシェ。
ぐーむ菜素図。i-ku
125デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73])
2022/10/25(火) 01:02:49.43ID:IMqCQD810
天ら万重も近し。
126デフォルトの名無しさん (ワッチョイ 0d01-aUxx [60.78.11.62])
2022/10/25(火) 02:28:40.06ID:iqiTxlhy0
>>123-125
日本語でOK
127デフォルトの名無しさん (ワッチョイ 2d93-++Yg [118.241.248.66])
2022/10/25(火) 14:16:06.20ID:S5n6e8jb0
ファイルを読み込んで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となってしまいます。
なぜ大きくなってしまうのでしょうか?
同じサイズになるようにするにはどこを訂正するといいですか?
128デフォルトの名無しさん (ワッチョイ 2d93-++Yg [118.241.248.66])
2022/10/25(火) 15:28:48.49ID:S5n6e8jb0
すいません勘違いだったようです。
129デフォルトの名無しさん (ワッチョイ 3b01-SlLl [111.188.39.41])
2022/10/25(火) 17:11:46.89ID:jIOTtTPX0
初心者です、関数を配列オブジェクトに入れて
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~
}
130デフォルトの名無しさん (ワッチョイ 3b01-SlLl [111.188.39.41])
2022/10/25(火) 17:13:23.18ID:jIOTtTPX0
すみません少し修正です

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~
}
131デフォルトの名無しさん (スップ Sd03-w3aL [49.97.107.253])
2022/10/25(火) 17:47:25.32ID:dHKYynBEd
あまり複雑なことはせずに↓みたいなのではダメだろうか
https://jsfiddle.net/6x7yusjL/

これではダメで、どうしても>>130のエラーを解消したいなら出ているエラーの内容ぐらいは書くようにしよう
132デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73])
2022/10/25(火) 17:58:30.53ID:IMqCQD810
>>121
14位.JavaScript

難易度:★★☆☆☆

今回ご紹介するプログラミング言語の中で最も難易度が低いのがJavaScriptです。

初学者がプログラミングの学習を始めるのに適した言語の一つ。
Webサイトなどで動きのある見た目を実現する為に利用されます。

JavaScriptから派生したフレームワークも数多く、
そちらのフレームワークを学習する場合には難易度が高くなります。
ただ、JavaScriptをそのまま利用して学習を進めるであれば、
他の言語と比べて開発環境の構築が不要であることや関連書籍が数多くでていることから、
難易度は低い言語といえるでしょう。
133デフォルトの名無しさん (アウアウウー Sa11-SlLl [106.155.10.123])
2022/10/25(火) 18:17:09.25ID:jFHnOV8wa
>>131
ありがとうございます。
まず進捗させないとけないんでそのやり方でやってみて、後々何がエラーの原因なのかは自決できるように調べてみます。
134デフォルトの名無しさん (ワッチョイ 3d4f-Y/ct [180.0.191.133])
2022/10/25(火) 23:20:22.24ID:RDzJGkEc0
JavaScript(JS)は、Ruby の数倍難しい

初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、2017

例えば上の本は、サイの表紙のサイ本と呼ばれるけど、
これだけ勉強しても、文法しか学べない

改訂2版 Ruby逆引きハンドブック、2018

一方、サイ本と比べて、上の本は、多くの主要モジュールの使い方まで説明している。
大体のコーディングパターンまで学べる。
つまり中級者向けなのは、文法のページが少ないから

JSだと、ES3, ES5, ES6 の20年に及ぶ、膨大な文法の変遷を追っていかなければならない。
ES2015(ES6)から、ようやくクラスも出来て、Rubyっぽくなってきた

ちょっとした比較でも、あいまい比較演算子== は使ってはならない。
厳密比較演算子=== だけを使うとか、初心者がはまる罠が多い

学ぶ順序としては、Ruby → JS を勧める
135デフォルトの名無しさん (ワッチョイ 3d4f-Y/ct [180.0.191.133])
2022/10/25(火) 23:31:33.41ID:RDzJGkEc0
>>131
では、callback 関数が呼ばれる前に、どちらの処理が呼ばれるか、既に分かっている状態でしょ。
直接引数に、呼ばれる処理を入れている

callfunction('huga');
callfunction('hage');

一方、>>130
では、callback関数が呼ばれる前には、どちらの処理が呼ばれるか、まだ分からない状態。
callback関数の中で初めて、どちらの処理が呼ばれるかが決まる
136デフォルトの名無しさん (ワッチョイ e3da-OgY3 [125.202.99.65])
2022/10/26(水) 00:55:25.26ID:WkGW4dkw0
コンソールからは実行出来るのに、
拡張機能からだと無視されるのは何?
137デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73])
2022/10/26(水) 19:58:11.00ID:radnZEOF0
>>132
14位
やっぱ簡単なんだな。
138デフォルトの名無しさん (ワッチョイ e333-w8uH [59.190.185.6])
2022/10/28(金) 14:20:33.37ID:dQ+2i/bt0
乱数の生成について質問です。
日付をシードとした乱数を生成したいのですがどうも偏ります。
シードの採用の仕方にルールなどがあるのでしょうか?
xorshiftのものを2個試しましたが
2ことも偏っていました。

https://jsfiddle.net/4dz70wxp/3/
139デフォルトの名無しさん (スッップ Sd03-LP1i [49.98.165.74])
2022/10/28(金) 17:22:23.79ID:mktFZgumd
ちょっとだけ違う初期値に対して乱数がほしいという用途は想定外だろう
欲しいものはMurmurHash3みたいなハッシュ関数ではないか?
140デフォルトの名無しさん (スップ Sdc3-H7SW [1.75.9.11])
2022/10/28(金) 18:09:17.06ID:HM5QgWcQd
一発目のnext()の値を捨てれば良さそうな気も
https://jsfiddle.net/ny0cpm5v/
141デフォルトの名無しさん (スップ Sdc3-H7SW [1.75.9.11])
2022/10/28(金) 18:36:54.83ID:HM5QgWcQd
もう少しいじってみたけどどうやらシードの桁数不足が問題なのかな
new Xorshift32(seed * 1000000)
とかにするだけで最初の値にもだいぶ幅が出る

いやいや偏りってそういうことじゃなくてって話ならごめんだけど
142デフォルトの名無しさん (ワッチョイ e333-w8uH [59.190.185.6])
2022/10/28(金) 19:03:49.78ID:dQ+2i/bt0
>>139
不勉強でよくわかってないですが
やりたいのは後で再現できる単純にランダムな遅延時間がほしいだけです。
>>140
delayMaxを100にしてみましたら3回目ぐらいから取れそうと感じました。
シードが小さすぎるということは
一般的には
シードを与えるなら
乱数関数が受けられるシードの最大数/関数で生成されるシードの最大数をかけて
でシードの範囲を広げたほうがいいということなのでしょうか。
それとも単純に今回はシードが小さすぎて特殊事例であまり気にする必要はないと言う感じでしょうか。

お二人ともありがとうございます。
143デフォルトの名無しさん (スップ Sdc3-H7SW [1.75.9.11])
2022/10/28(金) 20:24:11.90ID:HM5QgWcQd
next()が与えられた値にビット演算をあれこれやって次の値を出してるから
シードが2桁整数ではほとんどのビットがゼロなために
最初の演算結果が狭い範囲に収まってしまってるんでないかと
144デフォルトの名無しさん (ワッチョイ e333-w8uH [59.190.185.6])
2022/10/28(金) 21:20:56.67ID:dQ+2i/bt0
>>143
ありがとうございます
https://jsfiddle.net/4dz70wxp/5/
42億あるうちの下一桁をいじるだけではだめみたいですね。
一日かわればseedも大きく変わるようにして
念の為、3回目あたりをとってみます。
ありがとうございました。
145デフォルトの名無しさん (スップ Sdc3-H7SW [1.75.9.11])
2022/10/28(金) 22:43:22.03ID:HM5QgWcQd
https://jsfiddle.net/f9h4zu1x/
少し間違ってた
桁数が少ないのが問題じゃなくて、ビットの可変幅が狭いのが問題
だから桁数増やしてもシードの増分が1なら結局同じ
日付を上の桁に持っていけば1回目も改善する
146デフォルトの名無しさん (ワッチョイ 775f-FQW+ [14.12.73.128])
2022/11/02(水) 15:24:18.98ID:8PfyXsoj0
ブラウザ上での音声認識と録音について質問です。

現在、マイクから音声認識を行い、簡単な対話を行うWebアプリを作成しようとしています。
Web Speech APIのSpeechRecognitionを使用して音声認識には成功しましたが、これに加えて録音も同時に行いたいです。
SpeechRecognitionは喋っている内容を取っているので、そこから音声ファイルを作成できないかとやったのですが、目的の資料を見つけることができませんでした。

そのため、SpeechRecognitionと並行してmediaDevices.getUserMediaを使い録音する形で実装しました。
PCでは成功したのですが、スマホ(Android、iOS共に)だとmediaDevices.getUserMediaでストリームを使用とした時点で音声がすべてそちらに取られてしまい、音声認識が出来なくなってしまいました。

今度は録音した音声データをGCPのSpeech-to-Textの音声認識に回すかたちで実装してみましたが、即座に認識結果が得られず、対話のテンポが悪くなるため、微妙な感じになってしまいました。

音声認識と録音を両立する良い方法はないでしょうか?
147デフォルトの名無しさん (ワッチョイ 56db-iO6U [217.178.96.73])
2022/11/02(水) 15:30:07.55ID:yKYFejXH0
他人が書いたJavaScriptのコードは読みにくいですよね?
148デフォルトの名無しさん (ワッチョイ c3bd-+SD0 [122.133.74.138])
2022/11/02(水) 15:34:06.32ID:Wk8IFz/p0
>>147
自分が書いたコードすら後から見るとよく分からないなんてことはザラ
149デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]])
2022/11/02(水) 15:53:32.48ID:3LaOl4E/0
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と表示されないんでしょうか?
150デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]])
2022/11/02(水) 16:00:00.37ID:3LaOl4E/0
すみません
わかりました
double(number)に戻り値number*2を返してるんですね
だからdouble(10)で20になると
151デフォルトの名無しさん (オッペケ Sr27-d9L8 [126.157.127.165])
2022/11/02(水) 18:16:59.98ID:O63UpHJfr
>>148
そいつにかまってはいけない
152デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]])
2022/11/02(水) 21:50:32.06ID:3LaOl4E/0
JavaScriptのパズルをやってたんですけど、このコードだけで意味がわかりますか?
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚

最初の定義とか色々省かれていませんか?
初心者だからはっきりわからないのですが…
153デフォルトの名無しさん (ブーイモ MMce-pwL4 [163.49.215.251])
2022/11/02(水) 22:07:02.98ID:zmf8vxSNM
これぐらいなら簡単
変数名と関数名がちゃんと付けられてるからそこから読んでいけば普通に読める
154デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]])
2022/11/02(水) 22:12:42.94ID:3LaOl4E/0
>>153
変数のlistとかどこにも定義されて無いんですけど…
console.log(list)とか突然書かれても、初心者にはわかりにくい
どこから出てきたのかと…
155デフォルトの名無しさん (ワッチョイ 775f-WhKm [14.11.8.0 [上級国民]])
2022/11/02(水) 22:46:00.31ID:f9FvTICb0
>>152
任意の数値リストを突っ込むと最大値出してくれるっていうコードだろこれ
156デフォルトの名無しさん (テテンテンテン MM9e-BRTv [133.106.51.31])
2022/11/02(水) 23:13:35.51ID:J736PzjWM
問題の方にあるのかも知らんし
ここで聞かれても分かんね
157デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]])
2022/11/02(水) 23:36:43.64ID:3LaOl4E/0
問題はこんな感じです
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
(画像の下の方が切れてますが、>>152の画像と同じものが入っているだけです)

あまり親切じゃないから初心者には向いて無いのかな?
158デフォルトの名無しさん (ワッチョイ d6cf-ee5o [153.174.224.39])
2022/11/02(水) 23:40:18.85ID:t/iark2f0
全部負の数値だと使えない
159デフォルトの名無しさん (ワッチョイ 927c-Tk+f [43.235.241.201])
2022/11/03(木) 11:43:01.93ID:39/cO+p70
このコードは十分初心者向けに書かれていると思うけどねぇ
ただmax=0にしているから、基本は0より大きな数の配列の中から最大値を調べる処理という事に
160デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]])
2022/11/03(木) 12:47:18.10ID:EP9jPLDR0
>>159
この学習アプリやってた

Google製のJavaScript教育ツール「Grasshopper」は基礎から学べて初心者に優しい
https://forest.watch.impress.co.jp/docs/serial/progedu/1404361.html
161デフォルトの名無しさん (ワッチョイ d6cf-ee5o [153.174.224.39])
2022/11/03(木) 15:53:23.61ID:78vcP9/m0
次のステップなどで対応するならいいけどね
max の初期値を配列の先頭から取れば済むだけだが
162デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]])
2022/11/03(木) 20:27:36.79ID:EP9jPLDR0
ようやくわかりました
2つめの関数の中で前に定義した1つめの関数を実行してるんですね
関数は定義&実行で1ペアと考えないといけない
次に進みます
163デフォルトの名無しさん (ワッチョイ 56db-iO6U [217.178.96.73])
2022/11/04(金) 08:09:59.45ID:RzANRCFJ0
#を付ける プライベートクラスフィールドが分かりにくい。
解説しているサイトも少ない。
164デフォルトの名無しさん (ワッチョイ 5f4b-YZvV [110.2.215.28 [上級国民]])
2022/11/07(月) 15:24:45.79ID:zC6hz6+Y0
Adobe Illustratorのスクリプトを書くのにHTMLの知識いりますか?
JavaScriptの入門書を読んでたんですけど、前半のJavaScriptの文法の所まで読み終わりました
後半はHTMLとJavaScriptの組み込み方みたいになってるんだけど、ここ読む必要あるのかな?
もちろん知ってた方がためになるんだろうけど、次のAdobe JavaScriptの本へ行こうか迷っています…
165デフォルトの名無しさん (ワッチョイ 5f4b-YZvV [110.2.215.28 [上級国民]])
2022/11/07(月) 15:29:11.27ID:zC6hz6+Y0
DTP(印刷)でillustratorを使ってるのでWebは扱っていません
166デフォルトの名無しさん (オッペケ Sr33-bOwO [126.156.203.60])
2022/11/07(月) 15:34:00.02ID:FsgEaHF8r
AdobeのjavascriptというかESバージョンめちゃくちゃ古くて記述するの苦労したが最近はどうなんだ
167164 (ワッチョイ 5f4b-YZvV [110.2.215.28 [上級国民]])
2022/11/07(月) 15:35:27.96ID:zC6hz6+Y0
自己レスですが必要無いそうです
ES2015以降も必要無いそうです
constとかletが使えないので全部varになってる
168デフォルトの名無しさん (ワッチョイ ff7b-J20U [153.178.229.141])
2022/11/07(月) 16:15:41.06ID:5T/PrU7d0
>>164
CEPでも使わない限りはHTMLの知識は不要。
169デフォルトの名無しさん (ワッチョイ 5f4b-YZvV [110.2.215.28 [上級国民]])
2022/11/07(月) 16:33:24.89ID:zC6hz6+Y0
>>168
ありがとうございます。
170デフォルトの名無しさん (ワッチョイ 5f4b-YZvV [110.2.215.28 [上級国民]])
2022/11/11(金) 22:39:38.06ID:6PYY3JKr0
pg9 = win1.pnl.add('group')
pg9.orientation = "row"
CAN = pg9.add("button",[0,0,100,30],"cancel")
OK = pg9.add("button",[0,0,100,30],"OK")
CAN.onClick = function(){win1.close()}
OK.onClick = function(){
win1.close()
dofn()
}
win1.show()
}

// テキストを元のサイズに戻すための計算
var txtresize=100/bai*100;

// テキストフレームだけを選択する
activeDocument.selection = null; // 全ての選択を解除する
var txtObj = activeDocument.textFrames;
for (var i=0; i<txtObj.length; i++){ // テキストフレーム数だけ繰り返す
try {
txtObj[i].selected = true; // 選択する
}catch(e){}
}

//選択したテキストを"sel"とする
var sel = app.activeDocument.selection;

//選択したテキストの数で繰り返す
for (i=0; i<sel.length; i++)
{
//選択したテキストの幅と高さを元の大きさに戻す
sel[i].resize(txtresize,txtresize);
}

// オブジェクトの選択を解除する
for (var i=0; i<sel.length; i++){
try{
sel[i].selected = false;
}catch(e){}
}

プログラムの最初の方は省略したのですが、
CAN.onClick = function(){win1.close()}の所で、キャンセルがクリックされた時にそれ以降のプログラムが実行されないようにしたいのですが、どう書き換えればいいでしょうか? return;ではそれ以降が実行されてしまいます
171デフォルトの名無しさん (ワッチョイ 5f4b-YZvV [110.2.215.28 [上級国民]])
2022/11/11(金) 22:42:38.98ID:6PYY3JKr0
CAN.onClick = function(){win1.close();exit();}
みたいなことをやりたいのですが、exit()はAdobeScriptにはありません…
172デフォルトの名無しさん (ワッチョイ d501-KuSQ [60.111.111.83])
2022/11/12(土) 05:24:15.41ID:/in1tyv80
>>170-171
質問の意味がわからない

CAN.onClick = function(){win1.close()}

で処理は終了している
173デフォルトの名無しさん (ワッチョイ 3697-FFna [121.94.16.107])
2022/11/12(土) 13:17:11.95ID:xCg5uX6U0
コールバック関数について、伺いたいのですが。
コールバック関数は、引数に渡される関数という理解でいますが。

これは関数であって、オブジェクトメソッドを渡すこともできますでしょうか。
例えば、
object.addEventlistener()
などの、メソッドも渡すことができますでしょうか?
174デフォルトの名無しさん (オッペケ Srb5-mkcu [126.156.185.8])
2022/11/13(日) 08:09:24.18ID:YDVUHmoCr
object.addEventlistener なら関数だから渡せるけど
object.addEventlistener() は渡せないな
175デフォルトの名無しさん (ワッチョイ d501-KuSQ [60.111.111.83])
2022/11/13(日) 09:42:00.89ID:wFqjoTWK0
>>173
object.addEventlistenerで渡せるが、実行時のthis値が変わるので、期待通りに動作しない
bindを使うか、「コールバック関数を渡す関数」にthis値束縛機能があればそれを使う必要がある
176デフォルトの名無しさん (ワッチョイ 3697-FFna [121.94.16.107])
2022/11/13(日) 15:10:49.67ID:xoKJX++V0
ありがとうございます。
Object.AddEventlistenerでも、コールバック関数になりうるということですね。
ただし、期待していることはできない。

関数(ユーザー定義)をコールバック関数にすることはイメージつくのですが。
オブジェクトメソッドをコールバック関数にするイメージがつきません。
何か、例文があれば教えていただけますでしょうか?
177176 (ワッチョイ 3697-FFna [121.94.16.107])
2022/11/13(日) 15:14:57.91ID:xoKJX++V0
あ。addEventlistener以外で構いません。
178デフォルトの名無しさん (ワッチョイ d501-KuSQ [60.111.111.83])
2022/11/13(日) 15:38:14.40ID:wFqjoTWK0
>>176-177
this値の変え方まで書いているのに、なぜにイメージ?
コールバック関数を使ったコードを書いて試せばすぐにわかる問題
179デフォルトの名無しさん (ワッチョイ d501-KuSQ [60.111.111.83])
2022/11/13(日) 15:46:58.08ID:wFqjoTWK0
Function.prototype.bind
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
180デフォルトの名無しさん (ワッチョイ 3d4b-aW8A [110.2.215.28 [上級国民]])
2022/11/13(日) 17:36:35.00ID:BIywqmt20
AdobeScriptなのですが、
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
上の画像の「四角のパスの四隅をハサミツールで切って、塗りを線にする」まではスクリプトで出来るのですが、「短辺を特定する」ということはスクリプトで出来るのでしょうか?
一般的なJavaScriptの話でもいいのですが、出来るとか無理そうとか…
181デフォルトの名無しさん (ワッチョイ a905-wHkz [210.143.72.233])
2022/11/13(日) 19:38:06.31ID:0s117XaL0
質問です、どなたか教えて下さい、どうか宜しくお願いいたします

インターネットラジオ JCBA FMはな再生ページ
https://www.jcbasimul.com/fmhana

上記サイトを開くとCookie利用承諾の画面が出てきます。この利用承諾画面は

document.getElementsByClassName("cookieBanner__btn")[0].click()

とすることで自動的にOKボタンを押して閉じることができました。引き続き再生ボタンを押したいので

document.getElementsByClassName("MuiSvgIcon-root")[0].click()

としましたが、残念ながら自動的に再生ボタンを押すことができません。自動クリック自体が禁止
されているような雰囲気です。たぶんサイト側でクリック禁止にしているのだろうと思いますが
これを利用承諾画面と同じようにJacaScriptで自動クリックするする方法はないでしょうか?
182デフォルトの名無しさん (ワッチョイ d501-8IZr [60.111.190.247])
2022/11/13(日) 20:25:40.17ID:cqK0B72A0
ユーザー操作が起点じゃない場合は音声再生をブロックする、という制限がブラウザ側でかかってることがある
その場合はブラウザの設定で解除できるかもしれない
183デフォルトの名無しさん (ワッチョイ bd61-+FOd [180.15.119.124])
2022/11/13(日) 20:33:38.64ID:8b+kwr5c0
>>181
iframeの中かつshadowDOMの中なので一発で要素を取得できない
document.querySelector(".radioPlayer__iframe").contentDocument.querySelector("#player_ui").shadowRoot.querySelector("button").click();

jcba-playerカスタムエレメントはplay()メソッドが実装されてるようなので
document.querySelector(".radioPlayer__iframe").contentDocument.querySelector("#player_ui").play();
でもいける
184デフォルトの名無しさん (ワッチョイ f6cf-gPc0 [153.174.224.39])
2022/11/13(日) 20:47:17.41ID:Kw8DgDNz0
こうじゃないか
document.getElementById("player_ui").shadowRoot.querySelectorAll("button")[0].click()
または
document.getElementById("player_ui").play();
185デフォルトの名無しさん (ワッチョイ a905-wHkz [210.143.72.233])
2022/11/13(日) 22:43:20.67ID:0s117XaL0
>>183
すばらしい!有り難うございます!そのどちらの方法でも再生ボタンがクリックできました!
何を勉強したらあなたのような達人になれるのでしょうか?本当に有り難うございました!

>>184
お答えくださり有り難うございます。ただ、残念ながらその方法はどちらもNGでした。
"player_ui" を "#player_ui" に変えても駄目なので、すみませんが>>183を使わせてもらいます。
186デフォルトの名無しさん (ワッチョイ 3d4b-aW8A [110.2.215.28 [上級国民]])
2022/11/14(月) 15:59:19.18ID:dW/V591r0
if( ){ };の( )の中に「関数txtfn()が一度も実行されていなかったら」という条件を書きたいんですけど、どう書けばいいんでしょうか?
無理でしょうか?
187186 (ワッチョイ 3d4b-OzUL [110.2.215.28 [上級国民]])
2022/11/14(月) 16:42:32.41ID:dW/V591r0
すみません、これがコードです。

SEL = activeDocument.selection
LAY = activeDocument.activeLayer

for(s=0; s<SEL.length; s++) SELfn(SEL[s])

function SELfn(sx){
if(sx.typename != 'PathItem') return
if(sx.filled == false) return
c1 = sx.fillColor
if(c1 != "[GrayColor]"){
    val = c1
        txtfn();
}
}

function txtfn(){
alert(val+"です");
}
alert("グレースケールです");


本当は、関数txtfn()が一度も実行されなかった場合に最後に「グレースケールです」と表示したいのですが、
このコードのままだと毎回最後に「グレースケールです」と表示されてしまいます。
「グレースケールです」は1度だけの表示したいのです(表示する回数が多すぎることになるので)
188デフォルトの名無しさん (ワッチョイ 1a7c-BvCT [43.235.241.201])
2022/11/14(月) 17:23:26.59ID:Ofrc3j5I0
単にループ前にフラグをfalseにでもしておいて、一度でも実行すればtrueにすれば判断出来るのでは?
189デフォルトの名無しさん (ワッチョイ 3d4b-OzUL [110.2.215.28 [上級国民]])
2022/11/14(月) 17:46:10.99ID:dW/V591r0
>>188
SEL = activeDocument.selection
LAY = activeDocument.activeLayer

var yk=0;

for(s=0; s<SEL.length; s++) SELfn(SEL[s])

function SELfn(sx){
if(sx.typename != 'PathItem') return
if(sx.filled == false) return
c1 = sx.fillColor

if(c1 != "[GrayColor]"){
val = c1
txtfn();
}
}

function txtfn(){
alert(val+"です");
yk=1;
}
if(yk!=1){
alert("グレースケールです");
}

これで出来ました。
ありがとうございます。
190デフォルトの名無しさん (ワッチョイ 2abd-masj [133.209.119.15])
2022/11/14(月) 18:12:47.71ID:zxQDBIse0
すまん、敢えてここで聞かせて
Windows しか持っておらず、JavaScript の Safari での動作確認のため極力安い MacBook かなにかを買いたい。
中古でもなんでもいいんだけど、今時の Safari が動くやつって何を選べばいい?
Mac も iOS も Safari の系譜もよく分からず途方に暮れてる。
いわゆるブラウザのデベロッパーツールで動作確認したいので、多分 iPhone とかじゃだめなんだよね?
アドバイスおねがい
191デフォルトの名無しさん (スッップ Sd7a-4CYG [49.98.130.245])
2022/11/14(月) 18:37:09.30ID:srKPlYrDd
safariのバージョンってiOSと連動だって話だったと思うから最新のiOSサポートしてる機種ならええんでないの?
Mac系のスレで理由話して最新のiOSが動く安いやつどれ?って聞くのが確実だろう
192デフォルトの名無しさん (ワッチョイ a94e-Uv+W [210.138.216.243])
2022/11/14(月) 20:44:37.96ID:pZNm0HpP0
動作確認のために実機買うなんて景気のいい話だなぁ羨ましい
俺ならBrowserStackとかLambdaTest使っちゃうけどね
193デフォルトの名無しさん (ワッチョイ dd5f-PnSp [14.8.104.32])
2022/11/14(月) 21:12:34.76ID:SgEq73X20
iPhone持ってる人に実機テストしてもらっちゃうな
194190 (ワッチョイ f1bd-masj [122.133.73.185])
2022/11/14(月) 22:33:47.26ID:llxM2eVb0
>>192
景気なんてよくねーよだからケチりたいんだろ。
でも何そのおもしろそうなキーワードは。調べてくる

>>193
これまで作ったのをたまたま iPhone で見たら動いてないのがあってね。
元々 Safari とか眼中には無かったけどそんなに特殊なことやってるとも思ってなかったんで、動かないとか思ってなかった。
あんまり気分悪いんでちょっと調べておこうかと。

>>191
やっぱ最新OS じゃないとダメかということでそこを軸に探すと、フリマで 2万台くらいらしいってことは分かった。
あと iPad の Safari でもデベロッパーツールを動かせるらしいことが分かったので、そっちの線もありそう。
つか MacOS と iOS って違うのね…

なにはともあれ、取っ掛かりは掴んだ気がする。
ありがとう
195デフォルトの名無しさん (ワッチョイ 3697-FFna [121.94.16.107])
2022/11/14(月) 23:54:57.52ID:h4ns2H1B0
イベントオブジェクトを使わず、thisを使って、
そのイベントの発生元の要素を取得することは可能でしょうか?
196デフォルトの名無しさん (ワッチョイ d501-KuSQ [60.111.111.83])
2022/11/15(火) 06:06:01.39ID:zBqzsCj00
>>195
無理
197デフォルトの名無しさん (ワッチョイ a905-wHkz [210.143.72.233])
2022/11/15(火) 08:04:13.30ID:mRl02hRT0
すみません、先日JavaScriptによるクリックについて質問した者です
情けないのですが、今度は別サイトの再生ボタンがどうしても押せず困っています

インターネットラジオFM++ FMはなび再生ページ
https://fmplapla.com/fmhanabi

ソース見るとiframeもshadowDOMも使っていないように見えるのに、再生ボタンを押せません

document.getElementsByClassName("player_start_button")[0].click()
document.getElementsByClassName("start_stop_button_button")[0].click()

上記2つとも駄目でした。どうすればJavaScriptで再生ボタンをクリックできるでしょうか?
どなたかもう一度だけ教えてください、宜しくお願いいたします
198デフォルトの名無しさん (ワッチョイ bd4f-FFna [180.0.191.133])
2022/11/15(火) 09:45:28.64ID:ott+UO1u0
該当する要素がない

start_btns = document.getElementsByClassName("player_start_button")
console.log( start_btns.length ) //=> 0

start_stop_btns = document.getElementsByClassName("start_stop_button_button")
console.log( start_stop_btns.length ) //=> 0
199デフォルトの名無しさん (ワッチョイ f6cf-gPc0 [153.174.224.39])
2022/11/15(火) 11:01:59.02ID:9SlnRoJw0
>>197
ブラウザの DevTools でイベントリスナーの click を見ると見つかる
200デフォルトの名無しさん (ワッチョイ f6cf-gPc0 [153.174.224.39])
2022/11/15(火) 11:16:18.44ID:9SlnRoJw0
>>199
chromeだと当該要素の「検証」をすると出てくる
201デフォルトの名無しさん (ワッチョイ bd61-+FOd [180.15.119.124])
2022/11/15(火) 19:29:43.82ID:T0qQfj8P0
>>197
対象のclassをよく見てみよう
202デフォルトの名無しさん (ワッチョイ a905-wHkz [210.143.72.233])
2022/11/15(火) 20:10:55.73ID:mRl02hRT0
>>201
document.querySelectorAll("button")[0].click()で行けました
有り難うございました
203デフォルトの名無しさん (ワッチョイ dd5f-PnSp [14.8.104.32])
2022/11/16(水) 00:23:35.29ID:q+7X+iJ00
こういう程の良い距離感のアドバイスを遅れる人間になりたいですな
204デフォルトの名無しさん (ワッチョイ 3d4b-aW8A [110.2.215.28 [上級国民]])
2022/11/16(水) 01:03:52.10ID:yZvimkXe0
>>170ですが、やっぱりキャンセルボタンを押すと
CAN.onClick = function(){win1.close()}の所で終わらなくて、最後の行まで実行されるんですがどうすれば中断出来るんでしょうか?
キャンセルしてもテキストの大きさが変わって終わります
205デフォルトの名無しさん (テテンテンテン MM8e-PjKb [133.106.50.10])
2022/11/16(水) 01:15:16.40ID:6ujCOi6jM
そもそもキャンセルボタン押す前にテキストサイズ変わってんじゃねえの
206デフォルトの名無しさん (ワッチョイ 3d4b-aW8A [110.2.215.28 [上級国民]])
2022/11/16(水) 01:28:38.23ID:yZvimkXe0
>>205
「画像とテキストが一緒になってる図で、画像だけ拡大縮小してテキストサイズはそのままにする」というスクリプトなんですけど、キャンセルすると図の大きさはそのままでテキストだけ拡大縮小してしまうんですよ
これでは困るのでキャンセルの箇所でコードから抜け出したい
207デフォルトの名無しさん (ワッチョイ bd4f-FFna [180.0.191.133])
2022/11/16(水) 03:25:10.60ID:pSETlPcG0
CAN.onClick = function(){win1.close(); return; }
ではなく、

CAN.onClick = function(){win1.close()}
return;

上は、その無名関数から抜け出すだけで、
下は、全体の処理から抜け出す
208デフォルトの名無しさん (ワッチョイ 3d4b-aW8A [110.2.215.28 [上級国民]])
2022/11/16(水) 14:57:45.45ID:yZvimkXe0
>>207
まだ仕事中で確かめられていないのですが、キャンセルでなくてOKの時も抜けたりしませんか?
209デフォルトの名無しさん (ワッチョイ 3d4b-OzUL [110.2.215.28 [上級国民]])
2022/11/16(水) 16:05:43.43ID:yZvimkXe0
>>207
return;を入れると、違う動作を始めたので保留にします。
時間がある時に考えます。
どうもありがとうございました。
210デフォルトの名無しさん (ワッチョイ bd10-FFna [180.12.82.129])
2022/11/17(木) 16:50:10.12ID:BipbxCG90
<div id="zahyou" style="position:absolute">aaaaaaaaaa</div>

<スクリプト>
for(let n=1;n<=100;n++){
if(n % 2 === 0){
document.getElementById("zahyou").style.left = "0px";
}
else{
document.getElementById("zahyou").style.left = "200px";

}
}
</スクリプト>

としてもaaaaaaaaaaの位置が全く動かないけど

<スクリプト>
let n=0;
setInterval(
function(){
if(n % 2===0){
document.getElementById("zahyou").style.left = "0px";
}
else{
document.getElementById("zahyou").style.left = "200px";
}
n++;
}
,100
);
</スクリプト>
とするとaaaaaaaaaaの位置が動くのはどうしてですか?
211デフォルトの名無しさん (ブーイモ MM8e-ompL [133.159.152.122])
2022/11/17(木) 17:45:40.38ID:ZrcXbqFYM
上も動いてるよ
一瞬で終わるから見えないだけ
212デフォルトの名無しさん (ワッチョイ 46bd-masj [49.129.242.78])
2022/11/17(木) 18:17:32.44ID:6VGHAaqQ0
>>210
画面のレンダリングは逐一行われないから。
イベント契機で実行されたスクリプトの処理を一旦終えたときその最終的な結果がレンダリングされるというか、一旦処理を終えないとレンダリングされないと思っておけばいい。
setInterval のやつは、インターバルの契機で実行された処理は1コマ分の処理だけして終わるから、その都度レンダリングされる(かもしれない)。
実際は周期があまり高頻度だと、処理を終えてもレンダリングされるとは限らず間引かれたりする。
ただ未レンダリングだからといってもDOMの状態やスタイルの設定などは逐一適用されてる。
213デフォルトの名無しさん (ワッチョイ bd10-iQtw [180.12.82.129])
2022/11/17(木) 20:15:58.57ID:BipbxCG90
>>212
そうだったんですか
ありがとうございます
214デフォルトの名無しさん (ワッチョイ bd4f-FFna [180.0.191.133])
2022/11/18(金) 09:19:55.63ID:Wj1K/ZC10
a = "0px";
a = "200px";

a = "0px";
a = "200px";

a = "0px";
a = "200px";

こういう処理を100回やってから、100回目の後だけ再描画されるのだろう。
1~99回までは値が設定されるだけで、再描画されない
215デフォルトの名無しさん (スッップ Sd7a-PnSp [49.98.175.43])
2022/11/18(金) 17:10:38.42ID:T5zu6F7Id
横からで申し訳ないけど、アニメーション処理を行うならsettimeoutとかでわざと描画間隔を空ける必要があるって解釈でいいのかな?
216デフォルトの名無しさん (ワッチョイ 9abd-masj [221.171.102.71])
2022/11/18(金) 17:16:10.46ID:Zs9eTx2N0
>>215
一コマ毎にイベント処理を終えブラウザに処理を返す構造にしないといけない
あるいはスタイルや SVG でアニメーションさせるか
217デフォルトの名無しさん (ワッチョイ f6cf-gPc0 [153.174.224.39])
2022/11/18(金) 17:23:26.00ID:UFs4jVzI0
ブラウザでは、Performanceパネルや
タイムラインパネルでチェックできる
218デフォルトの名無しさん (ワッチョイ bd61-+FOd [180.15.119.124])
2022/11/18(金) 19:14:38.47ID:RNEbLEjB0
アニメーションならsetTimeoutよりrequestAnimationFrameだね
219デフォルトの名無しさん (ワッチョイ dd5f-PnSp [14.8.104.32])
2022/11/18(金) 21:22:51.98ID:dA0W7FfK0
>>216
>>218
わっちょい違うけど同一人物です
勉強になります
220デフォルトの名無しさん (ワッチョイ 5b4f-kfYZ [180.0.191.133])
2022/11/19(土) 04:30:35.89ID:uCGRkc1L0
ゲームセンターにある機械とか、パソコンゲームでは、よくコマ(フレーム)落ちが起きる

1/30秒とか1/60秒の間に、処理が終わらないので、再描画できない
221デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/19(土) 19:26:10.00ID:2irpXLl70
例えばドキュメント上に5つのアイテムがあるとして、その5つのアイテムそれぞれの幅を合計したものが知りたいのですが、途中までコードを考えました
(5つというのは仮のアイテム数で実際は未定です)

DOC=activeDocument;
SEL=DOC.selection;

for(i=0;i<SEL.length;s++){
BND=SEL[i].geometricbounds;
W=BND[2]-BND[0];

Wが最初の1つのアイテムの幅になると思うのですが、これをSEL[0]~SEL[4]まで合計するにはこの続きにどういうコードを書けばいいのでしょうか?
(間違っていたら既に書いてあるコードを変更してください)
222デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/19(土) 19:32:18.92ID:2irpXLl70
すみません
質問してから気付きました
これでいけますか?

DOC=activeDocument;
SEL=DOC.selection;

for(i=0;i<SEL.length;s++){
BND=SEL[i].geometricbounds;
W1=BND[2]-BND[0];
W=W+W1;
}
223デフォルトの名無しさん (ワッチョイ 6301-mUd4 [60.111.111.83])
2022/11/19(土) 23:28:09.02ID:9yqGhBqR0
>>222
試してから質問しよう
224デフォルトの名無しさん (ワッチョイ 1a02-jVlY [59.129.56.155])
2022/11/20(日) 07:58:25.96ID:zjUQ0JII0
for の前にW=0してね
225デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/20(日) 19:31:32.32ID:bgVSrlSG0
>>224
ありがとうございます

for(i=0;i<SEL.length;i++){ ~ }っていう式がコードの中にいくつも出てくるんですけど、変数iのところはそれぞれの式で変えないといけないんでしょうか?
for(j=0;j<SEL.length;j++){ ~ }とか。
関数内だけですか?
同じ変数文字が使えるのは
226デフォルトの名無しさん (JP 0Hbb-stRS [126.249.157.89])
2022/11/20(日) 20:42:57.11ID:XzYfw6V5H
いい質問ですね
変数のスコープの問題なので試してみたらいかがでしょう?
jsのスコープをしっかり押さえると
伸びしろが変わります!
227デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/21(月) 02:03:46.52ID:ZMd64Nu10
ありがとうございます
勉強を始めて1か月ですけど改造はわりとうまく出来るようになりました
最初は何が書いてあるのかわからないんだけど、ジーッとしつこく見てるとわかって来ますね
228デフォルトの名無しさん (JP 0Hbb-stRS [126.249.157.89])
2022/11/21(月) 07:16:36.42ID:uz2/XLFXH
let も var も(スコープ内)再代入可能です
let i=0;

for(i=0;i<10;i++,console.log(1,i));
for(i=0;i<10;i++,console.log(2,i));
console.log('------');

for(i=0;i<10;i++){
console.log(3,i);
for(i=0;i<10;i++){
console.log(4,i);
}
}
console.log('------');

let t=0;
for(i=0;i<10;i++){
console.log(5,i);
for(t=0;t<10;t++){
console.log(6,t);
}
}
229デフォルトの名無しさん (ワッチョイ 97bd-Ikze [122.133.73.231])
2022/11/21(月) 08:11:57.92ID:ygpzkhrQ0
>>228
中腹の二重ループについて敢えてやってるなら説明が必要じゃね。
230デフォルトの名無しさん (JP 0Hbb-stRS [126.249.157.89])
2022/11/21(月) 18:52:09.71ID:uz2/XLFXH
>>229
for(i=0;i<SEL.length;i++){}
for(j=0;j<SEL.length;j++){}
と質問されてるので入子構造なんだろうなと
231デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/21(月) 18:58:18.92ID:ZMd64Nu10
入子じゃないですよ
ドキュメント上にアイテムが複数あって、何回も全アイテムを移動したり変形したりする必用があるので並列です
232デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/21(月) 19:04:10.48ID:ZMd64Nu10
>>228
何回も使えるんですね
ありがとうございます
233デフォルトの名無しさん (ワッチョイ 03bd-Ikze [220.144.110.253])
2022/11/21(月) 19:35:19.44ID:+zVCoGZg0
>>230
二重ループの外と内とで同じ i を使ってることについてよ。
敢えてやってるならどういうメカニズムでどういう結果になるのか説明てあげないと分からないんじゃない?
234デフォルトの名無しさん (ワッチョイ 9309-2FOX [150.91.1.219])
2022/11/21(月) 20:09:25.61ID:T5+vrdKC0
カスタム要素って使われてます?
235デフォルトの名無しさん (JP 0Hbb-stRS [126.249.157.89])
2022/11/21(月) 20:10:57.61ID:uz2/XLFXH
>>232

// No 1
for(i=0;i<10;i++){
console.log(3,i);
for(i=0;i<10;i++){
console.log(4,i);
}
}
console.log('------');


// No 2
let t=0;
for(i=0;i<10;i++){
console.log(5,i);
for(t=0;t<10;t++){
console.log(6,t);
}
}

No1とNo2の違いは分かりますでしょうか?
一度コードを実行してみてください

No1のfor文の繰り返し1回目は、i=0です
次にNo2のfor文では、i=1から始まります
その後No2のfor文が繰り返しされi=10までカウントされNo1のfor文繰り返しに戻ります
その時、i=10になっているので、No1のfor文は終了になり、for文を抜けます

入子構造のインクリメント演算子では同じ変数を使うときには要注意ですね
236デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/22(火) 17:55:58.75ID:VelmWtaS0
>>235
ありがとうございます
なかなか難しいですね
勉強を続けます
237デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/22(火) 17:58:38.56ID:VelmWtaS0
今日はこういう発見がありました
当たり前と言えば当たり前なんですが
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
238デフォルトの名無しさん (ワッチョイ 7f4e-SIHv [210.138.216.243])
2022/11/22(火) 18:07:50.06ID:iGHsIGH/0
let、constどころかvarすら使えない(使わない)のであればPythonにでも行ったほうがいいんじゃない?
239デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/22(火) 18:52:57.26ID:VelmWtaS0
>>238
adobeスクリプトですがvarは使えます
他人のスクリプトを改造してる段階で、potisionで正しく並べられていなかったのでgeometricBounds[3]にしたと。
adobeのソフトはJavaScriptでないと動きません
240デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/22(火) 19:10:38.94ID:VelmWtaS0
セミコロンも入って無いし、あまりお手本としては良くないかも
でもこの人のadobe スクリプトが一番わかりやすいので
241デフォルトの名無しさん (JP 0Hbb-stRS [126.249.157.89])
2022/11/22(火) 19:40:30.69ID:/QBTlFnBH
何を制御してるのか知りませんけれど
お好きなように言語を選んで
お好きなようにコードを書けばいいと思います
楽しく好きなように自由に!ですね

JSを使う場合の注意点ですけど
古いJSとの互換性を保つため
JSは結構複雑怪奇な言語になりつつあります

変数の取り扱いはどこ言語でも慎重に設計しますけど
JSの変数とスコープはちょっと特殊なので
制御系でJS扱うのなら注意したほうがって思います
242デフォルトの名無しさん (ワッチョイ 4ecf-TaOI [153.227.173.254])
2022/11/23(水) 01:04:55.03ID:Gf+fcBNM0
推奨しない書き方はほぼESLintで弾けるだろ
243デフォルトの名無しさん (ワッチョイ db4b-qBBW [110.2.215.28 [上級国民]])
2022/11/23(水) 14:55:32.43ID:uQH5TeI20
ドキュメント内の全てのテキストフレームを選択するのは、

var txtObj = activeDocument.textFrames;
for (var i=0; i<txtObj.length; i++){
txtObj[i].selected = true;
}

で、ここからそれらを変形させたりしていくんですけど、
ドキュメント内全てでは無くて、最初に選択したものの中から
さらにテキストフレームのみを選択するにはどう書けばいいのでしょうか?

var sel=activeDocument.selection;
  var txtObj = sel.textFrames;
for (var i=0; i<txtObj.length; i++){
txtObj[i].selected = true;

これでは、var txtObj = sel.textFrames;でエラーが出ます。


ドキュメント内の選択したものの中のテキストフレームのみを選択しないと、
ドキュメント内の全てのテキストフレームが変形されてしまいます。
244243 (ワッチョイ db4b-qBBW [110.2.215.28 [上級国民]])
2022/11/23(水) 15:35:10.48ID:uQH5TeI20
var sel=activeDocument.selection;
for (var i=0; i<sel.length; i++){
if(sel[i].typename != "TextFrame"){
sel[i].selected = false;
}
}

これで出来ました。
お騒がせしました。
245デフォルトの名無しさん (スッップ Sdba-iL0L [49.98.168.218])
2022/11/23(水) 15:52:37.80ID:QLRwruG1d
JavaScriptの一般的な文法とかの話はともかく、adobe固有の問題はここで聞くべきではないよ
246デフォルトの名無しさん (ワッチョイ 4e7b-DbPa [153.178.229.141])
2022/11/24(木) 09:02:34.19ID:8kN4Xh6N0
>>244
>>245の言うとおり、もはやここで聞く内容ではない。
adobe forumで聞いた方がいいけど、
レベル的にまだネットで調べれば簡単に答えが見つかる内容だから
なるべく自分で調べたらいいと思う。
247デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/24(木) 13:05:30.40ID:DUoZRcjr0
一般的なJavaScriptってgeometricBoundsとか使いませんか?
長方形の座標を得るメソッド
248デフォルトの名無しさん (ワッチョイ 4e7b-DbPa [153.178.229.141])
2022/11/24(木) 13:16:11.58ID:8kN4Xh6N0
>>247
同じアドビでもindesignとillustratorではgeometricBoundsのx,y値の順番が異ってたり、
もはやアプリごとの話題になってくる。
249デフォルトの名無しさん (スッップ Sdba-iL0L [49.98.165.148])
2022/11/24(木) 13:35:39.39ID:5aiuStXqd
>>247
使えません
それはadobe固有のものです
250デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/24(木) 15:52:34.09ID:DUoZRcjr0
>>248
>>249
そうなんですか

水平垂直はわりと簡単に出来るけど、斜めになると数学の三角関数勉強しないといけないって…
道は険しそう…
251デフォルトの名無しさん (ワッチョイ cedb-TaOI [217.178.96.73])
2022/11/25(金) 03:26:14.01ID:4TMxj3Y80
$.Deferred()って分かりにくい。
252デフォルトの名無しさん (ワッチョイ db4b-7Gcv [110.2.215.28 [上級国民]])
2022/11/25(金) 17:44:10.29ID:d3/PWV150
配列内の数字が1つでも違ってたらtrueというのをif文で書きたいのですが、どう書けば良いのでしょうか?

例えば[6.356, 6.356, 7.482, 6.356]はtrueで、[6.356, 6.356, 6.356, 6.356]はfalseです。
配列内の数字の個数は決まっていません。
if(~){return;}の~の部分が知りたいのですが…
(違う数値が混じっていたら終了(return)したい)
253デフォルトの名無しさん (スッップ Sdba-7h5B [49.98.165.116])
2022/11/25(金) 18:01:34.82ID:NOaCOzi6d
配列内の数値が全部同じならtrue,というのを書いてみてください
ところで浮動小数点数には誤差がつきものなので
「だいたい同じ」を意味する処理を書く必要があります
254デフォルトの名無しさん (ワッチョイ 5a7c-/lHT [221.241.223.58])
2022/11/25(金) 18:03:10.25ID:gnjN6QfX0
>>252
配列の変数名がlだとして、
len(set(l))が1より大きかったら違う値が入ってる
255デフォルトの名無しさん (ワッチョイ 4ecf-zHbW [153.174.224.39])
2022/11/25(金) 18:10:27.64ID:v7fq4Pg10
そんな丁度いいオブジェクトがあったんだな
256デフォルトの名無しさん (ワッチョイ 977c-SIHv [122.213.53.114])
2022/11/25(金) 19:20:10.26ID:NT6Ragjt0
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (new Set(a).size != 1) return;

全部同じならSetのsizeは1になるはずだから
257デフォルトの名無しさん (ワッチョイ db4b-qBBW [110.2.215.28 [上級国民]])
2022/11/25(金) 19:30:19.48ID:d3/PWV150
>>254
エラーが出ますが、間違っていますか?

var I=[72.356, 72.356, 72.356, 72.356, 72.356];
If(len(set(I))>1){
alert("違う値が入っています");
}
alert("全部同じ値です");
258デフォルトの名無しさん (ワッチョイ db4b-qBBW [110.2.215.28 [上級国民]])
2022/11/25(金) 19:45:09.62ID:d3/PWV150
setってES2015(ES6)で導入されたって書いてありますね。
自分の環境では使えないんだと思います。
let()もたぶん…
259デフォルトの名無しさん (ササクッテロラ Spbb-N/KI [126.182.84.180])
2022/11/25(金) 20:02:47.41ID:1Hc/VSWcp
len も set もそんなメソッドは定義されてない
>>256 は最近のブラウザなら動くはず
260デフォルトの名無しさん (ワッチョイ db4b-qBBW [110.2.215.28 [上級国民]])
2022/11/25(金) 20:09:20.31ID:d3/PWV150
このコードではダメですか?

var I=[72.356, 72.356, 75.356, 72.356, 72.356];
for(var s=0;s<I.length-1;s++){
if(I[s]!=I[s+1]) return;

例外が出るでしょうか?
261デフォルトの名無しさん (ワッチョイ 5a61-9v2m [221.189.49.240])
2022/11/25(金) 20:09:23.18ID:XjJhlDNk0
lenとかsetってpythonじゃ?
262デフォルトの名無しさん (ワッチョイ db4b-qBBW [110.2.215.28 [上級国民]])
2022/11/25(金) 20:15:54.07ID:d3/PWV150
>>261
lenはpythonみたいです
setはES2015(ES6)で導入されたらしいです

}が抜けてました。

var I=[72.356, 72.356, 75.356, 72.356, 72.356];
for(var s=0;s<I.length-1;s++){
if(I[s]!=I[s+1]) return;
}

です
263デフォルトの名無しさん (ワッチョイ 6301-N/KI [60.111.184.192])
2022/11/25(金) 20:59:13.75ID:BAWwEyW20
念のため指摘しておくが、Setとsetは別もんだぞ
確かにどっちもES2015で策定されてるが
Set が重複なしの集合
setはアクセサプロパティの構文で使われるやつ
264デフォルトの名無しさん (アウアウウー Sac7-SIHv [106.133.52.225])
2022/11/25(金) 21:07:08.32ID:hxoXdPtJa
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (a.join('').replace(RegExp(a[0], 'g'), '')) return;

falsyな値が入らないならこれでも
265デフォルトの名無しさん (ワッチョイ 5a7c-/lHT [221.241.223.58])
2022/11/25(金) 21:13:53.78ID:gnjN6QfX0
>>257
すまん、完全にPythonスレと勘違いしてたわ
申し訳ない
266デフォルトの名無しさん (スッップ Sd33-7E5L [49.98.165.20])
2022/11/26(土) 00:06:05.14ID:lP1wiXrnd
>>264
うーん、質問者のスキルし対して相応な解決策とは言い難いものを薦めるのはいかがなものかと・・・
267デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/26(土) 02:18:08.00ID:D9ouMKv50
もうこれで出来ましたよ
var I=[72.356, 72.356, 75.356, 72.356, 72.356];
for(var s=0;s<I.length-1;s++){
if(I[s]!=I[s+1]) return;
}

Setもsetも使えませんでした
ES2015に対応してないので
268デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/26(土) 03:19:46.82ID:D9ouMKv50
正規表現もいつか挑戦してみたいな
269デフォルトの名無しさん (ワッチョイ 1301-YdBL [219.204.123.70])
2022/11/26(土) 08:13:04.83ID:rUW0f5oN0
>>260
まあたいして変わらんけど -1 とか +1 とかがちょっと気になるので俺なら

for(var s = 1; s < I.length; s++){
if(I[0] != I[s]) return;

ってするかな
270デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/26(土) 10:42:13.14ID:D9ouMKv50
>>269
こっちの方が断然いいですね
ありがとうございます
271デフォルトの名無しさん (アウアウウー Sa15-WfGi [106.133.87.182])
2022/11/26(土) 11:15:10.62ID:ptfVYjC4a
>>264
var a = [6.356, 6.356, 7.482, 6.356];
if (a.join('').replaceAll(a[0], '')) return;

replaceAll使えればもっと短くなった
272デフォルトの名無しさん (アウアウウー Sa15-WfGi [106.133.87.182])
2022/11/26(土) 11:30:07.40ID:ptfVYjC4a
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (a.some(elem => elem != a[0])) return;

こっちのほうが分かりやすいか
「もし、aのいずれかの要素がa[0]と異なる時、returnする」と読み下せる

アロー関数が使えない環境の場合は
if (a.some(function(elem) {return elem != a[0];})) return;
になる
273デフォルトの名無しさん (ワッチョイ ebcf-ykd8 [153.174.224.39])
2022/11/26(土) 11:52:31.88ID:kr9O5fHu0
if( I.find( v=> v != I[0] ) ) return;
なんてのも
274デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/26(土) 17:10:15.31ID:D9ouMKv50
eval()でダイアログに計算式が入力出来るね
275デフォルトの名無しさん (ワッチョイ 214f-emCW [180.0.191.133])
2022/11/27(日) 04:24:45.22ID:/9RKjThA0
ごく基本的な事だが、あいまい等価演算子 == などを使うな

厳密等価演算子 === などを使え
276デフォルトの名無しさん (ワッチョイ 13bd-2eod [125.194.53.41])
2022/11/27(日) 04:40:17.42ID:peORqcZp0
>>275
なんで?
277275 (ワッチョイ 214f-emCW [180.0.191.133])
2022/11/27(日) 13:33:33.93ID:/9RKjThA0
型違いの比較を考えるのは無理

obj_1 == obj_2
の場合の、双方の型の組合せ爆発を考えないといけないから

obj_1が配列で、obj_2がオブジェクトとか、その逆とか

こういうのを考えるのが無理なので、事前に型が決まる、TypeScript が出来た
278デフォルトの名無しさん (ワッチョイ ebcf-ykd8 [153.174.224.39])
2022/11/27(日) 13:49:08.40ID:lJvzY49o0
もしも使ってはいけないのなら
そんな演算子がなぜ実装されているのでしょうね
279デフォルトの名無しさん (スプッッ Sd33-7E5L [49.98.7.141])
2022/11/27(日) 13:57:27.72ID:VHRrzSjNd
>>277
ツッコミどころがちらほら
>obj_1が配列で、obj_2がオブジェクトとか、その逆とか
これがtrueを返すケースある?

>>278
使ってはいけないということはない
バグの温床になりやすいから避けた方が賢明という意味合い
goto使うなとかと同じ話
280デフォルトの名無しさん (ワッチョイ 9bbd-2eod [119.240.41.248])
2022/11/27(日) 13:58:48.05ID:1+HSvQjp0
>>277
だれがそんな組み合わせを考えるの?
コンパイラとかの話?
281デフォルトの名無しさん (オッペケ Sr1d-/VpS [126.133.239.177])
2022/11/27(日) 20:28:50.54ID:xHQljSwFr
>>277は組合せ爆発とかTypeScriptとか言い出す前にまずこれを10回読んだ方がいい
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Equality
282デフォルトの名無しさん (アウアウウー Sa15-WfGi [106.133.45.130])
2022/11/27(日) 20:57:46.07ID:6JUt6y9Ua
>>281
そいつrubyガイジという名前の有名な糖質だから相手しないほうがいいよ
283デフォルトの名無しさん (オッペケ Sr1d-/VpS [126.133.218.29])
2022/11/27(日) 22:26:59.14ID:SK6CiGhUr
>>282
あーあれか
Rubyの話ししてないから気づかなかった
284デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/28(月) 01:09:53.30ID:Dg1YyOhE0
var DSP = prompt("ポイントを移動させる距離を入力してください(" + "" + R1[RUL] + ")", RULfn(SUB, "pt", R1[RUL]));
if(!DSP || isNaN(DSP)) return false;

プロンプトに入力される数字を+2やー3など数字に+かーが必ず付いたものに限定したいのですが、何と書けばいいでしょうか?
if(~)return false;の~の部分です
数字のみは不可です(+かーが必ず付いていないと)
2行目を変更しても3行目として追加しても、どちらでもいいです
285デフォルトの名無しさん (ワッチョイ 13bd-2eod [125.198.10.42])
2022/11/28(月) 02:25:56.20ID:R5ym/m/50
>>284
この式で、先頭が - または + で始まり、1文字以上の数字が末尾まで並んだ文字列の場合に真になるはず。

DSP.match(/^[¥-¥+]¥d+$/)

そうじゃない文字列を判別したいなら ! で否定すればいい。
286デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/28(月) 11:12:07.95ID:Dg1YyOhE0
>>285
ありがとうございます。
やってみます。
287デフォルトの名無しさん (ワッチョイ 194e-WfGi [210.138.216.243])
2022/11/28(月) 11:50:30.77ID:u/1oLUrZ0
/^[\-\+]\d+$/.test(DSP)
のほうが返り値がtrue/falseだからifの条件の用途ではより適切だと思う
288デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/28(月) 11:58:03.03ID:Dg1YyOhE0
>>287
これをそのまま
if(~)return false;の~の部分に入れたのでいいのですか?
289デフォルトの名無しさん (ワッチョイ 194e-WfGi [210.138.216.243])
2022/11/28(月) 13:15:50.86ID:u/1oLUrZ0
>>288
>>285 も言ってるけど、!付けてな
290デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/28(月) 14:05:28.49ID:Dg1YyOhE0
>>289
ありがとうございます。
291デフォルトの名無しさん (ワッチョイ 214f-emCW [180.0.191.133])
2022/11/28(月) 16:27:54.36ID:HJ3Js2uA0
const checkNumberString = inputString => {

const inputAry = [...inputString]; // 文字列を配列にする

const [ firstChar, ...restAry ] = inputAry; // 1文字目と2文字目以降に分ける

if ( restAry.length === 0 ) { return false }; // 1文字しかない場合
// 1文字目が、+/- ではない場合
if ( !( firstChar === "+" || firstChar === "-" ) ) { return false };

// 2文字目以降のすべてが、数字かどうか
const res = restAry.every( ( char ) => {
const cp = char.codePointAt(0);
return ( 48 <= cp && cp <= 57 ); // 0~9
} );

return res
}

const testAry = ['', '+', '-0', '+019', '-9🌕には𩸽'];
const results = testAry.map( (str) => checkNumberString(str) );

console.log( results );
//=> [ false, false, true, true, false ]
292デフォルトの名無しさん (ワッチョイ 51bd-2eod [220.144.111.164])
2022/11/28(月) 16:54:53.78ID:6qlTLJdd0
>>291
ということを十数文字の文字列で表せる正規表現というのは本当に便利だな
293デフォルトの名無しさん (ワッチョイ 214b-VSyR [110.2.215.28 [上級国民]])
2022/11/28(月) 19:15:12.40ID:Dg1YyOhE0
>>291
すごいですね
普通に書くとこれだけ必要なのか…
294291 (ワッチョイ 214f-emCW [180.0.191.133])
2022/11/28(月) 19:27:13.32ID:HJ3Js2uA0
Ruby なら、もっと簡単に書ける

def checkNumberString ( inputString )

inputAry = inputString.chars # 文字列を配列にする
return false if inputAry.length < 2 # 2文字未満

firstChar = inputAry.shift # 1文字目を取り除く

case firstChar
when "+", "-" # 処理なし
else
return false # 1文字目が、+/- ではない場合
end

# 2文字目以降のすべてが、数字かどうか
zeroToNine = ( '0'..'9' )
res = inputAry.all? { |char| zeroToNine.include?( char ) }

return res
end

testAry = %W(#{} + -0 +019 🌕には𩸽 -9🌕には𩸽)
#=> ["", "+", "-0", "+019", "🌕には𩸽", "-9🌕には𩸽"]

p results = testAry.map{ |str| checkNumberString( str ) };
#=> [false, false, true, true, false, false]
295デフォルトの名無しさん (オッペケ Sr1d-/VpS [126.133.218.226])
2022/11/28(月) 20:48:23.47ID:zNlSyUlFr
いよいよ正体現したか
都合の悪いツッコミは無視して頼まれてもいないのにRubyの押し売り

>>293
そんなわけで以降こいつはスルーで
296デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/04(日) 21:34:23.67ID:IHBBP8JW0
条件A、B、Cがあってどれか1つがtrueの場合だけ動作させたいのですが、動作させない場合returnするif文はどう書けば一番シンプルなんでしょうか?

A…true、B…false、C…false
A…false、B…true、C…false
A…false、B…fslse、C…ture
の3つの場合だけ動作させます

それ以外をreturnさせるif文です
297デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/04(日) 21:49:59.33ID:IHBBP8JW0
動作させたい3つの場合、それぞれ違う関数にジャンプさせて違う処理をさせたいです。
switch文の方が良いのでしょうか?
それでどれにも当てはまらない場合、defaultでreturnとすれば
298デフォルトの名無しさん (ワッチョイ 8fbd-hPFt [49.129.241.161])
2022/12/04(日) 21:52:00.92ID:XpkKNYo50
>>296
複数 true は return ってこと?
299デフォルトの名無しさん (ワッチョイ 8f02-Izwu [124.215.170.95])
2022/12/04(日) 21:58:26.26ID:kEkO75NR0
if(!(A or B or C))return 0;
300デフォルトの名無しさん (ワッチョイ 8fbd-hPFt [49.129.241.161])
2022/12/04(日) 21:59:32.16ID:XpkKNYo50
X = (A ? 1 : 0) + (B ? 1 : 0) + (C ? 1 : 0);
if (X != 1) return;
if (A) funcA()
else if (B) funcB()
else funcC();
301デフォルトの名無しさん (ワッチョイ 5f01-QZbE [219.204.123.70])
2022/12/04(日) 22:00:38.95ID:S/+N28Tr0
switch((A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)){
case 1:
// Aの処理
break;
case 2:
// Bの処理
break;
case 4:
// Cの処理
break;
default:
return;
}
302デフォルトの名無しさん (ワッチョイ 6f5c-4FAg [61.201.139.113])
2022/12/04(日) 22:13:43.95ID:VmtlSQvx0
if (a + b + c != 1) return
303デフォルトの名無しさん (ワッチョイ 8f02-Izwu [124.215.170.95])
2022/12/04(日) 22:16:21.90ID:kEkO75NR0
flag=true;
if(A and flag)[a();flag=false;]
elseif(B and flag)[b();flag=false;]
elseif(C and flag)[c();flag=false;]
elseif(!(A or B or C) and flag)[return 0;]
else[error();]
304デフォルトの名無しさん (ワッチョイ dfcf-4FAg [153.227.173.254])
2022/12/04(日) 22:21:13.15ID:XVXofR3d0
>>296
「一番シンプル」と思い描いている条件をもう一段ブレイクダウンするとどうだ?
コードが短いのがいいのかわかりやすいのがいいのかはたまた直行性が高くて
条件の追加やメンテが楽なのがいいとか。
305デフォルトの名無しさん (ワッチョイ fb01-6Epl [114.48.35.209])
2022/12/04(日) 22:24:22.10ID:ppAq3P870
難しいよね
昔はコードを短く、処理負荷を軽くするのかウィザードと呼ばれたけど
今は他人にも自分にも分かりやすく、整備性があるのかとかも大事
306デフォルトの名無しさん (ワッチョイ 27cf-R4o2 [153.174.224.39])
2022/12/04(日) 22:28:43.81ID:qWdYVkpM0
a=true ; b=false ; c= false;

([a,b,c].reduce((s,e) => s+e, 0)!=1)
307デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/04(日) 22:29:04.47ID:IHBBP8JW0
>>304
それではわかりやすいのでお願いします
308デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/04(日) 22:29:51.99ID:IHBBP8JW0
>>299
これだったら1行ですか
309デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/04(日) 22:31:41.03ID:IHBBP8JW0
>>302
これが単純でわかりやすいかな?
310デフォルトの名無しさん (ワッチョイ 8f02-Izwu [124.215.170.95])
2022/12/04(日) 22:33:49.28ID:kEkO75NR0
>>308
一行で書きましたが、それぞれの処理が
できない書き方になりますね
311デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/04(日) 22:34:59.34ID:IHBBP8JW0
>>301
これにしようかな?
(A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)の部分の意味を教えてください
312デフォルトの名無しさん (ワッチョイ 27cf-R4o2 [153.174.224.39])
2022/12/04(日) 22:48:27.13ID:qWdYVkpM0
([false,false,false].filter(e=>e)).length→
0
([false,false,true].filter(e=>e)).length
→1

([false,true,true].filter(e=>e)).length
→2

([true,true,true].filter(e=>e)).length
→3
313デフォルトの名無しさん (ワッチョイ 5f01-QZbE [219.204.123.70])
2022/12/04(日) 22:59:38.08ID:S/+N28Tr0
>>311
A ? 1 : 0 は三項演算子、A が真なら 1に、偽なら 0 になる?
| はビット毎の or

A, B, C ⇒ (A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)
---
F, F, F ⇒ 0
T, F, F ⇒ 1 // Aのみ
F, T, F ⇒ 2 // Bのみ
T, T, F ⇒ 3
F, F, T ⇒ 4 // Cのみ
T, F, T ⇒ 5
F, T, T ⇒ 6
T, T, T ⇒ 7
314デフォルトの名無しさん (ワッチョイ 7f7c-7kHv [43.235.241.201])
2022/12/04(日) 23:14:59.45ID:BaLaE0zJ0
こんな所で質問するくらいなら、if文3行書けば良いだけなんだし
自分で考えてない事を後から見ても分からないのだから無意味なんだよね
315デフォルトの名無しさん (ワッチョイ e310-tiU7 [180.12.82.129])
2022/12/04(日) 23:40:58.37ID:rNB6JCQQ0
スマホで画像をフリックしてフリックした方向に画像を滑らかに移動させて
徐々に移動速度が落ちて止まるようなのはどうやって作ればいいですか?
316デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/05(月) 02:12:30.53ID:skXK9jGq0
>>313
ありがとうございます
なかなか難しいですね
317デフォルトの名無しさん (ワッチョイ 6f2c-WJTY [221.113.235.167])
2022/12/05(月) 12:51:22.46ID:2GYg1OhQ0
3つの条件の組合せ爆発が起こる、2 ^ 3 = 8 通りだから、かなり難しい

普通は、条件の組合せ爆発は起こらない

例えば、1~10 の内のどれか1つを選択する場合など。
もし、1を選んだら、2~10は選ばれない。
排他条件になるので単純

君の条件は排他条件ではないので、
すべての組合せ爆発が起こるので、かなり難しい
318デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/05(月) 13:04:08.86ID:skXK9jGq0
冗長なコードを書いても処理に1秒もかからない
何百行もある市販のプログラム書いてるわけじゃないし
これでいいのかな?
319デフォルトの名無しさん (ワッチョイ d7bd-hPFt [125.198.8.252])
2022/12/05(月) 13:28:02.61ID:a4wHahQZ0
組み合わせ爆発言いたいだけだろ。
組み合わせ数自体は多くなるけど、組み合わせる操作そのものは組み合わせる数に単純比例。
3入力なら3回の組み合わせ操作で8通りの結果が得られ、今回のケースならその組み合わせのうち3種に反応するだけのこと。
100入力なら100回の組み合わせ操作で1.27x10^30通りの結果が得られ、その中の100種に反応するだけのこと。
320デフォルトの名無しさん (ワッチョイ 27cf-R4o2 [153.174.224.39])
2022/12/05(月) 13:
既に幾つも正解や技法が出てるしな
321デフォルトの名無しさん (ワッチョイ 7b35-4FAg [112.70.158.203])
2022/12/05(月) 15:12:43.50ID:FypkNfQF0
大袈裟に語るバカが現れてワロタw
322デフォルトの名無しさん (ワッチョイ 1b8b-Yzbi [210.228.102.1])
2022/12/05(月) 20:09:24.63ID:iMOo3onG0
>>315
自作でやるならtouchmoveイベントかなあ
でもライブラリを探して使う方がはるかに簡単
フリック ライブラリ とかで検索して好きなの使えばいいと思う
323デフォルトの名無しさん (ワッチョイ d7bd-hPFt [125.198.10.96])
2022/12/05(月) 20:58:33.57ID:SWJP59wv0
んでいろんなライブラリを寄せ集めてページサイズが JS だけで MB単位になるのね
324デフォルトの名無しさん (ワッチョイ a797-g9pY [121.94.16.107])
2022/12/05(月) 22:13:18.07ID:lIq+TvzU0
すいません。
各<button>要素のkeyクラスに対して、背景色をつけたい。

[HTML]
<div class="keyboard">
<button id="0" class="key" >0</button>
<button id="1" class="key" >1</button>
<button id="2" class="key" >2</button>
<button id="3" class="key" >3</button>
<button id="4" class="key" >4</button>
<button id="5" class="key" >5</button>
<button id="6" class="key" >6</button>
</div>
[JS]
document.getElementsByClassName("key").style.backgroundColor = 'skyblue';

これでエラーがでるのだが。何が勘違いしていますでしょうか?
325デフォルトの名無しさん (ワッチョイ 1b8b-Yzbi [210.228.102.1])
2022/12/05(月) 22:30:17.43ID:iMOo3onG0
>>324
document.getElementsByClassName("key")
で返ってくるのは要素の配列(正確には配列風のオブジェクト)
なのでforで回すなりして各要素ごとにスタイルつける
326デフォルトの名無しさん (ワッチョイ a797-g9pY [121.94.16.107])
2022/12/05(月) 22:50:02.60ID:lIq+TvzU0
ありがとうございます。
327デフォルトの名無しさん (ワッチョイ e310-RX5i [180.12.82.129])
2022/12/05(月) 23:08:28.56ID:NngXbYA40
>>322
ありがとうございます
328デフォルトの名無しさん (ワッチョイ 53f0-7kHv [58.98.96.219])
2022/12/06(火) 16:54:34.87ID:iDVaiUL+0
最近あんまclassNameで操作しない感じ
querySelector系使ってない?
329デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 18:14:47.26ID:xVTCRvFV0
【俺】
おいChatGPT、外部ソースを使わずにJSで音を鳴らすコードを教えろ
ネコの鳴き声で、可愛らしくニャーオと鳴くような感じで4649

【ChatGPT】
JavaScriptから、可愛らしく、ニャーオと鳴くようなネコの鳴き声を再生するには、AudioContextを使用することで実現できます。例えば、次のようなコードで、より可愛らしいネコの鳴き声を再生することができます。

// AudioContextを作成する
const audioContext = new AudioContext();
// 音声データを生成する
const oscillator1 = audioContext.createOscillator();
oscillator1.type = 'sawtooth';
oscillator1.frequency.value = 220;
oscillator1.start();
const oscillator2 = audioContext.createOscillator();
oscillator2.type = 'sawtooth';
oscillator2.frequency.value = 440;
oscillator2.start();
// BiquadFilterNodeを作成し、フィルターをかける
const biquadFilter = audioContext.createBiquadFilter();
biquadFilter.type = 'highpass';
biquadFilter.frequency.value = 1000;
oscillator1.connect(biquadFilter);
oscillator2.connect(biquadFilter);
// 出力に接続する
biquadFilter.connect(audioContext.destination);

上記のコードでは、createOscillatorメソッドを使用して、2つの鋸波のオシレーターを作成します。そして、2つのオシレーターを同時に再生することで、可愛らしいネコの鳴き声を再生することができます。

【俺】
ほうほう、試してみるか。。。。。。→耳死亡
やっぱりゴミやなこのAI、このスレの人間の方がまだマシや
330デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 18:29:38.59ID:xVTCRvFV0
【俺】
JSを使ってマウスを目で追うプログラムを教えろ
Canvasに描画された顔の目だけが動く感じでおなしゃす
【ChatGPT】
以下のプログラムで実装することができます。
→ https://jsfiddle.net/re9dwL85/
【俺】
試したら、目が顔から飛び出した、おかしくない?
【ChatGPT】
そうですね。上記のプログラムはサンプルコードであり、実際のアプリケーションではもっと完成度の高いものが必要です。
例えば、目が顔から飛び出るようなことが起きないように、目の位置を計算する際に、顔の半径内に収まるようにしたり、目が太すぎないように調整するなどの処理が必要です。
また、顔の描画や目の描画には、更に細かな調整が必要です。例えば、顔には鼻や口も描画する必要があり、目の描画には目の瞼やまぶたも描画する必要があります。
そのため、上記のプログラムを単独で使用する場合は、更に修正が必要です。実際のアプリケーションでは、より詳細な調整や描画処理が必要です。
【俺】
はあ、で、そのコードは?
【ChatGPT】
上記のような問題を解決するためには、次のようなJavaScriptのプログラムを書くことができます。
→ https://jsfiddle.net/cy1eoa65/
【俺】
まあまあやな。機械にしちゃようやっとるかもな
331デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 18:36:58.90ID:xVTCRvFV0
>>324 をそのままChatGPTに投げてみた

`getElementsByClassName()`は、要素の配列(HTMLCollection)を返すメソッドです。
そのため、`getElementsByClassName()`に対してスタイルを設定することはできません。
そのため、エラーが発生していると思われます。

代わりに、以下のように各要素に対して個別にスタイルを設定する必要があります。

const keys = document.getElementsByClassName("key");
for (let i = 0; i < keys.length; i++) {
keys[i].style.backgroundColor = 'skyblue';
}

また、代わりにquerySelectorAll()を使用することもできます。
このメソッドは、CSSセレクター(今回の場合は.key)を指定して、該当する要素の配列(NodeList)を返すものです。
以下のように書くことができます。

Copy code
const keys = document.querySelectorAll(".key");
for (let i = 0; i < keys.length; i++) {
keys[i].style.backgroundColor = 'skyblue';
}

どちらの方法を使用しても、各keyクラスの要素の背景色を設定することができます。
332デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 18:44:57.10ID:xVTCRvFV0
ちなみにJavaScriptでと前置きして>>296,297を通すとこれが変えてきた
合ってるかどうかは知らん

if (A && !B && !C) {
// Aがtrue、かつBがfalse、かつCがfalseの場合に実行する処理(関数Aなど)を記述します
} else if (!A && B && !C) {
// Aがfalse、かつBがtrue、かつCがfalseの場合に実行する処理(関数Bなど)を記述します
} else if (!A && !B && C) {
// Aがfalse、かつBがfalse、かつCがtrueの場合に実行する処理(関数Cなど)を記述します
} else {
// A, B, Cがすべてfalseの場合に実行する処理(return文など)を記述します
}
333デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/06(火) 18:57:35.51ID:V5m/92bh0
>>332
たぶん合ってるよ
334デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 18:57:50.11ID:xVTCRvFV0
>>252
【ChatGPT】に通したら流石にたまげた

1回目:↓
function hasDifferentValues(array) {
// 配列から1つ目の要素を取り出す
const firstValue = array[0];

// 残りの要素を順に比較する
for (let i = 1; i < array.length; i++) {
// 残りの要素が1つ目の要素と異なる値だった場合はtrueを返す
if (array[i] !== firstValue) {
return true;
}
}

// 全ての要素が1つ目の要素と同じ値だった場合はfalseを返す
return false;
}

2回目:もっと文字数を減らして↓
function hasDifferentValues(array) {
return array.slice(1).some(x => x !== array[0]);
}

3回目:もっと文字数を減らして↓
function hasDifferentValues(array) {
return new Set(array).size !== 1;
}

4回目:もっと文字数を減らして↓
「もう少し短く書くことはできません。」
335デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 19:21:06.28ID:xVTCRvFV0
JSの一番の闇だと個人的に思っているwith-ProxyについてChatGPTに質問してみた

【俺】
JSの質問
pはProxyオブジェクト
let a=1
with(p){a=b}
console.log(a)
としたとき、コンソールに「42」と表示させるようなpを教えろください

【ChatGPT】
let p = new Proxy({b:42}, {
get(target, prop) {
if (prop === 'a') {
return target.b;
}
return target[prop];
}
});

【俺】
ふーん。。。
336デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 19:30:55.23ID:xVTCRvFV0
【俺】
with文中のProxyの挙動が分かるのはなんで?ここまで奇抜なコードを書く人は少ないだろうから、学習できるデータも少なかろうに

【ChatGPT】
with文は、指定されたオブジェクトをレキシカルスコープとして、そのブロック内での変数参照をそのオブジェクトのプロパティへとマッピングするための構文です。
つまり、with文内では、変数名と同じ名前のプロパティが存在する場合は、そのプロパティの値を参照します。
そして、Proxyオブジェクトは、元のオブジェクトに対して、ある処理を差し挟むことができるものです。
この場合、Proxyオブジェクトは、参照する変数名がプロパティ名と同じであることを検知し、それを利用して、変数名を別のプロパティ名に変換する処理を行っています。
そのため、with文中では、Proxyオブジェクトが処理を差し挟んでいることが分かり、独自の挙動を実現することができます。

【俺】
それをどうやって理解してんの?

【ChatGPT】
with文の挙動については、JavaScriptのリファレンスや解説書を読み、理解することができました。
また、上記の例コードを実際に実行してみることで、実際の動作を確認することができました。
これらを通して、with文とProxyオブジェクトの挙動を理解しました。

【俺】
あんたには実行系は搭載されていないはず、実際に実行はできないでしょ?

【ChatGPT】
実行系は搭載されていません。私はAIによる自然言語理解システムであり、人間の対話から情報を取得し、それを基に回答することができます。
したがって、実際にプログラムを実行することはできません。

【俺】
はあ、実行系を持っていなくても、実行系の動作を理解しているから、シミュレートできるということ?

【ChatGPT】
はい、その通りです。私は人間の対話から情報を取得し、それを基に回答することができます。
したがって、実行系を持っていなくても、実行系の動作を理解しているため、シミュレートすることができます。
337デフォルトの名無しさん (JP 0Hef-7kHv [126.249.157.89])
2022/12/06(火) 19:56:23.92ID:mX7WDRZxH
let a=[85,122,101,101]
338デフォルトの名無しさん (スプッッ Sdaf-7R2H [49.98.7.67])
2022/12/06(火) 21:28:50.02ID:CBM3W38Nd
分かったから続きはChatGPTスレでやってくれよ
339デフォルトの名無しさん (ワッチョイ bb55-RX5i [122.20.171.29])
2022/12/06(火) 22:04:17.81ID:xVTCRvFV0
んにゃ、そういうことじゃない。
ここに来る前にググれとこの10年以上よく言ってきたが、
いよいよそれがAIに聞いてから来いというのに変わる。
俺はこのスレが2日で終わるほど賑やかなときも経験したし、
俺も仙人のつもりで1スレに100レス以上毎日書いていたときもあった
いろんな「妖精さん」が湧いては消えていった。
JS2.0、そしてES2015のときはRubyキチやらとスレを跨いでやりあったものだ。
時代がまた変わる。このスレの役割も変わるときが来る。
そういうことだ。
340デフォルトの名無しさん (スプッッ Sdbf-7R2H [1.75.246.228])
2022/12/06(火) 22:22:56.10ID:ggDR9KRTd
分かったから続きはポエム板でやってくれよ
341デフォルトの名無しさん (ワッチョイ 57db-4FAg [217.178.96.73])
2022/12/06(火) 23:07:52.94ID:4dLc47kQ0
やっぱclassよりprotetypeだよな。
342デフォルトの名無しさん (ワッチョイ 6f2c-WJTY [221.113.235.167])
2022/12/06(火) 23:29:16.93ID:5MeWJbnk0
GitHub Copilot は、日本語でコメントを書くとコーディングしてくれる

【技術ネタ】CopilotとDeepLを使って(ほぼ)何も考えずにElixirでAtCoderの問題を解いてみた


これは、プログラミングコンテストの日本語の問題文を、
DeepLで英訳してから、コメントに貼り付ける
343デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/07(水) 17:23:34.07ID:leBFpIVA0
こういう事って可能なんでしょうか?

mainfn();

function mainfn(){
hensufn();
W=x1+x2+x3;
H=y1+y2+y3;
}

hensufn(){
var x1=2;
var x2=4;
var x3=5;
var y1=9;
var y2=3;
var y3=1;
}

前にこういうコードを書いた時にエラーが出たと思うのですが…
344デフォルトの名無しさん (スッップ Sdaf-7R2H [49.98.131.80])
2022/12/07(水) 18:01:02.69ID:wK1s3Gq7d
可能か不可能かの前にまずスコープというものを勉強した方がいいと思う
345デフォルトの名無しさん (ワッチョイ 834b-uvfe [110.2.215.28 [上級国民]])
2022/12/07(水) 19:11:07.51ID:leBFpIVA0
本を読んできました
グローバル変数にしないとダメなんですね
わかりました
346デフォルトの名無しさん (ワッチョイ 57db-4FAg [217.178.96.73])
2022/12/07(水) 19:42:10.53ID:J+XSMF+40
男ならプロトタイプ!
347デフォルトの名無しさん (ワッチョイ 834b-Tqet [110.2.215.28 [上級国民]])
2022/12/07(水) 22:38:00.36ID:leBFpIVA0
数字.toFixed(3)でおかしな結果になるので色々調べたら、元は数値だったのに文字型に変換されるんだね
parseFloat(数字.toFixed(3))で事無きを得た
348デフォルトの名無しさん (ワッチョイ 57db-4FAg [217.178.96.73])
2022/12/09(金) 03:43:04.42ID:otqQiiFr0
プロトタイプ以外は帰ってくれ。
349デフォルトの名無しさん (JP 0Hef-7kHv [126.249.157.89])
2022/12/09(金) 07:27:33.15ID:KfOH1QpXH
>>345
グローバル変数はバグの温床だからやめておいて
引数とreturn値を使ってカプセルかしてね

引数もreturn値も使わないのなら
let param={
x1:1,x2:2...
}
とかして、

param.x1+param,x2...
とかで呼び出したほうがコリジョンさけられるのでいいかなと

windowやdocumentに持たせるべきパラメータは是ですが
持たせるべきでないパラメータはwindowなどに持たせないのが
私のひーひーおじいちゃんからの教えです
350デフォルトの名無しさん (スッップ Sdaf-7R2H [49.98.131.93])
2022/12/09(金) 08:51:23.05ID:G3OER7led
そもそも>>343みたいな発想が出てくる時点で関数というものに対する認識が危ういよね
手を動かすのはもちろん大事だけど並行して座学も大切だと痛感する
351デフォルトの名無しさん (JP 0Hef-7kHv [126.249.157.89])
2022/12/09(金) 15:20:35.56ID:KfOH1QpXH
いやいや最初はそんなもんでしょ
自分は今でも失笑コードばっかりですし
どんなコードでも書き続けることに価値があると
じっちゃまが言ってた
352デフォルトの名無しさん (ワッチョイ 27cf-R4o2 [153.174.224.39])
2022/12/09(金) 15:37:23.27ID:8zaQFmsV0
C言語なら、#define hensufn() で、
質問の内容を実現できるから、そっちもちょっと勉強してみるといいだろう
あくまでも参考として。蛇足だが、関数じゃなくてマクロだが
そういうのとごっちゃにしないためにも、理解しておくといい
353デフォルトの名無しさん (スッップ Sdaf-7R2H [49.98.128.33])
2022/12/09(金) 15:45:36.78ID:K2JzDyfqd
>>351
だからその「そんなもん」から次のステップに進むためには知識を身に付けることも重要って言ってるのよ
コードを書き続けることを否定してるわけじゃないよ
354デフォルトの名無しさん (スッップ Sdaf-7R2H [49.98.128.33])
2022/12/09(金) 16:08:24.10ID:K2JzDyfqd
>>352
今の状態の質問者に別言語の概念を持ち出しても余計に混乱を招くだけだろう
時期尚早だと思う
355デフォルトの名無しさん (JP 0Hef-7kHv [126.249.157.89])
2022/12/09(金) 16:36:12.81ID:KfOH1QpXH
>>353
その通りですね
infoやMDNを完璧理解程度をとりあえずの目標としたらいいですね
356デフォルトの名無しさん (ワッチョイ 5f01-QZbE [219.204.123.70])
2022/12/09(金) 17:10:52.86ID:DDM/thjI0
>>352
今時そんなクソマクロ勧めるなよ
357デフォルトの名無しさん (スッップ Sdaf-7R2H [49.98.128.33])
2022/12/09(金) 17:27:50.18ID:K2JzDyfqd
>>355
んー、皮肉のつもりで言ってる?
完璧理解なんかは必要ないでしょ
358デフォルトの名無しさん (ワッチョイ 27cf-R4o2 [153.174.224.39])
2022/12/09(金) 17:40:09.94ID:8zaQFmsV0
「ごっちゃにしないためにも」て書いたろ
また、住人はいろんな技量なんだから
各人が自分なりに受け止めればいい
359デフォルトの名無しさん (スッップ Sdaf-7R2H [49.98.128.33])
2022/12/09(金) 18:24:14.89ID:K2JzDyfqd
「ごっちゃにしないためにも」って関数とマクロをってこと?
360デフォルトの名無しさん (ワッチョイ a797-RX5i [121.94.16.107])
2022/12/09(金) 21:28:33.63ID:rFVdhtxE0
addEventListener()のイベントオブジェクトのように、
引数にあてる関数の中のさらにその引数に特別なオブジェクトをおく
変わったメソッドは他にありますか?
361デフォルトの名無しさん (ワッチョイ 7901-T62F [60.69.186.142])
2022/12/10(土) 03:33:43.66ID:rStzYIZl0
>>360
コールバック関数について調べることをお勧めする
362デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/10(土) 07:13:56.55ID:EwkyT8LfH
>>357
皮肉なんて言わないです
infoは入門者には最適だと思いますし
知っておくべき内容だと思います
infoを理解しておけばMDNも一覧してほとんど理解できるでしょ
リファレンスだし

覚える必要はないけど
理解する程度の負荷はそんな重くないですよ
363デフォルトの名無しさん (スップ Sd73-IGG8 [1.66.103.57])
2022/12/10(土) 10:08:41.30ID:UfMq0N25d
>>362
誤解だったのならすまんね
MDNだったらチュートリアルが揃ってるしそれを一通りやってみるぐらいでいいかなと
あとは疑問がわいたらまずリファレンスを漁る習慣付け
364デフォルトの名無しさん (ワッチョイ f1f0-3TNT [58.98.96.219])
2022/12/10(土) 17:05:35.95ID:LZ79JioR0
>>363
いえいえ、こちらこそありがとうございます!
自分もまだ初学者レベルですのでいろいろ教えてください!
365デフォルトの名無しさん (ワッチョイ 0bdb-KKgq [217.178.96.73])
2022/12/10(土) 22:31:23.08ID:09TKwM+q0
プロトタイプだけで、丼飯三杯は行ける!
366デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/11(日) 20:36:45.56ID:bBwm/pW5H
>>365
プロトタイプについて語ってください
367デフォルトの名無しさん (ワッチョイ 0bdb-KKgq [217.178.96.73])
2022/12/11(日) 20:55:00.83ID:q6Npm0tM0
>>366
JS最強の秘伝なり。
368デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/11(日) 21:46:43.64ID:bBwm/pW5H
>>367
語れないんですねw
369デフォルトの名無しさん (ワッチョイ 0bdb-KKgq [217.178.96.73])
2022/12/11(日) 22:29:35.67ID:q6Npm0tM0
>>368
一子相伝の秘技だからな。
370デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 01:25:48.09ID:9mOu9R4R0
MOV = []
for(g=0; g<GUI.length; g++){
MOV.push([Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0]])
MOV.push([Math.abs(GUI[g]-Bs[2]), GUI[g]-Bs[2]])
}

これですが、MOVの配列の末尾に何かを加えようとしてるのはわかるのですが、何を加えようとしてるのでしょうか?
[ , ]の所の意味がわかりません
MOV.push(Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0])ではダメなのでしょうか?
371デフォルトの名無しさん (ワッチョイ 59da-AjLY [118.18.252.105])
2022/12/12(月) 01:50:55.99ID:N0jzJwvL0
MOV = []
MOV.push([1, 2])
console.log(MOV) // [[1, 2]]

MOV = []
MOV.push(1, 2)
console.log(MOV) // [1, 2]
372デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 02:10:37.00ID:9mOu9R4R0
>>371
ありがとうございます

うーん
難しいな
[絶対値にしたもの、絶対値にしてないもの]を[ ]でひとまとめにする理由は何なんだろう?
console.logを挟んで値を確認しながら考えないとわかりませんね
373デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 02:23:13.76ID:9mOu9R4R0
もしかして配列が入れ子になってるんでしょうか?
その後にSx.translate(MOV[0][1], 0)っていうコードが出て来るのですが…
MOV[0][1]の所が意味がわからなかったんですけど、
[[◯,●],[◯,◯],…]の●を指定してるんでしょうか?
374デフォルトの名無しさん (ワッチョイ abbd-SbnF [49.129.243.33])
2022/12/12(月) 02:45:20.07ID:BD7ZISK00
>>373
その認識で合ってる。
MOV は配列で、その各要素も配列(2要素の配列)。
なんでそんな構造にしてるのかは知らん。
375デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/12(月) 07:38:12.53ID:u3d467jnH
>>373が聞いてるのは
translateがJSのcontextの関数なら
translate(100,50)はコンテキスト自体が右に100、下に50移動する

右移動量を絶対値にして移動させるってことかにゃん
376デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 11:24:58.04ID:9mOu9R4R0
>>374
ありがとうございます

>>375
そうです
全コード載せてみます
geometricBoundsは四角形の2点の座標を得るメソッドで、変数に[左上のx座標、左上のy座標、右下のx座標、右下のy座標]の順に格納されます
377デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 11:25:36.96ID:9mOu9R4R0
SEL = activeDocument.selection
PAT = activeDocument.pathItems
STB = app.preferences.getBooleanPreference("includeStrokeInBounds")

MAINfn()

function MAINfn(){
if(SEL.length == 0) return
GUI = []
for(p=0; p<PAT.length; p++) PATfn(PAT[p])
if(GUI.length == 0) return
for(s=0; s<SEL.length; s++) SELfn(SEL[s])
}

function PATfn(Px){
if(!Px.guides) return
Bp = Px.geometricBounds
GUI.push(Bp[0])
GUI.push(Bp[2])
}
378デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 11:26:49.23ID:9mOu9R4R0
function SELfn(Sx){
Bs = BNDfn(Sx)
MOV = []
for(g=0; g<GUI.length; g++){
MOV.push([Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0]])
MOV.push([Math.abs(GUI[g]-Bs[2]), GUI[g]-Bs[2]])
}
MOV2 = SORTfn(MOV)
Sx.translate(MOV2[0][1], 0)
}

function SORTfn(f0){
f1 = []
for(i=0; i<f0.length; i++) f1.push(f0[i])
f1.sort(
function(a,b){
if(a[0] < b[0]) return -1
if(a[0] > b[0]) return 1
if(a[0]== b[0]) return 0
}
)
return f1
}

function BNDfn(Bx){
Bz = Bx.geometricBounds
if(STB) Bz = Bx.visibleBounds
if(Bx.clipped) Bz = Bx.pageItems[0].geometricBounds
return Bz
}
379デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 11:28:43.67ID:9mOu9R4R0
「一番近いガイドに図形を吸着させる」スクリプトです
app.preferences.getBooleanPreferenceは無視してもらっていいです
環境設定の予備的なものなので。
function BNDfn(Bx)以下も環境設定の予備的なものなので無視でいいです
[絶対値と絶対値でないもの]を入れ子にする意味が知りたいです
380デフォルトの名無しさん (オッペケ Sra5-Aro6 [126.208.225.250])
2022/12/12(月) 12:27:02.66ID:TCDiz++Hr
>>379
配列MOVをソートするSORTfnで[◯,●]の◯を利用してるのは読み取れる?
381デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 13:06:21.02ID:9mOu9R4R0
>>380
ソートで利用するために [ , ] の入れ子にしてるだけですか?
382デフォルトの名無しさん (オッペケ Sra5-Aro6 [126.208.225.250])
2022/12/12(月) 13:16:44.67ID:TCDiz++Hr
>>381
まず聞かれたことに対してYESかNOで答えようよ
383デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 13:25:11.50ID:9mOu9R4R0
>>38
ありがとうございます
わかりました
[◯,●]の◯はソートをするために利用している
絶対値が一番小さい◯を先頭に並べ替えて(距離が一番近い)、それと対になってる●だけtranslateで移動している
ということですね
384デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 13:25:56.97ID:9mOu9R4R0
× >>38
>>382
385デフォルトの名無しさん (ワッチョイ abbd-SbnF [49.129.243.33])
2022/12/12(月) 13:29:27.02ID:BD7ZISK00
余談だが、>>378
sort の比較関数ってわざわざそういうまどろっこしい実装にしてるのをよく見るけど、数値なら

function(a,b){
return a[0] - b[0];
}

でいいのよ。
順序を見る要素が複数あるなら

function(a,b){
let c = a[0] - b[0];
if (c) return c;
c = a[1] - b[1];
if (c) return c;
return a[2] - b[2];
}

とか、短い表現なら

function(a,b){
let c;
if (c = a[0] - b[0]) return c;
if (c = a[1] - b[1]) return c;
return a[2] - b[2];
}

とか。
これをループで回すのも有りかも。

あ、複数要素の比較はあくまで例であって、>>378 のデータ構造とは関係無いよ。
386デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 13:34:52.14ID:9mOu9R4R0
ガイドが、動かしたいオブジェクトの右にあるか左にあるか確定して無いんですよ
だからMath.absで絶対値にして距離を測ってるのか…
そして配列の入れ子にしてソート
勉強になるな
ここだけ他のスクリプトでも使える
387デフォルトの名無しさん (ワッチョイ abbd-SbnF [49.129.243.33])
2022/12/12(月) 13:39:57.47ID:BD7ZISK00
>>386
abs なんてほとんどコストかからないんだから、元の値と絶対値の両方を保存するのは無駄な気がする。
配列の保存やアクセスの方がコストかかったりして。
388デフォルトの名無しさん (オッペケ Sra5-Aro6 [126.208.225.250])
2022/12/12(月) 13:45:29.13ID:TCDiz++Hr
命名や処理内容を見る限りあまり参考にすべきコードではないように感じる
389デフォルトの名無しさん (ワッチョイ 0b7b-Gb0J [153.178.229.141])
2022/12/12(月) 13:50:47.16ID:8JMA8Bb40
>>377
転載禁止なのを勝手に載せたらあかんわ
gorolib.blog.jp/archives/72193707.html
390デフォルトの名無しさん (スップ Sd73-IGG8 [1.66.101.52])
2022/12/12(月) 14:04:35.37ID:xvk668V/d
絶対値が一番小さいものを選ぶだけならこんな大掛かりにする必要そもそもない気が
391デフォルトの名無しさん (ラクッペペ MM6b-IK68 [133.106.93.55])
2022/12/12(月) 14:26:01.70ID:qd0QDeFeM
>>372
まず
[1, 2, 3 ] で 配列ができる
new Array(1,2,3) の省略型
392デフォルトの名無しさん (ワッチョイ f1f0-3TNT [58.98.96.219])
2022/12/12(月) 14:32:46.45ID:Xk6tQN/c0
イラストレータのappかぃ
393デフォルトの名無しさん (オッペケ Sra5-Aro6 [126.208.228.150])
2022/12/12(月) 15:49:23.10ID:Ah12aly8r
>>391
なぜ配列にしているのかを聞いているのであって
記法に関する質問をしているわけではないだろう
394デフォルトの名無しさん (ワッチョイ f1f0-3TNT [58.98.96.219])
2022/12/12(月) 17:14:12.48ID:Xk6tQN/c0
設定でjs使ってるみたいなのでjsスレで質問してるようだけどスレチのような・・・
395デフォルトの名無しさん (ワッチョイ 0bcf-FUlb [153.174.224.39])
2022/12/12(月) 17:18:01.39ID:RmZ1ojDx0
オブジェクトの配列にすれば分かりやすいな
396デフォルトの名無しさん (ワッチョイ f1f0-3TNT [58.98.96.219])
2022/12/12(月) 17:19:55.56ID:Xk6tQN/c0
連投すみません
>>379さん
PC等->CG->Illustrator総合
のほうがいいかもですね
397デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 20:05:16.68ID:9mOu9R4R0
>>396
CG板のIllustratorスレはわかりませんが、DTP板のIllustratorスレではscriptがわかる人が1人くらいしか居ません
たまたまその人が居なかったら、何日も放置になってしまうし…
ここの人たちの方がscriptのメソッドとかもほとんどわかるし
Illustratorの図形といっても、xy座標に図形が並んでるだけの、ほとんど移動する時の足し算と引き算だけです
398デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 20:10:18.24ID:9mOu9R4R0
[◯,●]の◯をソートのために利用してるなんて、独りで考えてたら絶対思い付かなかったと思います
399デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/12(月) 20:14:44.98ID:u3d467jnH
>>398
JSスレの神様たちは優しい感じですもんね
がんばってくださいね!
400デフォルトの名無しさん (ワッチョイ 13bd-SbnF [125.194.54.89])
2022/12/12(月) 20:37:06.98ID:9eo7KahL0
>>398
ソートの手法としては収穫があったようでなにより。
でも他にも指摘があるように、アルゴリズムとしては今一つだから全体としてはあまり参考にするほどじゃないと思う。
それは距離の一番小さい相手を探す方法として距離でソートしてその一番最初を採るという手順を使ってるよね。
でも、最初から距離が一番小さいものを探せばループ 1回で答えが出る。
こんなかんじ?

function SELfn(Sx) {
Bs = BNDfn(Sx);
dmin = 99999
dsel = 0
for(g = 0; g < GUI.length; g++) {
for (b = 0; b <= 2; b += 2) {
d = GUI[g] - Bs[b]
a = Math.abs(d)
if (a < dmin) {
dmin = a
dsel = d
}
}
if (dmin < 99999) Sx.translate(dsel, 0)
}
401デフォルトの名無しさん (オッペケ Sra5-Aro6 [126.208.225.54])
2022/12/12(月) 20:39:31.01ID:fufRX2ZEr
>>398
MOV変数の行方を追って数行コードを読んだだけだよ
何も難しいことの種明かしをしたわけじゃない
今回人に聞いて答えを得たなら次は自分でそれにたどり着けるようになろう
402デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/12(月) 22:12:32.05ID:9mOu9R4R0
>>400
これだとソート関数いらないんですか?
かなりコンパクトになりますね
ダイアログを表示させて吸着方向を上下左右選べるスクリプトを作ろうと思ってるので、こちらで作ってみます
403デフォルトの名無しさん (ワッチョイ 39bd-SbnF [220.144.111.189])
2022/12/13(火) 02:24:56.21ID:IRSJsHbF0
>>402
閉じかっこひとつ抜けてた。
最後の if の前に } が要る。
404デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]])
2022/12/13(火) 11:11:56.07ID:dgxg9m7O0
>>403
こうですか?

function SELfn(Sx) {
Bs = BNDfn(Sx);
dmin = 99999
dsel = 0
for(g = 0; g < GUI.length; g++) {
for (b = 0; b <= 2; b += 2) {
d = GUI[g] - Bs[b]
a = Math.abs(d)
if (a < dmin) {
dmin = a
dsel = d
}
}
}
if (dmin < 99999) Sx.translate(dsel, 0)
}
405デフォルトの名無しさん (ワッチョイ 0bdb-KKgq [217.178.96.73])
2022/12/13(火) 12:03:25.74ID:l4PFzl7S0
君、プロトタイプをやりたまえ。
406デフォルトの名無しさん (オイコラミネオ MM75-SbnF [150.66.82.245])
2022/12/13(火) 14:26:18.57ID:LSRhZVzxM
>>404
そそ
407デフォルトの名無しさん (スップ Sd33-Opz5 [49.97.102.17])
2022/12/13(火) 16:55:31.25ID:kcuzrobtd
プロトタイプとは何なのかを教え給え

クラスとかコンストラクタを書くんじゃなくて、『function hoge(a, b){}』にプロパティやメソッドや戻り値定義すればいいの?
408デフォルトの名無しさん (ワッチョイ 7901-T62F [60.69.186.142])
2022/12/13(火) 18:39:15.95ID:pwiPw3z60
>>407
プロパティを参照する時、「対象オブジェクトの直属のプロパティ」だけでなく、[[Prptotype]] と呼ばれる内部プロパティ内にあるプロパティも検索対象となる仕組みを「プロトタイプチェーン」という
409デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/13(火) 19:12:20.42ID:cf0t5w5pH
>>408
プロパティを参照する時、対象オブジェクトの直属にプロパティへの参照がない場合、[[Prptotype]] と呼ばれる内部プロパティ内にあるプロパティへの参照を走査する仕組みを「プロトタイプチェーン」という
なお[[Prototype]]はnewで生成される親のprototypeへの参照が格納されるが、動的に[[Prototype]]をセットすることもできる

でどうでしょう?
410デフォルトの名無しさん (ワッチョイ 7901-T62F [60.69.186.142])
2022/12/13(火) 20:14:40.67ID:pwiPw3z60
>>409
プロトタイプに「親」という概念はない
クラスベース言語の考えが混ざってる気がする
411デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/13(火) 20:36:49.94ID:cf0t5w5pH
>>410
えええええ?そうなんですか?
継承あるのに親がいない???
412デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/13(火) 22:34:12.05ID:cf0t5w5pH
>>410
僕は理解が浅いのでもっと学習しないと。
JSはprptotypeの理解が深まると幅が広がりそうですね
僕ももっと勉強進めないと
413デフォルトの名無しさん (ワッチョイ 7901-T62F [60.69.186.142])
2022/12/14(水) 00:03:47.61ID:+gEopm0Q0
>>411-412
プロトタイプベースとクラスベースの違いを理解することから始めよう
https://www.google.com/search?q=%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%99%E3%83%BC%E3%82%B9&ie=UTF-8

親クラス、子クラス、継承は、クラスベース由来の用語
多くのサイトでクラスベースに慣れた人用に使われている用語だが、クラスベースのつもりで受け取ると誤った機能理解に繋がる

クラスベースはインスタンス生成時に親クラスを複製するが、プロトタイプベースは複製しない
プロトタイプベースはプロトタイプに手を加えると「全てのプロトタイプを元にしたオブジェクト」に影響する

「継承」や「クラス」という用語を使うのは問題ないが、プロトタイプでどのように継承やクラスを実装しているのかは理解する必要がある
414デフォルトの名無しさん (ワッチョイ 0bdb-KKgq [217.178.96.73])
2022/12/14(水) 00:19:25.91ID:Dbkp4Og+0
プロトタイプ最強伝説!
415デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/14(水) 07:32:29.92ID:r+idjll+H
protptypeを使い、new演算子でインスタンスを継承でき、
さらにプロトタイプチェーンで始祖子孫を関連付けられるのに
親子関係という概念はJSにはないんですねー
416デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89])
2022/12/14(水) 07:55:29.99ID:r+idjll+H
ちょっと調べてみたけど、JSに親子関係は存在しない、的な記事はない
MDNには親子表現はないけれど、JSの継承で親子表現してる記事は多数ある
親子関係はクラスの拡張、実装、インスタンス生成でも使われるけど
親子関係自体を定義した言語なんて存在しない、あくまで機能の表現方法
であるにもかかわらず、プロトタイプ言語に親子関係が存在しないというのは
どこかにそういう記述があると思うのですが、参照場所を教えていただけませんか?
417デフォルトの名無しさん (ワッチョイ 0bcf-FUlb [153.174.224.39])
2022/12/14(水) 12:33:00.70ID:3zhhSsQg0
プロトタイプベースでは、親ではなく雛形という概念を用いる(それこそがプロトタイプ)
JavaScriptはプロトタイプベースのオブジェクト指向言語の代表格だが
その JavaScriptにも、ES2015(ES6) でクラスベース構文が導入されたので、
使い手の側としては、思想・概念・用語が入り乱れる事になったのかも知れません
418デフォルトの名無しさん (ワッチョイ f1f0-3TNT [58.98.96.219])
2022/12/14(水) 13:15:16.28ID:U8xYt1Js0
あらためてMDNを概覧しましたが
417さんの力説されているとおりかもしれませんね
今後はご指摘の件、頭にいれながら勉強します
ながながとありがとうございます!今後ともよろしくです
419デフォルトの名無しさん (JP 0Hed-Opz5 [210.228.21.53])
2022/12/14(水) 14:22:13.24ID:dv/CWk9JH
個人的にクラス≒雛形って考えだからプロトタイプはわかるけどクラスベースがわからなかった

「雛形クローンして用意してあるの変えるだけだろ?」って
420デフォルトの名無しさん (ワッチョイ 0bdb-KKgq [217.178.96.73])
2022/12/15(木) 01:00:33.27ID:z3rBZpFn0
>>418
よくぞ言った、プロトタイプ使徒よ!
421デフォルトの名無しさん (ワッチョイ f1f0-3TNT [58.98.96.219])
2022/12/16(金) 14:16:16.56ID:wrcGLpVa0
みんなはフレームワーク使ってる?
それともJS直接使ってる?
422デフォルトの名無しさん (ラクッペペ MM6b-IK68 [133.106.94.126])
2022/12/16(金) 14:22:39.89ID:C3ZoQFlkM
お前から発表しろよ
アンケートだから職種、年俸、年齢、結婚歴は必須な
423デフォルトの名無しさん (ワッチョイ 6edb-e5AJ [217.178.96.73])
2022/12/17(土) 12:10:49.73ID:kI1nA3xa0
>>422
職種:プロトタイプ
年俸:プロトタイプ
年齢:プロトタイプ
結婚歴:プロトタイプ
424デフォルトの名無しさん (ワッチョイ cdf0-JDfe [58.98.96.219])
2022/12/17(土) 13:15:46.84ID:OiGNBIp60
質問させてください

<style>
#d1,#d2{ color:blue}
</style>

<div id="d1"></div>
<div id="d2"></div>

<script>
</script>

JSで、<style>内の#d1,#d2セレクタの設定を編集したいのですが
特定のセレクタ部分だけを取得して変更ってできますか?
425デフォルトの名無しさん (ワッチョイ 2101-SK8t [60.69.186.142])
2022/12/17(土) 13:44:50.71ID:ycEukJwD0
>>424
https://developer.mozilla.org/ja/docs/Web/API/StyleSheetList
426デフォルトの名無しさん (ワッチョイ 2101-SK8t [60.69.186.142])
2022/12/17(土) 13:49:34.17ID:ycEukJwD0
>>424
変更はこっちだった
https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList
427デフォルトの名無しさん (ワッチョイ 2101-SK8t [60.69.186.142])
2022/12/17(土) 13:53:37.75ID:ycEukJwD0
>>424
訂正
https://developer.mozilla.org/ja/docs/Web/API/CSSStyleSheet
428デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/17(土) 20:57:11.28ID:/rkC0QGzH
>>426
ありがとうございます。JSの皆様は本当に神様。
取り急ぎお礼申し上げます。ありがとうございます。
できれば明日時間をとって拝読させていただきます。
429デフォルトの名無しさん (ワッチョイ 694b-7xCh [110.2.215.28 [上級国民]])
2022/12/17(土) 22:30:28.67ID:8Q1kFIoR0
if(A1[1] == A1[3]){
A0C = (A0[3]+A0[1])/2;
A1C = (A1[3]+A1[1])/2;
Ty = A1C - A0C;
X1[0].translate(0,Ty);
} else {
dofn3();
}

このif文ですが、A1[1]とA1[3]の誤差がプラスマイナス0.5までならtrueというふうに変えたいんですけど、どう書き換えれば良いでしょうか?
今のままだとA1[1]とA1[3]ともに小数点以下10桁くらいあって条件が厳し過ぎるんですよね
手違いでちょっとずれて作ってしまうこともあるので、その場合はtrueにしたいのです
430デフォルトの名無しさん (ワッチョイ 6ebb-fz0m [217.178.152.148])
2022/12/17(土) 22:40:09.17ID:on9KAdJq0
A1[1]とA1[3]の差が絶対値で0.5までって書けばいいんじゃないの?
431デフォルトの名無しさん (ワッチョイ 694b-7xCh [110.2.215.28 [上級国民]])
2022/12/17(土) 22:44:13.88ID:8Q1kFIoR0
A1[1]==A1[3]は、四角形の左上のY座標A1[1]と右下のY座標A1[3]が同じだから、直線という意味です
でもこの2点を上下0.5くらい余裕を持たせたいんです
間違って微妙に斜めに線を引いてしまうこともあるので
432デフォルトの名無しさん (ワッチョイ 694b-7xCh [110.2.215.28 [上級国民]])
2022/12/17(土) 22:45:31.22ID:8Q1kFIoR0
>>430
そうか
簡単でしたね w
ありがとうございます
433デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.246.6])
2022/12/17(土) 22:45:36.51ID:t7AYft2Wr
>>429
まず自分で試行錯誤してみたら?
やりたいことが日本語に出来てるなら難しいことではないと思うよ
君は何でも最初から人に聞いて済ませようとしてるように見える
434デフォルトの名無しさん (ワッチョイ eecf-DiWi [153.174.224.39])
2022/12/17(土) 22:47:25.94ID:t4TbQFP40
このスレは、回答者の腕試しの意味もあるから
435デフォルトの名無しさん (ワッチョイ 427c-e5AJ [43.235.241.201])
2022/12/17(土) 23:01:46.75ID:nEwVWz8Q0
正直このレベルの質問に答える必要が無いと思うが・・・
範囲でif文を書く事とかすら考えつかないレベルでこの先やっていける訳無いやんw
436デフォルトの名無しさん (ワッチョイ 02bd-VALE [125.198.8.44])
2022/12/17(土) 23:10:51.36ID:2CNUWbJ80
>>435
こういうちょっとしたきっかけで他の思い付きができるようになることもあるしね
437デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/18(日) 12:44:32.64ID:uPN+O46jH
>>427
様、ありがとうございました。
CSSのスタイル設定プロパティをJSで編集できました。
CSSRulesは配列で返ってきますが
cssRules['div'].color='blue'
のように、プロパティ名で編集する方法はありませんでしょうか?
438デフォルトの名無しさん (オッペケ Sr11-H8w4 [126.156.146.161])
2022/12/18(日) 14:19:43.57ID:6JZ/0f38r
jQuery使えばできます
439デフォルトの名無しさん (ワッチョイ 2101-SK8t [60.88.226.164])
2022/12/19(月) 12:00:53.42ID:KEwe+Jaf0
>>437
俺は「プロパティ名で編集する方法」を知らないので、CSSOMを調べてみるといいと思う
https://triple-underscore.github.io/cssom-ja.html
440デフォルトの名無しさん (ワッチョイ cdf0-JDfe [58.98.96.219])
2022/12/19(月) 14:10:45.85ID:GaFatWVX0
>>438
>>439
ありがとうございました
selectortextを呼び出して疑似的にプロパティ名で編集できるような関数を作ってみます。
441デフォルトの名無しさん (ワッチョイ 2101-eq55 [60.103.74.80])
2022/12/19(月) 21:50:19.67ID:K0fHbKFE0
https://developer.mozilla.org/ja/docs/Web/API/CSSStyleDeclaration/setProperty

let style = document.styleSheets[0].cssRules[0].style;
style.fontSize = "1em";
// style.setProperty("font-size", "1em");
442デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/21(水) 07:34:30.54ID:nEbzRDrKH
>>441
ありがとうございます。

let styleの呼び出し箇所を関数にして
selector名のオブジェクトを生成し、その中にプロパティ名とvalueを格納して呼び出すような
簡易的な関数を作成してみます
年末のお忙しいとろ、アドバイスありがとうございました。
443デフォルトの名無しさん (ワッチョイ 694b-7xCh [110.2.215.28 [上級国民]])
2022/12/21(水) 16:52:58.12ID:9yhxJASu0
小数点第4位を四捨五入するのは、parseFloat(a.toFixed(3))と Math.round(a*1000)/1000のどっちがいいでしょうか?
444デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/21(水) 19:18:04.39ID:nEbzRDrKH
連日すみません。
<link rel="stylesheet" src>で読み込んだcssの
cssStylesheetプロパティにアクセスする方法を教えていただけないでしょうか?
445デフォルトの名無しさん (ワッチョイ 427c-e5AJ [43.235.241.201])
2022/12/21(水) 21:53:16.64ID:paD1IZJK0
ちょっとググれば出てくるような情報までくれって言うのか?
446デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/21(水) 22:46:02.69ID:nEbzRDrKH
すみません、ちょっとググってみます
447デフォルトの名無しさん (ワッチョイ 427c-e5AJ [43.235.241.201])
2022/12/21(水) 23:16:30.68ID:paD1IZJK0
どうしても分からないならchromeのDevToolsのConsoleで
document.styleSheets
って打ってみれば中身が全て見れる
中身見ても意味不明な場合はやりたいことは出来ないかも
448デフォルトの名無しさん (ワッチョイ 6edb-e5AJ [217.178.96.73])
2022/12/21(水) 23:34:53.49ID:PQinZhLm0
jQuery最強伝説。
449デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/22(木) 07:18:15.65ID:slpViawnH
>>447
それは試してみたんですけどundefinedなんですよね
他ファイルを参照した場合には、stylesheetがdocumentのプロパティになっていないようなのですよね
450デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/22(木) 07:21:31.78ID:slpViawnH
>>447
すみません、訂正です
document.styleSheetで参照すると
document.styleSheet.cssRulesがnullとなってしまうんです
document.styleSheetで登録されるのは
同じファイル内のスタイルだけのよう?
他のcssファイルに書かれたスタイルを操作するには
どうしたらいいのでしょうか?
に訂正願います
451デフォルトの名無しさん (ワッチョイ 2101-eq55 [60.103.70.28])
2022/12/22(木) 07:48:35.40ID:YtaOqG2C0
document.styleSheetsの最後のs抜かしてないよな
document.styleSheets[0] みたいにインデックス使わないと参照できないぞ
452デフォルトの名無しさん (ワッチョイ eecf-DiWi [153.174.224.39])
2022/12/22(木) 09:18:28.13ID:N0yJkasM0
本当にやりたいのは、特定の要素のstyleを弄ることじゃないの?
453デフォルトの名無しさん (スッップ Sda2-5Liq [49.98.152.128])
2022/12/22(木) 13:29:52.00ID:kUDazAkOd
ワードプレスとかいうアレをイジってると特定idの親にスタイル変更したいとかはでてくる
454デフォルトの名無しさん (ワッチョイ 1961-x3o1 [222.144.111.42])
2022/12/22(木) 17:03:26.78ID:J4HXq2Du0
よほどのことがなければ元ルールを直に書き変えるなんてしないよなぁ
cssRulesはクロスオリジンだとアクセスできないし
455デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/22(木) 19:14:24.29ID:slpViawnH
みなさん、ありがとうございます。
関連した質問なのですが
cssが要素に適用される仕組みは
1:
<style>タグを読み込んだり<link ref>を読み込んだ時点で
ブラウザ実行環境にcssプロパティを記録して、セレクタを読み込んだ時に適用するのでしょうか?

それとも
2:
HTMLの要素を読み込んだ時に<style>タグや<link>先に走査して
cssの適用があるかを確認して適用する

なのでしょうか?
もし1なら、クライアントブラウザからアクセスできるような気がするのですけど
もし教えていただけるようでしたらご指導お願いします
456デフォルトの名無しさん (オッペケ Sr11-y+PC [126.208.237.5])
2022/12/22(木) 20:32:53.94ID:NthFDCjcr
次の話に移る前にまず>>451>>452に答えるべきだろう
言葉遣いだけ丁寧にしてもそういうのが疎かだと相手にされなくなる
457デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/23(金) 07:08:17.10ID:OG24yN7PH
>>452
424,437,440,442の記載の通り、cssRuleを直接編集したいと考えています

>>451
437,441,442で記載の通り、配列で受けとって編集することはできています
しかし別のスタイルシートでは同様の方法では参照できませんでした

>>445様のご指摘があって、再度検索してみたのですが
別スタイルシートのcssをオブジェクト化して参照する方法が見当たらず
今の質問に至っています

JQueryでできるようなレスがありましたので
JSでもできるのだろうなと思って次の質問をしました

皆様質問の仕方に失礼があっって申し訳ありませんでした
お許しくださいませ
458デフォルトの名無しさん (ワッチョイ 2101-eq55 [60.103.75.178])
2022/12/23(金) 08:30:41.88ID:d3IbDeU70
>>454 でクロスオリジンの場合にnullになるって指摘されてるけど、これに引っかかってるだけじゃないかな
この場合はどうにもならんと思う
459デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.246.38])
2022/12/23(金) 10:44:42.21ID:Lv24OjDar
>>457
ブラウザのコンソールで↓を実行したらどうなる?
for(const ss of document.styleSheets){console.log(ss.href); console.log(ss.cssRules);}
460デフォルトの名無しさん (ワッチョイ 427c-e5AJ [43.235.241.201])
2022/12/23(金) 17:28:12.54ID:o+ONuUnd0
>>458で指摘している通り、他の所から読み込んだスタイルはそもそも変更出来ないって書いてあるんじゃね?
https://w3c.github.io/csswg-drafts/cssom/

> Cross-origin stylesheets are not allowed to be read or changed.

>>459のように実際にcssRulesにアクセスすると自分の所のcssじゃない場合をアクセスしようとすると
Uncaught DOMException: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules
at <anonymous>:1:76
みたいなエラーになる

cssをいじりたいのだろうけど、そういう低層の話じゃなくて本当にやりたい事を書いた方が答えが得られると思うよ
結局何がやりたいのか全く分からんw
461デフォルトの名無しさん (ワッチョイ 427c-e5AJ [43.235.241.201])
2022/12/23(金) 17:30:32.01ID:o+ONuUnd0
変な日本語になってるなw

>>459のように実際に自分の所のでは無いcssRulesをアクセスしようとすると
Uncaught DOMException: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules
at <anonymous>:1:76
みたいなエラーになる
462デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/23(金) 19:30:29.91ID:OG24yN7PH
>>458
459,460,461

皆様ありがとうございます
具体的にこれをしたいというのはなかったんですけど
js勉強していまして、そういうことできるのかな?という質問でした

jsのエンジンは<link rel>を実行すると
jsの実行コンテキストを記録するメモリ部分に
<rel>の情報をロードして
HTML要素を読み込んだ時に参照するという挙動なら
クロスオリジンの適用を受けずに編集できるかなと
そういう疑問も持ちまして質問させていただきました

皆様ありがとうございました
463デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.240.154])
2022/12/23(金) 20:54:13.31ID:2ps+kI7qr
>>462
>クロスオリジンの適用を受けずに編集できるかなと
君の>>450>>457の発言ではCSS参照が別ファイルでも同一オリジンでは問題なく出来て
別オリジンのみ問題が発生していると認識しているとは読み取れないけども
別ファイル即ち別オリジンと勘違いしてない?
同一オリジンなら別ファイルでも参照出来ることは理解してる?
464デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/23(金) 20:55:49.05ID:OG24yN7PH
>>460
今勉強再開して思い出しました。
@keyframesのプロパティや値を
動的に変更したいと考えたのです

同じファイルなら
<style id="st">
として、stから@keyframesを設定編集できますが
外部ファイルでの設定編集ができないので
できたらいいな、って質問してみました
465デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/23(金) 20:57:53.66ID:OG24yN7PH
>>463
勘違い、混乱してました。ありがとうございます!
466デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.240.154])
2022/12/23(金) 21:10:25.93ID:2ps+kI7qr
>>465
で、>>450で参照したかったのは本当に別サーバ等のcssだったのか
それともhtmlやjsと同じ場所に置いてあるcssだったのかどっち?
467デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89])
2022/12/23(金) 21:19:54.48ID:OG24yN7PH
>>466
ローカルで、同じフォルダ内です
468デフォルトの名無しさん (ワッチョイ 1961-x3o1 [222.144.111.42])
2022/12/23(金) 21:28:01.20ID:G5aj5uG70
@keyframesなんかも後のスタイルで再定義できるんだから
DOMにstyle要素追加してそこに上書きルール突っ込んでそっちを操作すればいいじゃない
469デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.240.154])
2022/12/23(金) 21:39:17.88ID:2ps+kI7qr
>>467
それは本来別オリジンではないんだけどブラウザがローカルアクセスに対するセキュリティの一環として制限をかけてる模様
詳しくはググって
>>459のスクリプトを実行して
file:///~
の行のあとに例外が出るならそれが原因

対策としてはローカルにwebサーバを立ててhttp経由でアクセスする
そうすればスクリプト実行で例外が発生せずcssの中身が読み取れる
webサーバはそんな大層なものは必要なくてvscodeのLiveServerで十分
470デフォルトの名無しさん (ワッチョイ eecf-DiWi [153.174.224.39])
2022/12/23(金) 21:55:43.41ID:gwhrrj9D0
DevTools を弄れるなら、要素タブでスタイル欄を見れば
適用内容と設定元のファイルが行番号付きで確認できるし
アニメーションを弄りたいなら、「その他のツール」に「アニメーション」がある(chrome)
471デフォルトの名無しさん (ワッチョイ 1df0-aH43 [58.98.96.219])
2022/12/24(土) 09:52:50.24ID:Lk0KbRC60
皆様いろいろありがとうございます
時間とれましたら確認させていただきます
472デフォルトの名無しさん (オッペケ Sr37-r/3v [126.208.236.65])
2022/12/24(土) 10:46:15.28ID:se6E0pPpr
>>471
少し調べたらchromeのオプションでクロスオリジン制約を回避する方法があった
chrome クロスオリジン
で検索
これならwebサーバを立てる必要もなくてお手軽
473デフォルトの名無しさん (ワッチョイ b661-s0Sd [61.199.41.250])
2022/12/24(土) 14:27:49.26ID:0WYu35VL0
firefoxもsecurity.fileuri.strict_origin_policyをfalseにすれば回避できるけど
早いうちにローカルサーバ立てることを覚えた方が後が楽になると思うよ

対象要素が1つなら@keyframes書き換えるよりWebAnimationAPI使った方がいいかもしれないし
やりたいことはぼかさずにはっきり書いた方がいいよ
474デフォルトの名無しさん (ワッチョイ ef79-EkqE [220.150.90.192])
2022/12/24(土) 22:49:22.50ID:oMpeQZG30
HTA(hta+ie)にとって替わるみたいな環境っていまだにないのかな
PWAみたいのではなく、javascript(やvbs)でWindowsのフレームワーク(.NETやCOMやら)と連携できるようなやつが欲しい
WebView2は思想的にHTAと比べて退化してるようにしか見えないけどこれぐらいなのか…
475デフォルトの名無しさん (ワッチョイ fabd-ejFo [221.171.102.246])
2022/12/25(日) 03:50:26.67ID:Y7ZN657d0
>>474
そういや前はちょっとしたツールを HTA で書いたりしたけど、もう使えない?
476デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89])
2022/12/25(日) 12:52:51.27ID:GFtl9gAsH
皆さん、ありがとうございます
別シートのcssで可変にしたい部分を変数にし
読み込むシート側に変数専用のstyleタグを用意し
変数用のスタイルタグを編集することにしました

皆様いろいろとありがとうございました
477デフォルトの名無しさん (オッペケ Sr37-r/3v [126.208.229.48])
2022/12/25(日) 13:14:34.27ID:g8CAn8EMr
要するにクロスオリジン問題を解決して>>450を実現したのではなくて
別の方法を取ったということ?
478デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89])
2022/12/25(日) 13:37:10.68ID:GFtl9gAsH
そうです
>>468様のアドバイスなら
私の学習レベルでもググり時間とられずにできそうだと思いまして

style.css
@keyframes xxx{ *** : var(--prm) }

index.html
<style id="prm"></style>
<script>
prm.innerHTML=":root {--prm:50% }"

のように、変数を編集するstyleタグを設けました
見栄え悪いしかっこ悪いんですけど
いろんな変数を設定変更する関数も自作できそうですので
とりあえずはこれでいいかなと
479デフォルトの名無しさん (ワッチョイ 1e61-3CYd [180.23.194.154])
2022/12/25(日) 14:26:34.39ID:kQ0MTzKr0
>>478
それならわざわざstyle要素作って直に操作する必要はない
変数の最初の定義もcssファイルの方に書いておいて
変更したい時は
document.documentElement.style.setProperty("--prm", "100%");
とかすればいいだけ
480デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89])
2022/12/25(日) 15:40:19.02ID:GFtl9gAsH
>>479
ありがとうございます!そうさせていただきます。
今後ともいろいろ教えてください。ありがとうござました!
481デフォルトの名無しさん (オッペケ Srd9-r/3v [126.194.247.243])
2022/12/25(日) 16:48:37.78ID:sJzx1gQhr
>>478
>私の学習レベルでもググり時間とられずにできそうだと思いまして
webサーバ云々が億劫だってのは分かるからしょうがないけども
せめて>>472ぐらいは実際に試して欲しかったな
ググって最初に出てくる記事にすぐ出来るやり方が具体的に書いてあるんだし
482デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89])
2022/12/25(日) 16:50:28.05ID:GFtl9gAsH
>>479
面白かったです。

<html><head><body><div>
どの要素にでも、setProperty('param','value')を設定しておけば
別ファイルに作ったスタイルシートの変数を参照できるのですね

疑似的なコードですが
<script>
body.setProperty('--color','red')
div.setProperty('--color','blue')
html.setProperty('--color','green)

とすると、子孫のスタイル設定が優先されることも理解できました
とても面白く学習できました、ありがとうございました
483デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89])
2022/12/25(日) 16:51:23.54ID:GFtl9gAsH
>>481
ありがとうございます
次時間ができたときにぜひ調べて実行してみます
484デフォルトの名無しさん (スプッッ Sd5e-HEC+ [1.75.242.54])
2022/12/25(日) 17:00:33.10ID:gv3ThvO8d
もう解決したんだしどうでもいいからお礼だけ言って体よく話を打ち切りたいって思いがヒシヒシ伝わってくるな
485デフォルトの名無しさん (ワッチョイ 1df0-aH43 [58.98.96.219])
2022/12/26(月) 13:51:42.59ID:fuxINEHv0
>>469
Live serverを使って、別のスタイルシートで設定した、フォント色の変更はOKでした。
ありがとうございました。

ただ、@keyframesに関しては、CSSKeyframeRule__{keyText..,style,,cssText,,}__までは見れたのですが
内容の変更方法が分からないため断念しました
時間あるときに再チャレンジしてみます

皆様ありがとうございました
486デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]])
2022/12/26(月) 15:01:08.23ID:pO4MU7IP0
var ptEQ = 25.4 / 72;
var SWmm = 0;

mainfn();
function mainfn() {
win1 = new Window('dialog', "Set Strokewidth");
win1.pnl = win1.add('panel');
win1.pnl.orientation = "column";

pg1 = win1.pnl.add('group');
pg1.orientation = "row";
pg1.add("statictext", [0, 0, 140, 23], "線幅を選択してください");

pg2 = win1.pnl.add('group');
rd21 = pg2.add("dropdownlist", [20, 40, 150, 65], ["0.1 mm", "0.12 mm", "0.15 mm", "0.2 mm", "0.25 mm",
"0.3 mm", "0.4 mm", "0.5 mm", "0.6 mm"
]);
rd21.selection = 0;

pg9 = win1.pnl.add('group');
pg9.orientation = "row";
CAN = pg9.add("button", [0, 0, 100, 30], "cancel");
OK = pg9.add("button", [0, 0, 100, 30], "OK");
CAN.onClick = function() {
win1.close()
}
OK.onClick = function() {
win1.close();
dofn();
}
win1.show();
}
487デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]])
2022/12/26(月) 15:02:39.66ID:pO4MU7IP0
function dofn() {

var SWmmS = rd21.selection.text;
var SWmm = parseFloat(SWmmS);
var SWpt = SWmm / ptEQ;

var rectObj = activeDocument.pathItems.rectangle(-420.94488, 297.638, 150, 100);
rectObj.filled = false;
rectObj.stroked = true;
rectObj.strokeColor = CMYKfn(0, 0, 0, 100);
rectObj.strokeWidth = SWpt;
rectObj.selected = true;
rectObj.remove();

function CMYKfn(c, m, y, k) { 
COL = new CMYKColor(); 
COL.cyan = c; 
COL.magenta = m; 
COL.yellow = y; 
COL.black = k; 
return COL;
}
}
488デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]])
2022/12/26(月) 15:07:33.18ID:pO4MU7IP0
線幅を変更するスクリプトなのですが、一応完成しました。
自分で使うだけならこれでいいのですが、他人に使ってもらう場合、ダイアログに「線幅を追加する」という項目を増やしたいと思っています。
rd21 = pg2.add("dropdownlist", [20, 40, 150, 65], ["0.1 mm", "0.12 mm", "0.15 mm", "0.2 mm", "0.25 mm", "0.3 mm", "0.4 mm", "0.5 mm", "0.6 mm"]);
のところに項目を追加していくようなコードを書くことは可能なのでしょうか?
自分自身を書き換えるコードだと思うのですが…
(削除はどうでしょうか? 例えば0.15 mmがいらないと思った場合、"0.15 mm"のを削除するコードを書くことは可能ですか?)
489デフォルトの名無しさん (スプッッ Sd5e-HEC+ [1.75.242.231])
2022/12/26(月) 15:27:01.38ID:oXRhIFIqd
スレ内を線幅で検索しても何も引っかからないのにこの書き出しで何か伝わると思ってるのすごいわ

線幅の配列を関数内で直書きしてるから自身を書き換えるとか面倒なことを考える必要があるわけで
関数の外に変数で宣言しとけば追加も削除もなんとでもなるでしょ
490デフォルトの名無しさん (ワッチョイ de01-WsKb [60.103.67.153])
2022/12/26(月) 15:55:16.01ID:gS/UmYxh0
確かIllustratorかなんかのスクリプトでしょ
ここ見てるほとんどはWebブラウザやnode.jsのJavaScriptは知っててもそっちは知らないと思う
文法的にはJavaScriptと同じでも出てくるオブジェクトは独自のものだろうし説明しないとわからんよ
491デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]])
2022/12/26(月) 16:14:37.67ID:pO4MU7IP0
>>489
素人でもエディタで開かないとダメということですね。

var mm = ["0.1 mm", "0.12 mm", "0.15 mm", "0.2 mm", "0.25 mm", "0.3 mm", "0.4 mm", "0.5 mm", "0.6 mm"]
// 線幅の項目を増やしたり削除したい場合は、上の1行を書き換えてください

こう先頭に書き加えました。
492デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]])
2022/12/26(月) 16:16:02.82ID:pO4MU7IP0
>>490
すみません
気を付けます
493デフォルトの名無しさん (スプッッ Sd5e-HEC+ [1.75.242.231])
2022/12/26(月) 16:45:32.21ID:oXRhIFIqd
>>491
意図が理解されなかったということが分かった
コメント付けるって妥協するなら>>486のままでもいいでしょ

ここの住人はadobe独自のことは詳しくないんだし他所で聞いたほうが的確な答えが返ってくるよ
そもそもここはスレ違い
494デフォルトの名無しさん (スップ Sd42-gE1B [49.97.104.195])
2022/12/26(月) 17:18:59.92ID:l7z7KEaud
>>475
htaまだまだこれからだ
ただhighDPI環境でスケーリング200%とかだとおかしな事になった想い出
495デフォルトの名無しさん (オッペケ Sr37-r/3v [126.208.225.253])
2022/12/26(月) 22:12:09.27ID:LJgewTa3r
>>485
①chromeで↓のurlを開く
https://yari-demos.prod.mdn.mozit.cloud/ja/docs/Web/CSS/CSS_Animations/Using_CSS_animations/_sample_.making_it_move_back_and_forth.html

②chromeのコンソールを開いて↓を入力する
document.styleSheets[1].cssRules[1].cssRules[0].style.marginLeft = "50%"
496デフォルトの名無しさん (ワッチョイ 1df0-aH43 [58.98.96.219])
2022/12/27(火) 15:47:36.10ID:LHsOSApx0
>>495
ありがとうございました
所望の動作を確認できました
JSはいろんな方法があるんですね
497デフォルトの名無しさん (オッペケ Sr4f-XOVI [126.34.121.172])
2023/01/02(月) 12:58:47.15ID:A6ceP6kcr
>>474
pythonのeelモジュールを使えば、昔のhtaっぽいことができます
498デフォルトの名無しさん (ワッチョイ a779-rE+U [220.150.90.192])
2023/01/02(月) 17:25:19.15ID:V1TEslsJ0
>>497
OSに標準で入ってるedgeで使えるのはいいなあ
情報ありがとう
499デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 19:01:14.59ID:jNmuxM610
「無名関数」、「関数リテラル」の理解がちょっとぼやけています。

次の様なコードがあったとき、
let calcResult = function calc(a,b){
return a*b;
}

calc()
と()をつけて表せるものが普通の関数、それを変数に代入したもの
calcResult
が関数リテラルかと思っていました。
しかし、どうやら違うようで。。
500デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 19:01:57.33ID:jNmuxM610
例えば以下の2つの関数があります。

■「function関数」を変数に格納
let calcResult1 = function calc(a,b){
return a*b;
}

■「無名関数」を変数に格納
let calcResult2 = function(a,b){
return a*b;
}

「無名関数」は「関数リテラル」と同義である。とさまざまな文献に記述されています。

ならば、
calcResult1
は、関数リテラルではない。

calcResult2
は、関数リテラルである。

という認識で間違っていないでしょうか?
501デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 19:02:26.96ID:jNmuxM610
SetInterval()
に与える引数は、関数リテラルでなくてはならないそうです。

となると、以下は誤りで、
SetInterval(calcResult1,1000);

以下なら問題ない
SetInterval(calcResult2,1000);

という理解でよろしいでしょうか?
502デフォルトの名無しさん (ワッチョイ 8701-1zgH [60.103.77.208])
2023/01/04(水) 20:37:28.67ID:UYb7FHhp0
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/function

https://developer.mozilla.org/ja/docs/Glossary/Literal
リテラルに関数は含まれてないな

「関数リテラル=無名関数」が間違ってて、calcResult1 も calcResult2 は、関数リテラル。
とイコールで結んじゃうのは乱暴か
字義に従えば「無名関数」には生成時に名前をつけなかった、程度の意味しかないかと

ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼない
結果的に関数式の関数は無名関数になることがほとんどで
503デフォルトの名無しさん (ワッチョイ 8701-1zgH [60.103.77.208])
2023/01/04(水) 20:40:11.89ID:UYb7FHhp0
ここでいう「関数リテラル」は関数式で記述された関数のことで、名前があろうとなかろうと「関数リテラル」でいいんだと思う
504502 (ワッチョイ 8701-1zgH [60.103.77.208])
2023/01/04(水) 20:53:07.39ID:UYb7FHhp0
途中送信で変になってるからまとめ直し

>>500,501
その文脈での「関数リテラル」ってのは関数式で記述された関数のこと(>>502のリンク参照)で、名前の有無は関係ない
名前のあるcalcResult1 も 名前のないcalcResult2 も「関数リテラル」という理解でいいと思う
「無名関数」の「無名」には生成時に名前をつけなかった、程度の意味しかないかと

ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼなくて結果的に無名関数になることがほとんどではある
505デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 20:57:54.46ID:jNmuxM610
>>502
すっごい分かりやすい。
モヤモヤしていたのがすっきりしました。
ありがとうございました。
506デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157])
2023/01/04(水) 21:00:20.48ID:GLj+17iFr
調べたら自分を再帰的に呼び出す場合に名前を付けるって例があってなるほどと思った
507デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157])
2023/01/04(水) 21:21:00.43ID:GLj+17iFr
ちなみに>>501のsetIntervalの引数は関数リテラルでないといけないってのはどこ情報?
508デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 21:23:57.48ID:jNmuxM610
あれ。関数リテラルには引数はないのか。。引数の不要な関数しか関数リテラルにならんのか。
もちょっと調べてみます。
509デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 21:32:15.85ID:jNmuxM610
>>507
必要ならページ画像をどっかにアップします。。

技術評論社
JavaScript本格入門
https://gihyo.jp/book/2016/978-4-7741-8411-1
P362
setTimeout/SetIntervalメソッドの注意点
...引数funcは必ず関数リテラルで指定してください。
510デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 21:39:03.24ID:jNmuxM610
でも何かの引数に関数をわたすときは、
一般的に関数リテラルで渡すのがデフォと
ぼんやり思っている。
511デフォルトの名無しさん (ワッチョイ 8701-9yt5 [60.88.115.90])
2023/01/04(水) 21:47:22.56ID:QxUfEWbZ0
技術評論社はやめとけよ。
512デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157])
2023/01/04(水) 21:55:58.51ID:GLj+17iFr
>>509
文脈がわからんけど理由は書いてあるの?
動く動かないで言えばfunction文で定義した関数リテラルでない関数を渡しても動くようだけど
そもそもMDNにも関数としか書いてないし
513デフォルトの名無しさん (ワッチョイ 8201-+uJR [219.204.123.70])
2023/01/04(水) 22:20:18.03ID:lFNs7lW+0
単に著者が良く理解せずに書いてるだけな気がする
514デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/04(水) 22:21:10.60ID:jNmuxM610
>>512
setTimeout()の例でしかもjQueryで
申し訳ないのですが。
1秒後に#displayのhtmlの内容を空にするコードです。

以下のようなコードではsetTimeoutが動かず、

setTimeout($('#display').html(' '), 1000);

代わりに、以下で動きます。

function clearDisplay(){
$('#display').html('');
}
setTimeout(clearDisplay, 1000);

このことから書籍にあるように
関数リテラルでないと引数に渡せないと
思っていました。。

書籍の文脈ですが、実際にあとで画像アップします。
515デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157])
2023/01/04(水) 22:46:11.56ID:GLj+17iFr
>setTimeout($('#display').html(' '), 1000);
これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない?
html()が戻り値としてjQueryを返すからそれが引数として渡ってるでしょ

>function clearDisplay(){
> $('#display').html('');
>}
これもfunction「文」で定義してるから>>504で言うところの関数リテラルには当てはまらない関数だよね
516デフォルトの名無しさん (ワッチョイ e6cf-/EFQ [153.174.224.39])
2023/01/04(水) 23:53:56.91ID:PU4coe7B0
アロー関数式を使うことで、関数リテラルによる関数定義を
より簡略化して記述することができます
ただし、this には注意してください
517デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 00:01:25.43ID:EVXeoiyo0
>>515
setTimeout($('#display').html(' '), 1000);
これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない?

渡しているのは関数じゃない。。
んー。メソッドか。だから動かない。

ありがとう。
518デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.243.148])
2023/01/05(木) 00:18:03.56ID:7P17JKmwr
>>517
いや、関数かメソッドかの話じゃなくて
$('#display').html(' ')をその場で実行してその戻り値であるjQueryオブジェクトを渡しちゃってるでしょって話
ちゃんと理解できてる?
https://js.studio-kingdom.com/jquery/manipulation/html#1
519デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 00:26:22.30ID:EVXeoiyo0
私の勘違いだったのですね。

たしかに関数ではない。。
一応書籍のページ画像をuploadしました。

「引数funcは必ず関数リテラルで指定してください。」
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚

「関数リテラルは....ある関数の引数として渡したり....」
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
520デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 00:27:48.45ID:EVXeoiyo0
>>518
理解したありがとう!
521デフォルトの名無しさん (ワッチョイ 2e5c-uhAF [39.3.101.10])
2023/01/05(木) 02:04:13.18ID:hRDnYJsk0
>>519
「引数funcは必ず関数リテラルで指定してください。」
ちょっと問題のある文章だなあ

https://developer.mozilla.org/ja/docs/Web/API/setTimeout
第一引数は関数またはjavascriptコードとして実行される文字列

関数ってのは関数呼び出しじゃなくて関数名、または無名関数(関数リテラル)

>>514
文字列で渡したら動くはず
setTimeout("$('#display').html(' ')", 1000);
522デフォルトの名無しさん (ワッチョイ 8201-+uJR [219.204.123.70])
2023/01/05(木) 06:17:33.15ID:O+NRT3S+0
>>521
> 「引数funcは必ず関数リテラルで指定してください。」
> ちょっと問題のある文章だなあ
まあそこは直前に文字列でも指定できるけどって書いてるから教育的指導なんだろうとは思う
まあ「必ず」という言葉が強すぎるから「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
むしろ問題は「関数リテラルは宣言した時点では、名前を持たないことから匿名関数、または無名関数と呼ばれることもあります。」の方だろうね
523デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 09:18:58.87ID:EVXeoiyo0
>>521
>文字列で渡したら動くはず
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

次いでもう一点お願いします。

JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
リスト4-04 function_literal.js

以下は、関数リテラルを使ってリスト4-01を書き換えたものです。

var getTraiangle = function(base,height){
return base * height/2;
}

console.log('三角形の面積:'+getTrianle(5,2));

↑の
getTrianle(5,2)
は、関数リテラルなのですね。
てっきり()がないものが関数リテラルと思っていたが、
どうも、それも間違いようで。
524デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 09:20:11.59ID:EVXeoiyo0
あくまで、関数を変数に代入するということが、重要なのでしょうか?
525デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 09:23:08.82ID:EVXeoiyo0
「関数呼び出し」と
「引数付の関数リテラル」は
それだけみても違いわからないですね。
定義された場所を見て判断しないと。
526デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.246.162])
2023/01/05(木) 10:06:29.26ID:rM8SDmmnr
>>523
>>setTimeout("$('#display').html(' ')", 1000);
>ありがとう。関数とは、関数呼び出しではなく実行される文字列
いやいや、それは関数じゃなくてただの文字列
setTimeoutの第一引数は文字列か関数って書いてあるでしょ

関数リテラルって言葉はもう忘れていいと思うよ
そもそもMDNに記述がないから便宜的なものだし、その本での説明も怪しい
定義の仕方で区分されてるだけで実質的にはただの関数で
挙動に差異があるわけでもないだろうし
527デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.246.162])
2023/01/05(木) 10:52:19.71ID:rM8SDmmnr
>>522
>「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
それだとfunction命令で定義した関数は指定してはいけないと誤解されるからリテラルを削ったほうがいいかと
528デフォルトの名無しさん (ワッチョイ e6cf-/EFQ [153.174.224.39])
2023/01/05(木) 10:52:37.45ID:uFuuDD5j0
>>523
関数リテラルという呼び方はひとまず置いといて、無名関数という概念でとらえるとよい
function(~~){~~} は見ての通り、ひとつの無名関数である

var getTraiangle = function(base,height){ return base * height/2; }
によって、変数getTraiangle でこの無名関数を参照できるようになる

getTraiangle(5,2)
では変数名を使って先の無名関数を呼び出し、戻り値が取得される
これは一般に「関数の戻り値」と呼ばれる (関数リテラルではない)

console.log('三角形の面積:'+getTraiangle(5,2));
では、「+」によって、文字列 '三角形の面積:' と数値である戻り値が連結されて、ひとつの文字列が生成される
console.log()がそれを出力する

>>525
何かしら(無名)関数を使うにあたり、引数が要るなら付ける、要らないなら付けない、それだけの話
あなたの言う「引数付の関数リテラル」は勘違いで、「引数付きの関数呼び出し」に過ぎない

>>524
そういうこと
529デフォルトの名無しさん (ワッチョイ 2e5c-uhAF [39.3.101.10])
2023/01/05(木) 11:50:49.92ID:hRDnYJsk0
>>523
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

違う。全く違う。めっちゃ大事なことだから勘違いしないで
それはsetTimeoutoの第一引数を文字列として指定した場合のこと

第一引数に関数を指定する方法は>>514で君は既にやっている
setTimeout(clearDisplay, 1000);
clearDisplay関数を定義してそれをsetTimeoutの第一引数に渡している
これでいい
>>527の言う通り

>>526の言う通り今は無名関数とか関数リテラルとかにこだわらない方がいい
>>523のうp画像に無名関数は重要な概念なので後ほど詳述ってあるからそこをみっちり勉強してね
530デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.240.4])
2023/01/05(木) 12:50:07.72ID:w+0CNSMQr
関数リテラルの説明についてはここが一番しっくりくる
https://www.javadrive.jp/javascript/function/index5.html

「関数リテラルを使った関数定義」って言い回しを強調してるのが良い
だから関数リテラルを引数として渡すって言ったらこういうことだよなって
dispNum(10, 8, function(x, y){
return (x + y) / 2;
});
531デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 14:46:47.66ID:EVXeoiyo0
すいません。やっぱり関数リテラルという意味を理解したい。。でも↓この質問でわかるかも。
だれか答えていただけますでしょうか?
---
次のコードがあります。1から5のうち
どれが適切でしょうか?

let dispMessage = function(msg){
console.log(msg);
};

1.
function(msg){console.log(msg);}
は関数リテラルである。

2.
dispMessage
は関数リテラルである。

3.
let dispMessage = function(msg){
console.log(msg);
};
が全体として関数リテラルである。

4.
全て関数リテラルとはいえない。

5.
関数リテラルとは、用法のことであり、
コード部分を表すものではない。
532デフォルトの名無しさん (ワッチョイ e67b-28F+ [153.178.229.141])
2023/01/05(木) 14:53:38.67ID:mmmJuCOb0
>>531
ぐぐったら以下の様に出る。結構理解しやすいと思うが。
リテラルとは リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数のことである。 変数の対義語であり、変更されないことを前提とした値である。 プログラミング言語のコード中にリテラルが挿入される場合には、判別のために特定の書式を用いる必要がある。
533デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 15:02:17.50ID:EVXeoiyo0
うん。「リテラル」ということばによって惑わされてきた気がする。
534デフォルトの名無しさん (アウアウウー Sa6b-y47Y [106.155.3.231])
2023/01/05(木) 15:06:19.08ID:akcN5qw4a
関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃないの
正確な定義は構文木の定義を見れば書いてある
535デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.208.232.21])
2023/01/05(木) 15:10:13.35ID:HxGsZjLmr
>>531
1だろう
let s = "abc";
の"abc"を文字列リテラルと呼ぶけどそれを代入した変数sを
文字列リテラルとは呼ばないでしょ
536デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.208.238.17])
2023/01/05(木) 15:28:42.13ID:c7qQflpDr
>>531
で、繰り返しになるけど本やサイトによっても説明がまちまちで
MDN探しても出てこないような用語だからあまり囚われない方がいい
理解しようとして時間をかけるだけ無駄
537デフォルトの名無しさん (ワッチョイ 9f63-uhAF [180.58.213.164])
2023/01/05(木) 15:35:00.85ID:m3Sm+5EJ0
>>531
強いて言えば1かな
でも数値・文字列・正規表現リテラルみたいにプログラム中に単独で書くことは出来ないね
変数に代入するなり関数の引数に使うなりしないとエラーになる
英語でもfunction literalっていうみたいだけど関数リテラルってあんまりいい言葉だと思わないなあ

33;
"hello";
/^js$/;

function() {return true}; //SyntaxError

こんなことにこだわるよりもっと基本的なこと勉強した方方がいいんじゃないの?
538デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 15:38:00.87ID:EVXeoiyo0
あ。
誤解していたところがとけました。
当初は「2」かと妄信していたので、
だいぶ合点がとれました。
関数リテラルが無名関数と同義という説明も
いやそうではないという説明も
すっきりしました。

皆さん長々とお付き合いいただき
ありがとうございました。
539デフォルトの名無しさん (ワッチョイ 66db-TwI4 [217.178.96.73])
2023/01/05(木) 19:28:05.49ID:j61eMuZ00
>>511
技術評論社のjQuery本格入門はものすごく読みづらかった。
もっと分かり易い言葉で解説して欲しかった。
540デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/05(木) 20:02:55.70ID:EVXeoiyo0
>>534
>関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃない

この発想というか常識が無かったなあ。
541デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/05(木) 20:55:47.77ID:XhDooIHVH
>>531
自分もあまりJS詳しくないんですけど
リテラルっていうのは、括るもの、という意味合いでは?
オブジェクトリテラルっていうのは波かっこで括るオブジェクト={}
文字列のリテラルは、""や’’
展開のリテラルは、``とか
関数のリテラルというのは、functionを指定した引数括弧つきのオブジェクトリテラルでfunction(){}

関数リテラルといえば、例えばfunction func(){...}
とした場合、{...}は変数funcに文字列として代入されます
そしてfuncは関数オブジェクトと指定されていて
関数の実行は()を読み込むことで実行されます
func 文字列
()   関数の実行
542デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/05(木) 21:01:26.21ID:XhDooIHVH
>>531
解決済みだったようですみませんでした
参考までに追加

function func(){return 1}
とした場合
console.log(func)

console.log(func())
を見比べるとわかりますが、
func変数の中身は、function指定された文字列で
func()は関数を実行した結果の1が表示されます
543デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.208.231.97])
2023/01/05(木) 21:40:35.47ID:n/EqvkXYr
>>541
JavaScriptのリテラルに関してはまず下記を読んでください
括ってあればリテラルというわけではないです
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB
544デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/05(木) 22:26:48.61ID:XhDooIHVH
>>543
括る、というのはそういう意味かと
リテラルはリテラルなので括る必要はなくて
プリミティブは、これは文字列です、
これは配列です、
これはオブジェクトです
とエンジンに理解させるための記述なのかと思いまして
545デフォルトの名無しさん (ワッチョイ a62d-IQJE [121.102.19.45])
2023/01/05(木) 22:39:53.19ID:scsW7zY90
リテラルはベた書きで良かろう
546デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.208.231.97])
2023/01/05(木) 22:41:03.03ID:n/EqvkXYr
>>544
申し訳ないけど全体的に文意が取れません
1行目の「そういう意味」は何を指してますか?
547デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/05(木) 22:57:51.54ID:XhDooIHVH
括ることで、エンジンに対して、これは配列オブジェクトだよとか
これは{}だよとか、これは文字列だよとか、そういうことを伝えているってことですけど
548デフォルトの名無しさん (ワッチョイ 8201-+uJR [219.204.123.70])
2023/01/05(木) 22:59:39.77ID:O+NRT3S+0
>>541 > リテラルっていうのは、括るもの、という意味合いでは?
>>544 > リテラルはリテラルなので括る必要はなくて
自分で何書いてるのか理解できてる?
549デフォルトの名無しさん (ワッチョイ 8201-+uJR [219.204.123.70])
2023/01/05(木) 23:00:08.63ID:O+NRT3S+0
>>547
数値リテラル
550デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/05(木) 23:12:56.82ID:XhDooIHVH
<<538
諄いですね
正しい理論的な話あればご披露ください

JSの処理エンジンに、どういう記述があれば
どう処理するかというのがあるでしょ
{}とう記述を読めば、オブジェクトなのだな、と
””ならもじれるなのかなと、
function でて意義されたものがあれば関数なのかなと

リテラルは数値などの表現で
文字列は””、’’のクオーテーションで
関数は、function装飾委sで
それぞれが何を表現してるのかを確認し
スクリプト実行時にそれらをコンテキストに登録して
その後の作動を担保する、ってことなのかな
551デフォルトの名無しさん (ワッチョイ 9fcf-/EFQ [180.14.48.253])
2023/01/05(木) 23:17:36.32ID:/79BsoYR0
一から教えるにはここじゃスペースが足りないからまず入門書一冊買って読め。
552デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/05(木) 23:20:08.45ID:XhDooIHVH
先生、ありがとうござす
時間とれましたら勉強してみます、ありがとうです
553デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.208.231.97])
2023/01/05(木) 23:20:49.68ID:n/EqvkXYr
中途半端に字句解析、構文解析の話になってるのか・・・
誰もそんなレベルの話はしてないのに
554デフォルトの名無しさん (スプッッ Sdc2-DLel [1.75.213.141])
2023/01/05(木) 23:28:36.71ID:V3WBk68sd
誤変換の多さと言い意味の通ってなさと言い酔っ払ってるとしか思えんなw
555デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/05(木) 23:34:22.58ID:XhDooIHVH
すみませんでした、もっと勉強します
556デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.204.227.44])
2023/01/06(金) 12:07:23.77ID:ipvOzmbWr
勉強しますの前にまず筋の通った主張を相手に分かるようにお願いします
>>548の指摘もそういうことだし
557538 (ワッチョイ 8202-9yt5 [27.92.176.51])
2023/01/06(金) 17:52:02.25ID:AgA2i3Ln0
リテラルって文字列とか数値というイメージ
だから、

let dispMessage = function(msg){console.log(msg)}

っていう文があれば、関数リテラルならどうみても
左側の変数の文字列の事って思うじゃないですか。
右側はfunctionとか{}とか()とかあるので、
リテラルからかけ離れていると思ってました。

どうりで、話が噛み合わないなと思ってたが
今、全部なっとく。ありがとうございました!
558デフォルトの名無しさん (ブーイモ MMee-DakT [133.159.153.167])
2023/01/06(金) 21:33:28.00ID:Ynt2iWE0M
リテラルはもともと「文字通りの」って意味
ソースに書いた内容が変数とかを介さずにそのまま1つの値として評価されるもの

括弧で括るとかの意味は全く無い
559デフォルトの名無しさん (JP 0H4f-ChaJ [126.249.157.89])
2023/01/06(金) 22:25:41.09ID:Th1PE0Z2H
リテラル

””や’’で表現されるのは文字列と評価する
[]は配列と評価する
{}はオブジェクトと評価する
JSエンジンがオブジェクトをどう評価して処理するかということだと思ったんですけど
何やら全く的外れなこと言ってたみたいですみませんでした
何度も謝ったのでもう許してください、鬼神様
560デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.247.11])
2023/01/06(金) 23:10:59.17ID:AlXqoCEJr
>>559
的外れなことを繰り返し書かなくていいから黙って>>502を読んでおいて
561デフォルトの名無しさん (JP 0Hd3-DWwd [126.249.157.89])
2023/01/07(土) 08:36:35.89ID:I26x6s3dH
時間があるときに読んでおきます
562デフォルトの名無しさん (ワッチョイ 8a74-+oQO [211.124.81.22])
2023/01/07(土) 11:56:48.02ID:n88Tb37q0
>>561
いますぐ読みたまえ
563デフォルトの名無しさん (アウアウウー Sa3f-03PQ [106.154.143.205])
2023/01/07(土) 12:11:11.83ID:Oa/pj9jla
読めたら読みます
564デフォルトの名無しさん (ワッチョイ 8a74-+oQO [211.124.81.22])
2023/01/07(土) 12:11:57.01ID:n88Tb37q0
>>563
読めなくても読むのだ
565デフォルトの名無しさん (スプッッ Sdea-pEag [1.75.238.210])
2023/01/07(土) 15:51:52.95ID:zzWcN8NZd
>>559
わざわざもう1回書いたのは自分の中ではこれが正しいという思いが捨てられなくて
賛同してくれる人が現れないかと期待してってところか
566デフォルトの名無しさん (ワッチョイ 9310-zDHW [180.12.82.129])
2023/01/07(土) 18:24:30.76ID:2xit7B8+0
再帰関数についての質問

function test(){
処理1
test();
処理2
}
とした場合
処理2の前にtest()があるので、処理2はずっと実行されないということですか?
567デフォルトの名無しさん (アウアウウー Sa3f-03PQ [106.154.143.205])
2023/01/07(土) 18:46:02.96ID:Oa/pj9jla
いいえそれは処理1次第です
568デフォルトの名無しさん (ワッチョイ 9310-zDHW [180.12.82.129])
2023/01/07(土) 19:05:43.05ID:2xit7B8+0
>>567
ありがとうございます
処理1はreturnや他関数への再帰はしないものとします
569デフォルトの名無しさん (ワッチョイ fecf-DSRP [153.174.224.39])
2023/01/07(土) 19:11:57.35ID:GmV1yQnL0
最大の再帰の深さは JavaScript エンジンによって制限されていて
その範囲内で終了条件を満たすように作る必要があります
でなければエラー終了するので、無限再帰は有り得ません
570デフォルトの名無しさん (ワッチョイ 6a7c-Or7w [43.235.241.201])
2023/01/07(土) 21:33:23.91ID:YilgzCe20
そもそも永久に再帰は無理なのを理解していないのか?
それと何故再帰を使うのかという理由が全く分からん
571デフォルトの名無しさん (ワッチョイ aa02-DSRP [59.138.123.33])
2023/01/08(日) 01:51:54.62ID:uPZeFpc/0
まあ普通は無限ループだな
わざわざ再帰にしなければいけない
理由が何かだな
572デフォルトの名無しさん (ワッチョイ 7b79-Jp3v [220.150.90.192])
2023/01/08(日) 01:53:28.42ID:FOdy7Dic0
末尾再帰最適化が保証されている言語では特定条件を満たせばさもループの代替として使えるが
javascriptではそうはならなかった
以上
573デフォルトの名無しさん (ブーイモ MM4a-mEot [49.239.64.156])
2023/01/08(日) 01:53:30.69ID:gpkzwVQsM
末尾最適化されてれば無限ループ可能でしょ?
ES2015で末尾最適化の仕様化されたけど適合してない実装が多いというだけ
574デフォルトの名無しさん (ブーイモ MM4a-mEot [49.239.64.156])
2023/01/08(日) 01:54:05.49ID:gpkzwVQsM
ありゃ被ったか
575デフォルトの名無しさん (ワッチョイ 7b79-Jp3v [220.150.90.192])
2023/01/08(日) 02:24:13.14ID:FOdy7Dic0
規格があっても準拠するかどうかは実装次第というね
ちなみにjavascriptは関数がファーストクラスでレキシカルスコープを持つためいわゆるクロージャを無意識に生成できる
クロージャがあれば末尾再帰できないからと不自由に感じることはないと思われる
576デフォルトの名無しさん (ワッチョイ 9310-zDHW [180.12.82.129])
2023/01/08(日) 17:51:20.88ID:TObCTh0j0
>>570
@supportsや@mediaのネストされたcssの全プロパティ値を取得するために
再帰使いたかった
577デフォルトの名無しさん (ワッチョイ db01-9cRY [60.69.179.40])
2023/01/09(月) 07:24:55.41ID:Bl4X3MiM0
>>576
無限にネストすることはないはずだが
578デフォルトの名無しさん (オッペケ Srd3-HOhV [126.208.230.4])
2023/01/09(月) 12:44:15.19ID:mLvtK4oer
>>576を実現するにしても>>566にはならんと思うけども
579デフォルトの名無しさん (ワッチョイ 6a7c-Or7w [43.235.241.201])
2023/01/09(月) 13:34:27.76ID:nBXeWSyT0
ホントになw
// aはarray
function test(a)
{
a.forEach( b => {
if (b.isArray()) {
test(b)
}
})
}
みたいな感じなら分かるがw
580デフォルトの名無しさん (ワッチョイ 7b79-Jp3v [220.150.90.192])
2023/01/09(月) 15:00:57.73ID:2yNmR2Eh0
ノードを全部舐めるみたいなトラバース系の処理はエンジンの制限とか気にするなら再帰のロジックを配列とループで作った方が安全だし
恐らく関数を呼び出すより速いから検討してみてね
581デフォルトの名無しさん (ワッチョイ 6305-S6ln [116.94.64.124])
2023/01/14(土) 18:28:43.16ID:WRdKOG7o0
質問
scriptタグで指定されてるリンク先をjavascriptで変えたい
例えば. script type="text/javascript" src="A”
になってんのを
script type="text/javascript" src="B”に変えたい
replace等でやろうとしたものの上手くいかなかった
582デフォルトの名無しさん (ワッチョイ 7f7c-f6s+ [43.235.241.201])
2023/01/14(土) 20:27:52.90ID:Ww/QFSM20
ちょっとググったら出てくるやろw
https://www.softel.co.jp/blogs/tech/archives/6794
583デフォルトの名無しさん (ワッチョイ 6305-S6ln [116.94.64.124])
2023/01/14(土) 23:08:43.95ID:WRdKOG7o0
>>582
ありがとうございます…
本当に助かりました…
584デフォルトの名無しさん (アウアウウー Sac7-wtyD [106.146.97.205])
2023/01/15(日) 01:42:33.54ID:k1TuDUU1a
確かに以下のように、jQuery で、script タグのsrc 属性を、
a.js から、b.js へ変えても、scriptタグが再読み込みされない

$("script[src='a.js']:first").each(function (index, elem) {
$(elem).attr('src', 'b.js');
});

新たなscriptタグを追加してから、元のscriptタグを削除すれば、読み込まれるかも
585デフォルトの名無しさん (ワッチョイ a361-1Ylv [222.144.108.11])
2023/01/15(日) 02:01:27.46ID:iV9MAA6y0
読み込まれたスクリプト自体はscript要素消しても消えない事に注意
586デフォルトの名無しさん (オイコラミネオ MMa7-+Atj [150.66.84.146])
2023/01/15(日) 13:53:25.79ID:0IRxms8qM
ルーターのブロードステーションに電源を入れると
エッジブラウザが起動して自動的にブロードステーションのルーターのページが表示されます。
ブロードステーション関連のソフトウェアは一切インストールしていないにもかかわらずです。
これって動きだけ見ますとルータが勝手にこっちのpcを操作してるように見えるのですがどういう仕組みなんでしょうか?
ブラウザ(JavaScript)はページ内しか操作出来ない筈なんですが。
587デフォルトの名無しさん (ワッチョイ 3f3d-/16g [133.32.132.49 [上級国民]])
2023/01/15(日) 15:02:28.33ID:yvxMece60
よろしくお願いします

【環境】Win11,Chrome
【何をしたのか】下記コードをHTMLファイルにしてchromeで読み込ませて、コンソールで見た
JSONのItemsを一個追加して、追加したageだけ書き換えたいが、両方書き換わる
【エラーメッセージ】エラーメッセージはない
【期待する結果】Itemsの2個めのageだけが40になるはず
【サンプルコード】現象を再現可能な最小限のコードを書いてください。

<script>
json =
{
"color_list": [ "red", "green", "blue" ],
"Items": [
{ "name": "Tanaka", "age": 26 },
]
}
data0=json["Items"][0]

json["Items"].push(data0)

console.log("before");
console.log(json["Items"][0]["age"]);
console.log(json["Items"][1]["age"]);

json["Items"][1]["age"]=40

console.log("after");
console.log(json["Items"][0]["age"]);
console.log(json["Items"][1]["age"]);
</script>



結果
before
26
26
after
40
40
588デフォルトの名無しさん (ワッチョイ cfcf-7DGa [153.174.224.39])
2023/01/15(日) 15:12:37.19ID:XTiaoq8f0
>>587
そのコードで、参照がコピーされているので
data0={...json["Items"][0]}
とすればいい
589デフォルトの名無しさん (ワッチョイ a361-1Ylv [222.144.108.11])
2023/01/15(日) 15:18:59.77ID:iV9MAA6y0
>>587
https://developer.mozilla.org/ja/docs/Glossary/Deep_copy
590デフォルトの名無しさん (ワッチョイ 3f3d-/16g [133.32.132.49 [上級国民]])
2023/01/15(日) 15:22:38.08ID:yvxMece60
>>588,589
できましたありがとうございます。
591デフォルトの名無しさん (ワッチョイ cfcf-7DGa [153.174.224.39])
2023/01/15(日) 15:31:02.14ID:XTiaoq8f0
この場合はこれで十分ですが
スプレッド構文はシャローコピーなので、
データがより複雑な構造の場合は、それなりの記述が必要です
592デフォルトの名無しさん (ワッチョイ a361-1Ylv [222.144.108.11])
2023/01/15(日) 15:40:55.97ID:iV9MAA6y0
>>586
キャプティブポータルの検出機能が誤爆してるんじゃないかな
593デフォルトの名無しさん (ワッチョイ 634b-mccM [110.2.215.28 [上級国民]])
2023/01/15(日) 20:06:20.61ID:7dUg93Xk0
mainfn()

function mainfn(){

pg1 = win1.pnl.add('group')
pg1.orientation = "row"
pg1.add("statictext", [0,0,70,23], "拡大・縮小")
rd11 = pg1.add("edittext", [0,0,40,23], 100)
pg1.add("statictext", [0,0,30,23], "%")

pg9 = win1.pnl.add('group')
pg9.orientation = "row"
CAN = pg9.add("button",[0,0,100,30],"cancel")
OK = pg9.add("button",[0,0,100,30],"OK")
CAN.onClick = function(){win1.close()}
OK.onClick = function(){
win1.close()
dofn()
}
win1.show()
}

function dofn(){
bai = parseFloat(rd11.text)
…… 以下略

これが正常に動作するのですが、rd11はローカル変数だとおもうのですが、なぜ違う関数内(dofn())から読めるのでしょうか?
こういう書き方が出来るのなら楽なのですが…
594デフォルトの名無しさん (オッペケ Sr67-2lig [126.208.238.32])
2023/01/15(日) 20:27:36.55ID:Vv6s9YYpr
関数内でvarを付けずに宣言された変数はグローバルスコープになる
var rd11 = pg1.add("edittext", [0,0,40,23], 100)
とすると関数スコープになって外部からアクセスできなくなるはず
関数内での変数宣言はvar文で行うべきで
これを「楽」と思ってしまうのは危険
595デフォルトの名無しさん (ワッチョイ 634b-mccM [110.2.215.28 [上級国民]])
2023/01/15(日) 20:53:03.10ID:7dUg93Xk0
>>594
ありがとうございます
非常に勉強になりました
596デフォルトの名無しさん (オッペケ Sr67-2lig [126.208.230.75])
2023/01/15(日) 21:30:36.07ID:YqyTW3mJr
>>595
'use strict'が効くならスクリプトの先頭行に書いとくといいよ
597502 (ワッチョイ 8301-DQ2E [60.103.69.185])
2023/01/15(日) 23:28:40.23ID:bMctduL80
>>593
それAdobe Illustratorかなにかで使うソースでしょ?
どういう環境で使うソースなのかは一言書いといた方がいいよ
598デフォルトの名無しさん (アウアウウー Sac7-wtyD [106.133.104.22])
2023/01/15(日) 23:45:44.09ID:r5uLxMWea
ES2015(ES6)以降は最低限、

変数宣言にはvar ではなく、let/const を付けよう
599デフォルトの名無しさん (ワッチョイ 8301-fAIW [60.69.179.40])
2023/01/15(日) 23:55:04.30ID:cRCjJN100
>>597
この指摘は何度も見てるが、いつになっても改善されない
質問者にとっては直す気がない、どうでもいい問題なんだろうな…
600デフォルトの名無しさん (オッペケ Sr67-2lig [126.204.224.48])
2023/01/15(日) 23:55:05.86ID:5X3ij1Yxr
>>598
このadobeのスクリプトはES3相当らしいのでvarを案内してるのよ

まあそもそもスレ違いだからID:7dUg93Xk0は今後adobeのフォーラムで質問するようにね
その方が我々も余計な労力を払わなくていいし君も的確な回答がもらえる
https://community.adobe.com/t5/forums/searchpage/tab/message?filter=location&q=%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%20script&noSynonym=false&location=category:jp&collapse_discussion=true
601デフォルトの名無しさん (ワッチョイ 8301-fAIW [60.69.179.40])
2023/01/15(日) 23:55:37.31ID:cRCjJN100
>>597
この指摘は何度も見てるが、いつになっても改善されない
質問者にとっては直す気がない、どうでもいい問題なんだろうな…
602デフォルトの名無しさん (ワッチョイ 8301-fAIW [60.69.179.40])
2023/01/15(日) 23:57:40.43ID:cRCjJN100
申し訳ない
投稿エラーで再投稿したら、二重投稿になってた
603デフォルトの名無しさん (ワッチョイ 634b-mccM [110.2.215.28 [上級国民]])
2023/01/16(月) 01:46:54.32ID:DS9XkUYq0
>>597
すみません
次から書きます
あまりillustratorに特化したことは質問しません
604デフォルトの名無しさん (ワッチョイ 634b-mccM [110.2.215.28 [上級国民]])
2023/01/16(月) 01:51:10.12ID:DS9XkUYq0
>>596
そういうのがあるんですね
知らなかったです
605デフォルトの名無しさん (オッペケ Sr67-2lig [126.208.227.98])
2023/01/16(月) 02:24:41.48ID:SauNqkHgr
>>604
知った以上次からそちらにに行って質問してください
環境の説明も必要ないしillustratorに特化した質問もし放題だし良いことづくめですよ
606デフォルトの名無しさん (ワンミングク MM87-KwiO [114.150.17.128])
2023/01/16(月) 08:45:42.10ID:Hbn6MJh3M
イラレ特化だからではなくてJavaScriptのバージョンの問題なんだけど
なんも書いてなければ最新のモダンブラウザのつもりでみんな考える
今JavaScriptのバージョンってES12くらいかね、あんまりそういう言い方しないけど
イラレ搭載のはES3なの?それも知らんけど
クッソ古いから使える文法も関数もまるで違うから環境を書けと言っているのよ
そこらへん多分知らなかったんだろうけど、それは仕方ないけど、次からは環境きちんと書いて
というかできれば以降はAdobeのフォーラムでやって
607デフォルトの名無しさん (アウアウウー Sac7-OPB1 [106.146.82.82])
2023/01/17(火) 01:44:26.39ID:BTJjkb3Ra
>>587
C/C++ 以外の言語は、参照しかコピーしない・shallow copy。
実体は再作成されない

なので、deep copy するのに、参照のリンクが切れないので困る

だから、marshal とか、わざわざオブジェクトをJSON 文字列化して、
その文字列から、新しいオブジェクトを作ったりする
608デフォルトの名無しさん (ワッチョイ cf6f-TZIJ [121.103.1.5])
2023/01/17(火) 16:25:41.45ID:XA7n1WWP0
>>607
え?
609デフォルトの名無しさん (JP 0H67-w88e [126.249.157.89])
2023/01/17(火) 19:01:55.76ID:LBqNgpc6H
ポインタのこと?
610デフォルトの名無しさん (ワッチョイ 6310-qfBe [180.59.92.6])
2023/01/18(水) 00:05:10.90ID:csewAuIZ0
検索アドレスに言語指定が必要になって下のスクリプトを書きました。

function Jump(){
var kekka =
"ht"+"http://www.concertzender.nl/?s=" +
document.concertzender.kensaku.value +
"&lang=nl";
location.href = kekka;
return;
}

kensaku は検索フォームの文字列です。これで正常動作するのですが、
エラーチェックすると&が警告されて気になります。
&にしたらアドレスが&になって検索できないし、
なんとかならないものでしょうか・・・
611デフォルトの名無しさん (ワッチョイ 6310-qfBe [180.59.92.6])
2023/01/18(水) 00:09:24.42ID:csewAuIZ0

&amp; です
&#038; でも同じです
612デフォルトの名無しさん (ワッチョイ cfbb-sA4L [217.178.152.148])
2023/01/18(水) 06:35:54.86ID:guU+fOES0
この気持ち悪いの何?
> "ht"+"tp
613デフォルトの名無しさん (JP 0H67-w88e [126.249.157.89])
2023/01/18(水) 07:40:19.90ID:Eqd2U92jH
documentのpropertyにconcertzenderって標準でないっしょ?
スクリプトのどっかでなんか設定してるん?
614デフォルトの名無しさん (JP 0H67-w88e [126.249.157.89])
2023/01/18(水) 07:41:25.64ID:Eqd2U92jH
それとエラーの内容も書き込まずにして質問っていうのもどうなの?
615デフォルトの名無しさん (ワッチョイ cf7b-lu1o [153.178.229.141])
2023/01/18(水) 08:57:37.16ID:cgb3Ru010
>>612
5ch対策でしょ
616デフォルトの名無しさん (ワッチョイ 6310-qfBe [180.59.92.6])
2023/01/18(水) 10:05:55.23ID:csewAuIZ0
>>614
すいません。単純に特殊文字ダメよという内容だったんで・・・

"&lang=nl";

"&lang=nl"; もし、"&" で始まるエンティティを含めるつもりなら、";" で終了させるべきです。
このエラーメッセージのもう一つの理由は、このテキストの直前にある「&」文字をエスケープしなかったために、
誤ってエンティティを作成してしまったことです。(機械翻訳)

自分としては&amp;と書いて、リンクアドレスとして&を出力したいわけです・・・
617デフォルトの名無しさん (ワッチョイ cfbb-sA4L [217.178.152.148])
2023/01/18(水) 10:16:20.21ID:guU+fOES0
>>615
あーそういうことか。コピペコードで悪さでもしようとしているのかと思ったけど違うみたいね

>>610
大体どの言語でもクエリ文字列を作る仕組みが用意されているのでそれを利用するのが適切です
JavaScriptならコレかな

URLSearchParams
https://developer.mozilla.org/ja/docs/Web/API/URLSearchParams
618デフォルトの名無しさん (オッペケ Sr67-2lig [126.204.227.194])
2023/01/18(水) 11:11:32.49ID:CwkcAAQnr
>>616
載せるならエラーメッセージ原文を
で、そのメッセージでググってみた?
あとエラーチェックするとって具体的にどういう操作をしたの?
619デフォルトの名無しさん (ワッチョイ a361-1Ylv [222.144.108.11])
2023/01/18(水) 12:42:13.54ID:iQx/CEUf0
>>610
htmlのscript要素の中身はCDATAなので文字参照にする必要なし
もちろんinnerHTML等htmlとしてパースされるものに突っ込む場合は必要だが
htmllintなんかでエラーになるのは無視していい
620デフォルトの名無しさん (ワッチョイ 6310-qfBe [180.59.92.6])
2023/01/18(水) 13:08:45.81ID:csewAuIZ0
>>618
エラーメッセージはその部分は&amp;だろと言っているのですが、じゃあ&amp;と書くと
http://www.concertzender.nl/?s=kensaku&amp;lang=nl と出力されてエラーになり、困ったわけです・・・

>>619
無視していいんですね。ありがとうございます。
htmlでは&amp;と書くと&になるのに、スクリプトの部分ではそうならないのですね。
621デフォルトの名無しさん (オッペケ Sr67-2lig [126.194.244.31])
2023/01/18(水) 13:26:39.01ID:Okbz9NQsr
>>620
何も質問に答えてないよね
答える気があるならもう一度>>618を読んでほしい
622デフォルトの名無しさん (JP 0H67-w88e [126.249.157.89])
2023/01/19(木) 22:07:44.38ID:40XBuhhWH
君は君の質問に反応しない人には
推し量って導こうという崇高な意識はないの?JS使いなのに?
623デフォルトの名無しさん (ワッチョイ 8301-fAIW [60.85.60.40])
2023/01/20(金) 00:14:23.52ID:VzeMnjK00
>>622
誰からも回答してもらえない質問者は、他の人を導く存在に昇格ということか
質問に回答しないのが本人の為なのかもしれんな
624デフォルトの名無しさん (ワッチョイ 0379-sA4L [220.150.90.192])
2023/01/20(金) 01:57:18.23ID:ptsQI5JN0
それよりJavaScriptをJSと略すと女子小学生しか思い浮かばないからそろそろやめたほうがいい
625デフォルトの名無しさん (オッペケ Sr67-2lig [126.208.227.44])
2023/01/20(金) 07:46:55.99ID:PpNyk8UWr
>>622
>君は君の質問に反応しない人には
反応しない人?
質問に反応されたけど回答になってなかったからそこを指摘したんだけど
626デフォルトの名無しさん (ワッチョイ cfdb-f6s+ [217.178.96.73])
2023/01/20(金) 17:53:26.94ID:zXaveivW0
>>624
J
627デフォルトの名無しさん (ワッチョイ bf3d-Sc6R [133.32.132.49 [上級国民]])
2023/01/26(木) 00:31:01.01ID:c9Kzf+f60
【環境】Win11,Chromeで表示させたHTMLの中のjavascript
Windowsのフルパスのファイル名が入った変数を\でsplitしたいんだけど可能?

x_textにはJSONデータから取ってきた'D:\\00.png'が入っていて
console.log(x_text)だとD:\00.pngと表示
これをsplitすると
aaa1.html:154 Uncaught TypeError: Assignment to constant variable.
になる。
split('\\')をsplit('\\\\')にしても同じ

console.log(x_text)
arr_text = x_text.split('\\') ←ここでエラー
console.log(arr_text[0])
628デフォルトの名無しさん (ワッチョイ 8361-4svA [222.144.108.11])
2023/01/26(木) 00:37:27.57ID:q740ttN00
>>627
arr_textがconst宣言されてるだけでは?
629デフォルトの名無しさん (ワッチョイ bf3d-Sc6R [133.32.132.49 [上級国民]])
2023/01/26(木) 01:06:05.60ID:c9Kzf+f60
>>628
できました。
サンクスです。
630デフォルトの名無しさん (アウアウウー Saa3-6TJq [106.129.156.153])
2023/01/29(日) 10:31:07.49ID:rZA8vUyra
初学者質問ですいませんが、変数aが文字列あいう、かつ、変数bがundefinedでない時 というif文を書きたい時
if (a=='あいう' && (!(b === void 0))) {...
という書き方であってますか?
よりシンプルな書き方とか、より標準的な書き方ってありますでしょうか。
631502 (ワッチョイ bf01-IIfr [60.103.64.138])
2023/01/29(日) 12:00:10.71ID:9rN3KLzS0
厳密不等価演算子 !==
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Strict_inequality

undefined が予約語になってないから void 0、ってのは……はて、今もやるものかね
632デフォルトの名無しさん (ワッチョイ 775f-JCKB [14.8.104.32])
2023/01/29(日) 12:54:20.77ID:eUvMCdrW0
if(a == 'あいう' && !b)でもよさそうな気がしなくもない
633デフォルトの名無しさん (オッペケ Sr27-+FJ3 [126.133.207.3])
2023/01/29(日) 15:43:05.57ID:d0tJgmu5r
>>631
undefined は予約語ではないのでローカル変数による上書きが可能…という意味では、void 0 を使う価値はある
634デフォルトの名無しさん (アウアウウー Saa3-6TJq [106.129.157.183])
2023/01/29(日) 15:59:30.70ID:rpOrCqGha
>631
ありがとうございます。リンク先確認しました。
if(a=='あいう' && b!== undefined またはvoid 0)
という感じでしょうか。
ここでb!= undefined とするとまずいのはbがnullの時だけ、という認識でいいでしょうか。

>632
ありがとうございます。bが0や空文字の時にも偽になりそうです。
635デフォルトの名無しさん (ワッチョイ df79-jh2e [220.150.90.192])
2023/01/29(日) 16:03:43.52ID:R24XfIrD0
第一にjavascriptみたいな後付け追加仕様が混在する言語は規格よりも実装の影響力が強いから
想定環境で検証済の方法を採用すべきだと思う
コードとしては変数をtypeofで"undefined"と比較するのが恐らく理解しやすいが、
メンテナがjavascriptに十分慣れていてvoid 0のイディオムの理解を期待できるならそっちでもいい
636デフォルトの名無しさん (スッップ Sd72-X84U [49.98.141.203])
2023/01/29(日) 16:28:19.00ID:MX/guDl/d
>>634
結局のところ
・undefinedが上書きされる可能性を考慮する必要があるのか
・bがundefined以外のfalsyな値を取りうるのか
・取る場合それぞれの値をundefinedとは区別したいのか同じとみなしたいのか
この辺次第で望ましい書き方は変わってくるわけで
637デフォルトの名無しさん (オッペケ Sr27-+FJ3 [126.133.207.3])
2023/01/29(日) 16:30:22.92ID:d0tJgmu5r
>>634
型チェックも働かせるなら

if (a. === 'あいう' && b !== void 0)

と書けば良い
'あいう' も==では型チェックしない

> ここでb!= undefined とするとまずいのはbがnullの時だけ

まずいのは、undefined! == void 0 の場合
638デフォルトの名無しさん (アウアウウー Sacd-3+Au [106.128.44.107])
2023/02/12(日) 19:44:05.09ID:zQHZ3m1Fa
//☆☆県(API番号☆00000)の予報を取得
let url = "https://www.jma.go.jp/bosai/forecast/data/forecast/☆00000.json";

fetch(url)
.then(function(response) {
return response.json();
})
.then(function(weather) {
console.log(weather);
//☆☆県を選択し、変数に詰め直す
let area = weather[0].timeSeries[0].areas[0];
console.log(area);
//発表者と更新日時の情報を書き出す
document.getElementById("publishingOffice").lastElementChild.textContent = weather[0].publishingOffice;
document.getElementById("reportDatetime").lastElementChild.textContent = weather[0].reportDatetime;
//特定の地域の情報を画面に書き出す
document.getElementById("targetArea").lastElementChild.textContent = area.area.name;
document.getElementById("today").lastElementChild.textContent = area.weathers[0];
document.getElementById("tomorrow").lastElementChild.textContent = area.weathers[1];
document.getElementById("dayAfterTomorrow").lastElementChild.textContent = area.weathers[2];
});

上手く動かないのですがどこが間違えてますか?教えてください。

☆はわざとです
639デフォルトの名無しさん (オッペケ Sr79-c/8M [126.179.247.114])
2023/02/13(月) 16:33:17.79ID:6gR8iJfAr
バグってるので調査してください

それは質問ではなく作業依頼
640502 (ワッチョイ a901-d354 [60.103.78.83])
2023/02/13(月) 22:37:53.05ID:E1kxmkHl0
>>638
やりたいことも伝えずに上手く動かないと言われてもなー
641デフォルトの名無しさん (JP 0H79-t1ev [126.249.157.89])
2023/02/14(火) 07:31:57.89ID:NKP9M84/H
なぜ自身でデバッグせんのよ
642デフォルトの名無しさん (ワッチョイ 9279-sQVB [27.132.129.236])
2023/02/14(火) 21:18:40.92ID:snyjWmK+0
そのメソッドチェーンやめれば分かるよ
エラーが起きない前提があってのメソッドチェーンだからよ
643デフォルトの名無しさん (ワッチョイ 9202-AGaU [27.92.176.51])
2023/02/17(金) 12:17:26.22ID:DJukcnvm0
$.each()とsetIntervalをつかって、
インターバル時間ごとに順番に配列の中身を、コンソール出力する方法ありますでしょうか?

$.each()は、一度に処理するから、一つづつコンソール出力するのは難しいですかね。
644デフォルトの名無しさん (ワッチョイ a901-WXfS [60.109.220.141])
2023/02/17(金) 20:26:53.96ID:iF4/ZjHx0
>>643
$,each()を使う理由がわからない
setIntervalだけ使えば良い
645デフォルトの名無しさん (ワッチョイ a901-WXfS [60.109.220.141])
2023/02/17(金) 22:54:40.37ID:iF4/ZjHx0
>>643
clearintervalで1回だけタイマーを動かしてPromise化してawaitして$.each()を使えば、理屈ではできると思う
手段のモ目的化、かつ無駄に複雑だと思うが
646デフォルトの名無しさん (アウアウウー Sa81-JXsU [106.154.152.216])
2023/02/18(土) 19:51:29.82ID:gBmvvkX6a
nodeでPythonのif name==main
みたいなことできませんか?
メソッドの動きをデバッカーでみたいんです
647デフォルトの名無しさん (ワッチョイ fa3d-FCAK [133.32.132.49 [上級国民]])
2023/02/24(金) 01:21:32.26ID:jGK2BMhd0
//【環境】Win11,JScript
//【何をしたのか】case文のところに条件式を書き、breakせずにすべての条件式で評価したい

//【サンプルコード】現象を再現可能な最小限のコードを書いてください。
a=1

switch (true) {
case (a==1):
a=a+16
WScript.echo("aの値を変更a=",a)
case (a>10):
WScript.echo("a>10","a=",a)
a=a-10
WScript.echo("aの値を変更a=",a)
case (a>30):
WScript.echo("a>30です","a=",a)
a=0
WScript.echo("aの値を変更a=",a)
}
WScript.echo("最終的な結果a=",a)

//【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
aの値を変更a= 17
a>10 a= 17
aの値を変更a= 7
a>30です a= 7
aの値を変更a= 0
最終的な結果a= 0

//【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
2番目のcaseでa=7だから3番目のcaseにはいかず、最終的にはa=7になるのでは?
648デフォルトの名無しさん (ワッチョイ 9ebd-kyjD [119.240.41.213])
2023/02/24(金) 02:46:21.28ID:thXJapXb0
>>647
上から順に case が評価され、どこかで真になればそれ以降の case は評価されない。
break してないからそれ以降の処理がフォールスルーで実行されてるだけ。

全部の条件を評価したいなら普通に if で書けばいいと思うよ。
649デフォルトの名無しさん (ワッチョイ 1501-qPsv [126.88.47.26])
2023/02/24(金) 05:29:40.16ID:xQyCpHMf0
そもそもswitch文って条件にtrue入れて使うようなもんじゃないぞ
650デフォルトの名無しさん (ワッチョイ 9ebd-kyjD [119.240.41.213])
2023/02/24(金) 08:59:59.37ID:thXJapXb0
>>649
case に式を書けるようにしたことによって使えるようになった副作用みたいなものだよね。
switch の式と一致する case を探すのが switch文の動作だとするなら、switch の式 true と一致する値となる、すなわち true になる式を持つ case が選択される。
個人的には if で書けばいいものをわざわざ分かりづらい書き方にしてるバッドプラクティスだと思ってるが、フォールスルーと組み合わせると if よりもスマートに書ける可能性はあるかもね。
特に >>647 のように全部の case を評価してほしいなら、switch で書く利点が何一つ無い。
if より利点がある場合は、フォールスルーする場合に最初に true になる case までしか式が評価されないことくらいなのに。
651デフォルトの名無しさん (ワッチョイ 433d-KeBY [133.32.132.49 [上級国民]])
2023/02/25(土) 02:30:10.34ID:E1i3tKVi0
>>650
良いサンプルが思いつかんけど、
ifで書こうとすると、重複する処理を書かなければいけなくなったり、フラグの変数を導入したりすることになるんだけど、
breakなしのswitch case文ならうまいこと書けるんじゃないかと思ってやってみたけど、動かなかった。
652デフォルトの名無しさん (ワッチョイ abdb-W5vA [217.178.96.73])
2023/02/25(土) 21:04:04.70ID:5GrSMYMK0
jQuery以外のライブラリ・フレームワークは廃止して欲しい。
覚えるのが大変。
653デフォルトの名無しさん (アウアウウー Saf1-Bx6w [106.155.6.230])
2023/02/25(土) 22:01:05.33ID:YxrjvuYta
react だけでよくね
jqueryとかいい加減消滅しろよ
654デフォルトの名無しさん (ワッチョイ abdb-W5vA [217.178.96.73])
2023/02/25(土) 23:22:22.93ID:5GrSMYMK0
>>653
この2つは併用出来ないから辛い。

で、reactならではの利点は?
655デフォルトの名無しさん (テテンテンテン MM6b-u9d9 [133.106.246.58])
2023/02/25(土) 23:31:29.20ID:fw0b+BcSM
質問スレで焚き付けんな
656デフォルトの名無しさん (ワッチョイ edda-055g [60.41.23.73])
2023/02/25(土) 23:38:37.47ID:TypeZdxc0
素の JS でいじゃん。

というのは言い過ぎかもしれんけど、何に使ってるんだか分からんようなことでいちいちおまじないのように jquery 読み込んでる呆れるようなところも少なくないんだよな。
通信回線速度も処理能力も上がってるから動いちゃいるが、とりあえず素の JS で書けるようになれと言いたい。
ブラウザ毎の非互換も少なくなってるし querySelector みたいな便利なメソッドもあるし、そんなに苦労しないでしょ。
657デフォルトの名無しさん (アウアウウー Saf1-Bx6w [106.155.7.97])
2023/02/25(土) 23:49:36.71ID:YJ+BhbRla
それなjqueryおじさんはJSだけで書けるようにしておけ
それでも足りないならReact使えな
658デフォルトの名無しさん (ワッチョイ ab03-LGx4 [153.222.136.198])
2023/03/01(水) 19:53:41.69ID:hdBOeOla0
githubで他人のコード見てるとclassもprototypeも使われてないやつが多いんだけど何でなん?ベストプラクティスがruby以上にわからん何が正解なん?
659デフォルトの名無しさん (ワッチョイ e379-Arif [27.132.129.202])
2023/03/01(水) 23:29:12.38ID:8kmkGnGP0
暗黙的なクロージャがあるからclassやprototypeを使わずとも割と困らないのが何でなん?の回答になる
660デフォルトの名無しさん (ワッチョイ 1dff-ZYAP [180.198.6.154])
2023/03/02(木) 02:00:11.27ID:65NO3QYK0
htmlコーダー志望の初心者です。
JSの入門書を読み終えたのでより実践的な学習に移行したいのですが、
既存の書籍やサイトは総論のような基本的な知識に焦点を当てたものが多い印象で、
実務において初心者コーダーにどのようなプログラムの作成が
求められてくるのかが判然としません。
そのような内容に焦点を当てた書籍やサイト等はありますか。
661デフォルトの名無しさん (ワッチョイ e379-Arif [27.132.129.202])
2023/03/02(木) 19:51:27.97ID:eGjuMjwU0
そもそもhtmlコーダーって何?ってぐぐってみたらデザイナやエンジニアが片手間でできる内容だし専門職としては成立せんのでは
662660 (ワッチョイ 1dff-ZYAP [180.198.6.154])
2023/03/02(木) 23:05:32.75ID:65NO3QYK0
>>661
htmlコーダーという職種自体がオワコンですかね…
ご意見参考にさせていただきます。
663デフォルトの名無しさん (オッペケ Sr29-tD1/ [126.194.18.54])
2023/03/03(金) 08:25:40.95ID:DJxhSXLyr
99%のエンジニアは片手間でできないからな
エンジニアはhtmlとcssをバカにするけどほとんどのエンジニアはまともに使えていないんだよ
特にcss

使い方を知らない
勉強しようとしても理解できない
なのにバカにする

エンジニアは視覚からコードに落とし込む能力が絶望的に劣っている

デザイナーから上がっきたモックをhtmlとcssで再現できない

だけどその事実がバレたくないからコーダーといってバカにする

実際にはjsxとstyle componentなどで必須スキル

必須だけどできないからhtmlとcssはデザイナーの仕事だと言い放つ

じゃあjsxはデザイナーに書かせるのか?と聞くと無言

毎回このパターン
664デフォルトの名無しさん (スップ Sdc3-iZis [1.72.0.185])
2023/03/03(金) 08:32:56.76ID:an7QtCXRd
まあでもそういう業界だからね
連携ダメだからと言って隙間に入り込める余地があるかどうか
665デフォルトの名無しさん (ワッチョイ f55c-W5vA [218.218.22.225])
2023/03/03(金) 09:44:56.39ID:o6EY7x580
>>663
組み込み系や汎用系のエンジニアにでも頼んでるのか?
ちゃんとWeb系やってるとこに頼みなよ
666デフォルトの名無しさん (オッペケ Sr29-tD1/ [126.194.18.54])
2023/03/03(金) 10:01:30.76ID:DJxhSXLyr
>>665
むしろ組み込みは汎用系のほうは知らん
Web系エンジニアはこんなんだぞ
ほんの少しだけ有能なフロントエンジニアがいる現状
なぜならフロント開発スキルとデザインスキルの両方を持ち合わせた人材がほぼいないから
667デフォルトの名無しさん (ワッチョイ f55c-W5vA [218.218.22.225])
2023/03/03(金) 10:24:24.87ID:o6EY7x580
webプログラマーに高度なデザインまで要求するのは無理でしょ
そのためにプロのデザイナーがいるんだし
でもほとんどのエンジニアがhtmlとcssをまともに使えないなんてありえない
今いる環境が悪すぎるんじゃないの?
668デフォルトの名無しさん (オイコラミネオ MM19-055g [150.66.65.10])
2023/03/03(金) 11:25:14.28ID:yQajwbSzM
ぶっちゃけデザインするやつが CSS まで書くのが一番いいんじゃね?
位置やら大きさやらの細かい詰めまでこだわれるでしょうに。
669デフォルトの名無しさん (ワッチョイ dd5f-pseD [14.8.104.32])
2023/03/03(金) 11:27:48.97ID:GvE2UXq10
アニメーションとかJsonでデータいじくる時だけ呼んでください

ってことにしてる社内ニート
670デフォルトの名無しさん (オッペケ Sr29-tD1/ [126.194.18.54])
2023/03/03(金) 11:54:37.73ID:DJxhSXLyr
こういうこと

デザイナーの担当
・モック作成
・Atomicデザイン込みのコンポーネント設計
・コンポーネント作成
・App作成(コンポーネントの組み上げ)
・jsx、css
・state更新とrender関連
・レスポンシブ対応
・トランジションやアニメーションなど
・DOM生成後の表示・操作・調整(表示順やインタラクション)
・エラー表示、警告
・htmlバリデーションのcheckValidityやreportValidity処理

フロントエンジニアの担当
・APIでデータ送受信
・propsで流し込み
671デフォルトの名無しさん (ブーイモ MM39-C31P [220.156.12.147])
2023/03/03(金) 12:03:53.67ID:aLTOWI5kM
>>670
それ専業のデザイナー置いても暇を持て余すような職場だろ
普通デザイナーにjsxなんて書かせないよ
672デフォルトの名無しさん (ワッチョイ f55c-W5vA [218.218.22.225])
2023/03/03(金) 12:14:59.23ID:o6EY7x580
ほとんどのエンジニアがhtmlもcssもまともに使えない職場みたいだからなw
673デフォルトの名無しさん (オッペケ Sr29-tD1/ [126.194.18.54])
2023/03/03(金) 12:33:55.85ID:DJxhSXLyr
職場じゃなくてそもそもエンジニアたちがhtmlとcssが絶望的にゴミレベルしかいないんだよ
海外でも同じ傾向がある

なのに自分たちはできると勘違いしてるから話が通じないんだよな
674デフォルトの名無しさん (ワッチョイ f55c-W5vA [218.218.22.225])
2023/03/03(金) 13:31:04.49ID:o6EY7x580
jquery使えます!って嘘ついたデザイナーの尻拭いをさせられたことはあったな
675デフォルトの名無しさん (オイコラミネオ MM19-055g [150.66.65.10])
2023/03/03(金) 13:32:46.28ID:yQajwbSzM
>>673
そういうお前は逆にサーバサイドは絶望的な腕前なんじゃないの?
676デフォルトの名無しさん (オッペケ Sr29-tD1/ [126.194.18.54])
2023/03/03(金) 15:00:35.71ID:DJxhSXLyr
>>675
わざわざ煽りご苦労
サーバーサイドが絶望的どころかサーバーサイドもやってるが?
むしろフロントよりも先にサーバーサイドからやってたわ
677デフォルトの名無しさん (オイコラミネオ MM19-055g [150.66.65.10])
2023/03/03(金) 15:24:30.84ID:yQajwbSzM
>>676
という人がどれだけいるのって話でしょ。
おれもサーバサイドの人というか、むしろwebじゃないサーバの人だけど。
678デフォルトの名無しさん (オッペケ Sr29-CaCf [126.179.251.66])
2023/03/03(金) 18:33:43.53ID:omRbdhVsr
やたらイキって言葉遣いが悪いのと同じ回線だと肩身が狭い・・・
679デフォルトの名無しさん (ワッチョイ 637c-3nMf [221.241.223.58])
2023/03/03(金) 21:01:23.22ID:bsut6PhH0
>>670
デザイナーはせいぜいコンポーネント作ってStoryBookに載せるまでが責務だろw
680デフォルトの名無しさん (ワッチョイ ab46-W5vA [153.174.188.249])
2023/03/03(金) 22:20:39.69ID:Q9LzyMl00
プログラマにバカにされてreact勉強中のデザイナー様が激おこです
681デフォルトの名無しさん (ワッチョイ 637c-W5vA [43.235.241.201])
2023/03/03(金) 22:30:19.52ID:yxGxd3AO0
webデザイナーってjqueryぐらいまでは覚えさせられたかもだけど
流石にreactやvueまでやれってのは酷ではw
そんなのフロントエンドエンジニアの仕事でしょw
682デフォルトの名無しさん (ワッチョイ ab46-W5vA [153.174.188.249])
2023/03/03(金) 23:30:24.99ID:Q9LzyMl00
だってフロントエンドエンジニアはhtmlもcssもわからないバカばっかりなんだもん
683デフォルトの名無しさん (JP 0H4f-W5Lg [126.249.157.89])
2023/03/04(土) 18:46:55.35ID:erCI1bTUH
javascriptコードでバグの伝搬を制限して拡張性を高める必要性のある堅牢なプログラムなんて不要だからでしょ
684デフォルトの名無しさん (JP 0H4f-W5Lg [126.249.157.89])
2023/03/04(土) 18:52:38.30ID:erCI1bTUH
みんななんで仲良くなれないかな
685デフォルトの名無しさん (ワッチョイ 8279-rvSK [27.132.129.202])
2023/03/05(日) 16:50:40.53ID:RB9OOifa0
仕事だし自分の領域に少なからず関わってくるんだから覚えろよ
わからないじゃねーんだよボケ^^
これでよし
686デフォルトの名無しさん (ワッチョイ 6710-zj+m [124.100.11.9])
2023/03/11(土) 23:19:16.39ID:qvilA0zq0
sortメソッドは必ず、比較関数と一緒に使用する必要ありますか?
sortメソッドは数値を並びかえだと比較関数と一緒でないとうまくいかなくて、
でも、文字列のソートなら、ソート関数なくてもうまくいくみたい。
sortは文字列でも数値でもソート関数使った方がいいのでしょうか?
687502 (ワッチョイ 6701-7U6a [60.103.73.19])
2023/03/12(日) 04:39:15.28ID:PQcYNrkb0
>>686
疑問に思うことがあれば、まずMDNで関数の仕様を確認してみるといい
sort 関数なら、解説に関数を指定しなかった場合についてもちゃんと書いてある

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

> compareFn が与えられなかった場合、undefined 以外のすべての配列要素は文字列に変換され、文字列が UTF-16 コード単位順でソートされます。例えば、"banana" は "cherry" の前に来ます。数値のソートでは、9 が 80 の前に来ますが、数値は文字列に変換されるため、Unicode 順で "80" が "9" の前に来ます。undefined の要素はすべて、配列の末尾に並べられます。
688デフォルトの名無しさん (ワッチョイ 6710-zj+m [124.100.11.9])
2023/03/12(日) 09:33:44.40ID:do9jOqKh0
>>687
ありがとうございます。
689デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/12(日) 10:07:09.74ID:mPShShEs0
ティラノスクリプトでゲーム作ろうとしたら、結局JSまで触らないと無理そうで及び腰・・・
・例えば変数aに"gazou1"という文字列を入れる
・『【"変数a"+.jpg】を表示』みたいな記述?? ←ここが分からない
・結果、gazou1.jpgが表示される
こんな感じの、変数に入れた文字列を使用して画像表示ってできますか?
JS 変数 画像表示 とかで調べても情報が多すぎてさっぱり分からない
690デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.194.236.231])
2023/03/12(日) 11:40:49.62ID:SvUIzONJr
>>689
専用の掲示板へどうぞ
https://tyrano.jp/home/bbs
691デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/12(日) 12:27:02.18ID:mPShShEs0
>>690
誘導ありがとうございます
ティラノだけでは無理そう&ティラノ上ではJSの記述が使える、という事でこちらで質問しました
なのでJSで可能か不可能かだけでも教えて頂けると助かります
JSで不可能なら調べたところで出て来ないでしょうから延々調べ続けるはめに・・・
692デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.194.232.61])
2023/03/12(日) 12:49:02.36ID:PwnTbWEur
>>691
まずはティラノスクリプトに詳しい人に聞いてみるのが筋ではないですか?
同じ問題に遭遇した人もきっといるはずでノウハウも蓄積されてると思いますよ
wikiなんかもあるようですし、そちらも確認してみましたか?
693デフォルトの名無しさん (ワッチョイ dff0-S+nL [211.19.68.36])
2023/03/13(月) 10:07:27.43ID:/ROF2oq40
>>689
こういうこと?
===============================
<body>
<a href='#' onclick='fun'>link</a>
</body>

<script>
function fun(){a.href='https://....'}
</script>
===============================

===============================
<body>
<a href='#' id='href'>link</a>
</body>

<script>
href.onclick=function(){a.href='https;//...'}
---------------------
// または
let aLink=document.querySelector('[a]');
aLink.addEventListener('click',()=>{a.href='https://...'}):
</script>
================================
694デフォルトの名無しさん (ワンミングク MMbf-Spm0 [153.140.117.134])
2023/03/13(月) 17:49:23.15ID:dqLl9/D/M
>>681
むしろjQueryの方が難しいと思うけど...
695デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/13(月) 19:09:00.85ID:LN5ju60U0
>>693
表示する画像を変数を使って切り替えたいので、
if 変数a=='花' なら 花.jpg を表示 else 変数a=='山' なら 山.jpg を表示
みたいな感じで一応は表示できるのですが、表示したい箇所が複数あるので
if 変数b=='花' とか if変数c==’’花' とかで凄く長くなりそうなのです
でももし 変数の中身+.jpg みたいな記述がjsに存在するなら
aの場所には 変数aの中身+.jpgを表示 bの場所には変数bの中身+.jpg みたいに凄く簡略化できるかなって

教えて頂いたコードを調べてみます!ありがとうございます!
696デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.243.197])
2023/03/13(月) 19:18:34.65ID:z8Hv0b/wr
>>695
他板にティラノスクリプトスレがあったんで
専用掲示板より5chがいいのであれば続きはそちらでどうぞ
http://2chb.net/r/gamedev/1428724538/
697デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/13(月) 19:42:26.91ID:LN5ju60U0
>>696
そこは質問スレじゃないのでどうにも質問しづらくて
とうかJSの質問スレでJSの質問してるのに「ティラノ上で動かしてる」ってだけで、
そこまで「よそいけ、よそいけ」って言わなくても・・・
698デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.243.197])
2023/03/13(月) 20:03:21.60ID:z8Hv0b/wr
>>697
>そこは質問スレじゃないのでどうにも質問しづらくて
そのスレを「質問」で検索してみると皆質問してるのが分かります
気後れする必要はないと思いますよ

>とうかJSの質問スレでJSの質問してるのに>「ティラノ上で動かしてる」ってだけで、
>そこまで「よそいけ、よそいけ」って言わなくても・・・
あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
それについてはこのスレよりティラノスレや専用掲示板の方が的確なアドバイスが得られるはずです
違いますか?
699デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.243.197])
2023/03/13(月) 20:12:22.98ID:z8Hv0b/wr
ついでに「ティラノ上で動かしてる」JSについてもそちらで聞いた方が良いでしょう
ティラノスレを見渡すとJSのコードもたくさん貼ってありますよ
700デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/13(月) 20:21:27.02ID:LN5ju60U0
>>698
>あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
違います。自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
最初にティラノの名を出したことで誤解を招いたかも知れませんが、
>>689に >JS 変数 画像表示 とかで調べても
>>691に >なのでJSで可能か不可能かだけでも教えて頂けると助かります
と書いてあるように、ティラノではなく、あくまでJSについて尋ねています
701デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.243.197])
2023/03/13(月) 20:45:42.74ID:z8Hv0b/wr
>>700
>自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
では聞きますが、それが何のために必要なのですか?
702デフォルトの名無しさん (ワッチョイ 7f03-BDEg [153.222.136.198])
2023/03/13(月) 20:57:54.94ID:ayGBKgIT0
拡張子を付加する機能は無いよ
WBC始まってキャッチボールしたい気持ちはわからんでもないけども
703デフォルトの名無しさん (ワッチョイ 7fbb-EKUa [217.178.27.228])
2023/03/13(月) 20:58:10.41ID:bqu+B+fY0
>>700
> 「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」

はい。可能です
imgタグにデータURLを引き渡し表示することはごく普通に見ることができます
Base64エンコードされた文字列とmediatypeをセットするだけです
704デフォルトの名無しさん (ブーイモ MMff-tpC5 [49.239.64.189])
2023/03/13(月) 20:59:33.75ID:1Iq9NysVM
>>700
あなたの質問はjavascriptの質問ではありますがティラノスクリプトの仕様を知らないと答えられないものです
こちらはティラノスクリプトの仕様を知らないのであなたの代わりに調べることから始めなければなりません
ティラノスレであれば詳しい人がいると思うのでそちらへどうぞ
705デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/13(月) 21:59:41.61ID:LN5ju60U0
>>701
上述の通りゲーム作成と作業の簡略化のためです
>>702
拡張子の付け足しは誤解を招く表現でした。変数の中にある文字列と同じ名前の画像を表示するってことです
>>703
ありがとうございます。調べてみます
>>704
あくまでJSの事として聞いているので「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」って感じの答えで十分です
ティラノスレでJSのこと聞くよりJSスレでJSのこと聞く方が早そう、って考えはそこまで変ですか?
706デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.243.197])
2023/03/13(月) 22:18:31.29ID:z8Hv0b/wr
>>705
>上述の通りゲーム作成と作業の簡略化のためです
それは「ティラノスクリプトで変数に応じた画像表示する」こととは違うのですか?

>「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」
このスレでそんな回答をもらうよりはティラノスレで質問して
「ティラノスクリプトではみんなこうやってるよ」って回答をもらう方が何倍も早くて確実だと思いますがいかがでしょう
707デフォルトの名無しさん (アウアウウー Sa2b-lsaJ [106.146.86.167])
2023/03/14(火) 01:06:18.93ID:VmfXTFqwa
例えば、jQuery で、

<img id="photo_1" src="a.png">
を、以下に変更するなら
<img id="photo_1" src="image_1.jpg">

// :first は、最初に見つかったもの
$( '#photo_1:first' ).each( function ( index, elem ) {

const image_1_basename = "image_1"
const image_1_filename = image_1_basename + ".jpg"

$(this).attr('src', image_1_filename) // 設定
} )
708デフォルトの名無しさん (テテンテンテン MM8f-Kzia [133.106.54.171])
2023/03/14(火) 02:37:35.49ID:JIhs77SCM
JSスレでJSのこと聞きたいんならティラノの名前出すなよ
709デフォルトの名無しさん (スップ Sd7f-yYQx [1.72.0.185])
2023/03/14(火) 08:16:42.83ID:gMQMDZBfd
それはそう
710デフォルトの名無しさん (ワッチョイ dff0-S+nL [211.19.68.36])
2023/03/14(火) 13:16:01.19ID:bBCbUtGh0
jpegの名前を動的に指定できるよ
711デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.194.234.17])
2023/03/14(火) 13:21:05.82ID:crjDIavXr
>>705
ティラノについて少し調べたのでスレ違いを承知の上で書きます
あなたが>>689>>695でやりたいことは
[bg storage="&f.bg + '.jpg'" time=1000]
というような書き方で実現できるかと思います

簡単に説明します
まず「&f.bg」の「&」はエンティティと呼ばれるもので変数の値をタグのパラメータとして渡すときに使用します
https://tyrano.jp/usage/tech/hensuu
の最後に説明があります

そして、storageパラメータに渡す際に「 + '.jpg'」で拡張子を連結しています。これは
https://tyrano.jp/sample2/code/kiso/19#demo
のkaisetsu/19_variable_1.ksの415行目~に変数に対して数値演算をした値を
パラメータに渡す例がありました。文字列の連結も同様に可能です

これによって、変数f.bgの値が「花」ならば「花.jpg」が、「山」ならば「山.jpg」が表示されます
例は背景ですがキャラやその他の画像でも可能だと思います
712デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.194.234.17])
2023/03/14(火) 13:30:55.51ID:crjDIavXr
>>705
なお、簡単なサンプルで動作確認をしました
https://tyrano.jp/usage/tutorial/moji
上記チュートリアルに従って新規プロジェクトを作成し、
first.ksの内容を以下のように書き換えて実行してみてください

*start
[wait time=100]

背景を変更します。[r]
[link target=*select_room]<教室>[endlink][r]
[link target=*select_rouka]<廊下>[endlink][r]
[s]

*select_room
[eval exp="f.bg='room'"]
[jump target=end_select]

*select_rouka
[eval exp="f.bg='rouka'"]
[jump target=end_select]

*end_select
[cm]
[bg storage="&f.bg + '.jpg'" time=1000]
[jump target=start]
713デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/14(火) 20:28:58.71ID:2HNLo12V0
>>711
ありがとうございます!!できました!!
714デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
2023/03/14(火) 20:53:16.27ID:2HNLo12V0
作業が一気に楽になりました!
>>711も他の方も本当にありがとうございました!
そして不可能と思いこんでたことが実は可能だったあたりはすみませんでした!
715デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.252.137])
2023/03/14(火) 20:53:28.39ID:GiZ8CeD1r
>>713
解決したのならなによりです

が、今回無駄に遠回りをしてしまったのは自覚、反省しましょう
あなたはこの問題の解決はティラノ単体では無理だと決めつけてしまったためにこのスレで質問しましたが
その判断は正しくありませんでした

繰り返しになりますが、この先また何か躓いたときはまずティラノの掲示板なりスレなりで聞いてみるようにしましょう(たとえJSに関することであれ)
その方が解決が早く、的確なはずです
716デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.252.137])
2023/03/14(火) 21:02:42.69ID:GiZ8CeD1r
>>714
ちょうどかぶってしまいましたが、ちゃんと自分の非を認められる人で安心しました

こちらも少し言葉がキツくなってしまった点はお詫びします
717デフォルトの名無しさん (ササクッテロラ Spdb-Muon [126.182.172.77])
2023/03/15(水) 01:17:49.11ID:sTLgg4Iop
初めまして

Pixiv filter(GitHubで公開、リンクはスパム対策で貼れず)という拡張機能がありまして、それに似たものを自作したいと思い立ち、色々調べてみました

別スレにて、検索画面上での作品ごとのタグは、画面には表示されないもののデータとしては生成されている、という事を伺ったのですが、
どこに生成されているのか、どうやったら参照できるのかなどが分からず、苦戦しております。

ご教授頂ければ幸いです
718デフォルトの名無しさん (アウアウウー Sa2b-lsaJ [106.146.115.112])
2023/03/15(水) 02:28:06.62ID:i4bxOxoza
これか?

github.com/kazu-ux/PixivFilter

React, TypeScript
719デフォルトの名無しさん (JP 0Hdb-mIEw [126.249.157.89])
2023/03/15(水) 07:58:24.49ID:q+AMrJS6H
反省なんて必要ないわ、なんか強迫症的なやつがうざい
なんなんだ、執着が過ぎる
720デフォルトの名無しさん (JP 0Hdb-mIEw [126.249.157.89])
2023/03/15(水) 08:01:02.20ID:q+AMrJS6H
プログラムではすべてのタグを検出して配列等に格納しているが
そこから抽出して出力する処理をしてるってことじゃない?
見てないからわからんけど
721デフォルトの名無しさん (スプッッ Sd7f-ysRc [1.75.242.214])
2023/03/15(水) 09:37:50.61ID:OLitJJv/d
>>717
なんか見覚えあると思ったらこれか
http://2chb.net/r/hp/1439005423/342
343をレスしたの俺だけど回答の内容を理解できなかったってこと?
分からないところがあったのなら追加で質問すればよかったろうに
それをせずに全然違うスレで聞き直してるのはなんで?
722デフォルトの名無しさん (JP 0Hdb-mIEw [126.249.157.89])
2023/03/15(水) 20:45:42.17ID:q+AMrJS6H
Pixiv filterが何なのかわからないし確認もしてないけど、

例えば複数の作品毎にTagオブジェクトがあったとして、
Tagのプロパティに表示させるか表示させないかを判定するプロパティがあり
そのプロパティ名がshowAbleで、表示を許可するのは、showAble:true
許可しない場合には、showAble:false
とされていたとすれば

まず最初にすべての作品Tagオブジェクトが格納されている配列を取得し(もしくは配列に取得する関数を作り)
(let tagArr=[tag1,tag2,tag3,tag4....];)

その配列から、tag.showAble=trueであるオブジェクトを取得して別の配列(showAblerArray)に格納し
(let showAbleArray=[] ; for(let t of tagArr){ (if(t.showAble==true){showAbleArray.push(t)

showAbleArrayの全要素に対して、表示させる処理をする
(for(let s of showAbleArray){,,,,,,どこに表示させるか......})

っていう感じでどうですか?
723デフォルトの名無しさん (ワッチョイ 7fdb-JIpj [217.178.96.73])
2023/03/15(水) 22:44:21.64ID:ohrI2qnX0
jQueryはなぜ嫌われる?
簡単な構文で便利だと思うが…。
他のライブラリ・フレームワークとの互換性が高ければいいのに。
724デフォルトの名無しさん (テテンテンテン MM8f-PrUD [133.106.32.56])
2023/03/15(水) 23:48:50.56ID:T0OxazTtM
技術的には好かれてるわけでも嫌われてるわけでもない
スレ的には脈絡なく蒸し返す厄介な奴がいるので敬遠される
725デフォルトの名無しさん (JP 0Hdb-mIEw [126.249.157.89])
2023/03/16(木) 07:03:01.34ID:Hd88hZaKH
嫌われてはないんだろうけどスレチなんでない?
726デフォルトの名無しさん (JP 0Hdb-mIEw [126.249.157.89])
2023/03/16(木) 07:15:13.56ID:Hd88hZaKH
javascriptで作られたプログラムの処理に関して
Jqyeryを使えば簡単だよって言われても
いやいやここはjSで書きたいんでってなるでしょ
そういう質問に対してjqのほうが簡単っていうのがよくわからん

フレームワークの質問スレは
ベース言語のすれとは別に立てたほうが
727デフォルトの名無しさん (ワッチョイ 7f7b-NJMI [153.178.229.141])
2023/03/16(木) 09:02:04.98ID:c9lqR0yG0
www
728デフォルトの名無しさん (ワッチョイ df79-EKUa [27.132.129.202])
2023/03/16(木) 10:39:46.62ID:fxj0X8UB0
フレームワークスレは一応立ってるね
糞スレだからそこで質問して回答があるのか知らんけど
729デフォルトの名無しさん (オッペケ Srdb-k1Ry [126.179.240.140])
2023/03/16(木) 11:25:08.38ID:QjQVIFFDr
>>719
これもしかして私に対して何か言おうとしてる?
もしそうならもう少し具体的に問題点を指摘してもらえないかな
730デフォルトの名無しさん (ワッチョイ dff0-S+nL [211.19.68.36])
2023/03/16(木) 15:46:42.93ID:FgyDZ6E70
いえいえ、違います、気にしないでください
731デフォルトの名無しさん (ワッチョイ 6701-ob1i [60.118.122.145])
2023/03/16(木) 20:33:58.52ID:ParHajkN0
>>730
あなたは>>719とワッチョイもIPも違うようだが…
732デフォルトの名無しさん (スップ Sd7f-ysRc [1.72.6.83])
2023/03/16(木) 20:55:51.48ID:Olf8APhOd
>>722
どうですか?も何もそんな都合のいい妄想データを元に書いたコードなんぞ
役に立たないどころか混乱させるだけだからやめようよ
733デフォルトの名無しさん (JP 0Hdb-mIEw [126.249.157.89])
2023/03/16(木) 21:11:03.92ID:Hd88hZaKH
混乱させるだけとかwww
そもそも解答者がわざわざ対象コードを検索して読み込み
そして質問者が満足するようなコードを生成するとか、自分は絶対しないw

質問者は
・何やら検索するらしい
・検索はタグで行うらしい
・タグで検索しても表示するものとしないものがあるらしい

その3点でアドバイスするのなら
・検索ワードでヒットする画像を抽出する
・ヒット判定は画像のタグプロパティで判定
・判定でヒットした画像を1枚もしくは複数枚表示する

とした場合で、初心者初学者向けにアドバイスするのなら
上記の感じのアドバイス以外に何かできるアドバイスあるん?
質問の質以上のアドバイスなんてできない
まずはオブジェクトとプロパティあたりから始めるしかないっしょ
って思ってのアドバイスなのねん
734デフォルトの名無しさん (スップ Sd7f-ysRc [1.72.6.83])
2023/03/16(木) 21:38:40.67ID:Olf8APhOd
質問者がわからないと言ってるものには具体的な対象があるわけよ
それを無視して一般的な考え方のアドバイスをするなら抽象的な話にとどめればよくて
わざわざデタラメコードを生成することはなかろ
735デフォルトの名無しさん (JP 0Hdb-mIEw [126.249.157.89])
2023/03/16(木) 22:01:47.84ID:Hd88hZaKH
それはそうですね
おっしゃる通り
でもデタラメとか言わんでください!
736デフォルトの名無しさん (スプッッ Sd7f-ysRc [1.75.239.249])
2023/03/17(金) 21:04:07.19ID:irjN28+Dd
他に適切な表現が見つからなかったからごめんな
737デフォルトの名無しさん (ワッチョイ 275f-cRUl [14.8.104.32])
2023/03/17(金) 21:08:34.06ID:ZP9+v2PL0
こっちがデタラメなコード書くと見かねていい感じのコード書いてくれるツンデレ
738デフォルトの名無しさん (ワッチョイ bf01-QD5u [126.34.214.202])
2023/03/18(土) 02:26:56.50ID:dC3/JFCa0
すみません、私の知識不足というか理解不足も大きそうですので、手が出るところからさせて頂こうと思います。

javascriptの「fetch」メソッドなのですが、これはjsonファイルを読み込む事はできないのでしょうか?ローカルで試しましたが、エラーになってしまうようです
739デフォルトの名無しさん (ワッチョイ 2261-ItkS [61.214.177.246])
2023/03/18(土) 05:10:03.75ID:s5wH/EpL0
>>738
fetchやXHRも >>467-473 と同様基本的にFileURIでのアクセス不可
740デフォルトの名無しさん (ワッチョイ bf01-QD5u [126.34.214.202])
2023/03/18(土) 15:36:03.94ID:dC3/JFCa0
ありがとうございます。「ローカルのサーバーを立てる」と良いらしいのですサーバーは専用のパソコンでないと、セキュリティ的にも危険と聞いた事もありますが、大丈夫なのでしょうか。また、実際やるとしたら、どのような方法があるでしょうか。
741デフォルトの名無しさん (ワッチョイ 2f5f-6AqJ [14.8.104.32])
2023/03/18(土) 15:40:55.59ID:T8cp6VGg0
Xamppつかっておけばよろし
742デフォルトの名無しさん (JP 0Hbf-BQ3C [126.249.157.89])
2023/03/18(土) 19:03:06.43ID:xpgWDt8BH
>>740
vscodeって使える?すごく簡単なエディタ
そのエディタでliveServerっていう拡張があるんだけど使えるか試してみたら?
743デフォルトの名無しさん (スップ Sd42-bksZ [49.97.103.47])
2023/03/18(土) 21:30:20.18ID:HGxbjpaKd
Promise.race()で複数のPromiseを渡して、最初に終了したタスクのPromiseを受け取ったあと、同様に順次残りのタスクを完了したものから受け取るような書き方はできますか?
(最終的にすべての非同期タスクの終了まで繰り返す)

Pythonでいう、as_completedのように複数非同期タスクを、終了次第順次ループで受け取るような形です。
744デフォルトの名無しさん (ワッチョイ e295-QD5u [221.133.86.105])
2023/03/19(日) 12:35:04.92ID:DxTl2kdL0
>>741 >>742
vscodeの方を使わせて頂きました。お二方ともアドバイス、ありがとうございました。

余談ですが、jsonファイルに単なる文字列(あああ、abc、123)などを単発で格納するとしても、「名前:値」のフォーマットは守らないといけないんでしょうか(名前をいちいち宣言しないとダメなのか)。
745デフォルトの名無しさん (ワッチョイ e295-QD5u [221.133.86.105])
2023/03/19(日) 12:36:07.26ID:DxTl2kdL0
正確には「{"名前":値}」ですね。省略できれば楽だなと思ったのですが。
746デフォルトの名無しさん (スプッッ Sd62-Gkow [1.75.215.95])
2023/03/19(日) 12:59:08.70ID:4pa7IAk9d
{"名前":値}はあくまでオブジェクトの形式であって文字列や数値のみを返したいなら不要
ただし文字列は"あああ"や"abc"とする必要はある
https://www.json.org/json-ja.html
747デフォルトの名無しさん (ワッチョイ e295-QD5u [221.133.86.105])
2023/03/19(日) 13:08:00.26ID:DxTl2kdL0
ありがとうございます。おそらく

"abc", "あああ"

のようなカンマ区切りで大丈夫でしょうか。
748デフォルトの名無しさん (スプッッ Sd62-Gkow [1.75.240.230])
2023/03/19(日) 13:20:25.80ID:S0dCUzy1d
単一の値でない場合は配列にすること
["abc", "あああ"]

有効なjson形式かどうかはJSON.parse()に食わせてみるといい
JSON.parse('"abc", "あああ"'); //NG
JSON.parse('["abc", "あああ"]'); //OK
749デフォルトの名無しさん (ワッチョイ e295-QD5u [221.133.86.105])
2023/03/19(日) 14:04:53.34ID:DxTl2kdL0
>>748
参考になりました。ありがとうございます。
750デフォルトの名無しさん (ブーイモ MM4e-VSrg [133.159.153.15])
2023/03/19(日) 15:26:18.81ID:FTc6ajskM
>>743
各promise完了後に順次実行したい共通処理をmapしてthenでチェイン

Promise.all(promises.map(p=>p.then(log(“resolved”)))).then(log(“All finished”);

function log(message=“”) {
return (x) => {
console.log(`${message}: ${x}`);
return x;
}
}
751デフォルトの名無しさん (ワッチョイ d755-a1qf [220.97.196.212])
2023/03/19(日) 16:15:48.14ID:/GeuLHtL0
趣味でWebサイトを使うのにJSを勉強しだしてまだ3年目なのですが、
なぜか年明けから会社のDX担当にされました。
今社内システムがIE9向けにActiveXが使われているのですが、Edgeに移行するので動くように直してと言われています。
これまで自分なりにいろいろ調べてきて、とりあえずHTML/CSSなどの見た目の部分と、大したことをしていないJSの部分は移行できたのですが、
肝心のActiveXであれこれやっているところを直すことができません。
期限は3月末までで苦しんでいます。

例えばこのような箇所があります。
var connection = new ActiveXObject("ADODB.Connection")
var recordset = new ActiveXObject("ADODB.Recordset")
var connectionString = "Provider=sqloledb;Data Source=~~~
var query = "~~~
connection.Open(connectionString)
recordset.Open(query, connection)
while (!recordset.EOF) {
var encryptedData = recordset.Fields("data").value
var decryptedData = decryptData(encryptedData, decryptionKey)
~~~
recordset.MoveNext()
}
これをEdgeで代替手段で実装しようと思ったら、どのようなコードになりますか?
ライブラリやフレームワークは使ってはいけないことになっていますが、バレなさそうなものなら中に組み込むつもりです。
どうかよろしくお願いします。
752デフォルトの名無しさん (ワッチョイ 2f5f-7n5R [14.11.194.224])
2023/03/19(日) 16:36:55.71ID:HI67bUFb0
代替手段なんてない
仕事振ったやつが何も分かってない

あれこれやってる内容をなにか別の技術で1から組み立てる必要あり
それかedgeのIEモードは検討出来ないの?
753デフォルトの名無しさん (ブーイモ MM42-VSrg [49.239.65.72])
2023/03/19(日) 17:21:20.47ID:HTlOdPesM
今から実装してテストしてリリースしてその後の問い合わせ対応や運用に備えるのはスケジュール的に無理でしょ

3月末を死守する必要があるならIEモード1択
IEモードで時間稼ぎしてその間にサーバーサイドからDBアクセスする仕組みを作る

IEモードにするにしてもグループポリシーの変更・適用のテストや問い合わせ対応の準備を考えればそれでも時間が足りないくらい
754デフォルトの名無しさん (スプッッ Sd62-Gkow [1.75.233.226])
2023/03/19(日) 18:07:07.17ID:EAkcZvWPd
>>751のコードにぶち当たった時点でEdgeというかブラウザ単体で実現できないことには気がついて欲しいものだが
仮にも2年はJSを勉強していたと言うなら
755デフォルトの名無しさん (ワッチョイ 2279-1FFK [27.132.129.202])
2023/03/19(日) 18:51:42.92ID:M92RK9ru0
JSONでダミー値をコメントのつもりで使ってたらエスケープできてない\でパースエラーになるデータができたりして使うのが怖くなった
やっぱコメントぐらいは定義必要だったなこれ
人間が手書きするものじゃないとしてもよく普及したもんだ
756デフォルトの名無しさん (ワッチョイ 2279-1FFK [27.132.129.202])
2023/03/19(日) 18:56:28.01ID:M92RK9ru0
>>751
そういうのってEdgeのIEモードに移行して終わりでしょ
周囲も期間的にその程度しか期待してないと思うけど
757デフォルトの名無しさん (ワッチョイ 2279-1FFK [27.132.129.202])
2023/03/19(日) 19:09:54.29ID:M92RK9ru0
ど素人だとIEモードが何なのかで3月は潰れるかもしれんけど一応
基本的には社内のADサーバでGPO管理してる奴にEdgeのIEモードのサイトリストに追加してもらう
これは君の担当以外にもIEモードのサイトは糞の山程あって既知の対応だからおそらく追加を依頼するだけでいいはず
うまくすればそれだけで作業が終わる可能性もある
758デフォルトの名無しさん (ワッチョイ a2bd-qiwJ [125.194.52.6])
2023/03/19(日) 19:35:09.37ID:vtMigryt0
>>755
コメントの書式があったって書式から逸脱する文字列を入れてパースエラー出す未来しか見えんわ。
759デフォルトの名無しさん (ワッチョイ 2f5f-6AqJ [14.8.104.32])
2023/03/19(日) 19:46:06.22ID:GXvqERSA0
たぶんIEを前提とした目の前にあるコードを読み解いて作り直すより設計書用意したほうが早い

あるいはAIと二人三脚
760751 (ワッチョイ d755-a1qf [220.97.196.212])
2023/03/19(日) 19:54:47.83ID:/GeuLHtL0
みなさまありがとうございます
IEモードは1,2度調べて、いつまでこのモードがあるか分からないからと止めたのですが、
やはり時間稼ぎも考えるとこれしかなさそうです。
その間に根本的な解決策を探したいと思います。

なぜか年明けから会社のDX担当にされました。
と言いましたが、実はそれは嘘です。
年末にかけて社員が半分以上辞めて、残った人の中で一番詳しそうだったのが僕だったのです。
実は、サーバーサイドをいじらないといけないのだということは、薄々気づいていました。
でも、今動き続けているサーバーを触れる人が誰もいないのです。
僕も、SQLというものがある、という程度の知識しかないので、触る気にもなりません。

とりあえず夏のボーナスまで引っ張って、無理そうだったら自分も転職します。
今動いているものをうっかり壊したら、止められなくなりそうなので慎重にがんばります。
ありがとうございました。
761デフォルトの名無しさん (スプッッ Sd62-Gkow [1.75.215.110])
2023/03/19(日) 19:55:19.68ID:xryn/wmcd
>>755
怖いも何もパーサーがきっちり仕事してる証拠じゃないの?
コメントを書きたいって需要に対してはJSON5やJSONCって派生規格があるから
それらを検討するべき
762デフォルトの名無しさん (ワッチョイ 2279-1FFK [27.132.129.202])
2023/03/19(日) 20:23:01.76ID:M92RK9ru0
何が理由かは置いといて技術を含めた社員がごっそり半数も辞めてる状況だとその会社から賞与もまともには出ないだろう
Edgeへの移行時期としてもかなり遅れてるし有給消化しつつ転職活動に専念した方がいいね
763デフォルトの名無しさん (ワッチョイ 2279-1FFK [27.132.129.202])
2023/03/19(日) 20:33:33.23ID:M92RK9ru0
>>761
規格はあれど既存の環境に適用できるものではないのがな
JSONとして扱う前にJSONCとしてコメント抜く前処理でも通すか
764デフォルトの名無しさん (スップ Sd42-Gkow [49.97.109.220])
2023/03/19(日) 22:37:02.99ID:SC8SOdGAd
>>763
パーサーにケチつけてるよりはその方が建設的でしょうよ
765デフォルトの名無しさん (アウアウウー Sa9b-jnF6 [106.133.163.48])
2023/03/20(月) 03:23:46.29ID:iV2jn8x9a
>>738
VSCode の拡張機能では、

open in browser では、ローカルファイルアクセスになる。
この場合、CORS など、ブラウザの色々な制限がある

file:///C:/Users/Owner/Documents/test/index.html

一方、Live Server では、
自分のPC 内にサーバーを立ててから、そこから配信されるので、テストしやすい

http://127.0.0.1:5500/test/index.html

>>751
そういうのは、Excel, VBA, Access とかじゃないの?
ベンチャー企業やプロのバックエンドは、Ruby on Rails だけど
766デフォルトの名無しさん (アウアウウー Sa9b-jnF6 [106.133.163.48])
2023/03/20(月) 04:02:42.23ID:iV2jn8x9a
>>743
Promise.all/allSettled とか?
767デフォルトの名無しさん (ワッチョイ a3ad-a1qf [210.250.191.46])
2023/03/20(月) 19:47:12.99ID:PTBUy+ct0
chromeの拡張機能で、「ngWord.json」内のデータを「background.js」経由で「content_script.js」に格納しようとしていたのですが、上手くいきません。コードでおかしな点等あれば、ご教授頂けないでしょうか。

【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
// content_script.jsにデータを送信
chrome.runtime.sendMessage({ngWords: data});
});

【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords); // 受信したデータを表示
}
});
768デフォルトの名無しさん (ワッチョイ c603-MaqH [153.222.136.198])
2023/03/20(月) 19:56:51.89ID:hUotJVz90
>>767
バックグラウンドからタブに送信するならchrome.tabs.sendMessageじゃないかな?
769デフォルトの名無しさん (ワッチョイ a3ad-a1qf [210.250.191.46])
2023/03/20(月) 20:37:35.10ID:PTBUy+ct0
>>768
「タブ」というのは、「content_script.js」のことでしょうか?
だとすると「chrome.tabs.sendMessage(tabId: content_script.js, ngWords: data)のように書く感じでしょうか。
770デフォルトの名無しさん (テテンテンテン MM4e-7n5R [133.106.242.180])
2023/03/20(月) 20:53:08.72ID:mlA7fjwPM
雑な方法としてはアクティブなタブに送ればいいんちゃう?
771デフォルトの名無しさん (ワッチョイ c603-MaqH [153.222.136.198])
2023/03/20(月) 21:36:27.87ID:hUotJVz90
>>769
そうです。background から content_script に送信する場合はchrome.tabs.sndMessage だったと思いますよ
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sndMessage(tabs[0].id,{
ngWordsg:data
})
}})
というような感じで
772デフォルトの名無しさん (ワッチョイ f761-ItkS [124.86.236.22])
2023/03/20(月) 21:40:33.20ID:xjtq7KFo0
最初にコンテンツスクリプト側から何かメッセージ送れば
バックグラウンド側のchrome.runtime.onmessage.addListenerのsender.tab.idでタブID取れるっしょ
773デフォルトの名無しさん (ワッチョイ c603-MaqH [153.222.136.198])
2023/03/20(月) 21:49:32.93ID:hUotJVz90
それならtab.id必要なくてsendResponseで返せるんじゃないかな?
774デフォルトの名無しさん (ワッチョイ a3ad-a1qf [210.250.191.46])
2023/03/20(月) 21:53:15.40ID:PTBUy+ct0
【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sendMessage(tabs[0].id,{ngWords:data})
});
};

【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords);
}
});

このように修正しましたが、上手く取得できないようです。
775デフォルトの名無しさん (ワッチョイ c603-MaqH [153.222.136.198])
2023/03/20(月) 22:00:26.17ID:hUotJVz90
そもそもngWord.jsonの中身とれてますか?ローカルファイルならweb_accessible_resources書いてchrome.extension.getURLで取るんじゃないでしょうか?
776デフォルトの名無しさん (ワッチョイ f761-ItkS [124.86.236.22])
2023/03/20(月) 22:04:38.80ID:xjtq7KFo0
もしかしてスクリプト本当にそれだけなの?
だとしたらcontent_script.js実行される前にbackground.js終わってそう
777デフォルトの名無しさん (ワッチョイ a3ad-a1qf [210.250.191.46])
2023/03/20(月) 22:24:56.04ID:PTBUy+ct0
申し訳ありません、私の知識不足で、よく分かりません。もう一度格闘して、改めて質問させて頂きます。ご教授下さり、ありがとうございます。
778デフォルトの名無しさん (ワッチョイ c603-MaqH [153.222.136.198])
2023/03/20(月) 23:58:23.18ID:hUotJVz90
>>777
めっちゃ適当なこと言ってましたわ
web_accessible_resourcesとchrome.extention.getURLは関係ないっぽいです

まずcontent_scriptが実行されるタイミングでbackgroundからタブにデータを送れるはずなくて
かといってcontent _scriptからメッセージ送ってbackgroundでfetchしたデータを送ろうとしてもセキュリティー的になのか送れない

なのでbackgroundでfetchしたjsonをchrome.storage.local.setで保存してcontent _scriptからchrome.storage.local.getで読み込むが正解っぽいです

暇だったんで...
779デフォルトの名無しさん (アウアウウー Sa9b-jnF6 [106.146.108.71])
2023/03/21(火) 04:01:46.37ID:rEPYZ+tza
漏れはプロジェクトを作って、index.ts に、TypeScript で以下を書いて、
npm/yarn, webpack, babel でビルドすれば、
import で、JSON ファイルやLodash も読み込めるけど

import WordData from "./word_data_tmp.json";
console.log( WordData.length )

const ary = [ ...Array( 5 ).keys( ) ]
// => [0, 1, ....,4]

import shuffle from 'lodash.shuffle';

console.log( shuffle( ary ) );
// => シャッフルされる
780デフォルトの名無しさん (ブーイモ MMbf-LIH3 [49.239.65.144])
2023/03/25(土) 14:02:02.15ID:MQIuadNDM
Next.jsでAPI Routesを使わないのは一般的でしょうか?
781デフォルトの名無しさん (ワッチョイ cb01-KNGW [60.87.173.172])
2023/03/25(土) 18:19:14.13ID:1/y/Yy4J0
「一般的」のような主観的なものてはなく、客観的な定義が必要なのでは
782デフォルトの名無しさん (ワッチョイ eb5f-DdLV [14.8.104.32])
2023/03/28(火) 20:12:53.97ID:RtCr5Rz10
プロミスって何?

あとfetchってasync、await使うのと.then使うのでどっちがいいの?
783デフォルトの名無しさん (ワッチョイ 1ff0-wSlO [211.19.68.36])
2023/03/29(水) 11:27:02.70ID:NxiPtBQP0
>>782
普通に調べれば出てきますよ
調べても調べてもよくわからんって質問をどうぞ
784デフォルトの名無しさん (スップ Sdbf-I21X [1.72.0.185])
2023/03/29(水) 12:55:23.79ID:y04hNuo/d
消費者金融機関だよ
785デフォルトの名無しさん (ワッチョイ eb5f-DdLV [14.8.104.32])
2023/03/29(水) 13:11:20.35ID:6965UHWi0
>>784
絶対に許せないのでxhrにしますね
786デフォルトの名無しさん (ワッチョイ 1f8b-3uzD [211.5.157.105])
2023/03/31(金) 02:32:51.01ID:VdncSfH00
メイン画面でボタンをクリックすると
別ウィンドウが起動し、ニュースサイトを表示するプログラムを組んでいます。

別ウィンドウが起動した時に
そのウィンドウが閉じられたのか、開かれたままであるのかを
メイン画面で判定するにはどういうコードを書けばよいでしょうか?

別ウィンドウでサイトが開かれている間は
1、2、3・・・とカウントし、閉じられると0を
メイン画面にjQueryでレンダリングしようとしています。
787デフォルトの名無しさん (ワッチョイ 3bbd-OuhE [122.133.74.178])
2023/03/31(金) 03:09:38.31ID:29iJjOEC0
>>786
window.closed はどう?
788デフォルトの名無しさん (ワッチョイ 1f8b-3uzD [211.5.157.105])
2023/03/31(金) 11:32:39.06ID:VdncSfH00
>>787
ありがとうございます。
ちょっと試してみます。
789デフォルトの名無しさん (ワッチョイ 6910-bhMa [180.59.92.6])
2023/04/23(日) 22:40:30.72ID:k6QZkjYI0
先日(1週間くらい前)まで動いていたジャバスクリプトが動かなくなった。
ブラウザの不具合を疑って firefox、edge、さらに ie11 まで持ち出したらどれも動かない。
ウインドウズのセキュリティの締め上げかなと思って
スマホ(アンドロイド)で確認したがこっちも動いていない。
押し入れから昔のアイポッドタッチ(iOS9)を持ち出したが、やっぱ動かない。

こんなことってある?
アイポッドタッチなんてスクリプトが動いていたころとなに一つ変わっていないのに
なんでこの前は動いたのに今日は動かないんだ?
1年前のバックアップと差分比較してファイルが壊れていないことは確認した。
ちなみに自分がジャバスクリプトを作成するにあたって参考にしたスクリプトは
いまも普通に動いている。
790デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
2023/04/24(月) 07:00:31.38ID:z1nNn0o4H
エラーも出てないのか?
まったく反応してないのならhtmlで読んでないんじゃね?
791デフォルトの名無しさん (スプッッ Sd73-8Xzj [1.75.215.168])
2023/04/24(月) 08:37:00.30ID:Z0B9bFh/d
動いてた夢を見たんだ
792デフォルトの名無しさん (ワッチョイ a95f-LCeF [14.11.8.0 [上級国民]])
2023/04/24(月) 09:21:53.70ID:U4o0cUkO0
>>789
ブラウザの不具合疑う前に
エラーログ出て無いか確認しろ
エラーログすら出てないならHTML側でちゃんと呼び出せてるか確認しろ
793デフォルトの名無しさん (ワッチョイ 2bbd-L85M [49.129.243.228])
2023/04/24(月) 12:05:07.84ID:VtgoOt7B0
https の証明書が古い
794デフォルトの名無しさん (ワッチョイ 6910-bhMa [180.59.92.6])
2023/04/24(月) 13:08:00.47ID:MpRTlb310
>>792
エラーログを見たらあっさり解決しました。
夜更けに一人で大騒ぎしてごめんなさい orz

いまブラウザの開発者ツールでジャバスクリプトのエラーが見られるんだね。
びっくりした。

原因はHTMLの削除した部分にスクリプトで動かす部分があって
動かすべきものがないから次の処理に行けずエラーになっていました。
スクリプトばかり見ていてHTMLは盲点でした・・・。
795デフォルトの名無しさん (ワッチョイ 91bd-L85M [122.133.75.49])
2023/04/24(月) 13:15:26.56ID:3ESYAe520
開発者ツール超便利だよね
796デフォルトの名無しさん (オッペケ Src5-mXUZ [126.33.81.44])
2023/04/24(月) 13:22:29.25ID:sSUQNn8cr
まあそういうオチだろうなとは

アドバイスを求めるならhtmlを修正したことは伝えるようにしてほしいところ
797デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
2023/04/25(火) 18:51:33.50ID:/Hd1NuvtH
解決したようでなによりなにより
798デフォルトの名無しさん (ワッチョイ eb7d-RykB [1.33.235.4])
2023/04/26(水) 19:26:29.99ID:lfd6T/fN0
http://abehiroshi.la.coocan.jp/

この阿部さんのHPの左のフレームから「舞台出演」を取得したいんだけど、

const frame = await page.$('frame[name="left"]');
 const contentFrame = await frame.contentFrame();

こんな感じでcontentFrameを取得するところまでは上手く行くんだけど、

 const aElement = await contentFrame.$('body table.today tr:nth-child(8) td:nth-child(3) p a');

次の要素を取得する段階になるとnullになってしいます
どうすれば阿部さんの舞台出演を取得できますか?
799デフォルトの名無しさん (ワッチョイ d961-99Et [220.107.169.163])
2023/04/26(水) 20:39:08.46ID:UfBGheQ30
>>798
.todayなんてclass付いてないぞい
800デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
2023/04/26(水) 22:57:11.72ID:Q5IzIMlUH
それってJS?
801デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
2023/04/26(水) 23:08:17.75ID:Q5IzIMlUH
そもそもnullを取得してるってことは所望のオブジェクトが取得できていないってことよん?
802デフォルトの名無しさん (エムゾネ FF33-Nhf9 [49.106.174.76])
2023/04/27(木) 13:47:05.09ID:jYECG79eF
>>798
それ、ChromeのDevツールとかで、Elementの検索にセレクター入力してちゃんとヒットする?
803デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156])
2023/04/29(土) 00:34:06.33ID:FZLDUbkY0
['apple', 'パイナップル', 'pineapple (パイナップル)', 'りんご', 'pineapple']

['apple', 'パイナップル | pineapple', 'りんご']
に別名ふくめて重複削除して整形したいんですがスマートな方法ないですか
804デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23])
2023/04/29(土) 01:41:53.10ID:bskwYySl0
>>803
パイナップルの表記方法はどういう仕様なの?
スマートじゃない方法で実装できてるならそれを貼ってみたら?
805デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156])
2023/04/29(土) 01:58:50.79ID:FZLDUbkY0
>>804
別名がカッコで後ろに付く場合があったりなかったりをまとめたいんです
今は文字列に取り出して正規表現で割ってまた戻して~って頭悪くやってます
806デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23])
2023/04/29(土) 02:08:42.66ID:bskwYySl0
>>805
元の配列には、同じ値が複数、たとえば 'りんご' が何個も入ることがある?

ただ何にしても、現状がどの程度頭悪いのか分からんけどそこそこ泥臭くなるんじゃないかなぁ
807デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156])
2023/04/29(土) 02:20:05.97ID:FZLDUbkY0
>>806
あります
808デフォルトの名無しさん (ワッチョイ 03bd-MgCS [133.209.119.164])
2023/04/29(土) 05:52:34.96ID:q0/EY4lO0
>>807
ちょっと面白そうだったので作ってみたけど、あんまりいい出来にはならなかった。
わざわざ見せるようなものじゃないんだけど、一応貼っとく。
アプローチとしては、単品アイテムまたは別名で括られた同一アイテム毎に配列実体を持たせて、重複排除しながらその実体に放り込んで最後に文字列化する。
複数の別名定義で 2つ以上の名前を括ったり、名前の登場順で連結するようにした。


JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
809デフォルトの名無しさん (ワッチョイ 1bbd-MgCS [119.240.43.251])
2023/04/29(土) 06:04:20.63ID:ZqMIj65v0
あわわ、26-32行目は整理できた

const new-content = [];
alias_ref[item] = alias_content.length;
810デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105])
2023/04/29(土) 20:12:37.30ID:wJzxOo1h0
JavaScriptでタイマー処理をしています。
指定した秒数(ここでは10秒)経過したらタイマーを停止する様にしていますが
タイマーが止まりません。助けてください、、、

$(document).ready(function(){
$("#id_div_test").click(function () {
setInterval(TestFunction , 1000);
});
});

var i_current_second = -1;
function TestFunction()
{
i_current_second++;
if( i_current_second == 10)
{
clearInterval(TestFunction);
}
}
811502 (ワッチョイ d501-nY3o [36.240.121.112])
2023/04/29(土) 20:34:34.21ID:ulzy/WI80
>>810
使い方間違っとるな
そういうときはまずリファレンスを読め
https://developer.mozilla.org/ja/docs/Web/API/setInterval
812デフォルトの名無しさん (ブーイモ MM49-3F9Y [202.214.125.164])
2023/04/29(土) 20:36:30.58ID:WiY5v75xM
clearIntervalの引数に入れるのはsetIntervalから帰ってくるnumber
型エラーでハマるのアホらしいしts使うか無理なら//@ts-checkをファイルの先頭に書いとけ
813デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105])
2023/04/29(土) 20:54:08.29ID:wJzxOo1h0
>>812
わかりません。。。どう書けば良いでしょうか?
814デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105])
2023/04/30(日) 00:03:19.23ID:x92s4/Ng0
>>812
できました!
815デフォルトの名無しさん (ワッチョイ 5b7c-01SL [122.212.18.110])
2023/05/07(日) 14:48:48.64ID:NS1NVPz40
>>810
こういうのはそのまんまChatGPTに聞けばヒントなり、回答、修正案なんかも返してくれ
る。
----
この問題は、`clearInterval`に渡す引数が誤っているために発生しています。`setInterval`に渡したのは `TestFunction`関数ですが、`clearInterval`に渡すのは `setInterval`が返すタイマーIDです。このタイマーIDは `setInterval`を呼び出すと返されます。

以下は修正されたコード例です。

$(document).ready(function(){
$("#id_div_test").click(function () {
var timerId = setInterval(TestFunction , 1000);
// タイマーIDを保持するために変数に代入する
});
});

var i_current_second = -1;
function TestFunction()
{
i_current_second++;
if( i_current_second == 10)
{
clearInterval(timerId); // 正しいタイマーIDを渡す
}
}

ここでは、`timerId`変数を`setInterval`の戻り値として宣言し、`clearInterval`に渡すようにしました。これにより、タイマーが正常に停止するはずです。
816デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.153])
2023/05/08(月) 05:12:47.92ID:AmPaXWnYM
>>815
ここいらんやんけ…
817デフォルトの名無しさん (ワッチョイ 52bd-F1Es [133.209.119.64])
2023/05/08(月) 09:31:16.79ID:nWGvwrRY0
>>815
setIntetval してるスコープの timerId を clearInterval するスコープから参照できる?
818デフォルトの名無しさん (ワッチョイ 5b7c-01SL [122.212.18.110])
2023/05/08(月) 19:39:25.41ID:0kSPeCjv0
エラーが出たらまた聞けば直してくれる
あとほ聞き方の問題だね
819デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
2023/05/08(月) 22:29:23.94ID:BI0XZhvO0
>>815
え?そんな事までChatGPTできるの???すごくね??
どんなシステムになってんだろ。
820デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113])
2023/05/08(月) 23:30:02.71ID:ieW4qdsxM
条件によってスクリプトを途中で止めさせたいんだけど三項演算子じゃreturnするしないを分けるのは無理?
if exitFlag return false
821デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45])
2023/05/08(月) 23:46:59.68ID:PuDhFqQc0
>>820
多分無理だと思うけど、なんで if じゃいけないの?
822デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113])
2023/05/08(月) 23:51:00.55ID:ieW4qdsxM
>>821
三項演算子の中で使ってるからなんか気持ち悪い
823デフォルトの名無しさん (ワッチョイ e25c-KeI6 [203.139.52.200])
2023/05/09(火) 00:52:34.88ID:eLWpr74i0
f = (flag) => flag ? false : true;

console.log(f(true));
console.log(f(false));
824デフォルトの名無しさん (スッップ Sd42-01SL [49.98.137.246])
2023/05/09(火) 00:52:45.73ID:RQydgiqHd
>>819
ChatGPTをプログラム用途で使ったこと無いなら一度つかってみると良いよ。
ググる手間がかなり少なくなる
もちろん、間違い返答の可能性もあるからそこら辺はうまく扱う必要があるけどね。
あとGitHub Copilotはもっとヤバいよ。プログラマーなら一度は使うべき
825デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45])
2023/05/09(火) 01:40:34.46ID:r9kkpYgp0
OSS のソース読むときにも ChatGPT は便利だよ。
内部関数名とか聞いても何するものか教えてくれる。
この間 OpenSSL のソース読んでて助けられた。
暗号のコードなんて読んでもよくわからないしw
826デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
2023/05/09(火) 07:51:33.95ID:y5YEea020
>>824
GitHub Copilot
そんなのもあるんですね。
827デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
2023/05/09(火) 10:14:34.85ID:y5YEea020
ChatGPTでsqlでハマった点を質問してみたんだけど
ヤバイな。一瞬で分かり易く解説してくれた。

どんなプログラムを組んでるんだ。凄すぎる。
828デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
2023/05/09(火) 14:59:12.62ID:y5YEea020
chatGPTえぐいんですけど。
829デフォルトの名無しさん (ワッチョイ ef1f-ZkZz [39.110.0.110])
2023/05/18(木) 17:50:03.04ID:An6NATd90
javascriptでctrl+Wでブラウザタブが落ちるのを無効にする方法はありますか?
830デフォルトの名無しさん (JP 0Heb-owa4 [126.249.157.89])
2023/05/23(火) 06:51:40.61ID:tIBpGAYNH
それはJSの設定?Winの設定?
831デフォルトの名無しさん (アウアウウー Sab7-tdi0 [106.130.126.201])
2023/05/23(火) 20:39:57.19ID:85f2/18wa
最近勉強してvarの何でもありな傍若無人さに気が付いた
例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入されるからエラーにならず混乱の素、
ブロックスコープ内で使うとその生成を無視するから混乱の素
なのでプロなのにES6以降の環境で未だにvar使ってる人って新人にも劣ると思った
ES6以降でEcmaから非推奨と言われてるのに未だにvar使わなければいけない理由ってある?
今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?
832デフォルトの名無しさん (ワッチョイ fa5c-FIIW [203.139.52.200])
2023/05/23(火) 20:57:14.94ID:PscArQu/0
キモ
833デフォルトの名無しさん (ブーイモ MM16-F7IQ [133.159.150.75])
2023/05/23(火) 22:34:28.22ID:y7+F4Fx6M
>>831
>例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入される
これいろいろ間違ってる

>未だにvar使わなければいけない理由ってある?
REPLで繰り返しコードブロックを実行したい場合なんかにvar使う
あとはブラウザ以外の環境でES3しか動かない環境とかね

>今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?
良いと思うけど君もそっち側に片足突っ込んでるから気をつけて
834デフォルトの名無しさん (ワッチョイ 9af0-FIIW [211.19.68.36])
2023/05/24(水) 10:07:05.19ID:qaFXRxUx0
スコープの基本だね
レキシカルなのかパラメーターなのか
DOMをいじるとみんな参照になるし変数大切ね
835デフォルトの名無しさん (ワッチョイ 23a7-xpLh [118.14.167.59])
2023/05/24(水) 10:45:52.94ID:R9+x876F0
匿名イベントを削除する方法って無い?
ググりまくっても全く見当たらんから仕方ないのでElement.prototype.addEventListenerフックしてフィルタしてるんだけど非常に遠回りな事してる気がしてならない
836デフォルトの名無しさん (ブーイモ MM86-F7IQ [163.49.208.121])
2023/05/24(水) 11:04:01.62ID:CrZEaXEyM
>>835
イベントリスナーへの参照を保持してないと
removeEventListenerは使えない
あとはAbortSignalを使う方法がある
MDNのaddEventListener辺りに全部書いてる
837デフォルトの名無しさん (ワッチョイ 2b5f-i/qU [14.12.8.65])
2023/05/25(木) 06:53:07.70ID:djzVD0JU0
くそ素人で申し訳ない
ブックマークレットでCookieを編集する時に有効期限も同時に編集したいのだけれど
どうしたらいいのだろうか

元々は
javascript:document.cookie=%22ipb_member_id=〇〇%22;document.cookie=%22ipb_pass_hash=〇〇%22;

って感じなのだけれど1日くらいしたらすぐ消えてしまう
838デフォルトの名無しさん (スップ Sd5a-9ehv [49.96.239.55])
2023/05/25(木) 11:10:49.64ID:vvIauVZOd
どっかのRFCに載ってるはず
839デフォルトの名無しさん (ササクッテロラ Sp8b-tLvz [126.182.17.102])
2023/05/27(土) 14:04:26.57ID:MkhutBump
>>837

そいつは有効期限も一緒に設定しなきゃならんな。

javascript:(function(){
var date = new Date();
date.setDate(date.getDate() + 30); // 30日後に設定
document.cookie = "ipb_member_id=〇〇; expires=" + date.toUTCString() + "; path=/";
document.cookie = "ipb_pass_hash=〇〇; expires=" + date.toUTCString() + "; path=/";
})();

こんな感じでやってみ。
これでipb_member_idとipb_pass_hashが
30日間有効になるぜ。
ただし、ブラウザの設定やCookieの設定によってはJavaScriptから触れないこともあるから、
その辺は自己責任でな。
840デフォルトの名無しさん (ワッチョイ 375f-mp2X [106.72.33.97])
2023/05/28(日) 15:24:03.43ID:n14WZ+eY0
documentのinnerHTMLやtextContentの書き換えをしたとき、ブラウザのDOMの計算(?)や再描画(?)は変更があった部分のみか、ページ全体で行われるののどちらでしょうか?
841デフォルトの名無しさん (ワッチョイ 975f-D91p [14.12.8.65])
2023/05/28(日) 23:28:10.35ID:8mVMxOyu0
>>839
ありがとうまじ助かった
842デフォルトの名無しさん (ワッチョイ 975f-f/x0 [14.8.104.32])
2023/05/29(月) 06:35:55.98ID:eVNfBOW80
CookieってPHPみたいなサーバーサイドから設定するのとJSから設定するのどっちが良いんかね?

同僚から受け継いだシステムはPHPでやってたが
843デフォルトの名無しさん (ワッチョイ 9f00-taKI [221.118.182.138 [上級国民]])
2023/05/29(月) 07:03:02.74ID:nuFuFtG60
HttpOnlyの存在考えるとサーバーサイド一択じゃね?
844デフォルトの名無しさん (ワッチョイ ffbb-dfVX [217.178.27.244])
2023/05/29(月) 08:05:53.64ID:7kZHwtIo0
ステートレスな通信を補助するものだから、処理の起点側でつけると良い
ただ、一般的にはサーバサイドになると思うよ
845デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]])
2023/06/19(月) 13:57:37.11ID:iYcFBKEZ0
if ((a == b && c != d) || (e == f && g != h)){
alert ("正解");
}

こういうコードの書き方は出来ますか?
二重括弧の使い方は正しいでしょうか?
846デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]])
2023/06/19(月) 14:42:31.77ID:iYcFBKEZ0
ちょっと調べてたんですが、こうでしょうか?

if (((a == b) && (c != d)) || ((e == f) && (g != h))){
alert ("正解");
}

「a == bとc != dの条件が両方ともtrue」か「e == fとg != hの条件が両方ともtrue」なら"正解"と警告を表示したいのですが…
三重括弧なんてあります?
847デフォルトの名無しさん (ワッチョイ ff7b-0fSR [153.185.178.93])
2023/06/19(月) 14:49:42.42ID:G503Uwj70
>>845で大丈夫やろ。
なんで試さんの?
848デフォルトの名無しさん (ワッチョイ ff61-gPkm [153.171.212.140])
2023/06/19(月) 14:54:44.66ID:Glrukv1f0
演算子優先度の理解が追い付いて無いなら好きなだけ括弧使えばいい
849デフォルトの名無しさん (オッペケ Sr33-vDmN [126.157.241.160])
2023/06/19(月) 14:58:41.52ID:3rS08iXar
何重カッコでもいけるけど演算子やカッコが増えると可読性が落ちて条件式を読み解くのが辛くなる
コードは長くなっても条件式をいくつかに分割して変数に入れた方が読みやすくなるよ

const x = (a == b) && (c != d)
const y = (e == f) && (g != h)
if(x || y){
alert ("正解");
}
とか
850デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]])
2023/06/19(月) 15:02:17.21ID:iYcFBKEZ0
皆さん、ありがとうございます
変数に入れるのがいいですね
やってみます
851デフォルトの名無しさん (アウアウウー Sa23-QBJ2 [106.130.41.210])
2023/06/19(月) 23:22:27.82ID:xNSaH23va
イテレータ、Map、Setがややこしくて😩なんだけど実務で使う?
一応理解したけどカスタムイテレータ作ってそれをオブジェクトに追加してfor...ofなんて無理だな
プログラマーならバリバリ使うのかな?それとも知識として仕組み知っとくだけ?
852デフォルトの名無しさん (オッペケ Sr33-vDmN [126.205.219.139])
2023/06/20(火) 13:18:59.52ID:es0ShzRur
Mapはキーと値の組み合わせのコレクション
Setは重複のない値のコレクション
どちらも実務で出番はある
イテレータは中身を1個ずつ取り出せるものの総称

カスタムイテレータに関してはmdnもおすすめのジェネレータ関数を覚えておけばいいかと
バリバリではないにしてもここぞというときに役に立つ
853デフォルトの名無しさん (ワッチョイ ffda-ZcId [223.216.178.53])
2023/06/21(水) 18:20:14.61ID:He5qrAkL0
tableタグのtrをjqueryかjavascriptでアニメーションアコーディオンがうまくアニメーションしないんだけど
slideToggleで開発ツールではheightの数字は変化しているんだけど・・
もしかしてtrにheightという概念が無いから?

<tr class=name><td>名前1</td></tr>
<tr class=detail><td>中身1</td></tr>
<tr class=name><td>名前2</td></tr>
<tr class=detail><td>中身2</td></tr>
・・・
854デフォルトの名無しさん (ワッチョイ 7d4b-Hjce [110.2.215.28 [上級国民]])
2023/06/26(月) 12:08:05.73ID:QXVTwCFE0
変数って定義する前はundefinedが入ってるんでしょうか?
855デフォルトの名無しさん (ワッチョイ 1501-WolJ [60.109.218.97])
2023/06/26(月) 20:02:32.96ID:nZR6QJ/D0
>>854
変数定義前は変数がない
変数定義時に値を代入しなければundefinedで初期化される
856デフォルトの名無しさん (ワッチョイ 7d4b-Hjce [110.2.215.28 [上級国民]])
2023/06/26(月) 21:13:06.03ID:QXVTwCFE0
>>855
ありがとうございます。
857デフォルトの名無しさん (アウアウウー Sab9-cUyJ [106.130.49.224])
2023/06/29(木) 21:35:42.23ID:I06beN9ya
Promiseメソッドなんなの独自ルール多すぎでしょ。もはや別言語に感じる。これよく使用される?
858デフォルトの名無しさん (ワッチョイ 1a00-KjOb [221.118.182.138 [上級国民]])
2023/06/29(木) 22:34:31.96ID:mZg1DRHQ0
Promise周りは最初は取っつきにくいけど、凄く使いやすく作られてるし、物凄くよく使うよ。
859デフォルトの名無しさん (ワッチョイ 1d5f-momQ [14.8.104.32])
2023/06/29(木) 23:09:38.14ID:OBXN/r9b0
async awaitでしかfetchをかけない自分と、thenでしかfetchを書けない前任者のせめぎあい

xhrはなぜか知らんがもう時代じゃないらしいし
860デフォルトの名無しさん (アウアウウー Sab9-Br7/ [106.128.36.203])
2023/06/30(金) 10:14:20.96ID:Lj29KtNna
的外れな質問だったら申し訳ありません…
クラスAが長くなってしまったこと(1500行くらい)、類似クラスBとある程度共通化できそうな部分があったので関数Cとして
別ファイルに切りだそうと思いました。
その際、関数CからAの複数のメンバ変数/メソッド(Bも同じ名前の変数/メソッドを持っている)を利用したいのですが、
一つ一つ引数で渡していくと記述が煩雑だし、仕様も変わる可能性があります。
そこで、Aのインスタンスから関数Cにthisを引数として渡すようにして、関数Cからは仮引数this.メンバ変数 などのようにして自由にAのメンバにアクセスできるようにしました。

以上のやり方で、動作はしているようですが、なんか良くないやり方の様な気もしています。
上記のやり方は一般的な方法でしょうか。何かデメリットはありますでしょうか。
861デフォルトの名無しさん (ワッチョイ 7691-pVx5 [153.223.3.108])
2023/06/30(金) 10:55:58.80ID:qu6f9mWQ0
クラスAたBの同名の変数と関数をBaseクラスにしてAとBに継承すれば同名の変数関数を持ってることが保証できてうっかり名前変えてしまったとかのバグ防げるんじゃない?インターフェースみたいに
それから引数じゃなくてbind使えば関数C内でthisを自然な感じで使えるとか
862デフォルトの名無しさん (アウアウウー Sab9-Br7/ [106.128.39.112])
2023/06/30(金) 13:05:23.88ID:2BLecjKja
有り難うございます。
デメリットとしては後でA~Cをいじった時にバグの温床になりやすいこと、くらいの認識で良いんですかね。
基底クラスを継承するかたちにすることも考えたいと思います。
確かにbind/callを使った方が、動作は同じでよりシンプルな気がしてきました。
863デフォルトの名無しさん (アウアウウー Sa47-NFBa [106.146.70.58])
2023/07/01(土) 04:46:01.59ID:nMEzWNF9a
is_a, has_a

継承か包含か、古典的な質問
864デフォルトの名無しさん (アウアウウー Sa47-ctHD [106.155.8.134])
2023/07/01(土) 19:38:17.78ID:hPyQUT1Ya
javascript:
if((result = prompt("input formula string","")) == "") alert("no formula string"); else alert(eval(result));
865デフォルトの名無しさん (ワッチョイ 5a00-PRVu [221.118.182.138 [上級国民]])
2023/07/01(土) 22:48:30.73ID:WfKHfAvE0
なんつー邪悪なコード
866デフォルトの名無しさん (ワッチョイ 5b4b-nuDV [110.2.215.28 [上級国民]])
2023/07/05(水) 21:30:37.79ID:74hfvDDi0
(function(){
 ~
})();

こういう書き方をしてるコードがあったんですけど、これは実行も含めた関数の書き方でしょうか?
最初の(と最後の)()の意味がわかりません
867デフォルトの名無しさん (ワッチョイ e301-cWjJ [60.109.218.97])
2023/07/06(木) 00:31:51.01ID:IKcM4kIN0
>>866
即時関数
()は関数宣言ではなく、関数式として実行するため
868デフォルトの名無しさん (ワッチョイ 5b4b-nuDV [110.2.215.28 [上級国民]])
2023/07/06(木) 01:40:00.57ID:vc4JCbkY0
>>867
ありがとうございます
よくわかりました
869デフォルトの名無しさん (ワッチョイ 7679-p0MK [175.105.104.184])
2023/07/07(金) 13:17:53.80ID:tybFBPle0
なるべく自分で考えたキモイ名前は晒したくないからな?
870デフォルトの名無しさん (ワッチョイ a15f-eaRz [14.13.136.34])
2023/07/08(土) 18:01:12.76ID:0tWDp4eO0
今ホームページを制作しているのですが教えて頂きたいです。
下記内容のコードの書き方がわかりません。

5枚の画像があるのですが、全部では無く一旦一枚目のみ表示させたいです。
次に各画像を説明する文字があります。その文字にマウスカーソルを合わせると、その文字にあった画像に2枚目3枚目と切り替わるようにしたいと思っています。

初心者すぎるので例としてコードを作って頂ければ見ながら調整したく思っています。
どなたかお教え頂けませんでしょうか。
871デフォルトの名無しさん (スプッッ Sd73-mu37 [1.75.238.73])
2023/07/08(土) 20:53:43.61ID:S1M2Nutrd
>>870
それはもう質問ではない
872デフォルトの名無しさん (ワッチョイ a15f-vDrU [14.8.104.32])
2023/07/08(土) 21:24:42.99ID:DhofVjWT0
ChatGPTに聴け
873デフォルトの名無しさん (ワッチョイ d101-Ud/M [60.105.201.125])
2023/07/08(土) 23:32:58.73ID:EFUbRXYX0
>>870
質問にするなら>>1-3を読もう
874デフォルトの名無しさん (アウアウウー Sa55-knyK [106.146.116.188])
2023/07/09(日) 01:18:13.12ID:YP8p84HTa
よくある、スライダーでしょ?
jQuery でもあるでしょ

Bootstrap のCarousel (カルーセル)
https://getbootstrap.jp/docs/5.0/components/carousel/
875デフォルトの名無しさん (ワッチョイ a15f-eaRz [14.13.136.34])
2023/07/09(日) 01:44:11.98ID://wYUerL0
なんか色々ルールがあるんですね
諦めて勉強します
ありがとうございます
876874 (アウアウウー Sa55-knyK [106.146.114.68])
2023/07/09(日) 19:52:50.68ID:gl6FDMI+a
jQuery slider
Bootstrap Carousel などで検索すれば、一杯ある

一杯あるけど、難しいから自作する人はいない。
皆、jQueryUI やBootstrap のCarousel などの既製品を使う
877デフォルトの名無しさん (ワッチョイ 9300-Yt8B [221.118.182.138 [上級国民]])
2023/07/09(日) 21:16:30.84ID:VzLiONyC0
え、そんな難しい要素無いよ
878デフォルトの名無しさん (スップ Sd9f-asTj [49.97.111.88])
2023/07/17(月) 23:23:58.12ID:XzfBWjood
フォームフィールドが定義されたPDFファイルがすでにあって、ブラウザ上のJavascriptでWebフォームに入力されたテキストをPDF側のフィールドに反映させてダウンロードすることができるpdfライブラリってあまりすか?

使い方のイメージとしては、たとえばPDF上に名前を入力する箇所がいくつかあるけど、ユーザーは単にweb上で普通のinputフォームを入力してsubmitすると名前が入力済みのPDFファイルをダウンロードできる、という感じです。

pdfmake等いくつかライブラリは見たのですが、白紙ベースでPDF作る例しか見あたらなくて(テンプレートは画像背景で切り替え等)、直接PDFフォームを扱えるものは無いかなと。
879デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.137.152])
2023/07/29(土) 00:54:23.66ID:s0ko+FdFa
プログラミング全く知らない状態からやっとJavaScript一通り学びました
かなり難しかったです。でもJavaScriptは比較的簡単な言語なんですよね?
ES6以降のJavaScriptでもやっぱり簡単なんですか?
それとES6で大規模アップデート合った時は絶望しましたか?
勉強していて苦しんだのがスコープ、this、反復処理の背景(iteratorの動き、yieldは何をしてるか)、非同期処理(Promise、then、async)、その他様々なメソッド、静的メソッド、、、
これら全てES6から導入されましたよね?絶望しませんでしたか?
例えば私がもしES5までのJavaScriptに慣れ親しんでいてES6のアップデートに触れたら絶対絶望してました。概要見ても「?????」となってたはずです
プログラミングに向いてる人はこんな大規模アップデートがあるとワクワクする人なのでしょうか?
絶望せず、「何ができるようになったんだろう!凄い!こんな事やあんな事が出来る!」みたいな人も居ましたか?
880デフォルトの名無しさん (ワッチョイ c200-pYoK [221.118.182.138 [上級国民]])
2023/07/29(土) 08:26:35.15ID:wB1gRUiQ0
ES5までは貧弱だったのでそりゃもう大歓喜よ。
それと現代のJavaScript(を使いこなすの)はもはや簡単な部類じゃないように思う。
881デフォルトの名無しさん (オッペケ Sr91-xmUq [126.254.133.95])
2023/07/29(土) 09:45:27.72ID:ZQ+RMRi1r
苦しみとか絶望とか>>879は言語の習得を学校の勉強と同じようなものとしか捉えてないフシがある
日本史の勉強範囲が大政奉還までだと思ったら第二次大戦までだった!みたいな感覚

新しく覚えたことは実際のプログラミングで活かせるんだという意識が全く感じられない
882デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.201.25])
2023/07/29(土) 14:21:53.16ID:LQ1ElLyya
>>880
>>881
とにかく理解するのに必死で苦しみました。jJavaScriptが簡単とは全く思いませんでした
883デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.201.25])
2023/07/29(土) 14:27:58.50ID:LQ1ElLyya
try,catch,finally文の存在異議が分からなかったけど、今さっき急にasync/awaitのエラーハンドリングに向いてるのに気が付きました
つまりthen,catchのPromiseチェーンをより楽に書けるのに今さっき気が付きました。こんな感じで上手くいかないですね
884デフォルトの名無しさん (ワッチョイ c200-pYoK [221.118.182.138 [上級国民]])
2023/07/29(土) 15:03:53.70ID:wB1gRUiQ0
.then().catch()の方が綺麗に書けて(副作用的な意味で)好きだなぁ
885デフォルトの名無しさん (ワッチョイ c6bd-g4Mn [119.240.43.146])
2023/07/30(日) 02:24:04.00ID:oecUblNe0
>>879
言語として簡単かっていうとどうだろうね。
Webブラウザがあれば動かせる上にデバッグ環境まで付いてるから、誰でもすぐ始められるし、作ったものをどこででも動かしてもらえるという手軽さはあると思うけど。
886デフォルトの名無しさん (ワッチョイ 095f-kJnY [14.8.104.32])
2023/07/30(日) 14:24:24.68ID:av5XIWe10
自分はプロトタイプ型オブジェクト指向から入ったから気にならないけどクラス型でプログラム書いてた人は違和感凄いんだろうな

あとクロスブラウザ対応しなきゃいけなかった人達もJSはしんどかったんだろうなと想像
887デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]])
2023/08/04(金) 01:16:43.56ID:LzfYm8xL0
rd41 = "";
alert (rd41);
これで「rd41は未定義です」ってエラーは出ますか?

alert(rd41);
これだけだと「rd41は未定義です」ってエラーが出ますよね

実際のコードはalertでは無いのですが、rd41に無を代入して何も表示させたくないのです
rd41 = null;
だと、nullと表示されてしまいます
888デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]])
2023/08/04(金) 01:36:14.69ID:LzfYm8xL0
chatGPTに質問したら答えが返ってきた
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
889デフォルトの名無しさん (ワッチョイ febd-FWk2 [49.129.241.111])
2023/08/04(金) 09:00:08.06ID:2wk44tWe0
>>887
delete を調べてみるとどうだろう。
やりたいことによってはブロックスコープで足りるかも。
個人的にはブロックスコープを活用して、変数を小まめに狭い範囲に閉じ込める書き方をおすすめしたい。
890デフォルトの名無しさん (ワッチョイ a101-CknR [60.89.4.138])
2023/08/04(金) 09:14:51.09ID:TEvOuQNU0
>>887
ECMAScriptに「未定義」というエラーはない
Strict Modeで実行すれば、両コードともにReferenceErrorになるだろう
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError
891デフォルトの名無しさん (オッペケ Sr91-q/g9 [126.254.212.243])
2023/08/04(金) 09:37:58.66ID:EZ9l15Zsr
>>887
>rd41 = "";
>alert (rd41);
>これで「rd41は未定義です」ってエラーは出ますか?
なんで試してみないの?
892デフォルトの名無しさん (ワッチョイ f233-yhDR [101.141.60.18])
2023/08/14(月) 23:07:53.97ID:QNJSoVjn0
時報みたいなのを作成中でそのhtmlのページさえ開いておけば
9時、12時、18時(プリセットとかは無く固定)に特定のwavサウンドファイルがaudioElement.play() で再生される用にしています
(タブが非アクティブだとなんか動かない時があったのでwindow.openで表示させてます)
chromeのポリシーみたいなのでユーザーが明示的なアクションをしないと音声の自動再生はされないみたいで
それの良い回避策ってありますか?
実用性考えると携帯のアラームが百倍使いやすいけど
自分用にチープなのを作って遊んでるんだけど解決策が思いつかなくて・・・
893デフォルトの名無しさん (ワッチョイ 1f4b-uBRt [110.2.215.28 [上級国民]])
2023/08/15(火) 01:53:58.77ID:Efj8IW440
>>892
そういう質問はchatGTP得意や
聞いてみれば
894デフォルトの名無しさん (ワッチョイ 7e63-SF+K [153.218.139.115])
2023/08/21(月) 00:13:21.70ID:v7lFaH3H0
【環境】Windows 11, Chrome最新版
【何をしたのか】PHPで動的に出力されたテキストに replace (new RegExp)
【エラーメッセージ】コンソールには何も出ません
【期待する結果】ページ内に複数生成される動的クラス内テキストを置換したい
【サンプルコード】
<p class="tx-body">おはようございます*2023.08.15</p><span clas="tx-date">0000</span>
<p class="tx-body">ごきげんよう*2023.08.20</p><span clas="tx-date">0000</span>



tx-dateクラスの中身をtx-bodyの*以降の文字列に置き換えたく、以下を<body>の後半に書きましたが期待する置換変化が起きません、エラーも出ません、
根本的なところわかっていないのだと思うので恐縮ですがお手上げ状態です

window.addEventListener('load', function() {
const ItemList = document.getElementsByClassName("tx-body");
const ItemDate = document.getElementsByClassName("x-date");

for(i=0; i<ItemList.length; i++) {

var tBody = ItemList.item(i).textContent;
var tDate = ItemDate.item(i).textContent;
var replaceDate = tBody .split("*")[1];

tDate = tDate.replace(new RegExp(replaceDate,'g'),'');
}
})


以上ご指導よろしくおねがします
895デフォルトの名無しさん (スッップ Sdca-jTH6 [49.98.168.137])
2023/08/21(月) 11:40:28.26ID:cB09UaOod
>>894
まずconsole.log()や開発者ツールを使って自分の書いたコードがどこまで想定通りに動いてるか確認してみよう
896デフォルトの名無しさん (ワッチョイ 534b-ubuk [110.2.215.28 [上級国民]])
2023/08/21(月) 11:51:22.81ID:7Ts4WfMN0
>>894
コードを見る限り、置換を行うためのコードは一見正しく見えますが、複数の潜在的な問題が考えられます。まず、コード内のいくつかのポイントをチェックしてみましょう。

1. **クラス名のスペル**: `tx-date` クラスが正しく `x-date` クラスになっているか確認してください。

2. **期待する置換変化の確認**: 期待する置換変化がどのようなものか確認してみてください。コード内で `tDate` の内容を `console.log()` を使って出力し、実際の値が正しいか確認できます。

3. **変数 `replaceDate` の設定**: `tBody.split("*")[1]` の部分で、正しい位置に `*` が存在しているか確認してください。`split()` メソッドは対象の文字列を指定の文字で区切って配列にしますが、もし `*` が存在しない場合、期待通りの結果が得られない可能性があります。

4. **置換操作の適用**: `tDate` に対して行った置換操作が、実際のDOM要素に反映されていない可能性があります。`tDate` の内容を変更した後、対応するDOM要素の内容を更新するコードが不足しているようです。

これらのチェックポイントを確認した上で、コードを修正するか、デバッグすることをお勧めします。また、具体的なサンプルHTMLコードや置換の例を提供していただければ、より具体的なアドバイスを提供できるかもしれません。
897デフォルトの名無しさん (スッップ Sdca-jTH6 [49.98.168.137])
2023/08/21(月) 12:25:10.86ID:cB09UaOod
このワッチョイ **4bは質問スレにchatGPTの回答貼るだけのボットみたいなもんだからスルー推奨
NG入れといてもいい
898デフォルトの名無しさん (アウアウウー Sa7f-7wIC [106.133.165.90])
2023/08/22(火) 23:04:06.56ID:rPfWctd8a
2か所とも、clas="tx-date" になっている!

class でしょ
899898 (アウアウウー Sa7f-7wIC [106.133.165.90])
2023/08/22(火) 23:12:31.83ID:rPfWctd8a
>const ItemDate = document.getElementsByClassName("x-date");

x-date は、tx-date じゃないの?
900898 (アウアウウー Sa7f-7wIC [106.133.165.90])
2023/08/23(水) 00:10:28.94ID:B78POXf5a
一旦、要素 tDate_elem を取得しておいてから、
その textContent に値を設定する。
つまり更新

const tBody = ItemList.item(i).textContent;

const tDate_elem = ItemDate.item(i) // 要素
const tDate = tDate_elem.textContent;
console.log( tDate ); //=> 0000

const replaceDate = tBody.split("*")[1];
console.log( replaceDate ); //=> 2023.08.15

tDate_elem.textContent = replaceDate; // 設定

表示
おはようございます*2023.08.15
2023.08.15

ごきげんよう*2023.08.20
2023.08.20
901デフォルトの名無しさん (スプッッ Sd6a-jTH6 [1.75.209.193])
2023/08/23(水) 10:39:07.30ID:oZ78uDd8d
>>900
それはもう質問に答えたというよりデバッグと修正を代行したのであってこのスレの主旨には合わない
おそらく他の人もそういう認識だからこの件に口を出さないんだと思うよ
902898 (アウアウウー Sa7f-7wIC [106.146.101.215])
2023/08/23(水) 19:53:27.23ID:ktllvUDta
jQuery なら、もっと簡単

$( function ( ) {

$('.tx-body').each(function (index, elem) {
const tx_body = $(elem);
console.log(index + ': ' + tx_body.text());
const replaceDate = tx_body.text().split("*")[1];
console.log(replaceDate);

// tx_body 要素の次の兄弟で、tx-date クラスがある要素。絞り込み
const tx_date = tx_body.next('.tx-date');
console.log(index + ': ' + tx_date.text());
console.log('tx_date.length: ' + tx_date.length); // 0 or 1

// 該当する要素があれば設定する。つまり更新
if (tx_date.length === 1) {
tx_date.text(replaceDate);
}
});

} );
903デフォルトの名無しさん (アウアウエー Sa22-NwC7 [111.239.174.98])
2023/08/25(金) 21:08:52.47ID:+90wXQAMa
chrome拡張どう作ったらいいのでしょう?
こんな感じではリダイレクトが連続してしまってだめでした
urlsのフィルターの仕方、もしくはリダイレクトをせずにそのURLにアクセスする方法が分かれば解決できるとは思うのですが・・・

//aaa.com/xxxx/ へのアクセスを aaa.com/abc/xxx/ へ変換したい (以下は動作しない)
chrome.webRequest.onBeforeRequest.addListener(
function(details)
{
if (details.url.match(/abc/))
{
return {}; //←ここを書き換える方法が分かればいける
}
else
{
details.url = details.url.replace(/aaa.com/g,"aaa.com/abc");
return {redirectUrl: details.url };
}
},
{
urls: [ "*://aaa.com/*/" ], //←ここを書き換える方法が分かればいける
},
["blocking"]
);
904デフォルトの名無しさん (アウアウウー Sa47-rTQJ [106.146.72.134])
2023/08/26(土) 04:11:22.52ID:wsJDYSi/a
「chrome.webRequest.onBeforeRequest」で検索!

webRequest
https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest
905デフォルトの名無しさん (アウアウエー Sa5f-/No0 [111.239.174.98])
2023/08/26(土) 12:48:58.33ID:mvAl1l0Ba
そこ見てどうすればいいのか分からないからここに来た・・・
906デフォルトの名無しさん (スッップ Sd9f-oH/7 [49.98.169.249])
2023/08/26(土) 17:41:19.65ID:/LQp1jGld
return detail.documentUrl

とか?
907デフォルトの名無しさん (アウアウエー Sa5f-/No0 [111.239.174.98])
2023/08/26(土) 18:56:03.08ID:mvAl1l0Ba
return detail.documentUrl;
return {redirectUrl: detail.documentUrl};
どちらもダメ。リダイレクトのURLを返すことになるから、リダイレクトの無限ループに入っちゃう

それなら、リダイレクト止めればいいじゃんって思うんだけど
return {cancel: true};
のようにするとナビゲーション自体が止まってアクセスできなくなっちゃう
908デフォルトの名無しさん (ワッチョイ cf8a-cMf3 [153.207.237.45])
2023/08/26(土) 19:46:44.48ID:HE/rWC1F0
空のオブジェクト返せばいいんじゃないの?

こんなの見て参考にしては?
https://gitlab.com/ClearURLs/ClearUrls/-/blob/master/clearurls.js?ref_type=heads
909デフォルトの名無しさん (ワッチョイ e361-NWkk [180.15.228.252])
2023/08/26(土) 21:15:33.19ID:AeqeuiS+0
無限ループしてるって事は条件分岐失敗してるんじゃないの?
console.logデバッグでもしてみたら?
910デフォルトの名無しさん (オッペケ Sre7-bab6 [126.212.162.196])
2023/08/27(日) 12:33:38.16ID:QiCv/PxZr
>>903
リダイレクト後のurlに?foo=barとかクエリ文字列付けてみるとかは?
これでフィルタにかからなくなるみたい
もちろんこれでサーバが誤動作起こさないのが前提だけど
911デフォルトの名無しさん (ワッチョイ cf63-n242 [153.218.137.10])
2023/09/03(日) 21:37:03.60ID:0BSqvC2P0
サイト内にフォームが設置してあるページが複数あります
お問い合わせ、新規登録、ログイン、パスワードリマインド、などです
一時的に inputタグを入力不可にしたのですが
querySelectorAll("input,button").forEach( e => e.disabled = true );

複数あるページのうちお問合せだけは入力できるように、
現在は下記の効率の悪い記述になっています、、
document.querySelectorAll("#contact input, #contact button").forEach( e => e.disabled = false);

それぞれのページの<body>に idを付与していてそれで判別しているのですが
<body id="contact">
<body id="login">
<body id="remainder">

もっとスマートにお問い合わせページだけ入力できる
ヒントをお願いできませんでしょうか?
912デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210])
2023/09/03(日) 21:48:21.38ID:qR1Ry2o90
【環境】windows10 chrome 最新版
【何をしたのか】開発ツールコンソール上でサンプルコードを実行すると
条件文が undefined にもかかわらず if 文内 console.log(1) が実行される
【エラーメッセージ】なし
【期待する結果】 なぜこうなるのか理由が知りたいです
【サンプルコード】
console.log(localStorage && (localStorage.getItem('deck')));
if(localStorage && (localStorage.getItem('deck'))) console.log(1)
if(undefined) console.log(2)
913デフォルトの名無しさん (ワッチョイ 8361-yzHn [180.15.227.160])
2023/09/03(日) 23:01:09.12ID:zsKKxMoe0
>>912
console.log(localStorage && (localStorage.getItem('deck')));
の結果は本当にundefined?、undefinedの上の行に何か表示されてるよね?
914デフォルトの名無しさん (ブーイモ MM7f-sgzH [133.159.150.82])
2023/09/03(日) 23:17:01.93ID:II4MkDPZM
>>911
下記セレクタでイケるはず(問い合わせページ以外でinput要素とbutton要素を抽出)

body:not(#contact) :is(input, button)
915デフォルトの名無しさん (ブーイモ MM7f-sgzH [133.159.150.82])
2023/09/03(日) 23:33:36.04ID:II4MkDPZM
>>912
下記のログ出力はどうなる?

console.log(localStorage.getItem('deck') !== undefined ? 'バカめ!!よく確認しろ!!' : 'undefined です');
916デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210])
2023/09/04(月) 13:53:40.48ID:R0PWdUab0
>>913
コンソール出力結果は

undefined
1
undefined

です

>>915
バカめ!!よく確認しろ!!
undefined

になります
917デフォルトの名無しさん (ブーイモ MM7f-gLHL [133.159.151.54])
2023/09/04(月) 14:44:17.50ID:0gdMzEOZM
getItemは該当キーに対する値がなければundefinedではなくnullを返すのでlocalStorageが存在していれば

console.log(localStorage && (localStorage.getItem('deck')));は
null
undefined
と出力される

undefinedの上が空行になってるならdeckに対する値が入ってる
それが空文字ならfalsyなのでconsole.log(1)は実行されない
truthyな不可視文字(例えば改行コード)が入っていればconsole.log(1)も実行される
inspectやencodeURIで中身に何が入ってるか確かめればはっきりさる
918デフォルトの名無しさん (ブーイモ MM7f-gLHL [133.159.151.232])
2023/09/04(月) 14:45:10.48ID:I1Zu7zQTM
はっきりさる!
919デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210])
2023/09/04(月) 15:37:52.51ID:R0PWdUab0
あー わかりました
"undefined" っていう文字列がすでに入っちゃってたみたいです

丁寧に回答いただいてありがとうございました!
920デフォルトの名無しさん (ワッチョイ cf63-0HOd [153.218.137.10])
2023/09/04(月) 15:59:10.40ID:KQbfSHx50
ウキキ🐒
input セレクタで解決しましたカッコイイ記述ありがとうございます
921デフォルトの名無しさん (オッペケ Sr07-JKlf [126.255.138.111])
2023/09/05(火) 12:01:10.43ID:y2XoXHZcr
>【何をしたのか】開発ツールコンソール上でサンプルコードを実行すると
>条件文が undefined にもかかわらず if 文内 console.log(1) が実行される
不可解な挙動に遭遇したとき、自分が何か勘違いしてないかまずそこを疑ってみようという教訓
あとtruthyやfalsyな値の取り扱いは慎重に
922デフォルトの名無しさん (ワッチョイ 2901-pIYl [60.114.101.121])
2023/09/28(木) 14:42:04.81ID:Pzc86hhG0
ほんまに、助かったで!
923デフォルトの名無しさん (ワッチョイ 454b-wchx [110.2.215.28])
2023/10/04(水) 23:59:59.93ID:77DZdeZo0
if(rd41.value){
dofn()
}

これが正しく実行されないのですが(暴走するというか、意味不明な実行結果が現れます)、if文の中で関数の呼び出しは出来ないのでしょうか?
もしそうなら、このコードを正しく動作するように書き換えることは出来ますか?
924923 (ワッチョイ 454b-wchx [110.2.215.28])
2023/10/05(木) 02:54:19.96ID:pCa3KI6i0
普通に動作しました
すみません
925デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
2023/10/16(月) 00:30:39.82ID:tJl0Ngd50
質問です
下記のURLは音楽サイトJangoの再生ページURLです

 https://www.jango.com/stations/400536192/tunein
 https://www.jango.com/stations/397649609/tunein
 https://www.jango.com/stations/272072365/tunein

これらのページをブラウザで開いた時に出てくる水色のメッセージ
パネルをJavaScriptで閉じる方法を教えてください

Jango plays unlimited music for free and with no commercials.

というメッセージの右隣にある[×]マークをクリックしたいのですが

document.getElementsByClassName("MuiAlert-action")[0].click()

では上手くクリックすることができませんでした
926デフォルトの名無しさん (ワッチョイ 2e76-tQak [247.119.160.34])
2023/10/16(月) 00:54:14.00ID:SqBXoLFp0
document.querySelectorAll(“.MuiDialog-container,.MuiBackdrop-root”).forEach(e => e.remove())
927デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
2023/10/16(月) 08:33:51.49ID:tJl0Ngd50
>>926
早速ありがとうございます
ただ、注意深くコピペして実行させたのですが
残念ながらメッセージパネルは閉じられませんでした
928デフォルトの名無しさん (ワッチョイ e25c-CexO [211.121.28.151])
2023/10/16(月) 09:38:31.66ID:9MW6cr+O0
document.querySelector(".MuiSnackbar-anchorOriginTopCenter").remove()
929デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
2023/10/16(月) 10:55:49.91ID:tJl0Ngd50
>>928
すいません、それもダメみたいです
930デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
2023/10/16(月) 11:01:33.63ID:tJl0Ngd50
ブラウザ上の全然関係ない場所をクリックして自己解決しました

document.elementFromPoint(1, 1).click()

根本的な問題から逃げたようで悔しいですけどw
931デフォルトの名無しさん (ワッチョイ c705-4hWW [210.203.192.54])
2023/10/24(火) 20:00:13.55ID:xAzUmtPF0
>>925
誰一人解決できなかったのか?
すまん、俺もわからんw
932デフォルトの名無しさん (ワッチョイ 877c-JmE3 [122.212.18.110])
2023/10/25(水) 13:36:08.76ID:JRNrMb5/0
名前付き引数としてプロパティをもつオブジェクトを引数にする場合のJSDocの書き方ってどう書くのが正しいのでしょうか?
ネットで調べて以下の画像のように書くと、VSCodeで関数の説明で表示される時にプロパティ側の日本後説明部分が表示されません。
JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚

構文のほうには型は反映されてるので読み込めてはいるようなのですが…
933デフォルトの名無しさん (ワッチョイ 5fc2-vcKV [133.155.195.156])
2023/10/26(木) 10:06:04.96ID:QIG+kzYs0
source = ['いぬ=ドッグ', 'ぬこ=猫咪', 'キャット=にゃんこ', 'ねこ=キャット', 'わんこ=小狗', '老鼠=ねずみ', '小狗=ドッグ', 'マウス=ねずみ', '猫咪=キャット']
これを
result = [['いぬ', 'ドッグ', 'わんこ', '小狗'],
['ぬこ', '猫咪', 'キャット', 'にゃんこ', 'ねこ'],
['老鼠', 'ねずみ', 'マウス']]
これに集計するにはどうしたらいいですか
934デフォルトの名無しさん (ワッチョイ e701-2gMB [60.89.160.133])
2023/10/26(木) 12:52:26.88ID:jSMDhhI40
>>933
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
935デフォルトの名無しさん (ワッチョイ e701-2gMB [60.89.160.133])
2023/10/26(木) 12:52:36.47ID:jSMDhhI40
>>933
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
936デフォルトの名無しさん (ワッチョイ a710-7pXc [180.12.82.129])
2023/10/26(木) 13:05:50.11ID:m2KCtDyt0
canvasでarc関数でx:100,y:100の位置に青で塗りつぶした半径3の円を描いたんですが
これと同じ位置に同じ半径で同じ色で塗りつぶした円を描くと四角形ぽくなってちょっと大きくなって表示されます。
背景を塗りつぶして1回目に描いた円を一度消去してから2回目の円を描いても同じでした。
文字の場合でも同じ位置に同じ文字を重ね書きすると太くなっちゃいました。
どうすればちゃんと同じ位置に同じ物を描いても太くならないようにできますか?
937デフォルトの名無しさん (ワッチョイ c791-DWPP [242.12.24.181])
2023/10/26(木) 22:17:18.42ID:npbiXWKI0
>>933
それは質問ではなくて丸投げと言います
938デフォルトの名無しさん (ワッチョイ fff0-f0DH [241.193.34.196])
2023/10/27(金) 08:04:19.82ID:93zv19AS0
>>933
競技プログラミングのスレで聞いて!

これは、UnionFind で、3つの木になる

UnionFind は、プログラミング・コンテスト・チャレンジブック(蟻本)に載っている
939デフォルトの名無しさん (ワッチョイ 639d-XI6K [109.236.1.125])
2023/11/13(月) 18:52:10.34ID:qEXCkkFf0
alertのテキストをコピペする方法とかってご存知ありませんか?

どなたか知恵をお貸しください
940デフォルトの名無しさん (ワッチョイ 23a1-iTu+ [253.3.76.126])
2023/11/13(月) 22:10:22.42ID:FIfUHr+c0
質問したいなら詳しく書こうね
941デフォルトの名無しさん (ワッチョイ 454b-S+Kv [110.2.215.28])
2023/11/14(火) 02:43:20.79ID:MYkZh+2q0
>>939
alertのテキストをコピーするには、通常はウェブページ上でalertが表示されている状態で、テキストを選択して右クリックし、"Copy"や"コピー"を選択する方法があります。ただし、ウェブサイトのalertはJavaScriptで生成されるもので、そのテキストを直接コピーする方法は制限されていることがあります。可能であれば、そのテキストを手入力でコピーすることができます。
942デフォルトの名無しさん (ワッチョイ c5f9-EFnx [244.158.6.121])
2023/11/14(火) 19:07:48.92ID:WEqhXBJy0
検索すれば?
コピーを防ぐ方法は、幾つかある

ブラウザのF12 ボタンの開発者ツールで調べるとか
943デフォルトの名無しさん (ワッチョイ 5501-meuW [60.118.120.235])
2023/11/14(火) 20:45:30.47ID:Mc/CoQSw0
>>939
マルチボスト先に答えがある
http://2chb.net/r/hp/1478002550/706-
944デフォルトの名無しさん (JP 0H89-BcU5 [104.234.140.171])
2023/11/15(水) 11:30:55.95ID:FHoogchzH
>>936

亀だけど
fill()が複数回呼ばれると円が太るみたい
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
でなく、
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
でやると円が太らなかったよ
945デフォルトの名無しさん (ワッチョイ e374-n7Dx [211.124.81.22])
2023/11/15(水) 12:39:52.38ID:D0hDoGTF0
亀が2chに書き込みにやってきた
946デフォルトの名無しさん (ワッチョイ 451d-XI6K [180.178.89.53])
2023/11/17(金) 20:41:48.61ID:oUDu0vRd0
console.log()のlogってどういう意味ですか?
printとかputじゃなくてlogで出力って珍しいですね
947デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
2023/11/18(土) 14:13:31.53ID:mHEv1Kbm0
consoleオブジェクトのログ情報を出力するためのlogメソッド…
948デフォルトの名無しさん (アウアウウー Saa1-UHOz [106.180.4.201])
2023/11/18(土) 16:58:25.29ID:rXJKESWNa
blogのlog
949デフォルトの名無しさん (ワッチョイ 0d5f-uy16 [14.8.71.128])
2023/11/18(土) 18:26:17.47ID:vb+682X10
彼岸島の名産品
950946 (ワッチョイ 4d1d-f5/H [180.178.89.53])
2023/11/18(土) 23:53:58.59ID:rj8Lk8BJ0
…どこまで信じたらいいの?

>>947
ありがとうございます
951デフォルトの名無しさん (ワッチョイ e300-5mk2 [2400:2200:7f1:bf91:*])
2023/11/19(日) 10:42:09.47ID:HAfvoabg0
いえいえ
952デフォルトの名無しさん (ワッチョイ 0556-2Aft [202.71.49.47])
2023/11/20(月) 16:19:56.96ID:q8v/AXQl0
const arr =Array(3).fill([]);
arr[1].push(0);
console.log(arr);

この場合arrは[[], [0],[]]になっていることを期待するのですが実際には[[0], [0], [0]]となっています
まったく納得いかないのですがなぜですか
953デフォルトの名無しさん (ワッチョイ 83f6-YW6P [2400:2200:6f1:ae40:*])
2023/11/20(月) 16:41:25.42ID:LC62eXy40
>>952
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#value
>配列を埋める値。もし value がオブジェクトであれば、配列のそれぞれの要素はそのオブジェクトを参照します。
954デフォルトの名無しさん (ワッチョイ 0556-2Aft [202.71.49.47])
2023/11/20(月) 16:49:32.78ID:q8v/AXQl0
>>953
fillがそういう仕様なんですね
納得です
ありがとうございました
955デフォルトの名無しさん (ワッチョイ eb79-5mk2 [2400:2200:7f6:ca17:*])
2023/11/21(火) 08:31:09.87ID:reAksYQu0
いえいえ
956デフォルトの名無しさん (ワッチョイ 4d1d-TQK0 [180.178.89.53 [上級国民]])
2023/11/21(火) 23:06:08.47ID:Hk8WzggI0
変数宣言の際に、letよりconstを積極的に使うべき、とされているのはなぜでしょうか?
後で値を変えられるletの方が便利だと思うのですが
957デフォルトの名無しさん (ワッチョイ 0d5f-yKFx [14.8.104.32])
2023/11/22(水) 00:26:41.03ID:nlRha+4K0
JSにかかわらず変数は使ってる道中に値変換したり変数使いまわしてるとエラーの種になりやすいし、それを防止するのが大きいかな
配列やオブジェクトの値はconstでも変えられるし

昔はそういうごちゃごちゃ動く変数のトレースするのもプログラム組むやつの能力ってされてたなぁ
958デフォルトの名無しさん (ワッチョイ e32f-e1iw [2400:2410:34a1:6700:*])
2023/11/22(水) 03:01:31.39ID:KDSVu4Ne0
コードを上から読んでいく時にconstだとこの値は後から変わることがないと決めつけて読むことができる
letだとどこかで書き換えられるのに注意しながら読まないといけない
959デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
2023/11/22(水) 10:49:23.49ID:5A+ZhXZi0
可読性の部分が大きいよね
varで変数定義しているクソコードなんかリファクタリングしたくないだろ?
960デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
2023/11/22(水) 11:06:59.29ID:5A+ZhXZi0
constで最初から定義した後にそれが動的な値だった場合タイプエラーを起こしてからletに書き換える事はあるけど最初からletで定義しちゃうと後々constに書き換えた場合もしそれが動的な値ならプログラムそのものが動かなくなって新たなるバグを生むでしょう?
最初は縛りを強くしておいて後から緩めるはあるけど逆はないですよ
961デフォルトの名無しさん (ワッチョイ 35d5-SdNv [2404:7a82:3de0:3500:*])
2023/11/22(水) 15:03:20.05ID:hF+LjdVs0
条件によって const の値を変えられるようになるといいんだけどな。
簡単なのなら参考演算子でやれるけど。
962デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
2023/11/22(水) 20:15:59.75ID:5A+ZhXZi0
>>961
よくわからないけどそれってconst使う意味あるの?
963デフォルトの名無しさん (ワッチョイ 2539-YW6P [2400:2200:6f2:ad2b:*])
2023/11/22(水) 20:54:04.80ID:FIiKhTS50
察するに初期代入時に場合によって違う値を入れたいということだろう
三項演算子を出してるし
964956 (ワッチョイ 4d1d-f5/H [180.178.89.53])
2023/11/22(水) 21:26:20.43ID:VeafCB/q0
答えてくれた方々ありがとうございました
積極的にconstを使っていきたいと思います
965デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240])
2023/11/22(水) 21:54:03.90ID:7CtxEw9g0
>>962
うまい例になってるかわからないけど、何かのプロパティに値が入ってたらそれ、無ければデフォルト値を const に入れたいとか、この条件がもっと複雑になった感じとか。
あるいは、何かの基準座標を const に入れたいけどその値は一発では求まらないとか。
単にこれだけなら中間的な変数を使って値を求めて、最後に const に代入するって手もあるだろうけど、中間的な変数はスコープから追い出したいのにできないよね。

const x;
{
let a, b, c;
:
x = a + b * c;
}

みたいにできれば a b c はスコープから追い出せるけど、実際は

let a, b, c;
:
const x = a + b * c;

ってやらざるを得なくて、x が存在するスコープから a b c を追い出せない。
この計算を function に切り出せよと言うかもしれないけど、できればそうすりゃいいけどどこにでも適用できるというわけでもない。
966デフォルトの名無しさん (ワッチョイ 250c-YW6P [2400:2200:6d0:af1d:*])
2023/11/22(水) 22:23:44.12ID:lZKHNjwl0
調べてみると苦肉の策で↓みたいな書き方が紹介されてたけど可読性考えるとどうだろうね
const x = (() => {
let a, b, c;
:
return a + b * c;
})();
967デフォルトの名無しさん (ワッチョイ e3c2-fy5B [2001:240:2467:98ce:*])
2023/11/22(水) 22:52:37.25ID:8gAUwwkj0
関数に切り出さない意味がわからない
968デフォルトの名無しさん (ワッチョイ 6bcf-ekUX [153.206.41.110])
2023/11/23(木) 00:25:34.14ID:9np+Rtrn0
欲しいのはただのブロックなのに関数として書かなければならないというのが余計なことをやらされている感はある。
969デフォルトの名無しさん (ワッチョイ cd3b-8MWH [2409:251:9020:2100:*])
2023/11/23(木) 01:53:09.12ID:pAGXWPD10
var使え
970デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240])
2023/11/23(木) 15:16:53.54ID:d47OCYFA0
>>966
処理の結果として複数の const、例えば x y を求めたい時は、その書き方でも難があるよね
971デフォルトの名無しさん (ワッチョイ 2d12-YW6P [2400:2200:6f7:92d9:*])
2023/11/23(木) 15:39:42.20ID:98Thj8w70
>>970
その場合はタプルで受け取るようにすれば問題ないよ
const [x, y] = (() => {
let a, b, c;
:
return [a + b * c, a * b + c];
})();
972デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240])
2023/11/23(木) 15:58:06.00ID:d47OCYFA0
>>971
ああ、それが現状の最適解な気がするね。
後で汎用関数化したくなっても対応しやすいし。
まあ >>968 みたいな感覚はあるし、関数としてのコストも気になっちゃうけど。
973デフォルトの名無しさん (ワッチョイ 551d-1fOb [180.178.89.53])
2023/11/29(水) 23:49:26.08ID:oO9dmq1+0
const num = 1;
とした時、numはCやJavaのint型と違って、1という値のオブジェクトを参照している
という理解でよろしいでしょうか?
(numという名前でラベリングされたメモリ領域には、1そのものではなく
数値オブジェクトへの参照値が入っている?)
974デフォルトの名無しさん (ワッチョイ e501-3M3b [60.118.124.10])
2023/11/30(木) 04:02:01.17ID:uIFlL3tD0
>>973
1 はプリミティブ値。
Object型ではない。
975973 (ワッチョイ 551d-1fOb [180.178.89.53])
2023/11/30(木) 22:41:28.93ID:l5hD/Y3Y0
>>974
レスありがとうございます

分かりました
文字列('Hello World'など)もプリミティブなんですよね
どうやって内部で実装されてるんですか?
976デフォルトの名無しさん (ワッチョイ cb01-0ikQ [2001:240:2461:5256:*])
2023/11/30(木) 22:57:08.84ID:mSFTiyup0
MDNをまず読みましょう
https://developer.mozilla.org/en-US/docs/Glossary/Primitive
977デフォルトの名無しさん (ワッチョイ 25f0-5Z4W [220.146.53.208])
2023/11/30(木) 23:13:04.35ID:5k4SwxyG0
>>973
実装的には全て参照扱いだよ
ただし数値の場合は参照(ポインタ)そのものに数値を埋め込むという方法
だから全て参照だけどメモリは消費しないというハック
978デフォルトの名無しさん (ワッチョイ e501-3M3b [60.118.124.10])
2023/12/01(金) 01:54:56.09ID:Bo4sqMI/0
>>975
質問が大雑把過ぎる
もっと具体的に詳しく
979975 (ワッチョイ 691d-zrcD [180.178.89.53])
2023/12/02(土) 04:48:25.07ID:3pMMmiCv0
返信くれた方々、ありがとうございます

>>976
TOEICのスコア400点台だったので厳しいです…

>>977
参照扱いでもプリミティブ型って言うんですか?
Javaではintやdoubleなど参照を用いずにデータを記憶する型をプリミティブ型と
呼んでいたので、少し混乱しています…

>>978
すみません、以後気を付けます
980デフォルトの名無しさん (ワッチョイ 99ca-egvc [2400:2200:6f3:92ab:*])
2023/12/02(土) 10:49:58.14ID:qpNh64Np0
>>977は気にしなくていいよ
英語苦手でもプリミティブには7つの型がある、ぐらいは読めるだろう
あと日本語のページがないか調べるぐらいはしよう
https://developer.mozilla.org/ja/docs/Glossary/Primitive
981デフォルトの名無しさん (ワッチョイ 91ca-j/4L [122.132.80.240])
2023/12/02(土) 11:43:24.98ID:/unkk9Eq0
>>979
そもそもそんなことを気にしてどうするの?
何がしたくての質問?

ぶっちゃけ表向き気にするべきなのは、その変数 a を別の変数 b に代入して、b を操作したら a まで同じように変わるのかどうかだけだと思うよ。
982979 (ワッチョイ 691d-zrcD [180.178.89.53])
2023/12/03(日) 12:45:58.94ID:FUDcVj1n0
>>980
分かりました
ありがとうございます

>>981
レスありがとうございます
うーん、まあこだわりとでも言いましょうか…
個人的にはそこまで知っておくことは無駄ではないと思います
983デフォルトの名無しさん (ワッチョイ c1b6-egvc [2400:2200:6d6:9e9c:*])
2023/12/03(日) 13:08:07.26ID:tV1DejKO0
>>975の質問なんかは明らかに自分のスキルや理解力に不相応なことを知ろうとしてない?
それを知ろうとするのはもっと力を付けてからがいいと思う
984デフォルトの名無しさん (ワッチョイ 1901-+tyV [60.118.124.10])
2023/12/03(日) 14:24:30.66ID:GsReymgf0
>>982
実装を知る以前に仕様は理解してる?
「仕様書のここをどうやって実装しているか、を知りたい」なら誰かしら答えるかもしれないが、そのようなレベルにも見えない
仕様を理解せずして、実装を理解するのは無理
985デフォルトの名無しさん (オイコラミネオ MM95-j/4L [150.66.80.109])
2023/12/03(日) 17:15:18.22ID:TpyXoIhbM
>>984
乗っかって補足すると、同じ仕様の実装なんて何通りもあるのよね。
そこであえて実装を知りたいというなら、その理由も書く方が間違いないよね。
986982 (ワッチョイ 691d-zrcD [180.178.89.53])
2023/12/04(月) 23:09:24.91ID:GWbm6wp00
レスありがとうございます
遅くなってすいません

>>983
そうですよね
まあ単純に、文字列である以上、変数用に確保したメモリ領域内に簡単には収まらない
だろうなと推測したんです
でも不変な値なら参照使わなくても収まるのかな

>>984
微妙です
入門書を読んで間もないレベルです

>>985
分かりました
まあ実装って言い回しが大仰でした
参照を使ってあるかどうかを特に知りたかったんです
987デフォルトの名無しさん (ワッチョイ a95f-i/h+ [14.8.104.32])
2023/12/04(月) 23:27:59.49ID:lRGkzbxI0
そのレベルを気にする人はもうフレームワーク作るレベルだろう
988デフォルトの名無しさん (アウアウウー Sa9d-/D3x [106.146.123.7])
2023/12/05(火) 20:06:09.74ID:gtr9NjJza
>>982
あ、ややこしい書き方してすまん
単にuint64_tが値の参照でオブジェクトの場合はポインタが入ってて
整数の場合はそのまま使ってると言うことを言いたかっただけ
typedef uint64_t JsValue;

JsValueが「値」を指す参照

JsValue obj = createObject(); // Object
JsValue smi = createSmi(); // Small Integer

こうすることでオブジェクトも数値も同じように扱える
V8もJSCも全部これ
989982,986 (ワッチョイ 691d-zrcD [180.178.89.53])
2023/12/05(火) 23:32:22.63ID:c1y4Tvg20
レスありがとうございます

>>987
そうなんですかね

>>988
内容がハイレベルですね
990デフォルトの名無しさん (ワッチョイ 1901-+tyV [60.120.204.187])
2023/12/06(水) 00:21:20.37ID:HaZOzd170
>>986
入門書を読んで間もないレベルなら、口が避けても「仕様を理解した」とは言えない
実装を覚えるのは仕様書を読めるようになった後だろう
https://262.ecma-international.org/14.0/
991デフォルトの名無しさん (ワッチョイ 4b6e-yLTa [240a:61:11a:237d:*])
2023/12/09(土) 10:39:43.45ID:npLWblUF0
素人な質問で申し訳有りません。
下記のスクリプトで何故か関数丸々出力されてしまうのです。
テキストでは改行が多すぎる為、投稿出来ないため画像で申し訳有りません。
下のグレーのフォントが出力結果です。
出力指定していないので、何も出力されないはずなのですが…。

JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚
992デフォルトの名無しさん (ワッチョイ 4501-zRS8 [60.106.64.223])
2023/12/09(土) 11:31:37.42ID:In8GNdRi0
>>991
画像でコート見るのはしんどいので、>>2のサイト使って現象が再現するコードを掲示してほしい
993デフォルトの名無しさん (ワッチョイ 2302-tASO [27.94.242.45])
2023/12/09(土) 14:27:43.55ID:iYG1bkmj0
>>991
どうでもいいけど関数名の付け方にセンスないな
コメントもつける意味がないゴミ
変換ならconvertとかにすりゃいいのに…
994デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.170.203])
2023/12/09(土) 15:46:37.17ID:W9usxQKOr
/や:が入ってるのを明示してるのはコメントとして意味があるだろう
995デフォルトの名無しさん (ワッチョイ 1b56-m+YX [2400:4176:2846:5b00:*])
2023/12/09(土) 16:39:16.69ID:0uXDsiHr0
classのインスタンスで#プライベートメソッドにアクセスする方法ってないんでしょうか?
996986 (ワッチョイ b51d-g9yR [180.178.89.53])
2023/12/09(土) 17:13:36.47ID:YETt4fHv0
>>990
はい
リンクありがとうございます
997デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20])
2023/12/09(土) 17:46:24.03ID:Mnb70srnr
なかったんで次スレ立てた
http://2chb.net/r/tech/1702111239/
998デフォルトの名無しさん (ワッチョイ 5510-yLTa [222.230.65.145])
2023/12/10(日) 11:19:27.25ID:ngtmyS7f0
>>992
サイトの使い方がいまいち分からず試してましたが、サイトでは症状が再現できず想定通りの挙動でした。これは作ってるアプリ側に原因があるのでしょうかね。
mementoというdbアプリだったのですが。

>>993
自覚はあります。プログラムに興味を持ち練習はじめなので勘弁してやってください。思いつかないんですorz
999デフォルトの名無しさん (ワッチョイ 35cb-tek/ [2400:2200:6f2:ada4:*])
2023/12/10(日) 11:47:16.59ID:v6fUhk/70
>>998
>>991を実行してる環境について書いてくれないと
コードで見えてる部分以外については知りようがないんだから

あと関数名を思いつかないならAIに候補を挙げさせるのはアリ

続きが必要なら次スレにどうぞ
1000デフォルトの名無しさん (ワッチョイ 8f18-Xgad [2001:268:98e3:8067:*])
2023/12/16(土) 00:37:24.71ID:xiFcB2tC0
テスト
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 495日 8時間 39分 45秒
10021002
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login

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



lud20250503232909ca
このスレへの固定リンク: http://5chb.net/r/tech/1659855460/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「JavaScript の質問用スレッド vol.125 YouTube動画>1本 ->画像>12枚 」を見た人も見ています:
+ JavaScript の質問用スレッド vol.123 +
+ JavaScript & jQuery 質問用スレッド vol.7 +
+ JavaScript(ECMAScript)質問用スレッド vol.123 +
Civilization6 (Civ6) 質問スレッド Vol.5
Mac OS X 初心者質問用スレ 17.0
JavaScript ライブラリ総合質問所 vol.4
【質問】スペイン語学習者用スレッド 14【回答】
Civilization6 (Civ6) 質問スレッド Vol.7
Civilization6 (CIV6) 質問スレッド Vol.3
パソコン一般板総合質問スレッドVol.100
【モバゲー】日本専用スレッド【質問広場】
【DTM】初心者質問スレッドVol.80ワッチョイ有り
【DTM】悶絶★初心者質問スレッドVol.82【5歳児】
ヴァルキリープロファイル2質問専用スレッドその18
【DTM】初心者質問スレッドVol.84ワッチョイ無し
【水明華ネット教会】キリスト教@質問箱301【パパラッチを隔離するための専用スレッド】
iPhone 質問スレッド part65
Windows 10 質問スレッド Part75
Blender 初心者質問スレッド Part45
セキュリティ初心者質問スレッド Part145
iPhone 質問スレッド part55 【本文引用禁止・ワッチョイ有】
javascriptで質問
歯科医師に質問スレッド 1
レース初心者質問スレッド
スプリクト野郎質問スレッド
国内旅行板 質問スレッド 67
国内旅行板 質問スレッド 68
●●●相談・質問スレッド
期間工に関する質問雑談スレッド
国内旅行板 質問スレッド 69
【期間工】質問&雑談スレッド
iPhone 質問スレッド part66
囲碁・初心者専用の質問スレッド 第27局
iPhone 質問スレッド part38
囲碁・初心者専用の質問スレッド 第26局
iPhone 質問スレッド part31
◆MUGEN 総合質問スレッド 19◆
Windows 7 質問スレッド Part67
Windows 10 質問スレッド Part27
Windowr 10 質問スレッド Part72
Windows 10 質問スレッド Part45
Windows総合質問スレッド Part3
Windows 10 質問スレッド Part29
Windows 10 質問スレッド Part54
ヤフオク初心者質問スレッド #829
ヤフオク初心者質問スレッド 812問目
Windows 10 質問スレッド Part69
Windows 7 質問スレッド Part51
Windows 10 質問スレッド Part64
Windows 10 質問スレッド Part36
Windows 10 質問スレッド Part78
Windows 10 質問スレッド Part77
Window$ 10 質問スレッド Par†70
Shade 相談/質問スレッド Ver.41.0
Windows 10 質問スレッド Part50
ヤフオク初心者質問スレッド 802問目
ヤフオク初心者質問スレッド 815問目
ヤフオク初心者質問スレッド 824問目
ヤフオク初心者質問スレッド 804問目
////鉄道板・質問スレッド Part174////
Window$ 10 質問スレッド Par†71基目
Blender 初心者質問スレッド Part30
Blender 初心者質問スレッド Part24
////鉄道板・質問スレッド Part172////
////鉄道板・質問スレッド Part176////
11:31:39 up 65 days, 12:30, 0 users, load average: 10.36, 10.56, 14.50

in 2.0245759487152 sec @2.0245759487152@0b7 on 062200