[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/25 03:31 / Filesize : 355 KB / Number-of Response : 1024
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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

■前スレ
JavaScript の質問用スレッド vol.124
https://mevius.5ch.net/test/read.cgi/tech/1636525464/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured

39 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 16:08:14.77 ID:anBQQFEld.net]
ブックマークレットのスレッドかこちらか悩みましたが質問なのでこちらでご相談させていただきます。

他者のWebサイトを閲覧する際、JavaScriptを用いて作成されている場合、リンクを新しいタブで開けない場面があります。
頻繁にページを進んだり戻ったりする場面、可能であればリンク先を別タブで開くようにしたいです。
ブックマークレットを用いて、現在ページのJavaScriptのリンクを別タブで開くように書き換える処理をすることは可能でしょうか?

40 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 16:38:05.47 ID:avuNeQJi0.net]
>>39
そのサイト次第かな
クリックした後の画面を一発で開けるURLが用意されてたら基本的に実装できると思う

41 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 00:11:31.61 ID:8AM/s+hA0.net]
連想配列から特定のキーを検索して、重複がないもののみ取り出した配列を取得したいのですが、
このコードだと速度的に問題がありました。何か良い方法があったら教えていただけないでしょうか
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 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 02:15:20.35 ID:Wm/0iruN0.net]
>>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 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 03:34:12.57 ID:E5gjC2rTd.net]
Mapで似たようなこと考えてた

44 名前:デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) mailto:sage [[ここ壊れてます] .net]
>>41
要素数や重複要素のばらつき具合によって結果は変わるが、最終的には力業が最速な事が多い
https://jsfiddle.net/gft5ah0n/

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

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

重複検知が頻繁に発生するようであれば、データのも持ち方を new Map や new Set を使うように変更した方がいい
配列はユニークな値を得るのに向いていない

45 名前:デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) mailto:sage [[ここ壊れてます] .net]
>>44の補足
jsfiddleのconsoleはconsole.time()を実装していないようだ
ベンチマーク結果はブラウザのコンソールで確認する必要がある

46 名前:デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) mailto:sage [[ここ壊れてます] .net]
すまん
>>44のwhile_loopは期待通りに動かないので忘れてほしい(console.assert()のコードをミスって気づかなかった)
重複要素のばらつき具合によるが、(>>41の配列においては)暫定最速は>>41

47 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 10:46:53.92 ID:RJZpwhgn0.net]
>>46
console.assert()の修正、重複チェックをkindのみに修正したら、mapが最速になった
https://jsfiddle.net/bw8z2acf/



48 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 11:16:26.73 ID:RJZpwhgn0.net]
>>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 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 11:42:14.57 ID:RJZpwhgn0.net]
>>39
a要素でマークアップされているなら、難しくはない

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

window.open()などでリンクを開く挙動もJavaScriptで制御しているなら、コードを読んでリンク先を得る手段を考える必要がある

50 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 09:22:10.61 ID:eAq4eNQY0.net]
>>40
>>49
ありがとうございます。

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

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

素人ながらいくつかブックマークレットで試したのですが、逆に実行するとリンクが無効になる事が多々でした。
アドバイスをいただければ幸いです。

51 名前:デフォルトの名無しさん [2022/09/04(日) 12:38:54.82 ID:FoFuUBY00.net]
<div style="width:100%;height:200px;border:Solid 3px #0000ff" id="test"></div>

これのcss初期設定を取得したいのでstyle="○○"の○○部分を抽出したいんだけどやり方がわかりません。
element.style.widthみたいに取得すると途中で値を書き換えられると初期設定が得られないので
最初にタグに埋め込んであるものを取得したいんです。

52 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 20:07:02.96 ID:KWOOnIlI0.net]
getAttributeとか?

53 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 20:23:24.42 ID:FTTWPGH/0.net]
element.style.hoge=fugaしたらstyle属性値も連動するんだから
書き換える前に取得しとくしかなくね?

54 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 21:15:03.99 ID:SMoCQy1h0.net]
>>51
・直後にscript書いて書き換え前にstyleを取得しておく
・Fetch APIでhtmlをGETしてCSPでscript無効化してparseしてstyleを得る

55 名前:デフォルトの名無しさん [2022/09/04(日) 22:38:54.08 ID:FoFuUBY00.net]
>>52-54
ありがとうございました

56 名前:デフォルトの名無しさん (ワッチョイ d52c-6nWD [180.52.202.152]) mailto:sage [[ここ壊れてます] .net]
>>50
開発者が、どのフレームワークを使っているのか分からないけど、
例えば、Ruby on Rails, Stimulus を使っているなら、

[Rails]Stimulusを使ってtableの行全体<tr>をリンクにする(jQuery不要)
https://zenn.dev/necocoa/articles/rails-stimulus-tr-link

これのhref_controller.js に、

export default class extends Controller {
toHref(event) {

// 既定の動作を取り消す
event.preventDefault()

// data-href 属性に入っている、URL を取得する
const href = event.currentTarget.dataset['href']

// URL を設定する
window.location.href = href
}
}

57 名前:56 mailto:sage [2022/09/04(日) 23:14:48.88 ID:9ocqxCfk0.net]
>>56
// URL を設定する
window.location.href = href

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

この場合、Ctrl + クリックや、
右クリックメニューから新しいタブで開くことは出来ないのかな?



58 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 23:26:45.19 ID:RdtW7bNN0.net]
>>50
遷移する時にdata-targetが使われることを見込んでこれでいけるかもね
for (let tr of document.querySelectorAll('tr.〇〇〇')) tr.dataset.target = '_blank'
※〇〇〇はtrのクラス名で

59 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 18:27:01.95 ID:XvLqNcU6H.net]
document内の要素で、textContentに'xxx'を持つクラスを取得するにはどうしたらいいですか?
全部の要素総当たりでtextContent調べるしかないんでしょうか?

60 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 18:51:10.83 ID:ng2JfbNn0.net]
>>50
JavaScriptコードが不明なので正確な回答は不可能

>>58の想定通りなら、おそらくその実装が一番楽
tr要素ノードにclickイベントハンドラでwindow.openする実装と仮定して、下記実装が考えられる

1. elementdataset.hrefでリンク先アドレスを得る
2. createElementでa要素ノード生成
3. replaceChildで(A)のDOMになるよう調節
4. tr要素ノードの仕掛けられたであろうclickイベントハンドラをevent.stopImmediatePropagation()で封印

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

window.open()なんてレガシーコード書きたくないからあえて

61 名前:a要素を使っているが、
イベントを横取りできるなら、既存イベントハンドラと同じコードにしても良い
[]
[ここ壊れてます]

62 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 19:18:18.86 ID:ng2JfbNn0.net]
>>59
XPath式を使えば、textContentを使わなくて済む
https://jsfiddle.net/kb5e740f/

63 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 19:25:28.71 ID:ng2JfbNn0.net]
>>61
テキストノードを子に持つ要素ノードを捕捉するコードにすればよかった
https://jsfiddle.net/kb5e740f/1/

64 名前:デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.180.164]) [[ここ壊れてます] .net]
プログラミング初心者でJavaScriptを勉強してます。
メンバ変数A、メソッドBを持つクラスがあり、メソッドBの中で変数Aを活用(Aを用いた処理やAの変更)したいのですが、
Aを引数としてBに渡して返り値として受け取るのと、Bの中で直接this.Aと記述して処理するのは何か違いがありますか?
メソッドBに別の変数を渡す可能性があるなら前者でないといけないのでしょうが、そうでなければ後者の書き方でよいでしょうか?

65 名前:デフォルトの名無しさん (ワッチョイ 6501-vbgY [60.85.61.123]) mailto:sage [[ここ壊れてます] .net]
>>63
this.Aは全てのインスタンスメソッドで参照できる
this.Aはインスタンスを参照可能なスコープ上で参照可能

仮引数AはメソッドBの関数スコープ外から参照不可能

66 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:11:15.04 ID:8NMkvrFG0.net]
Ruby で書くと、
initialize は、constructor

class A
def initialize
@x = 0
end

def f_1
@x = 1
end

def f_2( num )
@x = num
end
end

p a = A.new #<A: @x=0>

a.f_1
p a #<A: @x=1>

a.f_2( 2 )
p a #<A: @x=2>

67 名前:デフォルトの名無しさん [2022/09/07(水) 19:17:44.81 ID:GIiuva0od.net]
>>64
それ何にも疑問の解決になってないだろう



68 名前:デフォルトの名無しさん [2022/09/07(水) 20:26:24.25 ID:LU0OXBc/0.net]
>>66
↓のsetAとcalcAの違いを聞いてるんじゃないのか?

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

わかっているらしいあなたが回答すれば済む話だが

69 名前:デフォルトの名無しさん [2022/09/08(木) 00:18:00.64 ID:rIQlC2lz0.net]
すいません。以下の様な状況でfuncCからfuncBまたはB'が呼ばれる状況を考えていました。B'のほうが楽な気がして。そもそも意味不明な質問だったら申し訳ないです…
```
class Foo{
varA; // varAの値はよそから取得

funcB (a){
//aに対する処理
return a;}

funcB' (){
//this.varAに対する処理
}

funcC(){
ans = funcB(this.varA);
または
funcB'();
ans = this.varA;
}
}

70 名前:65 mailto:sage [2022/09/08(木) 07:17:36.21 ID:eI1uoUaK0.net]
Ruby では、>>65
に書いたように、

def f_1
@x = 1
end

みたいに、クラス内のインスタンスメソッド・f_1 内で、
インスタンス変数・@x を使えるので、一々、引数で渡す必要がない

71 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 19:40:45.35 ID:6QKcdu8L0.net]
オブジェクト指向の一般的な話としては、クラス内の関数であればクラス内のメンバはいじっても問題ないと思う。

ただ、「どこの関数がこのメンバを触ってるのかわからない」ってほどクラスが巨大化するなら、もはやそれはたちの悪いグローバル変数そのものなので設計からおかしい。

72 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 22:51:00.93 ID:D/mmzJCP0.net]
>>68
一つ一つのコードの意味を理解して、一つ一つのコードでなぜをそれを使うのか、と自問して答えを出せば、自ずと答えが出てくる
質問していない部分で突っ込みどころが多すぎて、「何も考えてないんだな」と思わせられる

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

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

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

今後、インスタンスプロパティを拡張する予定があるならclassを使うべきだし、そうでないなら静的関数で十分
>>64で示した挙動の違いだけで十分に判断できる

73 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 23:10:43.06 ID:DGEh14TYr.net]
それがプログラミング初心者に投げつける言葉かよ・・・
そういう知識や判断力もゆくゆくは必要だけども物事には順序ってもんがあってまだその域ではなかろう
マウントが取りたいだけならもっと近いレベルの相手にやんなよ

74 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 23:23:08.03 ID:xrpQvLAzM.net]
>>63
いいと思うよ
というかBに汎用性を持たせるのは微妙

75 名前:デフォルトの名無しさん [2022/09/09(金) 09:56:50.51 ID:Rq87TVpoa.net]
this.Aで書いた方が手っ取り早いことが多い気がしたのですが、そちらでもいいけどスコープに注意しないとバグの要因になる、グローバル変数を濫用しないようにというのと相似形の似たような話という認識でいいでしょうか。
下手したら必然性なく両者を混在させてしまったりしそうなので注意したいと思います。参照透過性とか言葉自体知りませんでした…
参考になりました。ありがとうございます。

76 名前:デフォルトの名無しさん [2022/09/09(金) 11:06:49.13 ID:hB1+BppPd.net]
>>74
今は>>70の理解でいいと思うよ
今の時点であまり詰め込んでもしょうがないし
>>71みたいなののせいで萎縮しないでね

77 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 19:12:54.25 ID:0zkp1JmC0.net]
>>72
> 物事には順序ってもんがあってまだその域ではなかろう

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

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

マウントを取りたいわけじゃない



78 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 20:14:57.93 ID:n8dQNxep0.net]
だから、オブジェクト指向とかプログラミングは、Ruby から始めるべき。
JavaScript(JS)みたいなややこしいもので、デザインパターンを学ぶべきではない

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

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

だから、こういう言語へ手を出したらダメ。
Rubyist は、JSなどをコピペで済ます。
深い所までやらない。分量的に切りがない

79 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:48:49.86 ID:1NdnS3vZ0.net]
学習の順序とか提示せずに「何も考えてない」と切り捨てるのはマウンティングに入らないんですか?

80 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 06:13:53.00 ID:Cpvx7Vnj0.net]
回答者相手にマウントとってる人に真面目に答えるだけ無駄か
そんな暇があったら、質問者に回答すればいいのに

81 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 09:58:22.29 ID:aLnVTfHzr.net]
君は高圧的な正しさで初心者を殴ってるだけ
人にものを教えるのには向いてないと思うよ

82 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:01:57.14 ID:Cpvx7Vnj0.net]
>>80
5chはそういうものと思っていたが、それがこのスレの流儀なら気を付ける
だが、回答者に高圧的だったり、回答者にマウントをとる人も是正されるような公平な世界であってほしいね

83 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:48:27.08 ID:DabBJhVCr.net]
具体的にどの発言に対して言ってるのかわからんけど
そういう何か言い返さないと気がすまないって気持ちは心の中にしまっておいた方がいいんじゃないかな

84 名前:デフォルトの名無しさん (スップ Sd33-A6fq [49.97.111.223]) mailto:sage [[ここ壊れてます] .net]
自分の過ちを認めると負けたみたいでプライドが傷つくから
俺も悪かったけどお前らも悪いから引き分けだよねということにしたい心理の表れ

85 名前:デフォルトの名無しさん [2022/09/11(日) 20:15:23.24 ID:yDUj5jeF0.net]
元の配列を関数内で空にしたいけどうまくいきません
100と表示されてしまったので空になっていませんでした。
配列は参照渡しなので元の配列も書き換えられると思ったんだけど
どうやれば関数内で元の配列を空にできますか?returnは使いたくないです。

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

function test(b_list){
b_list = [];
}
alert(a_list[0])

86 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 20:29:51.41 ID:bqV48/aB0.net]
>>84
function test(b_list) {
b_list.length = 0
}

87 名前:デフォルトの名無しさん (ワッチョイ 6910-V+uT [180.12.82.129]) [[ここ壊れてます] .net]
>>85
できました
ありがとうございます



88 名前:デフォルトの名無しさん [2022/09/12(月) 09:29:51.85 ID:ptOOOLgwr.net]
b_list = [];
が何故ダメかというとb_listを空にしてるんじゃなくて
b_listに新しい配列を代入してるだけだから
ということは覚えておこう

89 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 01:20:03.32 ID:93J4lVSi0.net]
ブラウザで動かすとき、グローバルスコープでの demo って名前は何かある?
この名前の関数作ってボタンの onclick から呼び出そうとしたら関数未定義のエラーになる。
別の名前にすると呼び出せる。

90 名前:デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.97.207]) mailto:sage [[ここ壊れてます] .net]
タイポかスコープの勘違いとかじゃないの?
コンソールでdemo関数定義して実行したら普通に動いたけど

91 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 10:32:57.61 ID:UxdKoKVd0.net]
>>88
再現可能なコードを出してみたら?
https://ja.stackoverflow.com/help/minimal-reproducible-example

92 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 15:04:58.71 ID:i+SKzCkA0.net]
>>90
こんな感じだけど、ちょっと分かってきた。
全体貼ろうとしたらセキュリティチェックかなにかに引っ掛かって書けないから、scriptタグの中身と body の中身だけ。

function demo() { alert('DEMO'); }

<form>
<input type="button" name="demo" value="DEMO" onclick="demo()">
</form>

この onclick にとっての demo は多分 form内の input要素の demo になるんだね。
スコープがこの form になると。

93 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 15:06:34.97 ID:i+SKzCkA0.net]
エラーは未定義関数じゃなく、demo is not a function だった。

94 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 17:05:20.97 ID:bbK6e07Hd.net]
thisとthis.formがスコープに入る仕様だそうな
https://qiita.com/hakatashi/items/40fbedf61a3dd79f21fc

有効に使う機会よりも謎の挙動にどハマりするケースの方が多そう

95 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 18:38:15.96 ID:UxdKoKVd0.net]
>>91
window.demoかaddEventListenerを使ってみては?
後者がベター

96 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 08:59:26.24 ID:oCqDdJBP0.net]
回答もらった途端にいなくなる

97 名前:質問者多いな []
[ここ壊れてます]



98 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 17:53:11.47 ID:hlHjM9NA0.net]
こんにちは
ブラウザから、ローカルのファイル(画像など)を「関連付けされたソフトで開く」というのはできますか?
HTMLの<a href=#></a>だと、ブラウザ(Chrome)内で開いてしまいますが、これを別の画像ビューアで開きたいです

99 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 20:26:11.45 ID:oCqDdJBP0.net]
>>96
参考情報
https://akaki.io/2021/url_scheme_hijack

100 名前:デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]]) mailto:sage [[ここ壊れてます] .net]
ありがとうございます

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

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

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

<a href="hoge:C:/tmp/sample.jpg"></a>

101 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 22:44:18.29 ID:Xyg4q6vF0.net]
>>98
違ってるかもだけど、Windowsだったらパスの区切り文字は/じゃなくて\または¥じゃないのかな
で、\は制御文字として扱われるからエスケープして\\にしないとダメとか

102 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 23:02:16.56 ID:adbpU9F00.net]
>>98
アプリの方もURLスキームでの起動に対応してないとだめなんじゃない?
URLスキームはその URLの書式をアプリ独自に決めてあって、アプリはその書式でアクションや対象を判別して動作するように作られてるんだと思う。

とりあえず与えられた引数が分かるテストアプリを見繕って hoge として登録してみたら何か分かるかもよ。

103 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:54:22.37 ID:bvSP9gLaH.net]
Xhrで非同期通信するサーバーサイドのファイル(api.php)の中に登録されてる関数を実行することって出来るかな?

api.phpのfunction hoge()を実行するって感じ

104 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 17:40:38.15 ID:mWLza3X30.net]
>>101
リクエストのハンドラがその関数を呼べばいいだけじゃない?

105 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 18:17:20.20 ID:tI414gt60.net]
>>101
ん?
フレームワークも何も使ってないならそもそも該当のphpファイルを指定するから
その中で実行したい事を書けば良いだけでは?

106 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 06:40:09.61 ID:+dFS1Lme0.net]
if (a==b){} と書くべき所を、
間違って if (a=b){} と書いたら、
a<>b な値を入れても true が返ってくる

何が起きているんでしょう?

107 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 06:51:04.23 ID:PuLzlRQU0.net]
>>104
a=bの評価値はb
bがtruthyならifの次の文が実行される



108 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 11:19:00.04 ID:4XenNUmUa.net]
bが0以外なら{}が実行される。

109 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 01:45:20.86 ID:sarICcZm0.net]
>>105
>>106
それじゃifにする意味がない状態だったんですね
ありがとうございました

110 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 05:56:13.16 ID:BavO7XJlH.net]
uBlockで要素取得した時の名前が###contentsです
これをTampermonkeyのJSで要素getするにはどうしたらいいでしょうか?
getElementById、getElementsByTagName、getElementsByClassName、querySelectorAll等ではだめでした

111 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 12:03:03.14 ID:qg4xQu9m0.net]
>>107
条件の中にあえて代入を入れるケースは無くはない。

if (result = func()) ...

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

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

比較と組み合わせて

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

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

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

みたいな、代入と比較が一緒じゃないと書き方的に面倒になる部分に使う。

112 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 12:59:50.47 ID:QXtRAkax0.net]
>>108
getElementById('contents') or querySelector('#contents')

113 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 13:20:03.60 ID:C0rWwrYjH.net]
>>110
なるほど、#つけたらいけました
ありがとうございました

114 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 15:12:09.85 ID:MJUQgOR60.net]
>>106
0だけがfalsyなわけではないはず
https://262.ecma-international.org/13.0/#sec-toboolean

>>109
代入と組み合わせることですっきり書ける場合があるよな
whileは割と使ってる

115 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 21:55:34.73 ID:1vPPjI2Y0.net]
whileって原始的かつ結構直感的だから使いやすいよね

116 名前:デフォルトの名無しさん [2022/10/23(日) 10:06:21.98 ID:6Nh0kUN40.net]
<style id="test">
@media screen and (min-width:751px){
#aaa{
width:700px;

}
}

@media screen and (max-width:750px){
#aaa{
width:100%;
}
}
</style>

<スクリプト>
let sheet = document.getElementById("test").sheet;
let st = sheet.cssRules[0].selectorText;
alert(st);
</スクリプト>

このようなmedia screen付きのcssのselectorTextを取得したいんだけど
このようにやってもundefinedになってしまいます。どうすれば取得できますか?
media screenがなければちゃんとselectorTextは#aaaと取得できるんだけど

117 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 11:43:18.26 ID:hW6qdPXA0.net]
console.dirでsheetの中身を覗いて探せば見つかるかと



118 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:29:44.52 ID:l4Ll+vUb0.net]
iPhone6などの古い環境のSafariで、ES6以降の各ES(ES2022等)のどこまでサポートしているか、というのはどのように確認すればよいでしょうか?
iOSは12で、UAではSafari Webkit 604.1 となっています。
ESも毎年更新されてPCや現行スマホなら問題なく表示できますが、サポートの終わった古い端末でも表示させるにはどの機能がNGかを確認したいのですが・・・
iOSバージョンやブラウザバージョンを指定して、それがどこまでサポートしているかが分かるサイトや、実際の端末を使ってどの機能がNGかテストするとか、PC上でデバッグ可能(エラー表示)なエミュレータなどあれば教えていただきたいです。

119 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:34:31.24 ID:sfEqSuvv0.net]
MacBookを買いましょう

120 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:44:23.51 ID:YzYXhWAT0.net]
Can I use のサイトとか、npm のbrowserslist とか?

121 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:55:32.04 ID:l4Ll+vUb0.net]
>>118
ありがとうございます。
Can I useのサイトで各ESxxxを検索して概ねサポートされる範囲が分かりました。
Safari 12だとES2020の一部からサポートされない機能があるので、そこら辺が境界ぽいことが分かりました。

122 名前:デフォルトの名無しさん [2022/10/23(日) 17:46:05.51 ID:6Nh0kUN40.net]
>>115
cssRules[0].cssRules[0].seletctorTextとすることでできました
ありがとうございます

123 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 22:47:10.94 ID:VafCOtMO0.net]
JavaScriptは大変難しい言語です。Rubyの難易度を2、Cの難易度を5、C++の難易度を8にすると、
JavaScriptの難易度は12ぐらいあると思います。
このコーディングガイドはそんなJavaScriptの深みに嵌まらないようにするためのJavaScriptの書き方を規定したものです。
初級者1のための物ですので、わかってやっている人に好きにやってく

124 名前:ださい。

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

禁止編
JavaScriptには安易に使用してはいけない機能があります。
下記の機能は、それぞれの機能を使っても良い、または、使うべきであるという理由を説明できない限り、使用してはいけません。
[]
[ここ壊れてます]

125 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 23:16:49.94 ID:Sn3QmQ+W0.net]
>>121
中途半端に@raccyの記事をコピペした意図は何?
https://qiita.com/raccy/items/bf590d3c10c3f1a2846b

126 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:00:55.86 ID:IMqCQD810.net]
ラッシーこそだよ。欄版は。

127 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:02:07.20 ID:IMqCQD810.net]
マンタリーな、シェシェ。
ぐーむ菜素図。i-ku



128 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:02:49.43 ID:IMqCQD810.net]
天ら万重も近し。

129 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 02:28:40.06 ID:iqiTxlhy0.net]
>>123-125
日本語でOK

130 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 14:16:06.20 ID:S5n6e8jb0.net]
ファイルを読み込んでArrayBufferから配列へbyteデータにしたいです。
<input type="file" id="file">
<script>
let fileInput = document.getElementById('file');
fileInput.onchange = () => {
var fileReader = new FileReader();
fileReader.onload = function(e) {
var ary = new Uint8Array(fileReader.result);
}
};
これでaryに数値が代入されているんですが
選んだファイルが約100,000kb程のサイズなんですが
処理後のaryのサイズが約1600,000kbとなってしまいます。
なぜ大きくなってしまうのでしょうか?
同じサイズになるようにするにはどこを訂正するといいですか?

131 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 15:28:48.49 ID:S5n6e8jb0.net]
すいません勘違いだったようです。

132 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:11:46.89 ID:jIOTtTPX0.net]
初心者です、関数を配列オブジェクトに入れて
findでオブジェクトを取得して、そのオブジェクトの中の関数を呼び出すといったことがしたいです
初心者むけのネット記事なんかを見て組んだのですが、エラーが出てしましいます。
今のソースはこんな状態なんですが、間違っているところはありますでしょうか?

struct = [
 {hoge:huga, func:functionA},
 {hoge:hage, func:functionB}
]

callfunction(check){

 var gets = struct.find((v) => v.hoge === check);
 gets.run()←ここでAとBを使い分けて呼びたい
};

functionA = {}

functioA.run = function(){
~動かしたい処理A~
}

functionB = {}

functioB.run = function(){
~動かしたい処理B~
}

133 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:13:23.18 ID:jIOTtTPX0.net]
すみません少し修正です

struct = [
 {hoge:huga, func:functionA},
 {hoge:hage, func:functionB}
]

callfunction(check){

 var gets = struct.find((v) => v.hoge === check).func;
 gets.run()←ここでAとBを使い分けて呼びたい
};

functionA = {}

functionA.run = function(){
~動かしたい処理A~
}

functionB = {}

functionB.run = function(){
~動かしたい処理B~
}

134 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:47:25.32 ID:dHKYynBEd.net]
あまり複雑なことはせずに↓みたいなのではダメだろうか
https://jsfiddle.net/6x7yusjL/

これではダメで、どうしても>>130のエラーを解消したいなら出ているエラーの内容ぐらいは書くようにしよう

135 名前:デフォルトの名無しさん [2022/10/25(火) 17:58:30.53 ID:IMqCQD810.net]
>>121
14位.JavaScript

難易度:★★☆☆☆

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

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

JavaScriptから派生したフレームワークも数多く、
そちらのフレームワークを学習する場合には難易度が高くなります。
ただ、JavaScriptをそのまま利用して学習を進めるであれば、
他の言語と比べて開発環境の構築が不要であることや関連書籍が数多くでていることから、
難易度は低い言語といえるでしょう。

136 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 18:17:09.25 ID:jFHnOV8wa.net]
>>131
ありがとうございます。
まず進捗させないとけないんでそのやり方でやってみて、後々何がエラーの原因なのかは自決できるように調べてみます。

137 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 23:20:22.24 ID:RDzJGkEc0.net]
JavaScript(JS)は、Ruby の数倍難しい

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

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

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

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

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

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

学ぶ順序としては、Ruby → JS を勧める



138 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 23:31:33.41 ID:RDzJGkEc0.net]
>>131
では、callback 関数が呼ばれる前に、どちらの処理が呼ばれるか、既に分かっている状態でしょ。
直接引数に、呼ばれる処理を入れている

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

一方、>>130
では、callback関数が呼ばれる前には、どちらの処理が呼ばれるか、まだ分からない状態。
callback関数の中で初めて、どちらの処理が呼ばれるかが決まる

139 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 00:55:25.26 ID:WkGW4dkw0.net]
コンソールからは実行出来るのに、
拡張機能からだと無視されるのは何?

140 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 19:58:11.00 ID:radnZEOF0.net]
>>132
14位
やっぱ簡単なんだな。

141 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 14:20:33.37 ID:dQ+2i/bt0.net]
乱数の生成について質問です。
日付をシードとした乱数を生成したいのですがどうも偏ります。
シードの採用の仕方にルールなどがあるのでしょうか?
xorshiftのものを2個試しましたが
2ことも偏っていました。

https://jsfiddle.net/4dz70wxp/3/

142 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 17:22:23.79 ID:mktFZgumd.net]
ちょっとだけ違う初期値に対して乱数がほしいという用途は想定外だろう
欲しいものはMurmurHash3みたいなハッシュ関数ではないか?

143 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 18:09:17.06 ID:HM5QgWcQd.net]
一発目のnext()の値を捨てれば良さそうな気も
https://jsfiddle.net/ny0cpm5v/

144 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 18:36:54.83 ID:HM5QgWcQd.net]
もう少しいじってみたけどどうやらシードの桁数不足が問題なのかな
new Xorshift32(seed * 1000000)
とかにするだけで最初の値にもだいぶ幅が出る

いやいや偏りってそういうことじゃなくてって話ならごめんだけど

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

お二人ともありがとうございます。

146 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 20:24:11.90 ID:HM5QgWcQd.net]
next()が与えられた値にビット演算をあれこれやって次の値を出してるから
シードが2桁整数ではほとんどのビットがゼロなために
最初の演算結果が狭い範囲に収まってしまってるんでないかと

147 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 21:20:56.67 ID:dQ+2i/bt0.net]
>>143
ありがとうございます
https://jsfiddle.net/4dz70wxp/5/
42億あるうちの下一桁をいじるだけではだめみたいですね。
一日かわればseedも大きく変わるようにして
念の為、3回目あたりをとってみます。
ありがとうございました。



148 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 22:43:22.03 ID:HM5QgWcQd.net]
https://jsfiddle.net/f9h4zu1x/
少し間違ってた
桁数が少ないのが問題じゃなくて、ビットの可変幅が狭いのが問題
だから桁数増やしてもシードの増分が1なら結局同じ
日付を上の桁に持っていけば1回目も改善する

149 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:24:18.98 ID:8PfyXsoj0.net]
ブラウザ上での音声認識と録音について質問です。

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

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

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

音声認識と録音を両立する良い方法はないでしょうか?

150 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:30:07.55 ID:yKYFejXH0.net]
他人が書いたJavaScriptのコードは読みにくいですよね?

151 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:34:06.32 ID:Wk8IFz/p0.net]
>>147
自分が書いたコードすら後から見るとよく分からないなんてことはザラ

152 名前:デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]]) mailto:sage [2022/11/02(水) 15:53:32.48 ID:3LaOl4E/0.net]
function double(number){
const result=number*2;
return result;
};

const a=double(10);
console.log(a);

でコンソールに20と表示されますが、return resultの所のイメージがつかめません

function double(number){
const result=number*2;
};

console.log(result);

もっと簡単にこれでは20と表示されないんでしょうか?

153 名前:デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]]) mailto:sage [2022/11/02(水) 16:00:00.37 ID:3LaOl4E/0.net]
すみません
わかりました
double(number)に戻り値number*2を返してるんですね
だからdouble(10)で20になると

154 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 18:16:59.98 ID:O63UpHJfr.net]
>>148
そいつにかまってはいけない

155 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 21:50:32.06 ID:3LaOl4E/0.net]
JavaScriptのパズルをやってたんですけど、このコードだけで意味がわかりますか?
https://i.imgur.com/A4xj7Qh.jpg

最初の定義とか色々省かれていませんか?
初心者だからはっきりわからないのですが…

156 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 22:07:02.98 ID:zmf8vxSNM.net]
これぐらいなら簡単
変数名と関数名がちゃんと付けられてるからそこから読んでいけば普通に読める

157 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 22:12:42.94 ID:3LaOl4E/0.net]
>>153
変数のlistとかどこにも定義されて無いんですけど…
console.log(list)とか突然書かれても、初心者にはわかりにくい
どこから出てきたのかと…



158 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 22:46:00.31 ID:f9FvTICb0.net]
>>152
任意の数値リストを突っ込むと最大値出してくれるっていうコードだろこれ

159 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 23:13:35.51 ID:J736PzjWM.net]
問題の方にあるのかも知らんし
ここで聞かれても分かんね

160 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 23:36:43.64 ID:3LaOl4E/0.net]
問題はこんな感じです
https://i.imgur.com/lImN0zM.jpg
(画像の下の方が切れてますが、>>152の画像と同じものが入っているだけです)

あまり親切じゃないから初心者には向いて無いのかな?

161 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 23:40:18.85 ID:t/iark2f0.net]
全部負の数値だと使えない

162 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:43:01.93 ID:39/cO+p70.net]
このコードは十分初心者向けに書かれていると思うけどねぇ
ただmax=0にしているから、基本は0より大きな数の配列の中から最大値を調べる処理という事に

163 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 12:47:18.10 ID:EP9jPLDR0.net]
>>159
この学習アプリやってた

Google製のJavaScript教育ツール「Grasshopper」は基礎から学べて初心者に優しい
https://forest.watch.impress.co.jp/docs/serial/progedu/1404361.html

164 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:53:23.61 ID:78vcP9/m0.net]
次のステップなどで対応するならいいけどね
max の初期値を配列の先頭から取れば済むだけだが

165 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 20:27:36.79 ID:EP9jPLDR0.net]
ようやくわかりました
2つめの関数の中で前に定義した1つめの関数を実行してるんですね
関数は定義&実行で1ペアと考えないといけない
次に進みます

166 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 08:09:59.45 ID:RzANRCFJ0.net]
#を付ける プライベートクラスフィールドが分かりにくい。
解説しているサイトも少ない。

167 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:24:45.79 ID:zC6hz6+Y0.net]
Adobe Illustratorのスクリプトを書くのにHTMLの知識いりますか?
JavaScriptの入門書を読んでたんですけど、前半のJavaScriptの文法の所まで読み終わりました
後半はHTMLとJavaScriptの組み込み方みたいになってるんだけど、ここ読む必要あるのかな?
もちろん知ってた方がためになるんだろうけど、次のAdobe JavaScriptの本へ行こうか迷っています…



168 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:29:11.27 ID:zC6hz6+Y0.net]
DTP(印刷)でillustratorを使ってるのでWebは扱っていません

169 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:34:00.02 ID:FsgEaHF8r.net]
AdobeのjavascriptというかESバージョンめちゃくちゃ古くて記述するの苦労したが最近はどうなんだ

170 名前:164 mailto:sage [2022/11/07(月) 15:35:27.96 ID:zC6hz6+Y0.net]
自己レスですが必要無いそうです
ES2015以降も必要無いそうです
constとかletが使えないので全部varになってる

171 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 16:15:41.06 ID:5T/PrU7d0.net]
>>164
CEPでも使わない限りはHTMLの知識は不要。

172 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 16:33:24.89 ID:zC6hz6+Y0.net]
>>168
ありがとうございます。

173 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 22:39:38.06 ID:6PYY3JKr0.net]
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;ではそれ以降が実行されてしまいます

174 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 22:42:38.98 ID:6PYY3JKr0.net]
CAN.onClick = function(){win1.close();exit();}
みたいなことをやりたいのですが、exit()はAdobeScriptにはありません…

175 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 05:24:15.41 ID:/in1tyv80.net]
>>170-171
質問の意味がわからない

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

で処理は終了している

176 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 13:17:11.95 ID:xCg5uX6U0.net]
コールバック関数について、伺いたいのですが。
コールバック関数は、引数に渡される関数という理解でいますが。

これは関数であって、オブジェクトメソッドを渡すこともできますでしょうか。
例えば、
object.addEventlistener()
などの、メソッドも渡すことができますでしょうか?

177 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 08:09:24.18 ID:YDVUHmoCr.net]
object.addEventlistener なら関数だから渡せるけど
object.addEventlistener() は渡せないな



178 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 09:42:00.89 ID:wFqjoTWK0.net]
>>173
object.addEventlistenerで渡せるが、実行時のthis値が変わるので、期待通りに動作しない
bindを使うか、「コールバック関数を渡す関数」にthis値束縛機能があればそれを使う必要がある

179 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 15:10:49.67 ID:xoKJX++V0.net]
ありがとうございます。
Object.AddEventlistenerでも、コールバック関数になりうるということですね。
ただし、期待していることはできない。

関数(ユーザー定義)をコールバック関数にすることはイメージつくのですが。
オブジェクトメソッドをコールバック関数にするイメージがつきません。
何か、例文があれば教えていただけますでしょうか?

180 名前:176 [2022/11/13(日) 15:14:57.91 ID:xoKJX++V0.net]
あ。addEventlistener以外で構いません。

181 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 15:38:14.40 ID:wFqjoTWK0.net]
>>176-177
this値の変え方まで書いているのに、なぜにイメージ?
コールバック関数を使ったコードを書いて試せばすぐにわかる問題

182 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 15:46:58.08 ID:wFqjoTWK0.net]
Function.prototype.bind
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

183 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 17:36:35.00 ID:BIywqmt20.net]
AdobeScriptなのですが、
https://i.imgur.com/Ycwp6Nj.jpg
上の画像の「四角のパスの四隅をハサミツールで切って、塗りを線にする」まではスクリプトで出来るのですが、「短辺を特定する」ということはスクリプトで出来るのでしょうか?
一般的なJavaScriptの話でもいいのですが、出来るとか無理そうとか…

184 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 19:38:06.31 ID:0s117XaL0.net]
質問です、どなたか教えて下さい、どうか宜しくお願いいたします

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

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

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

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

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

としましたが、残念ながら自動的に再生ボタンを押すことができません。自動クリック自体が禁止
されているような雰囲気です。たぶんサイト側でクリック禁止にしているのだろうと思いますが
これを利用承諾画面と同じようにJacaScriptで自動クリックするする方法はないでしょうか?

185 名前:デフォルトの名無しさん [2022/11/13(日) 20:25:40.17 ID:cqK0B72A0.net]
ユーザー操作が起点じゃない場合は音声再生をブロックする、という制限がブラウザ側でかかってることがある
その場合はブラウザの設定で解除できるかもしれない

186 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 20:33:38.64 ID:8b+kwr5c0.net]
>>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();
でもいける

187 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 20:47:17.41 ID:Kw8DgDNz0.net]
こうじゃないか
document.getElementById("player_ui").shadowRoot.querySelectorAll("button")[0].click()
または
document.getElementById("player_ui").play();



188 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 22:43:20.67 ID:0s117XaL0.net]
>>183
すばらしい!有り難うございます!そのどちらの方法でも再生ボタンがクリックできました!
何を勉強したらあなたのような達人になれるのでしょうか?本当に有り難うございました!

>>184
お答えくださり有り難うございます。ただ、残念ながらその方法はどちらもNGでした。
"player_ui" を "#player_ui" に変えても駄目なので、すみませんが>>183を使わせてもらいます。

189 名前:デフォルトの名無しさん mailto:sage [2022/11/14(月) 15:59:19.18 ID:dW/V591r0.net]
if( ){ };の( )の中に「関数txtfn()が一度も実行されていなかったら」という条件を書きたいんですけど、どう書けばいいんでしょうか?
無理でしょうか?

190 名前:186 mailto:sage [2022/11/14(月) 16:42:32.41 ID:dW/V591r0.net]
すみません、これがコードです。

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度だけの表示したいのです(表示する回数が多すぎることになるので)

191 名前:デフォルトの名無しさん mailto:sage [2022/11/14(月) 17:23:26.59 ID:Ofrc3j5I0.net]
単にループ前にフラグをfalseにでもしておいて、一度でも実行すればtrueにすれば判断出来るのでは?

192 名前:デフォルトの名無しさん mailto:sage [2022/11/14(月) 17:46:10.99 ID:dW/V591r0.net]
>>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("グレースケールです");
}

これで出来ました。
ありがとうございます。

193 名前:デフォルトの名無しさん (ワッチョイ 2abd-masj [133.209.119.15]) mailto:sage [2022/11/14(月) 18:12:47.71 ID:zxQDBIse0.net]
すまん、敢えてここで聞かせて
Windows しか持っておらず、JavaScript の Safari での動作確認のため極力安い MacBook かなにかを買いたい。
中古でもなんでもいいんだけど、今時の Safari が動くやつって何を選べばいい?
Mac も iOS も Safari の系譜もよく分からず途方に暮れてる。
いわゆるブラウザのデベロッパーツールで動作確認したいので、多分 iPhone とかじゃだめなんだよね?
アドバイスおねがい

194 名前:デフォルトの名無しさん (スッップ Sd7a-4CYG [49.98.130.245]) mailto:sage [2022/11/14(月) 18:37:09.30 ID:srKPlYrDd.net]
safariのバージョンってiOSと連動だって話だったと思うから最新のiOSサポートしてる機種ならええんでないの?
Mac系のスレで理由話して最新のiOSが動く安いやつどれ?って聞くのが確実だろう

195 名前:デフォルトの名無しさん [2022/11/14(月) 20:44:37.96 ID:pZNm0HpP0.net]
動作確認のために実機買うなんて景気のいい話だなぁ羨ましい
俺ならBrowserStackとかLambdaTest使っちゃうけどね

196 名前:デフォルトの名無しさん (ワッチョイ dd5f-PnSp [14.8.104.32]) mailto:sage [2022/11/14(月) 21:12:34.76 ID:SgEq73X20.net]
iPhone持ってる人に実機テストしてもらっちゃうな

197 名前:190 (ワッチョイ f1bd-masj [122.133.73.185]) mailto:sage [2022/11/14(月) 22:33:47.26 ID:llxM2eVb0.net]
>>192
景気なんてよくねーよだからケチりたいんだろ。
でも何そのおもしろそうなキーワードは。調べてくる

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

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

なにはともあれ、取っ掛かりは掴んだ気がする。
ありがとう



198 名前:デフォルトの名無しさん [2022/11/14(月) 23:54:57.52 ID:h4ns2H1B0.net]
イベントオブジェクトを使わず、thisを使って、
そのイベントの発生元の要素を取得することは可能でしょうか?

199 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 06:06:01.39 ID:zBqzsCj00.net]
>>195
無理

200 名前:デフォルトの名無しさん (ワッチョイ a905-wHkz [210.143.72.233]) mailto:sage [2022/11/15(火) 08:04:13.30 ID:mRl02hRT0.net]
すみません、先日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で再生ボタンをクリックできるでしょうか?
どなたかもう一度だけ教えてください、宜しくお願いいたします

201 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 09:45:28.64 ID:ott+UO1u0.net]
該当する要素がない

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

202 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 11:01:59.02 ID:9SlnRoJw0.net]
>>197
ブラウザの DevTools でイベントリスナーの click を見ると見つかる

203 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 11:16:18.44 ID:9SlnRoJw0.net]
>>199
chromeだと当該要素の「検証」をすると出てくる

204 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 19:29:43.82 ID:T0qQfj8P0.net]
>>197
対象のclassをよく見てみよう

205 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 20:10:55.73 ID:mRl02hRT0.net]
>>201
document.querySelectorAll("button")[0].click()で行けました
有り難うございました

206 名前:デフォルトの名無しさん mailto:sage [2022/11/16(水) 00:23:35.29 ID:q+7X+iJ00.net]
こういう程の良い距離感のアドバイスを遅れる人間になりたいですな

207 名前:デフォルトの名無しさん mailto:sage [2022/11/16(水) 01:03:52.10 ID:yZvimkXe0.net]
>>170ですが、やっぱりキャンセルボタンを押すと
CAN.onClick = function(){win1.close()}の所で終わらなくて、最後の行まで実行されるんですがどうすれば中断出来るんでしょうか?
キャンセルしてもテキストの大きさが変わって終わります



208 名前:デフォルトの名無しさん (テテンテンテン MM8e-PjKb [133.106.50.10]) mailto:sage [2022/11/16(水) 01:15:16.40 ID:6ujCOi6jM.net]
そもそもキャンセルボタン押す前にテキストサイズ変わってんじゃねえの

209 名前:デフォルトの名無しさん (ワッチョイ 3d4b-aW8A [110.2.215.28 [上級国民]]) mailto:sage [2022/11/16(水) 01:28:38.23 ID:yZvimkXe0.net]
>>205
「画像とテキストが一緒になってる図で、画像だけ拡大縮小してテキストサイズはそのままにする」というスクリプトなんですけど、キャンセルすると図の大きさはそのままでテキストだけ拡大縮小してしまうんですよ
これでは困るのでキャンセルの箇所でコードから抜け出したい

210 名前:デフォルトの名無しさん (ワッチョイ bd4f-FFna [180.0.191.133]) mailto:sage [2022/11/16(水) 03:25:10.60 ID:pSETlPcG0.net]
CAN.onClick = function(){win1.close(); return; }
ではなく、

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

上は、その無名関数から抜け出すだけで、
下は、全体の処理から抜け出す

211 名前:デフォルトの名無しさん mailto:sage [2022/11/16(水) 14:57:45.45 ID:yZvimkXe0.net]
>>207
まだ仕事中で確かめられていないのですが、キャンセルでなくてOKの時も抜けたりしませんか?

212 名前:デフォルトの名無しさん mailto:sa []
[ここ壊れてます]

213 名前:ge mailto:2022/11/16(水) 16:05:43.43 ID:yZvimkXe0.net [ >>207
return;を入れると、違う動作を始めたので保留にします。
時間がある時に考えます。
どうもありがとうございました。 ]
[ここ壊れてます]

214 名前:デフォルトの名無しさん [2022/11/17(木) 16:50:10.12 ID:BipbxCG90.net]
<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の位置が動くのはどうしてですか?

215 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 17:45:40.38 ID:ZrcXbqFYM.net]
上も動いてるよ
一瞬で終わるから見えないだけ

216 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 18:17:32.44 ID:6VGHAaqQ0.net]
>>210
画面のレンダリングは逐一行われないから。
イベント契機で実行されたスクリプトの処理を一旦終えたときその最終的な結果がレンダリングされるというか、一旦処理を終えないとレンダリングされないと思っておけばいい。
setInterval のやつは、インターバルの契機で実行された処理は1コマ分の処理だけして終わるから、その都度レンダリングされる(かもしれない)。
実際は周期があまり高頻度だと、処理を終えてもレンダリングされるとは限らず間引かれたりする。
ただ未レンダリングだからといってもDOMの状態やスタイルの設定などは逐一適用されてる。

217 名前:デフォルトの名無しさん [2022/11/17(木) 20:15:58.57 ID:BipbxCG90.net]
>>212
そうだったんですか
ありがとうございます



218 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 09:19:55.63 ID:Wj1K/ZC10.net]
a = "0px";
a = "200px";

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

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

こういう処理を100回やってから、100回目の後だけ再描画されるのだろう。
1〜99回までは値が設定されるだけで、再描画されない

219 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 17:10:38.42 ID:T5zu6F7Id.net]
横からで申し訳ないけど、アニメーション処理を行うならsettimeoutとかでわざと描画間隔を空ける必要があるって解釈でいいのかな?

220 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 17:16:10.46 ID:Zs9eTx2N0.net]
>>215
一コマ毎にイベント処理を終えブラウザに処理を返す構造にしないといけない
あるいはスタイルや SVG でアニメーションさせるか

221 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 17:23:26.00 ID:UFs4jVzI0.net]
ブラウザでは、Performanceパネルや
タイムラインパネルでチェックできる

222 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 19:14:38.47 ID:RNEbLEjB0.net]
アニメーションならsetTimeoutよりrequestAnimationFrameだね

223 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 21:22:51.98 ID:dA0W7FfK0.net]
>>216
>>218
わっちょい違うけど同一人物です
勉強になります

224 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 04:30:35.89 ID:uCGRkc1L0.net]
ゲームセンターにある機械とか、パソコンゲームでは、よくコマ(フレーム)落ちが起きる

1/30秒とか1/60秒の間に、処理が終わらないので、再描画できない

225 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 19:26:10.00 ID:2irpXLl70.net]
例えばドキュメント上に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]まで合計するにはこの続きにどういうコードを書けばいいのでしょうか?
(間違っていたら既に書いてあるコードを変更してください)

226 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 19:32:18.92 ID:2irpXLl70.net]
すみません
質問してから気付きました
これでいけますか?

DOC=activeDocument;
SEL=DOC.selection;

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

227 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 23:28:09.02 ID:9yqGhBqR0.net]
>>222
試してから質問しよう



228 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 07:58:25.96 ID:zjUQ0JII0.net]
for の前にW=0してね

229 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 19:31:32.32 ID:bgVSrlSG0.net]
>>224
ありがとうございます

for(i=0;i<SEL.length;i++){ ~ }っていう式がコードの中にいくつも出てくるんですけど、変数iのところはそれぞれの式で変えないといけないんでしょうか?
for(j=0;j<SEL.length;j++){ ~ }とか。
関数内だけですか?
同じ変数文字が使えるのは

230 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 20:42:57.11 ID:XzYfw6V5H.net]
いい質問ですね
変数のスコープの問題なので試してみたらいかがでしょう?
jsのスコープをしっかり押さえると
伸びしろが変わります!

231 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 02:03:46.52 ID:ZMd64Nu10.net]
ありがとうございます
勉強を始めて1か月ですけど改造はわりとうまく出来るようになりました
最初は何が書いてあるのかわからないんだけど、ジーッとしつこく見てるとわかって来ますね

232 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 07:16:36.42 ID:uz2/XLFXH.net]
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);
}
}

233 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 08:11:57.92 ID:ygpzkhrQ0.net]
>>228
中腹の二重ループについて敢えてやってるなら説明が必要じゃね。

234 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 18:52:09.71 ID:uz2/XLFXH.net]
>>229
for(i=0;i<SEL.length;i++){}
for(j=0;j<SEL.length;j++){}
と質問されてるので入子構造なんだろうなと

235 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 18:58:18.92 ID:ZMd64Nu10.net]
入子じゃないですよ
ドキュメント上にアイテムが複数あって、何回も全アイテムを移動したり変形したりする必用があるので並列です

236 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 19:04:10.48 ID:ZMd64Nu10.net]
>>228
何回も使えるんですね
ありがとうございます

237 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 19:35:19.44 ID:+zVCoGZg0.net]
>>230
二重ループの外と内とで同じ i を使ってることについてよ。
敢えてやってるならどういうメカニズムでどういう結果になるのか説明てあげないと分からないんじゃない?



238 名前:デフォルトの名無しさん (ワッチョイ 9309-2FOX [150.91.1.219]) mailto:sage [2022/11/21(月) 20:09:25.61 ID:T5+vrdKC0.net]
カスタム要素って使われてます?

239 名前:デフォルトの名無しさん (JP 0Hbb-stRS [126.249.157.89]) mailto:sage [2022/11/21(月) 20:10:57.61 ID:uz2/XLFXH.net]
>>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文を抜けます

入子構造のインクリメント演算子では同じ変数を使うときには要注意ですね

240 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 17:55:58.75 ID:VelmWtaS0.net]
>>235
ありがとうございます
なかなか難しいですね
勉強を続けます

241 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 17:58:38.56 ID:VelmWtaS0.net]
今日はこういう発見がありました
当たり前と言えば当たり前なんですが
https://i.imgur.com/xkx4UUX.jpg

242 名前:デフォルトの名無しさん [2022/11/22(火) 18:07:50.06 ID:iGHsIGH/0.net]
let、constどころかvarすら使えない(使わない)のであればPythonにでも行ったほうがいいんじゃない?

243 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 18:52:57.26 ID:VelmWtaS0.net]
>>238
adobeスクリプトですがvarは使えます
他人のスクリプトを改造してる段階で、potisionで正しく並べられていなかったのでgeometricBounds[3]にしたと。
adobeのソフトはJavaScriptでないと動きません

244 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 19:10:38.94 ID:VelmWtaS0.net]
セミコロンも入って無いし、あまりお手本としては良くないかも
でもこの人のadobe スクリプトが一番わかりやすいので

245 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 19:40:30.69 ID:/QBTlFnBH.net]
何を制御してるのか知りませんけれど
お好きなように言語を選んで
お好きなようにコードを書けばいいと思います
楽しく好きなように自由に!ですね

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

変数の取り扱いはどこ言語でも慎重に設計しますけど
JSの変数とスコープはちょっと特殊なので
制御系でJS扱うのなら注意したほうがって思います

246 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 01:04:55.03 ID:Gf+fcBNM0.net]
推奨しない書き方はほぼESLintで弾けるだろ

247 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 14:55:32.43 ID:uQH5TeI20.net]
ドキュメント内の全てのテキストフレームを選択するのは、

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;でエラーが出ます。


ドキュメント内の選択したものの中のテキストフレームのみを選択しないと、
ドキュメント内の全てのテキストフレームが変形されてしまいます。



248 名前:243 mailto:sage [2022/11/23(水) 15:35:10.48 ID:uQH5TeI20.net]
var sel=activeDocument.selection;
for (var i=0; i<sel.length; i++){
if(sel[i].typename != "TextFrame"){
sel[i].selected = false;
}
}

これで出来ました。
お騒がせしました。

249 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 15:52:37.80 ID:QLRwruG1d.net]
JavaScriptの一般的な文法とかの話はともかく、adobe固有の問題はここで聞くべきではないよ

250 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 09:02:34.19 ID:8kN4Xh6N0.net]
>>244
>>245の言うとおり、もはやここで聞く内容ではない。
adobe forumで聞いた方がいいけど、
レベル的にまだネットで調べれば簡単に答えが見つかる内容だから
なるべく自分で調べたらいいと思う。

251 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 13:05:30.40 ID:DUoZRcjr0.net]
一般的なJavaScriptってgeometricBoundsとか使いませんか?
長方形の座標を得るメソッド

252 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 13:16:11.58 ID:8kN4Xh6N0.net]
>>247
同じアドビでもindesignとillustratorではgeometricBoundsのx,y値の順番が異ってたり、
もはやアプリごとの話題になってくる。

253 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 13:35:39.39 ID:5aiuStXqd.net]
>>247
使えません
それはadobe固有のものです

254 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 15:52:34.09 ID:DUoZRcjr0.net]
>>248
>>249
そうなんですか

水平垂直はわりと簡単に出来るけど、斜めになると数学の三角関数勉強しないといけないって…
道は険しそう…

255 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 03:26:14.01 ID:4TMxj3Y80.net]
$.Deferred()って分かりにくい。

256 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 17:44:10.29 ID:d3/PWV150.net]
配列内の数字が1つでも違ってたらtrueというのをif文で書きたいのですが、どう書けば良いのでしょうか?

例えば[6.356, 6.356, 7.482, 6.356]はtrueで、[6.356, 6.356, 6.356, 6.356]はfalseです。
配列内の数字の個数は決まっていません。
if(~){return;}の~の部分が知りたいのですが…
(違う数値が混じっていたら終了(return)したい)

257 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 18:01:34.82 ID:NOaCOzi6d.net]
配列内の数値が全部同じならtrue,というのを書いてみてください
ところで浮動小数点数には誤差がつきものなので
「だいたい同じ」を意味する処理を書く必要があります



258 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 18:03:10.25 ID:gnjN6QfX0.net]
>>252
配列の変数名がlだとして、
len(set(l))が1より大きかったら違う値が入ってる

259 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 18:10:27.64 ID:v7fq4Pg10.net]
そんな丁度いいオブジェクトがあったんだな

260 名前:デフォルトの名無しさん [2022/11/25(金) 19:20:10.26 ID:NT6Ragjt0.net]
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (new Set(a).size != 1) return;

全部同じならSetのsizeは1になるはずだから

261 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 19:30:19.48 ID:d3/PWV150.net]
>>254
エラーが出ますが、間違っていますか?

var I=[72.356, 72.356, 72.356, 72.356, 72.356];
If(len(set(I))>1){
alert("違う値が入っています");
}
alert("全部同じ値です");

262 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 19:45:09.62 ID:d3/PWV150.net]
setってES2015(ES6)で導入されたって書いてありますね。
自分の環境では使えないんだと思います。
let()もたぶん…

263 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:02:47.41 ID:1Hc/VSWcp.net]
len も set もそんなメソッドは定義されてない
>>256 は最近のブラウザなら動くはず

264 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:09:20.31 ID:d3/PWV150.net]
このコードではダメですか?

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;

例外が出るでしょうか?

265 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:09:23.18 ID:XjJhlDNk0.net]
lenとかsetってpythonじゃ?

266 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:15:54.07 ID:d3/PWV150.net]
>>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;
}

です

267 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:59:13.75 ID:BAWwEyW20.net]
念のため指摘しておくが、Setとsetは別もんだぞ
確かにどっちもES2015で策定されてるが
Set が重複なしの集合
setはアクセサプロパティの構文で使われるやつ



268 名前:デフォルトの名無しさん [2022/11/25(金) 21:07:08.32 ID:hxoXdPtJa.net]
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (a.join('').replace(RegExp(a[0], 'g'), '')) return;

falsyな値が入らないならこれでも

269 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 21:13:53.78 ID:gnjN6QfX0.net]
>>257
すまん、完全にPythonスレと勘違いしてたわ
申し訳ない

270 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 00:06:05.14 ID:lP1wiXrnd.net]
>>264
うーん、質問者のスキルし対して相応な解決策とは言い難いものを薦めるのはいかがなものかと・・・

271 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 02:18:08.00 ID:D9ouMKv50.net]
もうこれで出来ましたよ
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に対応してないので

272 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 03:19:46.82 ID:D9ouMKv50.net]
正規表現もいつか挑戦してみたいな

273 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 08:13:04.83 ID:rUW0f5oN0.net]
>>260
まあたいして変わらんけど -1 とか +1 とかがちょっと気になるので俺なら

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

ってするかな

274 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 10:42:13.14 ID:D9ouMKv50.net]
>>269
こっちの方が断然いいですね
ありがとうございます

275 名前:デフォルトの名無しさん [2022/11/26(土) 11:15:10.62 ID:ptfVYjC4a.net]
>>264
var a = [6.356, 6.356, 7.482, 6.356];
if (a.join('').replaceAll(a[0], '')) return;

replaceAll使えればもっと短くなった

276 名前:デフォルトの名無しさん [2022/11/26(土) 11:30:07.40 ID:ptfVYjC4a.net]
>>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;
になる

277 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 11:52:31.88 ID:kr9O5fHu0.net]
if( I.find( v=> v != I[0] ) ) return;
なんてのも



278 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 17:10:15.31 ID:D9ouMKv50.net]
eval()でダイアログに計算式が入力出来るね

279 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 04:24:45.22 ID:/9RKjThA0.net]
ごく基本的な事だが、あいまい等価演算子 == などを使うな

厳密等価演算子 === などを使え

280 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 04:40:17.42 ID:peORqcZp0.net]
>>275
なんで?

281 名前:デフォルトの名無しさん [2022/11/27(日) 07:42:56.91 ID:7UsYbpsb1]
「TypeScript」の今後についてどう思いますか?

これが主流になりそうですか? 短所長所について?

282 名前:275 mailto:sage [2022/11/27(日) 13:33:33.93 ID:/9RKjThA0.net]
型違いの比較を考えるのは無理

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

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

こういうのを考えるのが無理なので、事前に型が決まる、TypeScript が出来た

283 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 13:49:08.40 ID:lJvzY49o0.net]
もしも使ってはいけないのなら
そんな演算子がなぜ実装されているのでしょうね

284 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 13:57:27.72 ID:VHRrzSjNd.net]
>>278
ツッコミどころがちらほら
>obj_1が配列で、obj_2がオブジェクトとか、その逆とか
これがtrueを返すケースある?

>>279
使ってはいけないということはない
バグの温床になりやすいから避けた方が賢明という意味合い
goto使うなとかと同じ話

285 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 13:58:48.05 ID:1+HSvQjp0.net]
>>278
だれがそんな組み合わせを考えるの?
コンパイラとかの話?

286 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 20:28:50.54 ID:xHQljSwFr.net]
>>278は組合せ爆発とかTypeScriptとか言い出す前にまずこれを10回読んだ方がいい
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Equality

287 名前:デフォルトの名無しさん [2022/11/27(日) 20:57:46.07 ID:6JUt6y9Ua.net]
>>282
そいつrubyガイジという名前の有名な糖質だから相手しないほうがいいよ



288 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 22:26:59.14 ID:SK6CiGhUr.net]
>>283
あーあれか
Rubyの話ししてないから気づかなかった

289 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 01:09:53.30 ID:Dg1YyOhE0.net]
var DSP = prompt("ポイントを移動させる距離を入力してください(" + "" + R1[RUL] + ")", RULfn(SUB, "pt", R1[RUL]));
if(!DSP || isNaN(DSP)) return false;

プロンプトに入力される数字を+2やー3など数字に+かーが必ず付いたものに限定したいのですが、何と書けばいいでしょうか?
if(~)return false;の~の部分です
数字のみは不可です(+かーが必ず付いていないと)
2行目を変更しても3行目として追加しても、どちらでもいいです

290 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 02:25:56.20 ID:R5ym/m/50.net]
>>285
この式で、先頭が - または + で始まり、1文字以上の数字が末尾まで並んだ文字列の場合に真になるはず。

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

そうじゃない文字列を判別したいなら ! で否定すればいい。

291 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 11:12:07.95 ID:Dg1YyOhE0.net]
>>286
ありがとうございます。
やってみます。

292 名前:デフォルトの名無しさん [2022/11/28(月) 11:50:30.77 ID:u/1oLUrZ0.net]
/^[\-\+]\d+$/.test(DSP)
のほうが返り値がtrue/falseだからifの条件の用途ではより適切だと思う

293 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 11:58:03.03 ID:Dg1YyOhE0.net]
>>288
これをそのまま
if(~)return false;の~の部分に入れたのでいいのですか?

294 名前:デフォルトの名無しさん [2022/11/28(月) 12:40:38.91 ID:+iCiq04R7]
saigoniwarau.starfree.jp/iidesune/8.html

295 名前:デフォルトの名無しさん [2022/11/28(月) 13:15:50.86 ID:u/1oLUrZ0.net]
>>289
>>286 も言ってるけど、!付けてな

296 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 14:05:28.49 ID:Dg1YyOhE0.net]
>>291
ありがとうございます。

297 名前:デフォルトの名無しさん (ワッチョイ 214f-emCW [180.0.191.133]) mailto:sage [2022/11/28(月) 16:27:54.36 ID:HJ3Js2uA0.net]
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 ]



298 名前:デフォルトの名無しさん (ワッチョイ 51bd-2eod [220.144.111.164]) mailto:sage [2022/11/28(月) 16:54:53.78 ID:6qlTLJdd0.net]
>>293
ということを十数文字の文字列で表せる正規表現というのは本当に便利だな

299 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 19:15:12.40 ID:Dg1YyOhE0.net]
>>293
すごいですね
普通に書くとこれだけ必要なのか…

300 名前:291 mailto:sage [2022/11/28(月) 19:27:13.32 ID:HJ3Js2uA0.net]
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]

301 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 20:48:23.47 ID:zNlSyUlFr.net]
いよいよ正体現したか
都合の悪いツッコミは無視して頼まれてもいないのにRubyの押し売り

>>295
そんなわけで以降こいつはスルーで

302 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:34:23.67 ID:IHBBP8JW0.net]
条件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文です

303 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:49:59.33 ID:IHBBP8JW0.net]
動作させたい3つの場合、それぞれ違う関数にジャンプさせて違う処理をさせたいです。
switch文の方が良いのでしょうか?
それでどれにも当てはまらない場合、defaultでreturnとすれば

304 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:52:00.92 ID:XpkKNYo50.net]
>>298
複数 true は return ってこと?

305 名前:デフォルトの名無しさん mailto:age [2022/12/04(日) 21:58:26.26 ID:kEkO75NR0.net]
if(!(A or B or C))return 0;

306 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:59:32.16 ID:XpkKNYo50.net]
X = (A ? 1 : 0) + (B ? 1 : 0) + (C ? 1 : 0);
if (X != 1) return;
if (A) funcA()
else if (B) funcB()
else funcC();

307 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:00:38.95 ID:S/+N28Tr0.net]
switch((A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)){
case 1:
// Aの処理
break;
case 2:
// Bの処理
break;
case 4:
// Cの処理
break;
default:
return;
}



308 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:13:43.95 ID:VmtlSQvx0.net]
if (a + b + c != 1) return

309 名前:デフォルトの名無しさん (ワッチョイ 8f02-Izwu [124.215.170.95]) mailto:age [2022/12/04(日) 22:16:21.90 ID:kEkO75NR0.net]
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();]

310 名前:デフォルトの名無しさん (ワッチョイ dfcf-4FAg [153.227.173.254]) mailto:sage [2022/12/04(日) 22:21:13.15 ID:XVXofR3d0.net]
>>298
「一番シンプル」と思い描いている条件をもう一段ブレイクダウンするとどうだ?
コードが短いのがいいのかわかりやすいのがいいのかはたまた直行性が高くて
条件の追加やメンテが楽なのがいいとか。

311 名前:デフォルトの名無しさん (ワッチョイ fb01-6Epl [114.48.35.209]) mailto:sage [2022/12/04(日) 22:24:22.10 ID:ppAq3P870.net]
難しいよね
昔はコードを短く、処理負荷を軽くするのかウィザードと呼ばれたけど
今は他人にも自分にも分かりやすく、整備性があるのかとかも大事

312 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:28:43.81 ID:qWdYVkpM0.net]
a=true ; b=false ; c= false;

([a,b,c].reduce((s,e) => s+e, 0)!=1)

313 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:29:04.47 ID:IHBBP8JW0.net]
>>306
それではわかりやすいのでお願いします

314 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:29:51.99 ID:IHBBP8JW0.net]
>>301
これだったら1行ですか

315 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:31:41.03 ID:IHBBP8JW0.net]
>>304
これが単純でわかりやすいかな?

316 名前:デフォルトの名無しさん mailto:age [2022/12/04(日) 22:33:49.28 ID:kEkO75NR0.net]
>>310
一行で書きましたが、それぞれの処理が
できない書き方になりますね

317 名前:デフォルトの名無しさん mailto: []
[ここ壊れてます]



318 名前:sage mailto:2022/12/04(日) 22:34:59.34 ID:IHBBP8JW0.net [ >>303
これにしようかな?
(A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)の部分の意味を教えてください ]
[ここ壊れてます]

319 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:48:27.13 ID:qWdYVkpM0.net]
([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

320 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:59:38.08 ID:S/+N28Tr0.net]
>>313
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

321 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 23:14:59.45 ID:BaLaE0zJ0.net]
こんな所で質問するくらいなら、if文3行書けば良いだけなんだし
自分で考えてない事を後から見ても分からないのだから無意味なんだよね

322 名前:デフォルトの名無しさん [2022/12/04(日) 23:40:58.37 ID:rNB6JCQQ0.net]
スマホで画像をフリックしてフリックした方向に画像を滑らかに移動させて
徐々に移動速度が落ちて止まるようなのはどうやって作ればいいですか?

323 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 02:12:30.53 ID:skXK9jGq0.net]
>>315
ありがとうございます
なかなか難しいですね

324 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 12:51:22.46 ID:2GYg1OhQ0.net]
3つの条件の組合せ爆発が起こる、2 ^ 3 = 8 通りだから、かなり難しい

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

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

君の条件は排他条件ではないので、
すべての組合せ爆発が起こるので、かなり難しい

325 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 13:04:08.86 ID:skXK9jGq0.net]
冗長なコードを書いても処理に1秒もかからない
何百行もある市販のプログラム書いてるわけじゃないし
これでいいのかな?

326 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 13:28:02.61 ID:a4wHahQZ0.net]
組み合わせ爆発言いたいだけだろ。
組み合わせ数自体は多くなるけど、組み合わせる操作そのものは組み合わせる数に単純比例。
3入力なら3回の組み合わせ操作で8通りの結果が得られ、今回のケースならその組み合わせのうち3種に反応するだけのこと。
100入力なら100回の組み合わせ操作で1.27x10^30通りの結果が得られ、その中の100種に反応するだけのこと。

327 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 13:31:45.80 ID:m5vf/Aut0.net]
既に幾つも正解や技法が出てるしな



328 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 15:12:43.50 ID:FypkNfQF0.net]
大袈裟に語るバカが現れてワロタw

329 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 20:09:24.63 ID:iMOo3onG0.net]
>>317
自作でやるならtouchmoveイベントかなあ
でもライブラリを探して使う方がはるかに簡単
フリック ライブラリ とかで検索して好きなの使えばいいと思う

330 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 20:58:33.57 ID:SWJP59wv0.net]
んでいろんなライブラリを寄せ集めてページサイズが JS だけで MB単位になるのね

331 名前:デフォルトの名無しさん [2022/12/05(月) 22:13:18.07 ID:lIq+TvzU0.net]
すいません。
各<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';

これでエラーがでるのだが。何が勘違いしていますでしょうか?

332 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 22:30:17.43 ID:iMOo3onG0.net]
>>326
document.getElementsByClassName("key")
で返ってくるのは要素の配列(正確には配列風のオブジェクト)
なのでforで回すなりして各要素ごとにスタイルつける

333 名前:デフォルトの名無しさん [2022/12/05(月) 22:50:02.60 ID:lIq+TvzU0.net]
ありがとうございます。

334 名前:デフォルトの名無しさん [2022/12/05(月) 23:08:28.56 ID:NngXbYA40.net]
>>324
ありがとうございます

335 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 16:54:34.87 ID:iDVaiUL+0.net]
最近あんまclassNameで操作しない感じ
querySelector系使ってない?

336 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:14:47.26 ID:xVTCRvFV0.net]
【俺】
おい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、このスレの人間の方がまだマシや

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



338 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:36:58.90 ID:xVTCRvFV0.net]
>>326 をそのまま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クラスの要素の背景色を設定することができます。

339 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:44:57.10 ID:xVTCRvFV0.net]
ちなみにJavaScriptでと前置きして>>298,299を通すとこれが変えてきた
合ってるかどうかは知らん

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文など)を記述します
}

340 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:57:35.51 ID:V5m/92bh0.net]
>>334
たぶん合ってるよ

341 名前:デフォルトの名無しさん [2022/12/06(火) 18:57:50.11 ID:xVTCRvFV0.net]
>>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]);
}



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

4回目:もっと文字数を減らして↓
「もう少し短く書くことはできません。」
[]
[ここ壊れてます]

343 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 19:21:06.28 ID:xVTCRvFV0.net]
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];
}
});

【俺】
ふーん。。。

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

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

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

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

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

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

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

【ChatGPT】
はい、その通りです。私は人間の対話から情報を取得し、それを基に回答することができます。
したがって、実行系を持っていなくても、実行系の動作を理解しているため、シミュレートすることができます。

345 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 19:56:23.92 ID:mX7WDRZxH.net]
let a=[85,122,101,101]

346 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 21:28:50.02 ID:CBM3W38Nd.net]
分かったから続きはChatGPTスレでやってくれよ

347 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 22:04:17.81 ID:xVTCRvFV0.net]
んにゃ、そういうことじゃない。
ここに来る前にググれとこの10年以上よく言ってきたが、
いよいよそれがAIに聞いてから来いというのに変わる。
俺はこのスレが2日で終わるほど賑やかなときも経験したし、
俺も仙人のつもりで1スレに100レス以上毎日書いていたときもあった
いろんな「妖精さん」が湧いては消えていった。
JS2.0、そしてES2015のときはRubyキチやらとスレを跨いでやりあったものだ。
時代がまた変わる。このスレの役割も変わるときが来る。
そういうことだ。



348 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 22:22:56.10 ID:ggDR9KRTd.net]
分かったから続きはポエム板でやってくれよ

349 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 23:07:52.94 ID:4dLc47kQ0.net]
やっぱclassよりprotetypeだよな。

350 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 23:29:16.93 ID:5MeWJbnk0.net]
GitHub Copilot は、日本語でコメントを書くとコーディングしてくれる

【技術ネタ】CopilotとDeepLを使って(ほぼ)何も考えずにElixirでAtCoderの問題を解いてみた
www.youtube.com/watch?v=c-ZIcxcgvrw&t=168s

これは、プログラミングコンテストの日本語の問題文を、
DeepLで英訳してから、コメントに貼り付ける

351 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 17:23:34.07 ID:leBFpIVA0.net]
こういう事って可能なんでしょうか?

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

前にこういうコードを書いた時にエラーが出たと思うのですが…

352 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 18:01:02.69 ID:wK1s3Gq7d.net]
可能か不可能かの前にまずスコープというものを勉強した方がいいと思う

353 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 19:11:07.51 ID:leBFpIVA0.net]
本を読んできました
グローバル変数にしないとダメなんですね
わかりました

354 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 19:42:10.53 ID:J+XSMF+40.net]
男ならプロトタイプ!

355 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 22:38:00.36 ID:leBFpIVA0.net]
数字.toFixed(3)でおかしな結果になるので色々調べたら、元は数値だったのに文字型に変換されるんだね
parseFloat(数字.toFixed(3))で事無きを得た

356 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 03:43:04.42 ID:otqQiiFr0.net]
プロトタイプ以外は帰ってくれ。

357 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 07:27:33.15 ID:KfOH1QpXH.net]
>>347
グローバル変数はバグの温床だからやめておいて
引数とreturn値を使ってカプセルかしてね

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

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

windowやdocumentに持たせるべきパラメータは是ですが
持たせるべきでないパラメータはwindowなどに持たせないのが
私のひーひーおじいちゃんからの教えです



358 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 08:51:23.05 ID:G3OER7led.net]
そもそも>>345みたいな発想が出てくる時点で関数というものに対する認識が危ういよね
手を動かすのはもちろん大事だけど並行して座学も大切だと痛感する

359 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 15:20:35.56 ID:KfOH1QpXH.net]
いやいや最初はそんなもんでしょ
自分は今でも失笑コードばっかりですし
どんなコードでも書き続けることに価値があると
じっちゃまが言ってた

360 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 15:37:23.27 ID:8zaQFmsV0.net]
C言語なら、#define hensufn() で、
質問の内容を実現できるから、そっちもちょっと勉強してみるといいだろう
あくまでも参考として。蛇足だが、関数じゃなくてマクロだが
そういうのとごっちゃにしないためにも、理解しておくといい

361 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 15:45:36.78 ID:K2JzDyfqd.net]
>>353
だからその「そんなもん」から次のステップに進むためには知識を身に付けることも重要って言ってるのよ
コードを書き続けることを否定してるわけじゃないよ

362 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 16:08:24.10 ID:K2JzDyfqd.net]
>>354
今の状態の質問者に別言語の概念を持ち出しても余計に混乱を招くだけだろう
時期尚早だと思う

363 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 16:36:12.81 ID:KfOH1QpXH.net]
>>355
その通りですね
infoやMDNを完璧理解程度をとりあえずの目標としたらいいですね

364 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 17:10:52.86 ID:DDM/thjI0.net]
>>354
今時そんなクソマクロ勧めるなよ

365 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 17:27:50.18 ID:K2JzDyfqd.net]
>>357
んー、皮肉のつもりで言ってる?
完璧理解なんかは必要ないでしょ

366 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 17:40:09.94 ID:8zaQFmsV0.net]
「ごっちゃにしないためにも」て書いたろ
また、住人はいろんな技量なんだから
各人が自分なりに受け止めればいい

367 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 18:24:14.89 ID:K2JzDyfqd.net]
「ごっちゃにしないためにも」って関数とマクロをってこと?



368 名前:デフォルトの名無しさん [2022/12/09(金) 21:28:33.63 ID:rFVdhtxE0.net]
addEventListener()のイベントオブジェクトのように、
引数にあてる関数の中のさらにその引数に特別なオブジェクトをおく
変わったメソッドは他にありますか?

369 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 03:33:43.66 ID:rStzYIZl0.net]
>>362
コールバック関数について調べることをお勧めする

370 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 07:13:56.55 ID:EwkyT8LfH.net]
>>359
皮肉なんて言わないです
infoは入門者には最適だと思いますし
知っておくべき内容だと思います
infoを理解しておけばMDNも一覧してほとんど理解できるでしょ
リファレンスだし

覚える必要はないけど
理解する程度の負荷はそんな重くないですよ

371 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 10:08:41.30 ID:UfMq0N25d.net]
>>364
誤解だったのならすまんね
MDNだったらチュートリアルが揃ってるしそれを一通りやってみるぐらいでいいかなと
あとは疑問がわいたらまずリファレンスを漁る習慣付け

372 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 17:05:35.95 ID:LZ79JioR0.net]
>>365
いえいえ、こちらこそありがとうございます!
自分もまだ初学者レベルですのでいろいろ教えてください!

373 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 22:31:23.08 ID:09TKwM+q0.net]
プロトタイプだけで、丼飯三杯は行ける!

374 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 20:36:45.56 ID:bBwm/pW5H.net]
>>367
プロトタイプについて語ってください

375 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 20:55:00.83 ID:q6Npm0tM0.net]
>>368
JS最強の秘伝なり。

376 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 21:46:43.64 ID:bBwm/pW5H.net]
>>369
語れないんですねw

377 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 22:29:35.67 ID:q6Npm0tM0.net]
>>370
一子相伝の秘技だからな。



378 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 01:25:48.09 ID:9mOu9R4R0.net]
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])ではダメなのでしょうか?

379 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 01:50:55.99 ID:N0jzJwvL0.net]
MOV = []
MOV.push([1, 2])
console.log(MOV) // [[1, 2]]

MOV = []
MOV.push(1, 2)
console.log(MOV) // [1, 2]

380 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 02:10:37.00 ID:9mOu9R4R0.net]
>>373
ありがとうございます

うーん
難しいな
[絶対値にしたもの、絶対値にしてないもの]を[ ]でひとまとめにする理由は何なんだろう?
console.logを挟んで値を確認しながら考えないとわかりませんね

381 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 02:23:13.76 ID:9mOu9R4R0.net]
もしかして配列が入れ子になってるんでしょうか?
その後にSx.translate(MOV[0][1], 0)っていうコードが出て来るのですが…
MOV[0][1]の所が意味がわからなかったんですけど、
[[◯,●],[◯,◯],…]の●を指定してるんでしょうか?

382 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 02:45:20.07 ID:BD7ZISK00.net]
>>375
その認識で合ってる。
MOV は配列で、その各要素も配列(2要素の配列)。
なんでそんな構造にしてるのかは知らん。

383 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 07:38:12.53 ID:u3d467jnH.net]
>>375が聞いてるのは
translateがJSのcontextの関数なら
translate(100,50)はコンテキスト自体が右に100、下に50移動する

右移動量を絶対値にして移動させるってことかにゃん

384 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 11:24:58.04 ID:9mOu9R4R0.net]
>>376
ありがとうございます

>>377
そうです
全コード載せてみます
geometricBoundsは四角形の2点の座標を得るメソッドで

385 名前:、変数に[左上のx座標、左上のy座標、右下のx座標、右下のy座標]の順に格納されます []
[ここ壊れてます]

386 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 11:25:36.96 ID:9mOu9R4R0.net]
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])
}

387 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 11:26:49.23 ID:9mOu9R4R0.net]
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
}



388 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 11:28:43.67 ID:9mOu9R4R0.net]
「一番近いガイドに図形を吸着させる」スクリプトです
app.preferences.getBooleanPreferenceは無視してもらっていいです
環境設定の予備的なものなので。
function BNDfn(Bx)以下も環境設定の予備的なものなので無視でいいです
[絶対値と絶対値でないもの]を入れ子にする意味が知りたいです

389 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 12:27:02.66 ID:TCDiz++Hr.net]
>>381
配列MOVをソートするSORTfnで[◯,●]の◯を利用してるのは読み取れる?

390 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:06:21.02 ID:9mOu9R4R0.net]
>>382
ソートで利用するために [ , ] の入れ子にしてるだけですか?

391 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:16:44.67 ID:TCDiz++Hr.net]
>>383
まず聞かれたことに対してYESかNOで答えようよ

392 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:25:11.50 ID:9mOu9R4R0.net]
>>38
ありがとうございます
わかりました
[◯,●]の◯はソートをするために利用している
絶対値が一番小さい◯を先頭に並べ替えて(距離が一番近い)、それと対になってる●だけtranslateで移動している
ということですね

393 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:25:56.97 ID:9mOu9R4R0.net]
× >>38
>>384

394 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:29:27.02 ID:BD7ZISK00.net]
余談だが、>>380
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];
}

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

あ、複数要素の比較はあくまで例であって、>>380 のデータ構造とは関係無いよ。

395 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:34:52.14 ID:9mOu9R4R0.net]
ガイドが、動かしたいオブジェクトの右にあるか左にあるか確定して無いんですよ
だからMath.absで絶対値にして距離を測ってるのか…
そして配列の入れ子にしてソート
勉強になるな
ここだけ他のスクリプトでも使える

396 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:39:57.47 ID:BD7ZISK00.net]
>>388
abs なんてほとんどコストかからないんだから、元の値と絶対値の両方を保存するのは無駄な気がする。
配列の保存やアクセスの方がコストかかったりして。

397 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:45:29.13 ID:TCDiz++Hr.net]
命名や処理内容を見る限りあまり参考にすべきコードではないように感じる



398 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 13:50:47.16 ID:8JMA8Bb40.net]
>>379
転載禁止なのを勝手に載せたらあかんわ
gorolib.blog.jp/archives/72193707.html

399 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:04:35.37 ID:xvk668V/d.net]
絶対値が一番小さいものを選ぶだけならこんな大掛かりにする必要そもそもない気が

400 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:26:01.70 ID:qd0QDeFeM.net]
>>374
まず
[1, 2, 3 ] で 配列ができる
new Array(1,2,3) の省略型

401 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:32:46.45 ID:Xk6tQN/c0.net]
イラストレータのappかぃ

402 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:49:23.10 ID:Ah12aly8r.net]
>>393
なぜ配列にしているのかを聞いているのであって
記法に関する質問をしているわけではないだろう

403 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 17:14:12.48 ID:Xk6tQN/c0.net]
設定でjs使ってるみたいなのでjsスレで質問してるようだけどスレチのような・・・

404 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 17:18:01.39 ID:RmZ1ojDx0.net]
オブジェクトの配列にすれば分かりやすいな

405 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 17:19:55.56 ID:Xk6tQN/c0.net]
連投すみません
>>381さん
PC等->CG->Illustrator総合
のほうがいいかもですね

406 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:05:16.68 ID:9mOu9R4R0.net]
>>398
CG板のIllustratorスレはわかりませんが、DTP板のIllustratorスレではscriptがわかる人が1人くらいしか居ません
たまたまその人が居なかったら、何日も放置になってしまうし…
ここの人たちの方がscriptのメソッドとかもほとんどわかるし
Illustratorの図形といっても、xy座標に図形が並んでるだけの、ほとんど移動する時の足し算と引き算だけです

407 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:10:18.24 ID:9mOu9R4R0.net]
[◯,●]の◯をソートのために利用してるなんて、独りで考えてたら絶対思い付かなかったと思います



408 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:14:44.98 ID:u3d467jnH.net]
>>400
JSスレの神様たちは優しい感じですもんね
がんばってくださいね!

409 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:37:06.98 ID:9eo7KahL0.net]
>>400
ソートの手法としては収穫があったようでなにより。
でも他にも指摘があるように、アルゴリズムとしては今一つだから全体としてはあまり参考にするほどじゃないと思う。
それは距離の一番小さい相手を探す方法として距離でソートしてその一番最初を採るという手順を使ってるよね。
でも、最初から距離が一番小さいものを探せばループ 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)
}

410 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:39:31.01 ID:fufRX2ZEr.net]
>>400
MOV変数の行方を追って数行コードを読んだだけだよ
何も難しいことの種明かしをしたわけじゃない
今回人に聞いて答えを得たなら次は自分でそれにたどり着けるようになろう

411 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 22:12:32.05 ID:9mOu9R4R0.net]
>>402
これだとソート関数いらないんですか?
かなりコンパクトになりますね
ダイアログを表示させて吸着方向を上下左右選べるスクリプトを作ろうと思ってるので、こちらで作ってみます

412 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 02:24:56.21 ID:IRSJsHbF0.net]
>>404
閉じかっこひとつ抜けてた。
最後の if の前に } が要る。

413 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 11:11:56.07 ID:dgxg9m7O0.net]
>>405
こうですか?

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

414 名前:デフォルトの名無しさん (ワッチョイ 0bdb-KKgq [217.178.96.73]) mailto:sage [2022/12/13(火) 12:03:25.74 ID:l4PFzl7S0.net]
君、プロトタイプをやりたまえ。

415 名前:デフォルトの名無しさん (オイコラミネオ MM75-SbnF [150.66.82.245]) mailto:sage [2022/12/13(火) 14:26:18.57 ID:LSRhZVzxM.net]
>>406
そそ

416 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 16:55:31.25 ID:kcuzrobtd.net]
プロトタイプとは何なのかを教え給え

クラスとかコンストラクタを書くんじゃなくて、『function hoge(a, b){}』にプロパティやメソッドや戻り値定義すればいいの?

417 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:39:15.95 ID:pwiPw3z60.net]
>>409
プロパティを参照する時、「対象オブジェクトの直属のプロパティ」だけでなく、[[Prptotype]] と呼ばれる内部プロパティ内にあるプロパティも検索対象となる仕組みを「プロトタイプチェーン」という



418 名前:デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89]) mailto:sage [2022/12/13(火) 19:12:20.42 ID:cf0t5w5pH.net]
>>410
プロパティを参照する時、対象オブジェクトの直属にプロパティへの参照がない場合、[[Prptotype]] と呼ばれる内部プロパティ内にあるプロパティへの参照を走査する仕組みを「プロトタイプチェーン」という
なお[[Prototype]]はnewで生成される親のprototypeへの参照が格納されるが、動的に[[Prototype]]をセットすることもできる

でどうでしょう?

419 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 20:14:40.67 ID:pwiPw3z60.net]
>>411
プロトタイプに「親」という概念はない
クラスベース言語の考えが混ざってる気がする

420 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 20:36:49.94 ID:cf0t5w5pH.net]
>>412
えええええ?そうなんですか?
継承あるのに親がいない???

421 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 22:34:12.05 ID:cf0t5w5pH.net]
>>412
僕は理解が浅いのでもっと学習しないと。
JSはprptotypeの理解が深まると幅が広がりそうですね
僕ももっと勉強進めないと

422 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 00:03:47.61 ID:+gEopm0Q0.net]
>>413-414
プロトタイプベースとクラスベースの違いを理解することから始めよう
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

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

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

「継承」や「クラス」という用語を使うのは問題ないが、プロトタイプでどのように継承やクラスを実装しているのかは理解する必要がある

423 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 00:19:25.91 ID:Dbkp4Og+0.net]
プロトタイプ最強伝説!

424 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 07:32:29.92 ID:r+idjll+H.net]
protptypeを使い、new演算子でインスタンスを継承でき、
さらにプロトタイプチェーンで始祖子孫を関連付けられるのに
親子関係という概念はJSにはないんですねー

425 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 07:55:29.99 ID:r+idjll+H.net]
ちょっと調べてみたけど、JSに親子関係は存在しない、的な記事はない
MDNには親子表現はないけれど、JSの継承で親子表現してる記事は多数ある
親子関係はクラスの拡張、実装、インスタンス生成でも使われるけど
親子関係自体を定義した言語なんて存在しない、あくまで機能の表現方法
であるにもかかわらず、プロトタイプ言語に親子関係が存在しないというのは
どこかにそういう記述があると思うのですが、参照場所を教えていただけませんか?

426 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 12:33:00.70 ID:3zhhSsQg0.net]
プロトタイプベースでは、親ではなく雛形という概念を用いる(それこそがプロトタイプ)
JavaScriptはプロトタイプベースのオブジェクト指向言語の代表格だが
その JavaScriptにも、ES2015(ES6) でクラスベース構文が導入されたので、
使い手の側としては、思想・概念・用語が入り乱れる事になったのかも知れません

427 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 13:15:16.28 ID:U8xYt1Js0.net]
あらためてMDNを概覧しましたが
417さんの力説されているとおりかもしれませんね
今後はご指摘の件、頭にいれながら勉強します
ながながとありがとうございます!今後ともよろしくです



428 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 14:22:13.24 ID:dv/CWk9JH.net]
個人的にクラス≒雛形って考えだからプロトタイプはわかるけどクラスベースがわからなかった

「雛形クローンして用意してあるの変えるだけだろ?」って

429 名前:デフォルトの名無しさん mailto:sage [2022/12/15(木) 01:00:33.27 ID:z3rBZpFn0.net]
>>420
よくぞ言った、プロトタイプ使徒よ!

430 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 14:16:16.56 ID:wrcGLpVa0.net]
みんなはフレームワーク使ってる?
それともJS直接使ってる?

431 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 14:22:39.89 ID:C3ZoQFlkM.net]
お前から発表しろよ
アンケートだから職種、年俸、年齢、結婚歴は必須な

432 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 12:10:49.73 ID:kI1nA3xa0.net]
>>424
職種:プロトタイプ
年俸:プロトタイプ
年齢:プロトタイプ
結婚歴:プロトタイプ

433 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 13:15:46.84 ID:OiGNBIp60.net]
質問させてください

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

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

<script>
</script>

JSで、<style>内の#d1,#d2セレクタの設定を編集したいのですが
特定のセレクタ部分だけを取得して変更ってできますか?

434 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 13:44:50.71 ID:ycEukJwD0.net]
>>426
https://developer.mozilla.org/ja/docs/Web/API/StyleSheetList

435 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 13:49:34.17 ID:ycEukJwD0.net]
>>426
変更はこっちだった
https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList

436 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 13:53:37.75 ID:ycEukJwD0.net]
>>426
訂正
https://developer.mozilla.org/ja/docs/Web/API/CSSStyleSheet

437 名前:デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89]) mailto:sage [2022/12/17(土) 20:57:11.28 ID:/rkC0QGzH.net]
>>428
ありがとうございます。JSの皆様は本当に神様。
取り急ぎお礼申し上げます。ありがとうございます。
できれば明日時間をとって拝読させていただきます。



438 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 22:30:28.67 ID:8Q1kFIoR0.net]
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にしたいのです

439 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 22:40:09.17 ID:on9KAdJq0.net]
A1[1]とA1[3]の差が絶対値で0.5までって書けばいいんじゃないの?

440 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 22:44:13.88 ID:8Q1kFIoR0.net]
A1[1]==A1[3]は、四角形の左上のY座標A1[1]と右下のY座標A1[3]が同じだから、直線という意味です
でもこの2点を上下0.5くらい余裕を持たせたいんです
間違って微妙に斜めに線を引いてしまうこともあるので

441 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 22:45:31.22 ID:8Q1kFIoR0.net]
>>432
そうか
簡単でしたね w
ありがとうございます

442 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 22:45:36.51 ID:t7AYft2Wr.net]
>>431
まず自分で試行錯誤してみたら?
やりたいことが日本語に出来てるなら難しいことではないと思うよ
君は何でも最初から人に聞いて済ませようとしてるように見える

443 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 22:47:25.94 ID:t4TbQFP40.net]
このスレは、回答者の腕試しの意味もあるから

444 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 23:01:46.75 ID:nEwVWz8Q0.net]
正直このレベルの質問に答える必要が無いと思うが・・・
範囲でif文を書く事とかすら考えつかないレベルでこの先やっていける訳無いやんw

445 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 23:10:51.36 ID:2CNUWbJ80.net]
>>437
こういうちょっとしたきっかけで他の思い付きができるようになることもあるしね

446 名前:デフォルトの名無しさん mailto:sage [2022/12/18(日) 12:44:32.64 ID:uPN+O46jH.net]
>>429
様、ありがとうございました。
CSSのスタイル設定プロパティをJSで編集できました。
CSSRulesは配列で返ってきますが
cssRules['div'].color='blue'
のように、プロパティ名で編集する方法はありませんでしょうか?

447 名前:デフォルトの名無しさん (オッペケ Sr11-H8w4 [126.156.146.161]) mailto:sage [2022/12/18(日) 14:19:43.57 ID:6JZ/0f38r.net]
jQuery使えばできます



448 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 12:00:53.42 ID:KEwe+Jaf0.net]
>>439
俺は「プロパティ名で編集する方法」を知らないので、CSSOMを調べてみるといいと思う
https://triple-underscore.github.io/cssom-ja.html

449 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 14:10:45.85 ID:GaFatWVX0.net]
>>440
>>441
ありがとうございました
selectortextを呼び出して疑似的にプロパティ名で編集できるような関数を作ってみます。

450 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 21:50:19.67 ID:K0fHbKFE0.net]
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");

451 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 07:34:30.54 ID:nEbzRDrKH.net]
>>443
ありがとうございます。

let styleの呼び出し箇所を関数にして
selector名のオブジェクトを生成し、その中にプロパティ名とvalueを格納して呼び出すような
簡易的な関数を作成してみます
年末のお忙しいとろ、アドバイスありがとうございました。

452 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 16:52:58.12 ID:9yhxJASu0.net]
小数点第4位を四捨五入するのは、parseFloat(a.toFixed(3))と Math.round(a*1000)/1000のどっちがいいでしょうか?

453 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 19:18:04.39 ID:nEbzRDrKH.net]
連日すみません。
<link rel="stylesheet" src>で読み込んだcssの
cssStylesheetプロパティにアクセスする方法を教えていただけないでしょうか?

454 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 21:53:16.64 ID:paD1IZJK0.net]
ちょっとググれば出てくるような情報までくれって言うのか?

455 名前:デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89]) mailto:sage [2022/12/21(水) 22:46:02.69 ID:nEbzRDrKH.net]
すみません、ちょっとググってみます

456 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 23:16:30.68 ID:paD1IZJK0.net]
どうしても分からないならchromeのDevToolsのConsoleで
document.styleSheets
って打ってみれば中身が全て見れる
中身見ても意味不明な場合はやりたいことは出来ないかも

457 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 23:34:53.49 ID:PQinZhLm0.net]
jQuery最強伝説。



458 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 07:18:15.65 ID:slpViawnH.net]
>>449
それは試してみたんですけどundefinedなんですよね
他ファイルを参照した場合には、stylesheetがdocumentのプロパティになっていないようなのですよね

459 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 07:21:31.78 ID:slpViawnH.net]
>>449
すみません、訂正です
document.styleSheetで参照すると
document.styleSheet.cssRulesがnullとなってしまうんです
document.styleSheetで登録されるのは
同じファイル内のスタイルだけのよう?
他のcssファイルに書かれたスタイルを操作するには
どうしたらいいのでしょうか?
に訂正願います

460 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 07:48:35.40 ID:YtaOqG2C0.net]
document.styleSheetsの最後のs抜かしてないよな
document.styleSheets[0] みたいにインデックス使わないと参照できないぞ

461 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 09:18:28.13 ID:N0yJkasM0.net]
本当にやりたいのは、特定の要素のstyleを弄ることじゃないの?

462 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 13:29:52.00 ID:kUDazAkOd.net]
ワードプレスとかいうアレをイジってると特定idの親にスタイル変更したいとかはでてくる

463 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 17:03:26.78 ID:J4HXq2D ]
[ここ壊れてます]

464 名前:u0.net mailto: よほどのことがなければ元ルールを直に書き変えるなんてしないよなぁ
cssRulesはクロスオリジンだとアクセスできないし
[]
[ここ壊れてます]

465 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 19:14:24.29 ID:slpViawnH.net]
みなさん、ありがとうございます。
関連した質問なのですが
cssが要素に適用される仕組みは
1:
<style>タグを読み込んだり<link ref>を読み込んだ時点で
ブラウザ実行環境にcssプロパティを記録して、セレクタを読み込んだ時に適用するのでしょうか?

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

なのでしょうか?
もし1なら、クライアントブラウザからアクセスできるような気がするのですけど
もし教えていただけるようでしたらご指導お願いします

466 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 20:32:53.94 ID:NthFDCjcr.net]
次の話に移る前にまず>>453>>454に答えるべきだろう
言葉遣いだけ丁寧にしてもそういうのが疎かだと相手にされなくなる

467 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 07:08:17.10 ID:OG24yN7PH.net]
>>454
424,437,440,442の記載の通り、cssRuleを直接編集したいと考えています

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

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

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

皆様質問の仕方に失礼があっって申し訳ありませんでした
お許しくださいませ



468 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 08:30:41.88 ID:d3IbDeU70.net]
>>456 でクロスオリジンの場合にnullになるって指摘されてるけど、これに引っかかってるだけじゃないかな
この場合はどうにもならんと思う

469 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 10:44:42.21 ID:Lv24OjDar.net]
>>459
ブラウザのコンソールで↓を実行したらどうなる?
for(const ss of document.styleSheets){console.log(ss.href); console.log(ss.cssRules);}

470 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 17:28:12.54 ID:o+ONuUnd0.net]
>>460で指摘している通り、他の所から読み込んだスタイルはそもそも変更出来ないって書いてあるんじゃね?
https://w3c.github.io/csswg-drafts/cssom/

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

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

cssをいじりたいのだろうけど、そういう低層の話じゃなくて本当にやりたい事を書いた方が答えが得られると思うよ
結局何がやりたいのか全く分からんw

471 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 17:30:32.01 ID:o+ONuUnd0.net]
変な日本語になってるなw

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

472 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:30:29.91 ID:OG24yN7PH.net]
>>460
459,460,461

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

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

皆様ありがとうございました

473 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:54:13.31 ID:2ps+kI7qr.net]
>>464
>クロスオリジンの適用を受けずに編集できるかなと
君の>>452>>459の発言ではCSS参照が別ファイルでも同一オリジンでは問題なく出来て
別オリジンのみ問題が発生していると認識しているとは読み取れないけども
別ファイル即ち別オリジンと勘違いしてない?
同一オリジンなら別ファイルでも参照出来ることは理解してる?

474 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:55:49.05 ID:OG24yN7PH.net]
>>462
今勉強再開して思い出しました。
@keyframesのプロパティや値を
動的に変更したいと考えたのです

同じファイルなら
<style id="st">
として、stから@keyframesを設定編集できますが
外部ファイルでの設定編集ができないので
できたらいいな、って質問してみました

475 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:57:53.66 ID:OG24yN7PH.net]
>>465
勘違い、混乱してました。ありがとうございます!

476 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:10:25.93 ID:2ps+kI7qr.net]
>>467
で、>>452で参照したかったのは本当に別サーバ等のcssだったのか
それともhtmlやjsと同じ場所に置いてあるcssだったのかどっち?

477 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:19:54.48 ID:OG24yN7PH.net]
>>468
ローカルで、同じフォルダ内です



478 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:28:01.20 ID:G5aj5uG70.net]
@keyframesなんかも後のスタイルで再定義できるんだから
DOMにstyle要素追加してそこに上書きルール突っ込んでそっちを操作すればいいじゃない

479 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:39:17.88 ID:2ps+kI7qr.net]
>>469
それは本来別オリジンではないんだけどブラウザがローカルアクセスに対するセキュリティの一環として制限をかけてる模様
詳しくはググって
>>461のスクリプトを実行して
file:///~
の行のあとに例外が出るならそれが原因

対策としてはローカルにwebサーバを立ててhttp経由でアクセスする
そうすればスクリプト実行で例外が発生せずcssの中身が読み取れる
webサーバはそんな大層なものは必要なくてvscodeのLiveServerで十分

480 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:55:43.41 ID:gwhrrj9D0.net]
DevTools を弄れるなら、要素タブでスタイル欄を見れば
適用内容と設定元のファイルが行番号付きで確認できるし
アニメーションを弄りたいなら、「その他のツール」に「アニメーション」がある(chrome)

481 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 09:52:50.24 ID:Lk0KbRC60.net]
皆様いろいろありがとうございます
時間とれましたら確認させていただきます

482 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 10:46:15.28 ID:se6E0pPpr.net]
>>473
少し調べたらchromeのオプションでクロスオリジン制約を回避する方法があった
chrome クロスオリジン
で検索
これならwebサーバを立てる必要もなくてお手軽

483 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 14:27:49.26 ID:0WYu35VL0.net]
firefoxもsecurity.fileuri.strict_origin_policyをfalseにすれば回避できるけど
早いうちにローカルサーバ立てることを覚えた方が後が楽になると思うよ

対象要素が1つなら@keyframes書き換えるよりWebAnimationAPI使った方がいいかもしれないし
やりたいことはぼかさずにはっきり書いた方がいいよ

484 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 22:49:22.50 ID:oMpeQZG30.net]
HTA(hta+ie)にとって替わるみたいな環境っていまだにないのかな
PWAみたいのではなく、javascript(やvbs)でWindowsのフレームワーク(.NETやCOMやら)と連携できるようなやつが欲しい
WebView2は思想的にHTAと比べて退化してるようにしか見えないけどこれぐらいなのか…

485 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 03:50:26.67 ID:Y7ZN657d0.net]
>>476
そういや前はちょっとしたツールを HTA で書いたりしたけど、もう使えない?

486 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 12:52:51.27 ID:GFtl9gAsH.net]
皆さん、ありがとうございます
別シートのcssで可変にしたい部分を変数にし
読み込むシート側に変数専用のstyleタグを用意し
変数用のスタイルタグを編集することにしました

皆様いろいろとありがとうございました

487 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 13:14:34.27 ID:g8CAn8EMr.net]
要するにクロスオリジン問題を解決して>>452を実現したのではなくて
別の方法を取ったということ?



488 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 13:37:10.68 ID:GFtl9gAsH.net]
そうです
>>470様のアドバイスなら
私の学習レベルでもググり時間とられずにできそうだと思いまして

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

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

のように、変数を編集するstyleタグを設けました
見栄え悪いしかっこ悪いんですけど
いろんな変数を設定変更する関数も自作できそうですので
とりあえずはこれでいいかなと

489 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 14:26:34.39 ID:kQ0MTzKr0.net]
>>480
それならわざわざstyle要素作って直に操作する必要はない
変数の最初の定義もcssファイルの方に書いておいて
変更したい時は
document.documentElement.style.setProperty("--prm", "100%");
とかすればいいだけ

490 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 15:40:19.02 ID:GFtl9gAsH.net]
>>481
ありがとうございます!そうさせていただきます。
今後ともいろいろ教えてください。ありがとうござました!

491 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 16:48:37.78 ID:sJzx1gQhr.net]
>>480
>私の学習レベルでもググり時間とられずにできそうだと思いまして
webサーバ云々が億劫だってのは分かるからしょうがないけども
せめて>>474ぐらいは実際に試して欲しかったな
ググって最初に出てくる記事にすぐ出来るやり方が具体的に書いてあるんだし

492 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 16:50:28.05 ID:GFtl9gAsH.net]
>>481
面白かったです。

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

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

とすると、子孫のスタイル設定が優先されることも理解できました
とても面白く学習できました、ありがとうございました

493 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 16:51:23.54 ID:GFtl9gAsH.net]
>>483
ありがとうございます
次時間ができたときにぜひ調べて実行してみます

494 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 17:00:33.10 ID:gv3ThvO8d.net]
もう解決したんだしどうでもいいからお礼だけ言って体よく話を打ち切りたいって思いがヒシヒシ伝わってくるな

495 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 13:51:42.59 ID:fuxINEHv0.net]
>>471
Live serverを使って、別のスタイルシートで設定した、フォント色の変更はOKでした。
ありがとうございました。

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

皆様ありがとうございました

496 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 15:01:08.23 ID:pO4MU7IP0.net]
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();
}

497 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 15:02:39.66 ID:pO4MU7IP0.net]
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;
}
}



498 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 15:07:33.18 ID:pO4MU7IP0.net]
線幅を変更するスクリプトなのですが、一応完成しました。
自分で使うだけならこれでいいのですが、他人に使ってもらう場合、ダイアログに「線幅を追加する」という項目を増やしたいと思っています。
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"のを削除するコードを書くことは可能ですか?)

499 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 15:27:01.38 ID:oXRhIFIqd.net]
スレ内を線幅で検索しても何も引っかからないのにこの書き出しで何か伝わると思ってるのすごいわ

線幅の配列を関数内で直書きしてるから自身を書き換えるとか面倒なことを考える必要があるわけで
関数の外に変数で宣言しとけば追加も削除もなんとでもなるでしょ

500 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 15:55:16.01 ID:gS/UmYxh0.net]
確かIllustratorかなんかのスクリプトでしょ
ここ見てるほとんどはWebブラウザやnode.jsのJavaScriptは知っててもそっちは知らないと思う
文法的にはJavaScriptと同じでも出てくるオブジェクトは独自のものだろうし説明しないとわからんよ

501 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 16:14:37.67 ID:pO4MU7IP0.net]
>>491
素人でもエディタで開かないとダメということですね。

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行を書き換えてください

こう先頭に書き加えました。

502 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 16:16:02.82 ID:pO4MU7IP0.net]
>>492
すみません
気を付けます

503 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 16:45:32.21 ID:oXRhIFIqd.net]
>>493
意図が理解されなかったということが分かった
コメント付けるって妥協するなら>>488のままでもいいでしょ

ここの住人はadobe独自のことは詳しくないんだし他所で聞いたほうが的確な答えが返ってくるよ
そもそもここはスレ違い

504 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 17:18:59.92 ID:l7z7KEaud.net]
>>477
htaまだまだこれからだ
ただhighDPI環境でスケーリング200%とかだとおかしな事になった想い出

505 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 22:12:09.27 ID:LJgewTa3r.net]
>>487
①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%"

506 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 15:47:36.10 ID:LHsOSApx0.net]
>>497
ありがとうございました
所望の動作を確認できました
JSはいろんな方法があるんですね

507 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 12:58:47.15 ID:A6ceP6kcr.net]
>>476
pythonのeelモジュールを使えば、昔のhtaっぽいことができます



508 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 17:25:19.15 ID:V1TEslsJ0.net]
>>499
OSに標準で入ってるedgeで使えるのはいいなあ
情報ありがとう

509 名前:デフォルトの名無しさん [2023/01/04(水) 19:01:14.59 ID:jNmuxM610.net]
「無名関数」、「関数リテラル」の理解がちょっとぼやけています。

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

calc()
と()をつけて表せるものが普通の関数、それを変数に代入したもの
calcResult
が関数リテラルかと思っていました。
しかし、どうやら違うようで。。

510 名前:デフォルトの名無しさん [2023/01/04(水) 19:01:57.33 ID:jNmuxM610.net]
例えば以下の2つの関数があります。

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

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

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

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

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

という認識で間違っていないでしょうか?

511 名前:デフォルトの名無しさん [2023/01/04(水) 19:02:26.96 ID:jNmuxM610.net]
SetInterval()
に与える引数は、関数リテラルでなくてはならないそうです。

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

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

という理解でよろしいでしょうか?

512 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:37:28.67 ID:UYb7FHhp0.net]
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/function

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

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

ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼない
結果的に関数式の関数は無名関数になることがほとんどで

513 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:40:11.89 ID:UYb7FHhp0.net]
ここでいう「関数リテラル」は関数式で記述された関数のことで、名前があろうとなかろうと「関数リテラル」でいいんだと思う

514 名前:502 mailto:sage [2023/01/04(水) 20:53:07.39 ID:UYb7FHhp0.net]
途中送信で変になってるからまとめ直し

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

ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼなくて結果的に無名関数になることがほとんどではある

515 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:57:54.46 ID:jNmuxM610.net]
>>504
すっごい分かりやすい。
モヤモヤしていたのがすっきりしました。
ありがとうございました。

516 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:00:20.48 ID:GLj+17iFr.net]
調べたら自分を再帰的に呼び出す場合に名前を付けるって例があってなるほどと思った

517 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:21:00.43 ID:GLj+17iFr.net]
ちなみに>>503のsetIntervalの引数は関数リテラルでないといけないってのはどこ情報?



518 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:23:57.48 ID:jNmuxM610.net]
あれ。関数リテラルには引数はないのか。。引数の不要な関数しか関数リテラルにならんのか。
もちょっと調べてみます。

519 名前:デフォルトの名無しさん [2023/01/04(水) 21:32:15.85 ID:jNmuxM610.net]
>>509
必要ならページ画像をどっかにアップします。。

技術評論社
JavaScript本格入門
https://gihyo.jp/book/2016/978-4-7741-8411-1
P362
setTimeout/SetIntervalメソッドの注意点
...引数funcは必ず関数リテラルで指定してください。

520 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:39:03.24 ID:jNmuxM610.net]
でも何かの引数に関数をわたすときは、
一般的に関数リテラルで渡すのがデフォと
ぼんやり思っている。

521 名前:デフォルトの名無しさん [2023/01/04(水) 21:47:22.56 ID:QxUfEWbZ0.net]
技術評論社はやめとけよ。

522 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:55:58.51 ID:GLj+17iFr.net]
>>511
文脈がわからんけど理由は書いてあるの?
動く動かないで言えばfunction文で定義した関数リテラルでない関数を渡しても動くようだけど
そもそもMDNにも関数としか書いてないし

523 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 22:20:18.03 ID:lFNs7lW+0.net]
単に著者が良く理解せずに書いてるだけな気がする

524 名前:デフォルトの名無しさん [2023/01/04(水) 22:21:10.60 ID:jNmuxM610.net]
>>514
setTimeout()の例でしかもjQueryで
申し訳ないのですが。
1秒後に#displayのhtmlの内容を空にするコードです。

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

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

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

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

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

書籍の文脈ですが、実際にあとで画像アップします。

525 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 22:46:11.56 ID:GLj+17iFr.net]
>setTimeout($('#display').html(' '), 1000);
これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない?
html()が戻り値としてjQueryを返すからそれが引数として渡ってるでしょ

>function clearDisplay(){
> $('#display').html('');
>}
これもfunction「文」で定義してるから>>506で言うところの関数リテラルには当てはまらない関数だよね

526 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 23:53:56.91 ID:PU4coe7B0.net]
アロー関数式を使うことで、関数リテラルによる関数定義を
より簡略化して記述することができます
ただし、this には注意してください

527 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:01:25.43 ID:EVXeoiyo0.net]
>>517
setTimeout($('#display').html(' '), 1000);
これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない?

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

ありがとう。



528 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:18:03.56 ID:7P17JKmwr.net]
>>519
いや、関数かメソッドかの話じゃなくて
$('#display').html(' ')をその場で実行してその戻り値であるjQueryオブジェクトを渡しちゃってるでしょって話
ちゃんと理解できてる?
https://js.studio-kingdom.com/jquery/manipulation/html#1

529 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:26:22.30 ID:EVXeoiyo0.net]
私の勘違いだったのですね。

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

「引数funcは必ず関数リテラルで指定してください。」
https://uploda1.ysklog.net/uploda/8298a4c0da.png

「関数リテラルは....ある関数の引数として渡したり....」
https://uploda1.ysklog.net/uploda/0bcdf35455.png

530 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:27:48.45 ID:EVXeoiyo0.net]
>>520
理解したありがとう!

531 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 02:04:13.18 ID:hRDnYJsk0.net]
>>521
「引数funcは必ず関数リテラルで指定してください。」
ちょっと問題のある文章だなあ

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

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

>>516
文字列で渡したら動くはず
setTimeout("$('#display').html(' ')", 1000);

532 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 06:17:33.15 ID:O+NRT3S+0.net]
>>523
> 「引数funcは必ず関数リテラルで指定してください。」
> ちょっと問題のある文章だなあ
まあそこは直前に文字列でも指定できるけどって書いてるから教育的指導なんだろうとは思う
まあ「必ず」という言葉が強すぎるから「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
むしろ問題は「関数リテラルは宣言した時点では、名前を持たないことから匿名関数、または無名関数と呼ばれることもあります。」の方だろうね

533 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 09:18:58.87 ID:EVXeoiyo0.net]
>>523
>文字列で渡したら動くはず
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

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

https://uploda1.ysklog.net/uploda/0bcdf35455.png
リスト4-04 function_literal.js

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

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

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

↑の
getTrianle(5,2)
は、関数リテラルなのですね。
てっきり()がないものが関数リテラルと思っていたが、
どうも、それも間違いようで。

534 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 09:20:11.59 ID:EVXeoiyo0.net]
あくまで、関数を変数に代入するということが、重要なのでしょうか?

535 名前:デフォルトの名無しさん [2023/01/05(木) 09:23:08.82 ID:EVXeoiyo0.net]
「関数呼び出し」と
「引数付の関数リテラル」は
それだけみても違いわからないですね。
定義された場所を見て判断しないと。

536 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 10:06:29.26 ID:rM8SDmmnr.net]
>>525
>>setTimeout("$('#display').html(' ')", 1000);
>ありがとう。関数とは、関数呼び出しではなく実行される文字列
いやいや、それは関数じゃなくてただの文字列
setTimeoutの第一引数は文字列か関数って書いてあるでしょ

関数リテラルって言葉はもう忘れていいと思うよ
そもそもMDNに記述がないから便宜的なものだし、その本での説明も怪しい
定義の仕方で区分されてるだけで実質的にはただの関数で
挙動に差異があるわけでもないだろうし

537 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 10:52:19.71 ID:rM8SDmmnr.net]
>>524
>「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
それだとfunction命令で定義した関数は指定してはいけないと誤解されるからリテラルを削ったほうがいいかと



538 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 10:52:37.45 ID:uFu ]
[ここ壊れてます]

539 名前:uDD5j0.net mailto: >>525
関数リテラルという呼び方はひとまず置いといて、無名関数という概念でとらえるとよい
function(~~){~~} は見ての通り、ひとつの無名関数である

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

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

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

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

>>526
そういうこと
[]
[ここ壊れてます]

540 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 11:50:49.92 ID:hRDnYJsk0.net]
>>525
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

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

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

>>528の言う通り今は無名関数とか関数リテラルとかにこだわらない方がいい
>>525のうp画像に無名関数は重要な概念なので後ほど詳述ってあるからそこをみっちり勉強してね

541 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:50:07.72 ID:w+0CNSMQr.net]
関数リテラルの説明についてはここが一番しっくりくる
https://www.javadrive.jp/javascript/function/index5.html

「関数リテラルを使った関数定義」って言い回しを強調してるのが良い
だから関数リテラルを引数として渡すって言ったらこういうことだよなって
dispNum(10, 8, function(x, y){
return (x + y) / 2;
});

542 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 14:46:47.66 ID:EVXeoiyo0.net]
すいません。やっぱり関数リテラルという意味を理解したい。。でも↓この質問でわかるかも。
だれか答えていただけますでしょうか?
---
次のコードがあります。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.
関数リテラルとは、用法のことであり、
コード部分を表すものではない。

543 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 14:53:38.67 ID:mmmJuCOb0.net]
>>533
ぐぐったら以下の様に出る。結構理解しやすいと思うが。
リテラルとは リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数のことである。 変数の対義語であり、変更されないことを前提とした値である。 プログラミング言語のコード中にリテラルが挿入される場合には、判別のために特定の書式を用いる必要がある。

544 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:02:17.50 ID:EVXeoiyo0.net]
うん。「リテラル」ということばによって惑わされてきた気がする。

545 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:06:19.08 ID:akcN5qw4a.net]
関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃないの
正確な定義は構文木の定義を見れば書いてある

546 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:10:13.35 ID:HxGsZjLmr.net]
>>533
1だろう
let s = "abc";
の"abc"を文字列リテラルと呼ぶけどそれを代入した変数sを
文字列リテラルとは呼ばないでしょ

547 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:28:42.13 ID:c7qQflpDr.net]
>>533
で、繰り返しになるけど本やサイトによっても説明がまちまちで
MDN探しても出てこないような用語だからあまり囚われない方がいい
理解しようとして時間をかけるだけ無駄



548 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:35:00.85 ID:m3Sm+5EJ0.net]
>>533
強いて言えば1かな
でも数値・文字列・正規表現リテラルみたいにプログラム中に単独で書くことは出来ないね
変数に代入するなり関数の引数に使うなりしないとエラーになる
英語でもfunction literalっていうみたいだけど関数リテラルってあんまりいい言葉だと思わないなあ

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

function() {return true}; //SyntaxError

こんなことにこだわるよりもっと基本的なこと勉強した方方がいいんじゃないの?

549 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:38:00.87 ID:EVXeoiyo0.net]
あ。
誤解していたところがとけました。
当初は「2」かと妄信していたので、
だいぶ合点がとれました。
関数リテラルが無名関数と同義という説明も
いやそうではないという説明も
すっきりしました。

皆さん長々とお付き合いいただき
ありがとうございました。

550 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 19:28:05.49 ID:j61eMuZ00.net]
>>513
技術評論社のjQuery本格入門はものすごく読みづらかった。
もっと分かり易い言葉で解説して欲しかった。

551 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 20:02:55.70 ID:EVXeoiyo0.net]
>>536
>関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃない

この発想というか常識が無かったなあ。

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

関数リテラルといえば、例えばfunction func(){...}
とした場合、{...}は変数funcに文字列として代入されます
そしてfuncは関数オブジェクトと指定されていて
関数の実行は()を読み込むことで実行されます
func 文字列
()   関数の実行

553 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 21:01:26.21 ID:XhDooIHVH.net]
>>533
解決済みだったようですみませんでした
参考までに追加

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

console.log(func())
を見比べるとわかりますが、
func変数の中身は、function指定された文字列で
func()は関数を実行した結果の1が表示されます

554 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 21:40:35.47 ID:n/EqvkXYr.net]
>>543
JavaScriptのリテラルに関してはまず下記を読んでください


555 名前:チてあればリテラルというわけではないです
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB
[]
[ここ壊れてます]

556 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:26:48.61 ID:XhDooIHVH.net]
>>545
括る、というのはそういう意味かと
リテラルはリテラルなので括る必要はなくて
プリミティブは、これは文字列です、
これは配列です、
これはオブジェクトです
とエンジンに理解させるための記述なのかと思いまして

557 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:39:53.19 ID:scsW7zY90.net]
リテラルはベた書きで良かろう



558 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:41:03.03 ID:n/EqvkXYr.net]
>>546
申し訳ないけど全体的に文意が取れません
1行目の「そういう意味」は何を指してますか?

559 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:57:51.54 ID:XhDooIHVH.net]
括ることで、エンジンに対して、これは配列オブジェクトだよとか
これは{}だよとか、これは文字列だよとか、そういうことを伝えているってことですけど

560 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:59:39.77 ID:O+NRT3S+0.net]
>>543 > リテラルっていうのは、括るもの、という意味合いでは?
>>546 > リテラルはリテラルなので括る必要はなくて
自分で何書いてるのか理解できてる?

561 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:00:08.63 ID:O+NRT3S+0.net]
>>549
数値リテラル

562 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:12:56.82 ID:XhDooIHVH.net]
<<538
諄いですね
正しい理論的な話あればご披露ください

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

リテラルは数値などの表現で
文字列は””、’’のクオーテーションで
関数は、function装飾委sで
それぞれが何を表現してるのかを確認し
スクリプト実行時にそれらをコンテキストに登録して
その後の作動を担保する、ってことなのかな

563 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:17:36.32 ID:/79BsoYR0.net]
一から教えるにはここじゃスペースが足りないからまず入門書一冊買って読め。

564 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:20:08.45 ID:XhDooIHVH.net]
先生、ありがとうござす
時間とれましたら勉強してみます、ありがとうです

565 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:20:49.68 ID:n/EqvkXYr.net]
中途半端に字句解析、構文解析の話になってるのか・・・
誰もそんなレベルの話はしてないのに

566 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:28:36.71 ID:V3WBk68sd.net]
誤変換の多さと言い意味の通ってなさと言い酔っ払ってるとしか思えんなw

567 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:34:22.58 ID:XhDooIHVH.net]
すみませんでした、もっと勉強します



568 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 12:07:23.77 ID:ipvOzmbWr.net]
勉強しますの前にまず筋の通った主張を相手に分かるようにお願いします
>>550の指摘もそういうことだし

569 名前:538 mailto:sage [2023/01/06(金) 17:52:02.25 ID:AgA2i3Ln0.net]
リテラルって文字列とか数値というイメージ
だから、

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

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

どうりで、話が噛み合わないなと思ってたが
今、全部なっとく。ありがとうございました!

570 名前:デフォルトの名無しさん [2023/01/06(金) 21:33:28.00 ID:Ynt2iWE0M.net]
リテラルはもともと「文字通りの」って意味
ソースに書いた内容が変数とかを介さずにそのまま1つの値として評価されるもの

括弧で括るとかの意味は全く無い

571 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 22:25:41.09 ID:Th1PE0Z2H.net]
リテラル

””や’’で表現されるのは文字列と評価する
[]は配列と評価する
{}はオブジェクトと評価する
JSエンジンがオブジェクトをどう評価して処理するかということだと思ったんですけど
何やら全く的外れなこと言ってたみたいですみませんでした
何度も謝ったのでもう許してください、鬼神様

572 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 23:10:59.17 ID:AlXqoCEJr.net]
>>561
的外れなことを繰り返し書かなくていいから黙って>>504を読んでおいて

573 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 08:36:35.89 ID:I26x6s3dH.net]
時間があるときに読んでおきます

574 名前:デフォルトの名無しさん [2023/01/07(土) 11:56:48.02 ID:n88Tb37q0.net]
>>563
いますぐ読みたまえ

575 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 12:11:11.83 ID:Oa/pj9jla.net]
読めたら読みます

576 名前:デフォルトの名無しさん [2023/01/07(土) 12:11:57.01 ID:n88Tb37q0.net]
>>565
読めなくても読むのだ

577 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 15:51:52.95 ID:zzWcN8NZd.net]
>>561
わざわざもう1回書いたのは自分の中ではこれが正しいという思いが捨てられなくて
賛同してくれる人が現れないかと期待してってところか



578 名前:デフォルトの名無しさん [2023/01/07(土) 18:24:30.76 ID:2xit7B8+0.net]
再帰関数についての質問

function test(){
処理1
test();
処理2
}
とした場合
処理2の前にtest()があるので、処理2はずっと実行されないということですか?

579 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 18:46:02.96 ID:Oa/pj9jla.net]
いいえそれは処理1次第です

580 名前:デフォルトの名無しさん [2023/01/07(土) 19:05:43.05 ID:2xit7B8+0.net]
>>569
ありがとうございます
処理1はreturnや他関数への再帰はしないものとします

581 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 19:11:57.35 ID:GmV1yQnL0.net]
最大の再帰の深さは JavaScript エンジンによって制限されていて
その範囲内で終了条件を満たすように作る必要があります
でなければエラー終了するので、無限再帰は有り得ません

582 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 21:33:23.91 ID:YilgzCe20.net]
そもそも永久に再帰は無理なのを理解していないのか?
それと何故再帰を使うのかという理由が全く分からん

583 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 01:51:54.62 ID:uPZeFpc/0.net]
まあ普通は無限ループだな
わざわざ再帰にしなければいけない
理由が何かだな

584 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 01:53:28.42 ID:FOdy7Dic0.net]
末尾再帰最適化が保証されている言語では特定条件を満たせばさもループの代替として使えるが
javascriptではそうはならなかった
以上

585 名前:デフォルトの名無しさん [2023/01/08(日) 01:53:30.69 ID:gpkzwVQsM.net]
末尾最適化されてれば無限ループ可能でしょ?
ES2015で末尾最適化の仕様化されたけど適合してない実装が多いというだけ

586 名前:デフォルトの名無しさん [2023/01/08(日) 01:54:05.49 ID:gpkzwVQsM.net]
ありゃ被ったか

587 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 02:24:13.14 ID:FOdy7Dic0.net]
規格があっても準拠するかどうかは実装次第というね
ちなみにjavascriptは関数がファーストクラスでレキシカルスコープを持つためいわゆるクロージャを無意識に生成できる
クロージャがあれば末尾再帰できないからと不自由に感じることはないと思われる



588 名前:デフォルトの名無しさん [2023/01/08(日) 17:51:20.88 ID:TObCTh0j0.net]
>>572
@supportsや@mediaのネストされたcssの全プロパティ値を取得するために
再帰使いたかった

589 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 07:24:55.41 ID:Bl4X3MiM0.net]
>>578
無限にネストすることはないはずだが

590 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 12:44:15.19 ID:mLvtK4oer.net]
>>578を実現するにしても>>568にはならんと思うけども

591 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 13:34:27.76 ID:nBXeWSyT0.net]
ホントになw
// aはarray
function test(a)
{
a.forEach( b => {
if (b.isArray()) {
test(b)
}
})
}
みたいな感じなら分かるがw

592 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 15:00:57.73 ID:2yNmR2Eh0.net]
ノードを全部舐めるみたいなトラバース系の処理はエンジンの制限とか気にするなら再帰のロジックを配列とループで作った方が安全だし
恐らく関数を呼び出すより速いから検討してみてね

593 名前:デフォルトの名無しさん [2023/01/14(土) 18:28:43.16 ID:WRdKOG7o0.net]
質問
scriptタグで指定されてるリンク先をjavascriptで変えたい
例えば. script type="text/javascript" src="A”
になってんのを
script type="text/javascript" src="B”に変えたい
replace等でやろうとしたものの上手くいかなかった

594 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 20:27:52.90 ID:Ww/QFSM20.net]
ちょっとググったら出てくるやろw
https://www.softel.co.jp/blogs/tech/archives/6794

595 名前:デフォルトの名無しさん [2023/01/14(土) 23:08:43.95 ID:WRdKOG7o0.net]
>>584
ありがとうございます…
本当に助かりました…

596 名前:デフォルトの名無しさん (アウアウウー Sac7-wtyD [106.146.97.205]) mailto:sage [2023/01/15(日) 01:42:33.54 ID:k1TuDUU1a.net]
確かに以下のように、jQuery で、script タグのsrc 属性を、
a.js から、b.js へ変えても、scriptタグが再読み込みされない

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

新たなscriptタグを追加してから、元のscriptタグを削除すれば、読み込まれるかも

597 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 02:01:27.46 ID:iV9MAA6y0.net]
読み込まれたスクリプト自体はscript要素消しても消えない事に注意



598 名前:デフォルトの名無しさん [2023/01/15(日) 13:53:25.79 ID:0IRxms8qM.net]
ルーターのブロードステーションに電源を入れると
エッジブラウザが起動して自動的にブロードステーションのルーターのページが表示されます。
ブロードステーション関連のソフトウェアは一切インストールしていないにもかかわらずです。
これって動きだけ見ますとルータが勝手にこっちのpcを操作してるように見えるのですがどういう仕組みなんでしょうか?
ブラウザ(JavaScript)はページ内しか操作出来ない筈なんですが。

599 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:02:28.33 ID:yvxMece60.net]
よろしくお願いします

【環境】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

600 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:12:37.19 ID:XTiaoq8f0.net]
>>589
そのコードで、参照がコピーされているので
data0={...json["Items"][0]}
とすればいい

601 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:18:59.77 ID:iV9MAA6y0.net]
>>589
https://developer.mozilla.org/ja/docs/Glossary/Deep_copy

602 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:22:38.08 ID:yvxMece60.net]
>>590,591
できましたありがとうございます。

603 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:31:02.14 ID:XTiaoq8f0.net]
この場合はこれで十分ですが
スプレッド構文はシャローコピーなので、
データがより複雑な構造の場合は、それなりの記述が必要です

604 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:40:55.97 ID:iV9MAA6y0.net]
>>588
キャプティブポータルの検出機能が誤爆してるんじゃないかな

605 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 20:06:20.61 ID:7dUg93Xk0.net]
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())から読めるのでしょうか?
こういう書き方が出来るのなら楽なのですが…

606 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 20:27:36.55 ID:Vv6s9YYpr.net]
関数内でvarを付けずに宣言された変数はグローバルスコープになる
var rd11 = pg1.add("edittext", [0,0,40,23], 100)
とすると関数スコープになって外部からアクセスできなくなるはず
関数内での変数宣言はvar文で行うべきで
これを「楽」と思ってしまうのは危険

607 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 20:53:03.10 ID:7dUg93Xk0.net]
>>596
ありがとうございます
非常に勉強になりました



608 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 21:30:36.07 ID:YqyTW3mJr.net]
>>597
'use strict'が効くならスクリプトの先頭行に書いとくといいよ

609 名前:502 mailto:sage [2023/01/15(日) 23:28:40.23 ID:bMctduL80.net]
>>595
それAdobe Illustratorかなにかで使うソースでしょ?
どういう環境で使うソースなのかは一言書いといた方がいいよ

610 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:45:44.09 ID:r5uLxMWea.net]
ES2015(ES6)以降は最低限、

変数宣言にはvar ではなく、let/const を付けよう

611 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:55:04.30 ID:cRCjJN100.net]
>>599
この指摘は何度も見てるが、いつになっても改善されない
質問者にとっては直す気がない、どうでもいい問題なんだろうな…

612 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:55:05.86 ID:5X3ij1Yxr.net]
>>600
この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

613 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:55:37.31 ID:cRCjJN100.net]
>>599
この指摘は何度も見てるが、いつになっても改善されない
質問者にとっては直す気がない、どうでもいい問題なんだろうな…

614 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:57:40.43 ID:cRCjJN100.net]
申し訳ない
投稿エラーで再投稿したら、二重投稿になってた

615 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 01:46:54.32 ID:DS9XkUYq0.net]
>>599
すみません
次から書きます
あまりillustratorに特化したことは質問しません

616 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 01:51:10.12 ID:DS9XkUYq0.net]
>>598
そういうのがあるんですね
知らなかったです

617 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 02:24:41.48 ID:SauNqkHgr.net]
>>606
知った以上次からそちらにに行って質問してください
環境の説明も必要ないしillustratorに特化した質問もし放題だし良いことづくめですよ



618 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 08:45:42.10 ID:Hbn6MJh3M.net]
イラレ特化だからではなくてJavaScriptのバージョンの問題なんだけど
なんも書いてなければ最新のモダンブラウザのつもりでみんな考える
今JavaScriptのバージョンってES12くらいかね、あんまりそういう言い方しないけど
イラレ搭載のはES3なの?それも知らんけど
クッソ古いから使える文法も関数もまるで違うから環境を書けと言っているのよ
そこらへん多分知らなかったんだろうけど、それは仕方ないけど、次からは環境きちんと書いて
というかできれば以降はAdobeのフォーラムでやって

619 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 01:44:26.39 ID:BTJjkb3Ra.net]
>>589
C/C++ 以外の言語は、参照しかコピーしない・shallow copy。
実体は再作成されない

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

だから、marshal とか、わざわざオブジェクトをJSON 文字列化して、
その文字列から、新しいオブジェクトを作ったりする

620 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 16:25:41.45 ID:XA7n1WWP0.net]
>>609
え?

621 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 19:01:55.76 ID:LBqNgpc6H.net]
ポインタのこと?

622 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 00:05:10.90 ID:csewAuIZ0.net]
検索アドレスに言語指定が必要になって下のスクリプトを書きました。

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

kensaku は検索フォームの文字列です。これで正常動作するのですが、
エラーチェックすると&が警告されて気になります。
&にしたらアドレスが&になって検索できないし、
なんとかならないものでしょうか・・・

623 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 00:09:24.42 ID:csewAuIZ0.net]

&amp; です
&#038; でも同じです

624 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 06:35:54.86 ID:guU+fOES0.net]
この気持ち悪いの何?
> "ht"+"tp

625 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 07:40:19.90 ID:Eqd2U92jH.net]
documentのpropertyにconcertzenderって標準でないっしょ?
スクリプトのどっかでなんか設定してるん?

626 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 07:41:25.64 ID:Eqd2U92jH.net]
それとエラーの内容も書き込まずにして質問っていうのもどうなの?

627 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 08:57:37.16 ID:cgb3Ru010.net]
>>614
5ch対策でしょ



628 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 10:05:55.23 ID:csewAuIZ0.net]
>>616
すいません。単純に特殊文字ダメよという内容だったんで・・・

"&lang=nl";

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

自分としては&amp;と書いて、リンクアドレスとして&を出力したいわけです・・・

629 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 10:16:20.21 ID:guU+fOES0.net]
>>617
あーそういうことか。コピペコードで悪さでもしようとしているのかと思ったけど違うみたいね

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

URLSearchParams
https://developer.mozilla.org/ja/docs/Web/API/URLSearchParams

630 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 11:11:32.49 ID:CwkcAAQnr.net]
>>618
載せるならエラーメッセージ原文を
で、そのメッセージでググってみた?
あとエラーチェックするとって具体的にどういう操作をしたの?

631 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 12:42:13.54 ID:iQx/CEUf0.net]
>>612
htmlのscript要素の中身はCDATAなので文字参照にする必要なし
もちろんinnerHTML等htmlとしてパースされるものに突っ込む場合は必要だが
htmllintなんかでエラーになるのは無視していい

632 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 13:08:45.81 ID:csewAuIZ0.net]
>>620
エラーメッセージはその部分は&amp;だろと言っているのですが、じゃあ&amp;と書くと
tp://www.concertzender.nl/?s=kensaku&amp;lang=nl と出力されてエラーになり、困ったわけです・・・

>>621
無視していいんですね。ありがとうございます。
htmlでは&amp;と書くと&になるのに、スクリプトの部分ではそうならないのですね。

633 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 13:26:39.01 ID:Okbz9NQsr.net]
>>622
何も質問に答えてないよね
答える気があるならもう一度>>620を読んでほしい

634 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 22:07:44.38 ID:40XBuhhWH.net]
君は君の質問に反応しない人には
推し量って導こうという崇高な意識はないの?JS使いなのに?

635 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 00:14:23.52 ID:VzeMnjK00.net]
>>624
誰からも回答してもらえない質問者は、他の人を導く存在に昇格ということか
質問に回答しないのが本人の為なのかもしれんな

636 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 01:57:18.23 ID:ptsQI5JN0.net]
それよりJavaScriptをJSと略すと女子小学生しか思い浮かばないからそろそろやめたほうがいい

637 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 07:46:55.99 ID:PpNyk8UWr.net]
>>624
>君は君の質問に反応しない人には
反応しない人?
質問に反応されたけど回答になってなかったからそこを指摘したんだけど



638 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 17:53:26.94 ID:zXaveivW0.net]
>>626
J

639 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 00:31:01.01 ID:c9Kzf+f60.net]
【環境】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])

640 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 00:37:27.57 ID:q740ttN00.net]
>>629
arr_textがconst宣言されてるだけでは?

641 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 01:06:05.60 ID:c9Kzf+f60.net]
>>630
できました。
サンクスです。

642 名前:デフォルトの名無しさん [2023/01/29(日) 10:31:07.49 ID:rZA8vUyra.net]
初学者質問ですいませんが、変数aが文字列あいう、かつ、変数bがundefinedでない時 というif文を書きたい時
if (a=='あいう' && (!(b === void 0))) {...
という書き方であってますか?
よりシンプルな書き方とか、より標準的な書き方ってありますでしょうか。

643 名前:502 mailto:sage [2023/01/29(日) 12:00:10.71 ID:9rN3KLzS0.net]
厳密不等価演算子 !==
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Strict_inequality

undefined が予約語になってないから void 0、ってのは……はて、今もやるものかね

644 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 12:54:20.77 ID:eUvMCdrW0.net]
if(a == 'あいう' && !b)でもよさそうな気がしなくもない

645 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 15:43:05.57 ID:d0tJgmu5r.net]
>>633
undefined は予約語ではないのでローカル変数による上書きが可能…という意味では、void 0 を使う価値はある

646 名前:デフォルトの名無しさん [2023/01/29(日) 15:59:30.70 ID:rpOrCqGha.net]
>633
ありがとうございます。リンク先確認しました。
if(a=='あいう' && b!== undefined またはvoid 0)
という感じでしょうか。
ここでb!= undefined とするとまずいのはbがnullの時だけ、という認識でいいでしょうか。

>634
ありがとうございます。bが0や空文字の時にも偽になりそうです。

647 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 16:03:43.52 ID:R24XfIrD0.net]
第一にjavascriptみたいな後付け追加仕様が混在する言語は規格よりも実装の影響力が強いから
想定環境で検証済の方法を採用すべきだと思う
コードとしては変数をtypeofで"undefined"と比較するのが恐らく理解しやすいが、
メンテナがjavascriptに十分慣れていてvoid 0のイディオムの理解を期待できるならそっちでもいい



648 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 16:28:19.00 ID:MX/guDl/d.net]
>>636
結局のところ
・undefinedが上書きされる可能性を考慮する必要があるのか
・bがundefined以外のfalsyな値を取りうるのか
・取る場合それぞれの値をundefinedとは区別したいのか同じとみなしたいのか
この辺次第で望ましい書き方は変わってくるわけで

649 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 16:30:22.92 ID:d0tJgmu5r.net]
>>636
型チェックも働かせるなら

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

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

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

まずいのは、undefined! == void 0 の場合

650 名前:デフォルトの名無しさん (アウアウウー Sacd-3+Au [106.128.44.107]) [2023/02/12(日) 19:44:05.09 ID:zQHZ3m1Fa.net]
//☆☆県(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];
});

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

☆はわざとです

651 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 16:33:17.79 ID:6gR8iJfAr.net]
バグってるので調査してください

それは質問ではなく作業依頼

652 名前:502 mailto:sage [2023/02/13(月) 22:37:53.05 ID:E1kxmkHl0.net]
>>640
やりたいことも伝えずに上手く動かないと言われてもなー

653 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 07:31:57.89 ID:NKP9M84/H.net]
なぜ自身でデバッグせんのよ

654 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 21:18:40.92 ID:snyjWmK+0.net]
そのメソッドチェーンやめれば分かるよ
エラーが起きない前提があってのメソッドチェーンだからよ

655 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 12:17:26.22 ID:DJukcnvm0.net]
$.each()とsetIntervalをつかって、
インターバル時間ごとに順番に配列の中身を、コンソール出力する方法ありますでしょうか?

$.each()は、一度に処理するから、一つづつコンソール出力するのは難しいですかね。

656 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 20:26:53.96 ID:iF4/ZjHx0.net]
>>645
$,each()を使う理由がわからない
setIntervalだけ使えば良い

657 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 22:54:40.37 ID:iF4/ZjHx0.net]
>>645
clearintervalで1回だけタイマーを動かしてPromise化してawaitして$.each()を使えば、理屈ではできると思う
手段のモ目的化、かつ無駄に複雑だと思うが



658 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 19:51:29.82 ID:gBmvvkX6a.net]
nodeでPythonのif name==main
みたい

659 名前:なことできませんか?
メソッドの動きをデバッカーでみたいんです
[]
[ここ壊れてます]

660 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 01:21:32.26 ID:jGK2BMhd0.net]
//【環境】Win11,JScript
//【何をしたのか】case文のところ

661 名前:に条件式を書き、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になるのでは?
[]
[ここ壊れてます]

662 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 02:46:21.28 ID:thXJapXb0.net]
>>649
上から順に case が評価され、どこかで真になればそれ以降の case は評価されない。
break してないからそれ以降の処理がフォールスルーで実行されてるだけ。

全部の条件を評価したいなら普通に if で書けばいいと思うよ。

663 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 05:29:40.16 ID:xQyCpHMf0.net]
そもそもswitch文って条件にtrue入れて使うようなもんじゃないぞ

664 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 08:59:59.37 ID:thXJapXb0.net]
>>651
case に式を書けるようにしたことによって使えるようになった副作用みたいなものだよね。
switch の式と一致する case を探すのが switch文の動作だとするなら、switch の式 true と一致する値となる、すなわち true になる式を持つ case が選択される。
個人的には if で書けばいいものをわざわざ分かりづらい書き方にしてるバッドプラクティスだと思ってるが、フォールスルーと組み合わせると if よりもスマートに書ける可能性はあるかもね。
特に >>649 のように全部の case を評価してほしいなら、switch で書く利点が何一つ無い。
if より利点がある場合は、フォールスルーする場合に最初に true になる case までしか式が評価されないことくらいなのに。

665 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 02:30:10.34 ID:E1i3tKVi0.net]
>>652
良いサンプルが思いつかんけど、
ifで書こうとすると、重複する処理を書かなければいけなくなったり、フラグの変数を導入したりすることになるんだけど、
breakなしのswitch case文ならうまいこと書けるんじゃないかと思ってやってみたけど、動かなかった。

666 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 21:04:04.70 ID:5GrSMYMK0.net]
jQuery以外のライブラリ・フレームワークは廃止して欲しい。
覚えるのが大変。

667 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 22:01:05.33 ID:YxrjvuYta.net]
react だけでよくね
jqueryとかいい加減消滅しろよ



668 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:22:22.93 ID:5GrSMYMK0.net]
>>655
この2つは併用出来ないから辛い。

で、reactならではの利点は?

669 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:31:29.20 ID:fw0b+BcSM.net]
質問スレで焚き付けんな

670 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:38:37.47 ID:TypeZdxc0.net]
素の JS でいじゃん。

というのは言い過ぎかもしれんけど、何に使ってるんだか分からんようなことでいちいちおまじないのように jquery 読み込んでる呆れるようなところも少なくないんだよな。
通信回線速度も処理能力も上がってるから動いちゃいるが、とりあえず素の JS で書けるようになれと言いたい。
ブラウザ毎の非互換も少なくなってるし querySelector みたいな便利なメソッドもあるし、そんなに苦労しないでしょ。

671 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:49:36.71 ID:YJ+BhbRla.net]
それなjqueryおじさんはJSだけで書けるようにしておけ
それでも足りないならReact使えな

672 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 19:53:41.69 ID:hdBOeOla0.net]
githubで他人のコード見てるとclassもprototypeも使われてないやつが多いんだけど何でなん?ベストプラクティスがruby以上にわからん何が正解なん?

673 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 23:29:12.38 ID:8kmkGnGP0.net]
暗黙的なクロージャがあるからclassやprototypeを使わずとも割と困らないのが何でなん?の回答になる

674 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 02:00:11.27 ID:65NO3QYK0.net]
htmlコーダー志望の初心者です。
JSの入門書を読み終えたのでより実践的な学習に移行したいのですが、
既存の書籍やサイトは総論のような基本的な知識に焦点を当てたものが多い印象で、
実務において初心者コーダーにどのようなプログラムの作成が
求められてくるのかが判然としません。
そのような内容に焦点を当てた書籍やサイト等はありますか。

675 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 19:51:27.97 ID:eGjuMjwU0.net]
そもそもhtmlコーダーって何?ってぐぐってみたらデザイナやエンジニアが片手間でできる内容だし専門職としては成立せんのでは

676 名前:660 mailto:sage [2023/03/02(木) 23:05:32.75 ID:65NO3QYK0.net]
>>663
htmlコーダーという職種自体がオワコンですかね…
ご意見参考にさせていただきます。

677 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:25:40.95 ID:DJxhSXLyr.net]
99%のエンジニアは片手間でできないからな
エンジニアはhtmlとcssをバカにするけどほとんどのエンジニアはまともに使えていないんだよ
特にcss

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

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

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

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

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

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

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

毎回このパターン



678 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:32:56.76 ID:an7QtCXRd.net]
まあでもそういう業界だからね
連携ダメだからと言って隙間に入り込める余地があるかどうか

679 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 09:44:56.39 ID:o6EY7x580.net]
>>665
組み込み系や汎用系のエンジニアにでも頼んでるのか?
ちゃんとWeb系やってるとこに頼みなよ

680 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 10:01:30.76 ID:DJxhSXLyr.net]
>>667
むしろ組み込みは汎用系のほうは知らん
Web系エンジニアはこんなんだぞ
ほんの少しだけ有能なフロントエンジニアがいる現状
なぜならフロント開発スキルとデザインスキルの両方を持ち合わせた人材がほぼいないから

681 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 10:24:24.87 ID:o6EY7x580.net]
webプログラマーに高度なデザインまで要求するのは無理でしょ
そのためにプロのデザイナーがいるんだし
でもほとんどのエンジニアがhtmlとcssをまともに使えないなんてありえない
今いる環境が悪すぎるんじゃないの?

682 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 11:25:14.28 ID:yQajwbSzM.net]
ぶっちゃけデザインするやつが CSS まで書くのが一番いいんじゃね?
位置やら大きさやらの細かい詰めまでこだわれるでしょうに。

683 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 11:27:48.97 ID:GvE2UXq10.net]
アニメーションとかJsonでデータいじくる時だけ呼んでください

ってことにしてる社内ニート

684 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 11:54:37.73 ID:DJxhSXLyr.net]
こういうこと

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

フロントエンジニアの担当
・APIでデータ送受信
・propsで流し込み

685 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 12:03:53.67 ID:aLTOWI5kM.net]
>>672
それ専業のデザイナー置いても暇を持て余すような職場だろ
普通デザイナーにjsxなんて書かせないよ

686 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 12:14:59.23 ID:o6EY7x580.net]
ほとんどのエンジニアがhtmlもcssもまともに使えない職場みたいだからなw

687 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 12:33:55.85 ID:DJxhSXLyr.net]
職場じゃなくてそもそもエンジニアたちがhtmlとcssが絶望的にゴミレベルしかいないんだよ
海外でも同じ傾向がある

なのに自分たちはできると勘違いしてるから話が通じないんだよな



688 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:31:04.49 ID:o6EY7x580.net]
jquery使えます!って嘘ついたデザイナーの尻拭いをさせられたことはあったな

689 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:32:46.28 ID:yQajwbSzM.net]
>>675
そういうお前は逆にサーバサイドは絶望的な腕前なんじゃないの?

690 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 15:00:35.71 ID:DJxhSXLyr.net]
>>677
わざわざ煽りご苦労
サーバーサイドが絶望的どころかサーバーサイドもやってるが?
むしろフロントよりも先にサーバーサイドからやってたわ

691 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 15:24:30.84 ID:yQajwbSzM.net]
>>678
という人がどれだけいるのって話でしょ。
おれもサーバサイドの人というか、むしろwebじゃないサーバの人だけど。

692 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 18:33:43.53 ID:omRbdhVsr.net]
やたらイキって言葉遣いが悪いのと同じ回線だと肩身が狭い・・・

693 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 21:01:23.22 ID:bsut6PhH0.net]
>>672
デザイナーはせいぜいコンポーネント作ってStoryBookに載せるまでが責務だろw

694 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 22:20:39.69 ID:Q9LzyMl00.net]
プログラマにバカにされてreact勉強中のデザイナー様が激おこです

695 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 22:30:19.52 ID:yxGxd3AO0.net]
webデザイナーってjqueryぐらいまでは覚えさせられたかもだけど
流石にreactやvueまでやれってのは酷ではw
そんなのフロントエンドエンジニアの仕事でしょw

696 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 23:30:24.99 ID:Q9LzyMl00.net]
だってフロントエンドエンジニアはhtmlもcssもわからないバカばっかりなんだもん

697 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 18:46:55.35 ID:erCI1bTUH.net]
javascriptコードでバグの伝搬を制限して拡張性を高める必要性のある堅牢なプログラムなんて不要だからでしょ



698 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 18:52:38.30 ID:erCI1bTUH.net]
みんななんで仲良くなれないかな

699 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 16:50:40.53 ID:RB9OOifa0.net]
仕事だし自分の領域に少なからず関わってくるんだから覚えろよ
わからないじゃねーんだよボケ^^
これでよし

700 名前:デフォルトの名無しさん mailto:sage [2023/03/11(土) 23:19:16.39 ID:qvilA0zq0.net]
sortメソッドは必ず、比較関数と一緒に使用する必要ありますか?
sortメソッドは数値を並びかえだと比較関数と一緒でないとうまくいかなくて、
でも、文字列のソートなら、ソート関数なくてもうまくいくみたい。
sortは文字列でも数値でもソート関数使った方がいいのでしょうか?

701 名前:502 mailto:sage [2023/03/12(日) 04:39:15.28 ID:PQcYNrkb0.net]
>>688
疑問に思うことがあれば、まず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 の要素はすべて、配列の末尾に並べられます。

702 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 09:33:44.40 ID:do9jOqKh0.net]
>>689
ありがとうございます。

703 名前:デフォルトの名無しさん [2023/03/12(日) 10:07:09.74 ID:mPShShEs0.net]
ティラノスクリプトでゲーム作ろうとしたら、結局JSまで触らないと無理そうで及び腰・・・
・例えば変数aに"gazou1"という文字列を入れる
・『【"変数a"+.jpg】を表示』みたいな記述?? ←ここが分からない
・結果、gazou1.jpgが表示される
こんな感じの、変数に入れた文字列を使用して画像表示ってできますか?
JS 変数 画像表示 とかで調べても情報が多すぎてさっぱり分からない

704 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 11:40:49.62 ID:SvUIzONJr.net]
>>691
専用の掲示板へどうぞ
https://tyrano.jp/home/bbs

705 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 12:27:02.18 ID:mPShShEs0.net]
>>692
誘導ありがとうございます
ティラノだけでは無理そう&ティラノ上ではJSの記述が使える、という事でこちらで質問しました
なのでJSで可能か不可能かだけでも教えて頂けると助かります
JSで不可能なら調べたところで出て来ないでしょうから延々調べ続けるはめに・・・

706 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 12:49:02.36 ID:PwnTbWEur.net]
>>693
まずはティラノスクリプトに詳しい人に聞いてみるのが筋ではないですか?
同じ問題に遭遇した人もきっといるはずでノウハウも蓄積されてると思いますよ
wikiなんかもあるようですし、そちらも確認してみましたか?

707 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 10:07:27.43 ID:/ROF2oq40.net]
>>691
こういうこと?
===============================
<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>
================================



708 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 17:49:23.15 ID:dqLl9/D/M.net]
>>683
むしろjQueryの方が難しいと思うけど...

709 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 19:09:00.85 ID:LN5ju60U0.net]
>>695
表示する画像を変数を使って切り替えたいので、
if 変数a=='花' なら 花.jpg を表示 else 変数a=='山' なら 山.jpg を表示
みたいな感じで一応は表示できるのですが、表示したい箇所が複数あるので
if 変数b=='花' とか if変数c==’’花' とかで凄く長くなりそうなのです
でももし 変数の中身+.jpg みたいな記述がjsに存在するなら
aの場所には 変数aの中身+.jpgを表示 bの場所には変数bの中身+.jpg みたいに凄く簡略化できるかなって

教えて頂いたコードを調べてみます!ありがとうございます!

710 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 19:18:34.65 ID:z8Hv0b/wr.net]
>>697
他板にティラノスクリプトスレがあったんで
専用掲示板より5chがいいのであれば続きはそちらでどうぞ
https://mevius.5ch.net/test/read.cgi/gamedev/1428724538/

711 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 19:42:26.91 ID:LN5ju60U0.net]
>>698
そこは質問スレじゃないのでどうにも質問しづらくて
とうかJSの質問スレでJSの質問してるのに「ティラノ上で動かしてる」ってだけで、
そこまで「よそいけ、よそいけ」って言わなくても・・・

712 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:03:21.60 ID:z8Hv0b/wr.net]
>>699
>そこは質問スレじゃないのでどうにも質問しづらくて
そのスレを「質問」で検索してみると皆質問してるのが分かります
気後れする必要はないと思いますよ

>とうかJSの質問スレでJSの質問してるのに>「ティラノ上で動かしてる」ってだけで、
>そこまで「よそいけ、よそいけ」って言わなくても・・・
あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
それについてはこのスレよりティラノスレや専用掲示板の方が的確なアドバイスが得られるはずです
違いますか?

713 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:12:22.98 ID:z8Hv0b/wr.net]
ついでに「ティラノ上で動かしてる」JSについてもそちらで聞いた方が良いでしょう
ティラノスレを見渡すとJSのコードもたくさん貼ってありますよ

714 名前:デフォルトの名無しさん [2023/03/13(月) 20:21:27.02 ID:LN5ju60U0.net]
>>700
>あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
違います。自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
最初にティラノの名を出したことで誤解を招いたかも知れませんが、
>>691に >JS 変数 画像表示 とかで調べても
>>693に >なのでJSで可能か不可能かだけでも教えて頂けると助かります
と書いてあるように、ティラノではなく、あくまでJSについて尋ねています

715 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:45:42.74 ID:z8Hv0b/wr.net]
>>702
>自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
では聞きますが、それが何のために必要なのですか?

716 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:57:54.94 ID:ayGBKgIT0.net]
拡張子を付加する機能は無いよ
WBC始まってキャッチボールしたい気持ちはわからんでもないけども

717 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:58:10.41 ID:bqu+B+fY0.net]
>>702
> 「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」

はい。可能です
imgタグにデータURLを引き渡し表示することはごく普通に見ることができます
Base64エンコードされた文字列とmediatypeをセットするだけです



718 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:59:33.75 ID:1Iq9NysVM.net]
>>702
あなたの質問はjavascriptの質問ではありますがティラノスクリプトの仕様を知らないと答えられないものです
こちらはティラノスクリプトの仕様を知らないのであなたの代わりに調べることから始めなければなりません
ティラノスレであれば詳しい人がいると思うのでそちらへどうぞ

719 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 21:59:41.61 ID:LN5ju60U0.net]
>>703
上述の通りゲーム作成と作業の簡略化のためです
>>704
拡張子の付け足しは誤解を招く表現でした。変数の中にある文字列と同じ名前の画像を表示するってことです
>>705
ありがとうございます。調べてみます
>>706
あくまでJSの事として聞いているので「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」って感じの答えで十分です
ティラノスレでJSのこと聞くよりJSスレでJSのこと聞く方が早そう、って考えはそこまで変ですか?

720 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 22:18:31.29 ID:z8Hv0b/wr.net]
>>707
>上述の通りゲーム作成と作業の簡略化のためです
それは「ティラノスクリプトで変数に応じた画像表示する」こととは違うのですか?

>「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」
このスレでそんな回答をもらうよりはティラノスレで質問して
「ティラノスクリプトではみんなこうやってるよ」って回答をもらう方が何倍も早くて確実だと思いますがいかがでしょう

721 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 01:06:18.93 ID:VmfXTFqwa.net]
例えば、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) // 設定
} )

722 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 02:37:35.49 ID:JIhs77SCM.net]
JSスレでJSのこと聞きたいんならティラノの名前出すなよ

723 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 08:16:42.83 ID:gMQMDZBfd.net]
それはそう

724 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 13:16:01.19 ID:bBCbUtGh0.net]
jpegの名前を動的に指定できるよ

725 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 13:21:05.82 ID:crjDIavXr.net]
>>707
ティラノについて少し調べたのでスレ違いを承知の上で書きます
あなたが>>691>>697でやりたいことは
[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」が表示されます
例は背景ですがキャラやその他の画像でも可能だと思います

726 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 13:30:55.51 ID:crjDIavXr.net]
>>707
なお、簡単なサンプルで動作確認をしました
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]

727 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 20:28:58.71 ID:2HNLo12V0.net]
>>713
ありがとうございます!!できました!!



728 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 20:53:16.27 ID:2HNLo12V0.net]
作業が一気に楽になりました!
>>713も他の方も本当にありがとうございました!
そして不可能と思いこんでたことが実は可能だったあたりはすみませんでした!

729 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 20:53:28.39 ID:GiZ8CeD1r.net]
>>715
解決したのならなによりです

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

繰り返しになりますが、この先また何か躓いたときはまずティラノの掲示板なりスレなりで聞いてみるようにしましょう(たとえJSに関することであれ)
その方が解決が早く、的確なはずです

730 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 21:02:42.69 ID:GiZ8CeD1r.net]
>>716
ちょうどかぶってしまいましたが、ちゃんと自分の非を認められる人で安心しました

こちらも少し言葉がキツくなってしまった点はお詫びします

731 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 01:17:49.11 ID:sTLgg4Iop.net]
初めまして

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

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

ご教授頂ければ幸いです

732 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 02:28:06.62 ID:i4bxOxoza.net]
これか?

github.com/kazu-ux/PixivFilter

React, TypeScript

733 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 07:58:24.49 ID:q+AMrJS6H.net]
反省なんて必要ないわ、なんか強迫症的なやつがうざい
なんなんだ、執着が過ぎる

734 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 08:01:02.20 ID:q+AMrJS6H.net]
プログラムではすべてのタグを検出して配列等に格納しているが
そこから抽出して出力する処理をしてるってことじゃない?
見てないからわからんけど

735 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 09:37:50.61 ID:OLitJJv/d.net]
>>719
なんか見覚えあると思ったらこれか
https://mevius.5ch.net/test/read.cgi/hp/1439005423/342
343をレスしたの俺だけど回答の内容を理解できなかったってこと?
分からないところがあったのなら追加で質問すればよかったろうに
それをせずに全然違うスレで聞き直してるのはなんで?

736 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 20:45:42.17 ID:q+AMrJS6H.net]
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){,,,,,,どこに表示させるか......})

っていう感じでどうですか?

737 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 22:44:21.64 ID:ohrI2qnX0.net]
jQueryはなぜ嫌われる?
簡単な構文で便利だと思うが…。
他のライブラリ・フレームワークとの互換性が高ければいいのに。



738 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 23:48:50.56 ID:T0OxazTtM.net]
技術的には好かれてるわけでも嫌われてるわけでもない
スレ的には脈絡なく蒸し返す厄介な奴がいるので敬遠される

739 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 07:03:01.34 ID:Hd88hZaKH.net]
嫌われてはないんだろうけどスレチなんでない?

740 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 07:15:13.56 ID:Hd88hZaKH.net]
javascriptで作られたプログラムの処理に関して
Jqyeryを使えば簡単だよって言われても
いやいやここはjSで書きたいんでってなるでしょ
そういう質問に対してjqのほうが簡単っていうのがよくわからん

フレームワークの質問スレは
ベース言語のすれとは別に立てたほうが

741 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 09:02:04.98 ID:c9lqR0yG0.net]
www

742 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 10:39:46.62 ID:fxj0X8UB0.net]
フレームワークスレは一応立ってるね
糞スレだからそこで質問して回答があるのか知らんけど

743 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 11:25:08.38 ID:QjQVIFFDr.net]
>>721
これもしかして私に対して何か言おうとしてる?
もしそうならもう少し具体的に問題点を指摘してもらえないかな

744 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:46:42.93 ID:FgyDZ6E70.net]
いえいえ、違います、気にしないでください

745 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 20:33:58.52 ID:ParHajkN0.net]
>>732
あなたは>>721とワッチョイもIPも違うようだが…

746 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 20:55:51.48 ID:Olf8APhOd.net]
>>724
どうですか?も何もそんな都合のいい妄想データを元に書いたコードなんぞ
役に立たないどころか混乱させるだけだからやめようよ

747 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 21:11:03.92 ID:Hd88hZaKH.net]
混乱させるだけとかwww
そもそも解答者がわざわざ対象コードを検索して読み込み
そして質問者が満足するようなコードを生成するとか、自分は絶対しないw

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

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

とした場合で、初心者初学者向けにアドバイスするのなら
上記の感じのアドバイス以外に何かできるアドバイスあるん?
質問の質以上のアドバイスなんてできない
まずはオブジェクトとプロパティあたりから始めるしかないっしょ




748 名前:て思ってのアドバイスなのねん []
[ここ壊れてます]

749 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 21:38:40.67 ID:Olf8APhOd.net]
質問者がわからないと言ってるものには具体的な対象があるわけよ
それを無視して一般的な考え方のアドバイスをするなら抽象的な話にとどめればよくて
わざわざデタラメコードを生成することはなかろ

750 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 22:01:47.84 ID:Hd88hZaKH.net]
それはそうですね
おっしゃる通り
でもデタラメとか言わんでください!

751 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 21:04:07.19 ID:irjN28+Dd.net]
他に適切な表現が見つからなかったからごめんな

752 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 21:08:34.06 ID:ZP9+v2PL0.net]
こっちがデタラメなコード書くと見かねていい感じのコード書いてくれるツンデレ

753 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 02:26:56.50 ID:dC3/JFCa0.net]
すみません、私の知識不足というか理解不足も大きそうですので、手が出るところからさせて頂こうと思います。

javascriptの「fetch」メソッドなのですが、これはjsonファイルを読み込む事はできないのでしょうか?ローカルで試しましたが、エラーになってしまうようです

754 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 05:10:03.75 ID:s5wH/EpL0.net]
>>740
fetchやXHRも >>469-475 と同様基本的にFileURIでのアクセス不可

755 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 15:36:03.94 ID:dC3/JFCa0.net]
ありがとうございます。「ローカルのサーバーを立てる」と良いらしいのですサーバーは専用のパソコンでないと、セキュリティ的にも危険と聞いた事もありますが、大丈夫なのでしょうか。また、実際やるとしたら、どのような方法があるでしょうか。

756 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 15:40:55.59 ID:T8cp6VGg0.net]
Xamppつかっておけばよろし

757 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 19:03:06.43 ID:xpgWDt8BH.net]
>>742
vscodeって使える?すごく簡単なエディタ
そのエディタでliveServerっていう拡張があるんだけど使えるか試してみたら?



758 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 21:30:20.18 ID:HGxbjpaKd.net]
Promise.race()で複数のPromiseを渡して、最初に終了したタスクのPromiseを受け取ったあと、同様に順次残りのタスクを完了したものから受け取るような書き方はできますか?
(最終的にすべての非同期タスクの終了まで繰り返す)

Pythonでいう、as_completedのように複数非同期タスクを、終了次第順次ループで受け取るような形です。

759 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:35:04.92 ID:DxTl2kdL0.net]
>>743 >>744
vscodeの方を使わせて頂きました。お二方ともアドバイス、ありがとうございました。

余談ですが、jsonファイルに単なる文字列(あああ、abc、123)などを単発で格納するとしても、「名前:値」のフォーマットは守らないといけないんでしょうか(名前をいちいち宣言しないとダメなのか)。

760 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:36:07.26 ID:DxTl2kdL0.net]
正確には「{"名前":値}」ですね。省略できれば楽だなと思ったのですが。

761 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:59:08.70 ID:4pa7IAk9d.net]
{"名前":値}はあくまでオブジェクトの形式であって文字列や数値のみを返したいなら不要
ただし文字列は"あああ"や"abc"とする必要はある
https://www.json.org/json-ja.html

762 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:08:00.26 ID:DxTl2kdL0.net]
ありがとうございます。おそらく

"abc", "あああ"

のようなカンマ区切りで大丈夫でしょうか。

763 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:20:25.80 ID:S0dCUzy1d.net]
単一の値でない場合は配列にすること
["abc", "あああ"]

有効なjson形式かどうかはJSON.parse()に食わせてみるといい
JSON.parse('"abc", "あああ"'); //NG
JSON.parse('["abc", "あああ"]'); //OK

764 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 14:04:53.34 ID:DxTl2kdL0.net]
>>750
参考になりました。ありがとうございます。

765 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 15:26:18.81 ID:FTc6ajskM.net]
>>745
各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;
}
}

766 名前:デフォルトの名無しさん [2023/03/19(日) 16:15:48.14 ID:/GeuLHtL0.net]
趣味で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で代替手段で実装しようと思ったら、どのようなコードになりますか?
ライブラリやフレームワークは使ってはいけないことになっていますが、バレなさそうなものなら中に組み込むつもりです。
どうかよろしくお願いします。

767 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 16:36:55.71 ID:HI67bUFb0.net]
代替手段なんてない
仕事振ったやつが何も分かってない

あれこれやってる内容をなにか別の技術で1から組み立てる必要あり
それかedgeのIEモードは検討出来ないの?



768 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 17:21:20.47 ID:HTlOdPesM.net]
今から実装してテストしてリリースしてその後の問い合わせ対応や運用に備えるのはスケジュール的に無理でしょ

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

IEモードにするにしてもグループポリシーの変更・適用のテストや問い合わせ対応の準備を考えればそれでも時間が足りないくらい

769 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 18:07:07.17 ID:EAkcZvWPd.net]
>>753のコードにぶち当たった時点でEdgeというかブラウザ単体で実現できないことには気がついて欲しいものだが
仮にも2年はJSを勉強していたと言うなら

770 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 18:51:42.92 ID:M92RK9ru0.net]
JSONでダミー値をコメントのつもりで使ってたらエスケープできてない\でパースエラーになるデータができたりして使うのが怖くなった
やっぱコメントぐらいは定義必要だったなこれ
人間が手書きするものじゃないとしてもよく普及したもんだ

771 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 18:56:28.01 ID:M92RK9ru0.net]
>>753
そういうのってEdgeのIEモードに移行して終わりでしょ
周囲も期間的にその程度しか期待してないと思うけど

772 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:09:54.29 ID:M92RK9ru0.net]
ど素人だとIEモードが何なのかで3月は潰れるかもしれんけど一応
基本的には社内のADサーバでGPO管理してる奴にEdgeのIEモードのサイトリストに追加してもらう
これは君の担当以外にもIEモードのサイトは糞の山程あって既知の対応だからおそらく追加を依頼するだけでいいはず
うまくすればそれだけで作業が終わる可能性もある

773 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:35:09.37 ID:vtMigryt0.net]
>>757
コメントの書式があったって書式から逸脱する文字列を入れてパースエラー出す未来しか見えんわ。

774 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:46:06.22 ID:GXvqERSA0.net]
たぶんIEを前提とした目の前にあるコードを読み解いて作り直すより設計書用意したほうが早い

あるいはAIと二人三脚

775 名前:751 [2023/03/19(日) 19:54:47.83 ID:/GeuLHtL0.net]
みなさまありがとうございます
IEモードは1,2度調べて、いつまでこのモードがあるか分からないからと止めたのですが、
やはり時間稼ぎも考えるとこれしかなさそうです。
その間に根本的な解決策を探したいと思います。

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

とりあえず夏のボーナスまで引っ張って、無理そうだったら自分も転職します。
今動いているものをうっかり壊したら、止められなくなりそうなので慎重にがんばります。
ありがとうございました。

776 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:55:19.68 ID:xryn/wmcd.net]
>>757
怖いも何もパーサーがきっちり仕事してる証拠じゃないの?
コメントを書きたいって需要に対してはJSON5やJSONCって派生規格があるから
それらを検討するべき

777 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 20:23:01.76 ID:M92RK9ru0.net]
何が理由かは置いといて技術を含めた社員がごっそり半数も辞めてる状況だとその会社から賞与もまともには出ないだろう
Edgeへの移行時期としてもかなり遅れてるし有給消化しつつ転職活動に専念した方がいいね



778 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 20:33:33.23 ID:M92RK9ru0.net]
>>763
規格はあれど既存の環境に適用できるものではないのがな
JSON

779 名前:として扱う前にJSONCとしてコメント抜く前処理でも通すか []
[ここ壊れてます]

780 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 22:37:02.99 ID:SC8SOdGAd.net]
>>765
パーサーにケチつけてるよりはその方が建設的でしょうよ

781 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 03:23:46.29 ID:iV2jn8x9a.net]
>>740
VSCode の拡張機能では、

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

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

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

127.0.0.1:5500/test/index.html

>>753
そういうのは、Excel, VBA, Access とかじゃないの?
ベンチャー企業やプロのバックエンドは、Ruby on Rails だけど

782 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 04:02:42.23 ID:iV2jn8x9a.net]
>>745
Promise.all/allSettled とか?

783 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 19:47:12.99 ID:PTBUy+ct0.net]
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); // 受信したデータを表示
}
});

784 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 19:56:51.89 ID:hUotJVz90.net]
>>769
バックグラウンドからタブに送信するならchrome.tabs.sendMessageじゃないかな?

785 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 20:37:35.10 ID:PTBUy+ct0.net]
>>770
「タブ」というのは、「content_script.js」のことでしょうか?
だとすると「chrome.tabs.sendMessage(tabId: content_script.js, ngWords: data)のように書く感じでしょうか。

786 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 20:53:08.72 ID:mlA7fjwPM.net]
雑な方法としてはアクティブなタブに送ればいいんちゃう?

787 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:36:27.87 ID:hUotJVz90.net]
>>771
そうです。background から content_script に送信する場合はchrome.tabs.sndMessage だったと思いますよ
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sndMessage(tabs[0].id,{
ngWordsg:data
})
}})
というような感じで



788 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:40:33.20 ID:xjtq7KFo0.net]
最初にコンテンツスクリプト側から何かメッセージ送れば
バックグラウンド側のchrome.runtime.onmessage.addListenerのsender.tab.idでタブID取れるっしょ

789 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:49:32.93 ID:hUotJVz90.net]
それならtab.id必要なくてsendResponseで返せるんじゃないかな?

790 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:53:15.40 ID:PTBUy+ct0.net]
【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);
}
});

このように修正しましたが、上手く取得できないようです。

791 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:00:26.17 ID:hUotJVz90.net]
そもそもngWord.jsonの中身とれてますか?ローカルファイルならweb_accessible_resources書いてchrome.extension.getURLで取るんじゃないでしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:04:38.80 ID:xjtq7KFo0.net]
もしかしてスクリプト本当にそれだけなの?
だとしたらcontent_script.js実行される前にbackground.js終わってそう

793 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:24:56.04 ID:PTBUy+ct0.net]
申し訳ありません、私の知識不足で、よく分かりません。もう一度格闘して、改めて質問させて頂きます。ご教授下さり、ありがとうございます。

794 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 23:58:23.18 ID:hUotJVz90.net]
>>779
めっちゃ適当なこと言ってましたわ
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で読み込むが正解っぽいです

暇だったんで...

795 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 04:01:46.37 ID:rEPYZ+tza.net]
漏れはプロジェクトを作って、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 ) );
// => シャッフルされる

796 名前:デフォルトの名無しさん mailto:sage [2023/03/25(土) 14:02:02.15 ID:MQIuadNDM.net]
Next.jsでAPI Routesを使わないのは一般的でしょうか?

797 名前:デフォルトの名無しさん mailto:sage [2023/03/25(土) 18:19:14.13 ID:1/y/Yy4J0.net]
「一般的」のような主観的なものてはなく、客観的な定義が必要なのでは



798 名前:デフォルトの名無しさん (ワッチョイ eb5f-DdLV [14.8.104.32]) mailto:sage [2023/03/28(火) 20:12:53.97 ID:RtCr5Rz10.net]
プロミスって何?

あとfetchってasync、await使うのと.then使うのでどっちがいいの?

799 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 11:27:02.70 ID:NxiPtBQP0.net]
>>784
普通に調べれば出てきますよ
調べても調べてもよくわからんって質問をどうぞ

800 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 12:55:23.79 ID:y04hNuo/d.net]
消費者金融機関だよ

801 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 13:11:20.35 ID:6965UHWi0.net]
>>786
絶対に許せないのでxhrにしますね

802 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 02:32:51.01 ID:VdncSfH00.net]
メイン画面でボタンをクリックすると
別ウィンドウが起動し、ニュースサイトを表示するプログラムを組んでいます。

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

別ウィンドウでサイトが開かれている間は
1、2、3・・・とカウントし、閉じられると0を
メイン画面にjQueryでレンダリングしようとしています。

803 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 03:09:38.31 ID:29iJjOEC0.net]
>>788
window.closed はどう?

804 名前:デフォルトの名無しさん (ワッチョイ 1f8b-3uzD [211.5.157.105]) mailto:sage [2023/03/31(金) 11:32:39.06 ID:VdncSfH00.net]
>>789
ありがとうございます。
ちょっと試してみます。

805 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 22:40:30.72 ID:k6QZkjYI0.net]
先日(1週間くらい前)まで動いていたジャバスクリプトが動かなくなった。
ブラウザの不具合を疑って firefox、edge、さらに ie11 まで持ち出したらどれも動かない。
ウインドウズのセキュリティの締め上げかなと思って
スマホ(アンドロイド)で確認したがこっちも動いていない。
押し入れから昔のアイポッドタッチ(iOS9)を持ち出したが、やっぱ動かない。

こんなことってある?
アイポッドタッチなんてスクリプトが動いていたころとなに一つ変わっていないのに
なんでこの前は動いたのに今日は動かないんだ?
1年前のバックアップと差分比較してファイルが壊れていないことは確認した。
ちなみに自分がジャバスクリプトを作成するにあたって参考にしたスクリプトは
いまも普通に動いている。

806 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/24(月) 07:00:31.38 ID:z1nNn0o4H.net]
エラーも出て

807 名前:ネいのか?
まったく反応してないのならhtmlで読んでないんじゃね?
[]
[ここ壊れてます]



808 名前:デフォルトの名無しさん (スプッッ Sd73-8Xzj [1.75.215.168]) mailto:sage [2023/04/24(月) 08:37:00.30 ID:Z0B9bFh/d.net]
動いてた夢を見たんだ

809 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 09:21:53.70 ID:U4o0cUkO0.net]
>>791
ブラウザの不具合疑う前に
エラーログ出て無いか確認しろ
エラーログすら出てないならHTML側でちゃんと呼び出せてるか確認しろ

810 名前:デフォルトの名無しさん (ワッチョイ 2bbd-L85M [49.129.243.228]) mailto:sage [2023/04/24(月) 12:05:07.84 ID:VtgoOt7B0.net]
https の証明書が古い

811 名前:デフォルトの名無しさん (ワッチョイ 6910-bhMa [180.59.92.6]) mailto:sage [2023/04/24(月) 13:08:00.47 ID:MpRTlb310.net]
>>794
エラーログを見たらあっさり解決しました。
夜更けに一人で大騒ぎしてごめんなさい orz

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

原因はHTMLの削除した部分にスクリプトで動かす部分があって
動かすべきものがないから次の処理に行けずエラーになっていました。
スクリプトばかり見ていてHTMLは盲点でした・・・。

812 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 13:15:26.56 ID:3ESYAe520.net]
開発者ツール超便利だよね

813 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 13:22:29.25 ID:sSUQNn8cr.net]
まあそういうオチだろうなとは

アドバイスを求めるならhtmlを修正したことは伝えるようにしてほしいところ

814 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/25(火) 18:51:33.50 ID:/Hd1NuvtH.net]
解決したようでなによりなにより

815 名前:デフォルトの名無しさん (ワッチョイ eb7d-RykB [1.33.235.4]) mailto:sage [2023/04/26(水) 19:26:29.99 ID:lfd6T/fN0.net]
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になってしいます
どうすれば阿部さんの舞台出演を取得できますか?

816 名前:デフォルトの名無しさん (ワッチョイ d961-99Et [220.107.169.163]) mailto:sage [2023/04/26(水) 20:39:08.46 ID:UfBGheQ30.net]
>>800
.todayなんてclass付いてないぞい

817 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/26(水) 22:57:11.72 ID:Q5IzIMlUH.net]
それってJS?



818 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/26(水) 23:08:17.75 ID:Q5IzIMlUH.net]
そもそもnullを取得してるってことは所望のオブジェクトが取得できていないってことよん?

819 名前:デフォルトの名無しさん (エムゾネ FF33-Nhf9 [49.106.174.76]) mailto:sage [2023/04/27(木) 13:47:05.09 ID:jYECG79eF.net]
>>800
それ、ChromeのDevツールとかで、Elementの検索にセレクター入力してちゃんとヒットする?

820 名前:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156]) mailto:sage [2023/04/29(土) 00:34:06.33 ID:FZLDUbkY0.net]
['apple', 'パイナップル', 'pineapple (パイナップル)', 'りんご', 'pineapple']

['apple', 'パイナップル | pineapple', 'りんご']
に別名ふくめて重複削除して整形したいんですがスマートな方法ないですか

821 名前:デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23]) mailto:sage [2023/04/29(土) 01:41:53.10 ID:bskwYySl0.net]
>>805
パイナップルの表記方法はどういう仕様なの?
スマートじゃない方法で実装できてるならそれを貼ってみたら?

822 名前:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156]) mailto:sage [2023/04/29(土) 01:58:50.79 ID:FZLDUbkY0.net]
>>806
別名がカッコで後ろに付く場合があったりなかったりをまとめたいんです
今は文字列に取り出して正規表現で割ってまた戻して~って頭悪くやってます

823 名前:デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23]) mailto:sage [2023/04/29(土) 02:08:42.66 ID:bskwYySl0.net]
>>807
元の配列には、同じ値が複数、たとえば 'りんご' が何個も入ることがある?

ただ何にしても、現状がどの程度頭悪いのか分からんけどそこそこ泥臭くなるんじゃないかなぁ

824 名前:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156]) mailto:sage [2023/04/29(土) 02:20:05.97 ID:FZLDUbkY0.net]
>>808
あります

825 名前:デフォルトの名無しさん mailto:sage [2023/04/29(土) 05:52:34.96 ID:q0/EY4lO0.net]
>>809
ちょっと面白そうだったので作ってみたけど、あんまりいい出来にはならなかった。
わざわざ見せるようなものじゃないんだけど、一応貼っとく。
アプローチとしては、単品アイテムまたは別名で括られた同一アイテム毎に配列実体を持たせて、重複排除しながらその実体に放り込んで最後に文字列化する。
複数の別名定義で 2つ以上の名前を括ったり、名前の登場順で連結するようにした。


https://i.imgur.com/tY8Yg78.gif

826 名前:デフォルトの名無しさん (ワッチョイ 1bbd-MgCS [119.240.43.251]) mailto:sage [2023/04/29(土) 06:04:20.63 ID:ZqMIj65v0.net]
あわわ、26-32行目は整理できた

const new-content = [];
alias_ref[item] = alias_content.length;

827 名前:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105]) mailto:sage [2023/04/29(土) 20:12:37.30 ID:wJzxOo1h0.net]
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);
}
}



828 名前:502 (ワッチョイ d501-nY3o [36.240.121.112]) mailto:sage [2023/04/29(土) 20:34:34.21 ID:ulzy/WI80.net]
>>812
使い方間違っとるな
そういうときはまずリファレンスを読め
https://developer.mozilla.org/ja/docs/Web/API/setInterval

829 名前:デフォルトの名無しさん (ブーイモ MM49-3F9Y [202.214.125.164]) mailto:sage [2023/04/29(土) 20:36:30.58 ID:WiY5v75xM.net]
clearIntervalの引数に入れるのはsetIntervalから帰ってくるnumber
型エラーでハマるのアホらしいしts使うか無理なら//@ts-checkをファイルの先頭に書いとけ

830 名前:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105]) mailto:sage [2023/04/29(土) 20:54:08.29 ID:wJzxOo1h0.net]
>>814
わかりません。。。どう書けば良いでしょうか?

831 名前:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105]) mailto:sage [2023/04/30(日) 00:03:19.23 ID:x92s4/Ng0.net]
>>814
できました!

832 名前:デフォルトの名無しさん mailto:sage [2023/05/07(日) 14:48:48.64 ID:NS1NVPz40.net]
>>812
こういうのはそのまんま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`に渡すようにしました。これにより、タイマーが正常に停止するはずです。

833 名前:デフォルトの名無しさん mailto:sage [2023/05/08(月) 05:12:47.92 ID:AmPaXWnYM.net]
>>817
ここいらんやんけ…

834 名前:デフォルトの名無しさん (ワッチョイ 52bd-F1Es [133.209.119.64]) mailto:sage [2023/05/08(月) 09:31:16.79 ID:nWGvwrRY0.net]
>>817
setIntetval してるスコープの timerId を clearInterval するスコープから参照できる?

835 名前:デフォルトの名無しさん (ワッチョイ 5b7c-01SL [122.212.18.110]) mailto:sage [2023/05/08(月) 19:39:25.41 ID:0kSPeCjv0.net]
エラーが出たらまた聞けば直してくれる
あとほ聞き方の問題だね

836 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/08(月) 22:29:23.94 ID:BI0XZhvO0.net]
>>817
え?そんな事までChatGPTできるの???すごくね??
どんなシステムになってんだろ。

837 名前:デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113]) mailto:sage [2023/05/08(月) 23:30:02.71 ID:ieW4qdsxM.net]
条件によってスクリプトを途中で止めさせたいんだけど三項演算子じゃreturnするしないを分けるのは無理?
if exitFlag return false



838 名前:デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45]) mailto:sage [2023/05/08(月) 23:46:59.68 ID:PuDhFqQc0.net]
>>822
多分無理だと思うけど、なんで if じゃいけないの?

839 名前:デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113]) mailto:sage [2023/05/08(月) 23:51:00.55 ID:ieW4qdsxM.net]
>>823
三項演算子の中で使ってるからなんか気持ち悪い

840 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 00:52:34.88 ID:eLWpr74i0.net]
f = (flag) => flag ? false : true;

console.log(f(true));
console.log(f(false));

841 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 00:52:45.73 ID:RQydgiqHd.net]
>>821
ChatGPTをプログラム用途で使ったこと無いなら一度つかってみると良いよ。
ググる手間がかなり少なくなる
もちろん、間違い返答の可能性もあるからそこら辺はうまく扱う必要があるけどね。
あとGitHub Copilotはもっとヤバいよ。プログラマーなら一度は使うべき

842 名前:デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45]) mailto:sage [2023/05/09(火) 01:40:34.46 ID:r9kkpYgp0.net]
OSS のソース読むときにも ChatGPT は便利だよ。
内部関数名とか聞いても何するものか教えてくれる。
この間 OpenSSL のソース読んでて助けられた。
暗号のコードなんて読んでもよくわからないしw

843 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/09(火) 07:51:33.95 ID:y5YEea020.net]
>>826
GitHub Copilot
そんなのもあるんですね。

844 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/09(火) 10:14:34.85 ID:y5YEea020.net]
ChatGPTでsqlでハマった点を質問してみたんだけど
ヤバイな。一瞬で分かり易く解説してくれた。

どんなプログラムを組んでるんだ。凄すぎる。

845 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/09(火) 14:59:12.62 ID:y5YEea020.net]
chatGPTえぐいんですけど。

846 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 17:50:03.04 ID:An6NATd90.net]
javascriptでctrl+Wでブラウザタブが落ちるのを無効にする方法はありますか?

847 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 06:51:40.61 ID:tIBpGAYNH.net]
それはJSの設定?Winの設定?



848 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 20:39:57.19 ID:85f2/18wa.net]
最近勉強してvarの何でもありな傍若無人さに気が付いた
例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入されるからエラーにならず混乱の素、
ブロックスコープ内で使うとその生成を無視するから混乱の素
なのでプロなのにES6以降の環境で未だにvar使ってる人って新人にも劣ると思った
ES6以降でEcmaから非推奨と言われてるのに未だにvar使わなければいけない理由ってある?
今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?

849 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 20:57:14.94 ID:PscArQu/0.net]
キモ

850 名前:デフォルトの名無しさん [2023/05/23(火) 22:34:28.22 ID:y7+F4Fx6M.net]
>>833
>例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入される
これいろいろ間違ってる

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

>今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?
良いと思うけど君もそっち側に片足突っ込んでるから気をつけて

851 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 10:07:05.19 ID:qaFXRxUx0.net]
スコープの基本だね
レキシカルなのかパラメーターなのか
DOMをいじるとみんな参照になるし変数大切ね

852 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 10:45:52.94 ID:R9+x876F0.net]
匿名イベントを削除する方法って無い?
ググりまくっても全く見当たらんから仕方ないのでElement.prototype.addEventListenerフックしてフィルタしてるんだけど非常に遠回りな事してる気がしてならない

853 名前:デフォルトの名無しさん [2023/05/24(水) 11:04:01.62 ID:CrZEaXEyM.net]
>>837
イベントリスナーへの参照を保持してないと
removeEventListenerは使えない
あとはAbortSignalを使う方法がある
MDNのaddEventListener辺りに全部書いてる

854 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 06:53:07.70 ID:djzVD0JU0.net]
くそ素人で申し訳ない
ブックマークレットでCookieを編集する時に有効期限も同時に編集したいのだけれど
どうしたらいいのだろうか

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

って感じなのだけれど1日くらいしたらすぐ消えてしまう

855 名前:デフォルトの名無しさん (スップ Sd5a-9ehv [49.96.239.55]) mailto:sage [2023/05/25(木) 11:10:49.64 ID:vvIauVZOd.net]
どっかのRFCに載ってるはず

856 名前:デフォルトの名無しさん mailto:sage [2023/05/27(土) 14:04:26.57 ID:MkhutBump.net]
>>839

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

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から触れないこともあるから、
その辺は自己責任でな。

857 名前:デフォルトの名無しさん [2023/05/28(日) 15:24:03.43 ID:n14WZ+eY0.net]
documentのinnerHTMLやtextContentの書き換えをしたとき、ブラウザのDOMの計算(?)や再描画(?)は変更があった部分のみか、ページ全体で行われるののどちらでしょうか?



858 名前:デフォルトの名無しさん mailto:sage [2023/05/28(日) 23:28:10.35 ID:8mVMxOyu0.net]
>>841
ありがとうまじ助かった

859 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 06:35:55.98 ID:eVNfBOW80.net]
CookieってPHPみたいなサーバーサイドから設定するのとJSから設定するのどっちが良いんかね?

同僚から受け継いだシステムはPHPでやってたが

860 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 07:03:02.74 ID:nuFuFtG60.net]
HttpOnlyの存在考えるとサーバーサイド一択じゃね?

861 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 08:05:53.64 ID:7kZHwtIo0.net]
ステートレスな通信を補助するものだから、処理の起点側でつけると良い
ただ、一般的にはサーバサイドになると思うよ

862 名前:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]]) mailto:sage [2023/06/19(月) 13:57:37.11 ID:iYcFBKEZ0.net]
if ((a == b && c != d) || (e == f && g != h)){
alert ("正解");
}

こういうコードの書き方は出来ますか?
二重括弧の使い方は正しいでしょうか?

863 名前:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]]) mailto:sage [2023/06/19(月) 14:42:31.77 ID:iYcFBKEZ0.net]
ちょっと調べてたんですが、こうでしょうか?

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

「a == bとc != dの条件が両方ともtrue」か「e == fとg != hの条件が両方ともtrue」なら"正解"と警告を表示したいのですが…
三重括弧なんてあります?

864 名前:デフォルトの名無しさん (ワッチョイ ff7b-0fSR [153.185.178.93]) mailto:sage [2023/06/19(月) 14:49:42.42 ID:G503Uwj70.net]
>>847で大丈夫やろ。
なんで試さんの?

865 名前:デフォルトの名無しさん (ワッチョイ ff61-gPkm [153.171.212.140]) mailto:sage [2023/06/19(月) 14:54:44.66 ID:Glrukv1f0.net]
演算子優先度の理解が追い付いて無いなら好きなだけ括弧使えばいい

866 名前:デフォルトの名無しさん (オッペケ Sr33-vDmN [126.157.241.160]) mailto:sage [2023/06/19(月) 14:58:41.52 ID:3rS08iXar.net]
何重カッコでもいけるけど演算子やカッコが増えると可読性が落ちて条件式を読み解くのが辛くなる
コードは長くなっても条件式をいくつかに分割して変数に入れた方が読みやすくなるよ

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

867 名前:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]]) mailto:sage [2023/06/19(月) 15:02:17.21 ID:iYcFBKEZ0.net]
皆さん、ありがとうございます
変数に入れるのがいいですね
やってみます



868 名前:デフォルトの名無しさん (アウアウウー Sa23-QBJ2 [106.130.41.210]) mailto:sage [2023/06/19(月) 23:22:27.82 ID:xNSaH23va.net]
イテレータ、Map、Setがややこしくて😩なんだけど実務で使う?
一応理解したけどカスタムイテレータ作ってそれをオブジェクトに追加してfor...ofなんて無理だな
プログラマーならバリバリ使うのかな?それとも知識として仕組み知っとくだけ?

869 名前:デフォルトの名無しさん (オッペケ Sr33-vDmN [126.205.219.139]) mailto:sage [2023/06/20(火) 13:18:59.52 ID:es0ShzRur.net]
Mapはキーと値の組み合わせのコレクション
Setは重複のない値のコレクション
どちらも実務で出番はある
イテレータは中身を1個ずつ取り出せるものの総称

カスタムイテレータに関してはmdnもおすすめのジェネレータ関数を覚えておけばいいかと
バリバリではないにしてもここぞというときに役に立つ

870 名前:デフォルトの名無しさん (ワッチョイ ffda-ZcId [223.216.178.53]) mailto:sage [2023/06/21(水) 18:20:14.61 ID:He5qrAkL0.net]
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>
・・・

871 名前:デフォルトの名無しさん (ワッチョイ 7d4b-Hjce [110.2.215.28 [上級国民]]) mailto:sage [2023/06/26(月) 12:08:05.73 ID:QXVTwCFE0.net]
変数って定義する前はundefinedが入ってるんでしょうか?

872 名前:デフォルトの名無しさん (ワッチョイ 1501-WolJ [60.109.218.97]) mailto:sage [2023/06/26(月) 20:02:32.96 ID:nZR6QJ/D0.net]
>>856
変数定義前は変数がない
変数定義時に値を代入しなければundefinedで初期化される

873 名前:デフォルトの名無しさん (ワッチョイ 7d4b-Hjce [110.2.215.28 [上級国民]]) mailto:sage [2023/06/26(月) 21:13:06.03 ID:QXVTwCFE0.net]
>>857
ありがとうございます。

874 名前:デフォルトの名無しさん (アウアウウー Sab9-cUyJ [106.130.49.224]) mailto:sage [2023/06/29(木) 21:35:42.23 ID:I06beN9ya.net]
Promiseメソッドなんなの独自ルール多すぎでしょ。もはや別言語に感じる。これよく使用される?

875 名前:デフォルトの名無しさん (ワッチョイ 1a00-KjOb [221.118.182.138 [上級国民]]) mailto:sage [2023/06/29(木) 22:34:31.96 ID:mZg1DRHQ0.net]
Promise周りは最初は取っつきにくいけど、凄く使いやすく作られてるし、物凄くよく使うよ。

876 名前:デフォルトの名無しさん (ワッチョイ 1d5f-momQ [14.8.104.32]) mailto:sage [2023/06/29(木) 23:09:38.14 ID:OBXN/r9b0.net]
async awaitでしかfetchをかけない自分と、thenでしかfetchを書けない前任者のせめぎあい

xhrはなぜか知らんがもう時代じゃないらしいし

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

以上のやり方で、動作はしているようですが、なんか良くないやり方の様な気もしています。
上記のやり方は一般的な方法でしょうか。何かデメリットはありますでしょうか。



878 名前:デフォルトの名無しさん (ワッチョイ 7691-pVx5 [153.223.3.108]) mailto:sage [2023/06/30(金) 10:55:58.80 ID:qu6f9mWQ0.net]
クラスAたBの同名の変数と関数をBaseクラスにしてAとBに継承すれば同名の変数関数を持ってることが保証できてうっかり名前変えてしまったとかのバグ防げるんじゃない?インターフェースみたいに
それから引数じゃなくてbind使えば関数C内でthisを自然な感じで使えるとか

879 名前:デフォルトの名無しさん (アウアウウー Sab9-Br7/ [106.128.39.112]) [2023/06/30(金) 13:05:23.88 ID:2BLecjKja.net]
有り難うございます。
デメリットとしては後でA~Cをいじった時にバグの温床になりやすいこと、くらいの認識で良いんですかね。
基底クラスを継承するかたちにすることも考えたいと思います。
確かにbind/callを使った方が、動作は同じでよりシンプルな気がしてきました。

880 名前:デフォルトの名無しさん (アウアウウー Sa47-NFBa [106.146.70.58]) mailto:sage [2023/07/01(土) 04:46:01.59 ID:nMEzWNF9a.net]
is_a, has_a

継承か包含か、古典的な質問

881 名前:デフォルトの名無しさん (アウアウウー Sa47-ctHD [106.155.8.134]) mailto:sage [2023/07/01(土) 19:38:17.78 ID:hPyQUT1Ya.net]
javascript:
if((result = prompt("input formula string","")) == "") alert("no formula string"); else alert(eval(result));

882 名前:デフォルトの名無しさん (ワッチョイ 5a00-PRVu [221.118.182.138 [上級国民]]) mailto:sage [2023/07/01(土) 22:48:30.73 ID:WfKHfAvE0.net]
なんつー邪悪なコード

883 名前:デフォルトの名無しさん (ワッチョイ 5b4b-nuDV [110.2.215.28 [上級国民]]) mailto:sage [2023/07/05(水) 21:30:37.79 ID:74hfvDDi0.net]
(function(){
 ~
})();

こういう書き方をしてるコードがあったんですけど、これは実行も含めた関数の書き方でしょうか?
最初の(と最後の)()の意味がわかりません

884 名前:デフォルトの名無しさん (ワッチョイ e301-cWjJ [60.109.218.97]) mailto:sage [2023/07/06(木) 00:31:51.01 ID:IKcM4kIN0.net]
>>868
即時関数
()は関数宣言ではなく、関数式として実行するため

885 名前:デフォルトの名無しさん (ワッチョイ 5b4b-nuDV [110.2.215.28 [上級国民]]) mailto:sage [2023/07/06(木) 01:40:00.57 ID:vc4JCbkY0.net]
>>869
ありがとうございます
よくわかりました

886 名前:デフォルトの名無しさん (ワッチョイ 7679-p0MK [175.105.104.184]) mailto:sage [2023/07/07(金) 13:17:53.80 ID:tybFBPle0.net]
なるべく自分で考えたキモイ名前は晒したくないからな?

887 名前:デフォルトの名無しさん (ワッチョイ a15f-eaRz [14.13.136.34]) [2023/07/08(土) 18:01:12.76 ID:0tWDp4eO0.net]
今ホームページを制作しているのですが教えて頂きたいです。
下記内容のコードの書き方がわかりません。

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

初心者すぎるので例としてコードを作って頂ければ見ながら調整したく思っています。
どなたかお教え頂けませんでしょうか。



888 名前:デフォルトの名無しさん (スプッッ Sd73-mu37 [1.75.238.73]) mailto:sage [2023/07/08(土) 20:53:43.61 ID:S1M2Nutrd.net]
>>872
それはもう質問ではない

889 名前:デフォルトの名無しさん (ワッチョイ a15f-vDrU [14.8.104.32]) mailto:sage [2023/07/08(土) 21:24:42.99 ID:DhofVjWT0.net]
ChatGPTに聴け

890 名前:デフォルトの名無しさん (ワッチョイ d101-Ud/M [60.105.201.125]) mailto:sage [2023/07/08(土) 23:32:58.73 ID:EFUbRXYX0.net]
>>872
質問にするなら>>1-3を読もう

891 名前:デフォルトの名無しさん (アウアウウー Sa55-knyK [106.146.116.188]) mailto:sage [2023/07/09(日) 01:18:13.12 ID:YP8p84HTa.net]
よくある、スライダーでしょ?
jQuery でもあるでしょ

Bootstrap のCarousel (カルーセル)
https://getbootstrap.jp/docs/5.0/components/carousel/

892 名前:デフォルトの名無しさん (ワッチョイ a15f-eaRz [14.13.136.34]) [2023/07/09(日) 01:44:11.98 ID://wYUerL0.net]
なんか色々ルールがあるんですね
諦めて勉強します
ありがとうございます

893 名前:874 (アウアウウー Sa55-knyK [106.146.114.68]) mailto:sage [2023/07/09(日) 19:52:50.68 ID:gl6FDMI+a.net]
jQuery slider
Bootstrap Carousel などで検索すれば、一杯ある

一杯あるけど、難しいから自作する人はいない。
皆、jQueryUI やBootstrap のCarousel などの既製品を使う

894 名前:デフォルトの名無しさん (ワッチョイ 9300-Yt8B [221.118.182.138 [上級国民]]) mailto:sage [2023/07/09(日) 21:16:30.84 ID:VzLiONyC0.net]
え、そんな難しい要素無いよ

895 名前:デフォルトの名無しさん (スップ Sd9f-asTj [49.97.111.88]) mailto:sage [2023/07/17(月) 23:23:58.12 ID:XzfBWjood.net]
フォームフィールドが定義されたPDFファイルがすでにあって、ブラウザ上のJavascriptでWebフォームに入力されたテキストをPDF側のフィールドに反映させてダウンロードすることができるpdfライブラリってあまりすか?

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

pdfmake等いくつかライブラリは見たのですが、白紙ベースでPDF作る例しか見あたらなくて(テンプレートは画像背景で切り替え等)、直接PDFフォームを扱えるものは無いかなと。

896 名前:デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.137.152]) mailto:sage [2023/07/29(土) 00:54:23.66 ID:s0ko+FdFa.net]
プログラミング全く知らない状態からやっとJavaScript一通り学びました
かなり難しかったです。でもJavaScriptは比較的簡単な言語なんですよね?
ES6以降のJavaScriptでもやっぱり簡単なんですか?
それとES6で大規模アップデート合った時は絶望しましたか?
勉強していて苦しんだのがスコープ、this、反復処理の背景(iteratorの動き、yieldは何をしてるか)、非同期処理(Promise、then、async)、その他様々なメソッド、静的メソッド、、、
これら全てES6から導入されましたよね?絶望しませんでしたか?
例えば私がもしES5までのJavaScriptに慣れ親しんでいてES6のアップデートに触れたら絶対絶望してました。概要見ても「?????」となってたはずです
プログラミングに向いてる人はこんな大規模アップデートがあるとワクワクする人なのでしょうか?
絶望せず、「何ができるようになったんだろう!凄い!こんな事やあんな事が出来る!」みたいな人も居ましたか?

897 名前:デフォルトの名無しさん (ワッチョイ c200-pYoK [221.118.182.138 [上級国民]]) mailto:sage [2023/07/29(土) 08:26:35.15 ID:wB1gRUiQ0.net]
ES5までは貧弱だったのでそりゃもう大歓喜よ。
それと現代のJavaScript(を使いこなすの)はもはや簡単な部類じゃないように思う。



898 名前:デフォルトの名無しさん (オッペケ Sr91-xmUq [126.254.133.95]) mailto:sage [2023/07/29(土) 09:45:27.72 ID:ZQ+RMRi1r.net]
苦しみとか絶望とか>>881は言語の習得を学校の勉強と同じようなものとしか捉えてないフシがある
日本史の勉強範囲が大政奉還までだと思ったら第二次大戦までだった!みたいな感覚

新しく覚えたことは実際のプログラミングで活かせるんだという意識が全く感じられない

899 名前:デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.201.25]) mailto:sage [2023/07/29(土) 14:21:53.16 ID:LQ1ElLyya.net]
>>882
>>883
とにかく理解するのに必死で苦しみました。jJavaScriptが簡単とは全く思いませんでした

900 名前:デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.201.25]) mailto:sage [2023/07/29(土) 14:27:58.50 ID:LQ1ElLyya.net]
try,catch,finally文の存在異議が分からなかったけど、今さっき急にasync/awaitのエラーハンドリングに向いてるのに気が付きました
つまりthen,catchのPromiseチェーンをより楽に書けるのに今さっき気が付きました。こんな感じで上手くいかないですね

901 名前:デフォルトの名無しさん (ワッチョイ c200-pYoK [221.118.182.138 [上級国民]]) mailto:sage [2023/07/29(土) 15:03:53.70 ID:wB1gRUiQ0.net]
.then().catch()の方が綺麗に書けて(副作用的な意味で)好きだなぁ

902 名前:デフォルトの名無しさん (ワッチョイ c6bd-g4Mn [119.240.43.146]) mailto:sage [2023/07/30(日) 02:24:04.00 ID:oecUblNe0.net]
>>881
言語として簡単かっていうとどうだろうね。
Webブラウザがあれば動かせる上にデバッグ環境まで付いてるから、誰でもすぐ始められるし、作ったものをどこででも動かしてもらえるという手軽さはあると思うけど。

903 名前:デフォルトの名無しさん (ワッチョイ 095f-kJnY [14.8.104.32]) mailto:sage [2023/07/30(日) 14:24:24.68 ID:av5XIWe10.net]
自分はプロトタイプ型オブジェクト指向から入ったから気にならないけどクラス型でプログラム書いてた人は違和感凄いんだろうな

あとクロスブラウザ対応しなきゃいけなかった人達もJSはしんどかったんだろうなと想像

904 名前:デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]]) mailto:sage [2023/08/04(金) 01:16:43.56 ID:LzfYm8xL0.net]
rd41 = "";
alert (rd41);
これで「rd41は未定義です」ってエラーは出ますか?

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

実際のコードはalertでは無いのですが、rd41に無を代入して何も表示させたくないのです
rd41 = null;
だと、nullと表示されてしまいます

905 名前:デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]]) mailto:sage [2023/08/04(金) 01:36:14.69 ID:LzfYm8xL0.net]
chatGPTに質問したら答えが返ってきた
https://i.imgur.com/5NbJI6w.jpg

906 名前:デフォルトの名無しさん (ワッチョイ febd-FWk2 [49.129.241.111]) mailto:sage [2023/08/04(金) 09:00:08.06 ID:2wk44tWe0.net]
>>889
delete を調べてみるとどうだろう。
やりたいことによってはブロックスコープで足りるかも。
個人的にはブロックスコープを活用して、変数を小まめに狭い範囲に閉じ込める書き方をおすすめしたい。

907 名前:デフォルトの名無しさん (ワッチョイ a101-CknR [60.89.4.138]) mailto:sage [2023/08/04(金) 09:14:51.09 ID:TEvOuQNU0.net]
>>889
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



908 名前:デフォルトの名無しさん (オッペケ Sr91-q/g9 [126.254.212.243]) mailto:sage [2023/08/04(金) 09:37:58.66 ID:EZ9l15Zsr.net]
>>889
>rd41 = "";
>alert (rd41);
>これで「rd41は未定義です」ってエラーは出ますか?
なんで試してみないの?

909 名前:デフォルトの名無しさん [2023/08/11(金) 14:55:53.43 ID:+rPtXLG2m]
JÅLだのAΝАた゛

910 名前:のクソアヰ又ト゛ゥだの洒飲んて゛業務してるクサヰマ一クだのコ゛キブリフライヤ‐だのジェットクサ‐だのテ囗リストに
天下り賄賂癒着して都心まて゛数珠つなぎて゛騒音に温室効果カ゛スにコ囗ナにとまき散らさせて,気候変動させて海水温上昇させて.
土砂崩れに洪水、暴風,猛暑.大雪にと災害連發させて地球破壞して、静音が生命線の知的産業に威カ業務妨害して
知的産業を根絶やしにして.個人情報漏洩に不正送金にシステム障害まみれのポンコツ後進国に陥れた自民公明た゛か゛,
どうやら騒音は,知的産業のみならす゛,音楽や執筆などの創作活動にも甚大な影響を及ほ゛していることか゛明らかになってきたな
技術全敗で海外に売れるものはア二メくらいとか言われていたのか゛、それすら死に体になって曰本終了にも程があるだろ
日銀に金刷らせて賄賂癒着してる資本家階級と大企業を高額総ナマポ化して.コ゛ミ企業た゛らけをゴミ企業10О%に陥れたわけだが
民主主義化しようと立ち上がった山上大先生と,それを國葬によって消し去り腐敗國家を存続させんとする自民公明の攻防キモ杉た゛ろ

創価学会員は,何百万人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まて゛出てる世界最悪の殺人腐敗組織公明党を
池田センセ一が口をきけて容認するとか本氣で思ってるとしたら侮辱にもほどがあるぞ!
httPs://i、imgur.соm/hnli1ga.jpeg
[]
[ここ壊れてます]

911 名前:デフォルトの名無しさん (ワッチョイ f233-yhDR [101.141.60.18]) mailto:sage [2023/08/14(月) 23:07:53.97 ID:QNJSoVjn0.net]
時報みたいなのを作成中でそのhtmlのページさえ開いておけば
9時、12時、18時(プリセットとかは無く固定)に特定のwavサウンドファイルがaudioElement.play() で再生される用にしています
(タブが非アクティブだとなんか動かない時があったのでwindow.openで表示させてます)
chromeのポリシーみたいなのでユーザーが明示的なアクションをしないと音声の自動再生はされないみたいで
それの良い回避策ってありますか?
実用性考えると携帯のアラームが百倍使いやすいけど
自分用にチープなのを作って遊んでるんだけど解決策が思いつかなくて・・・

912 名前:デフォルトの名無しさん (ワッチョイ 1f4b-uBRt [110.2.215.28 [上級国民]]) mailto:sage [2023/08/15(火) 01:53:58.77 ID:Efj8IW440.net]
>>895
そういう質問はchatGTP得意や
聞いてみれば

913 名前:デフォルトの名無しさん (ワッチョイ 7e63-SF+K [153.218.139.115]) [2023/08/21(月) 00:13:21.70 ID:v7lFaH3H0.net]
【環境】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'),'');
}
})


以上ご指導よろしくおねがします

914 名前:デフォルトの名無しさん (スッップ Sdca-jTH6 [49.98.168.137]) mailto:sage [2023/08/21(月) 11:40:28.26 ID:cB09UaOod.net]
>>897
まずconsole.log()や開発者ツールを使って自分の書いたコードがどこまで想定通りに動いてるか確認してみよう

915 名前:デフォルトの名無しさん (ワッチョイ 534b-ubuk [110.2.215.28 [上級国民]]) mailto:sage [2023/08/21(月) 11:51:22.81 ID:7Ts4WfMN0.net]
>>897
コードを見る限り、置換を行うためのコードは一見正しく見えますが、複数の潜在的な問題が考えられます。まず、コード内のいくつかのポイントをチェックしてみましょう。

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

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

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

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

これらのチェックポイントを確認した上で、コードを修正するか、デバッグすることをお勧めします。また、具体的なサンプルHTMLコードや置換の例を提供していただければ、より具体的なアドバイスを提供できるかもしれません。

916 名前:デフォルトの名無しさん (スッップ Sdca-jTH6 [49.98.168.137]) mailto:sage [2023/08/21(月) 12:25:10.86 ID:cB09UaOod.net]
このワッチョイ **4bは質問スレにchatGPTの回答貼るだけのボットみたいなもんだからスルー推奨
NG入れといてもいい

917 名前:デフォルトの名無しさん (アウアウウー Sa7f-7wIC [106.133.165.90]) mailto:sage [2023/08/22(火) 23:04:06.56 ID:rPfWctd8a.net]
2か所とも、clas="tx-date" になっている!

class でしょ



918 名前:898 (アウアウウー Sa7f-7wIC [106.133.165.90]) mailto:sage [2023/08/22(火) 23:12:31.83 ID:rPfWctd8a.net]
>const ItemDate = document.getElementsByClassName("x-date");

x-date は、tx-date じゃないの?

919 名前:898 (アウアウウー Sa7f-7wIC [106.133.165.90]) mailto:sage [2023/08/23(水) 00:10:28.94 ID:B78POXf5a.net]
一旦、要素 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

920 名前:デフォルトの名無しさん (スプッッ Sd6a-jTH6 [1.75.209.193]) mailto:sage [2023/08/23(水) 10:39:07.30 ID:oZ78uDd8d.net]
>>903
それはもう質問に答えたというよりデバッグと修正を代行したのであってこのスレの主旨には合わない
おそらく他の人もそういう認識だからこの件に口を出さないんだと思うよ

921 名前:898 (アウアウウー Sa7f-7wIC [106.146.101.215]) mailto:sage [2023/08/23(水) 19:53:27.23 ID:ktllvUDta.net]
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);
}
});

} );

922 名前:デフォルトの名無しさん (アウアウエー Sa22-NwC7 [111.239.174.98]) [2023/08/25(金) 21:08:52.47 ID:+90wXQAMa.net]
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"]
);

923 名前:デフォルトの名無しさん (アウアウウー Sa47-rTQJ [106.146.72.134]) mailto:sage [2023/08/26(土) 04:11:22.52 ID:wsJDYSi/a.net]
「chrome.webRequest.onBeforeRequest」で検索!

webRequest
https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest

924 名前:デフォルトの名無しさん (アウアウエー Sa5f-/No0 [111.239.174.98]) mailto:sage [2023/08/26(土) 12:48:58.33 ID:mvAl1l0Ba.net]
そこ見てどうすればいいのか分からないからここに来た・・・

925 名前:デフォルトの名無しさん (スッップ Sd9f-oH/7 [49.98.169.249]) mailto:sage [2023/08/26(土) 17:41:19.65 ID:/LQp1jGld.net]
return detail.documentUrl

とか?

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

それなら、リダイレクト止めればいいじゃんって思うんだけど
return {cancel: true};
のようにするとナビゲーション自体が止まってアクセスできなくなっちゃう

927 名前:デフォルトの名無しさん (ワッチョイ cf8a-cMf3 [153.207.237.45]) mailto:sage [2023/08/26(土) 19:46:44.48 ID:HE/rWC1F0.net]
空のオブジェクト返せばいいんじゃないの?

こんなの見て参考にしては?
https://gitlab.com/ClearURLs/ClearUrls/-/blob/master/clearurls.js?ref_type=heads



928 名前:デフォルトの名無しさん (ワッチョイ e361-NWkk [180.15.228.252]) mailto:sage [2023/08/26(土) 21:15:33.19 ID:AeqeuiS+0.net]
無限ループしてるって事は条件分岐失敗してるんじゃないの?
console.logデバッグでもしてみたら?

929 名前:デフォルトの名無しさん (オッペケ Sre7-bab6 [126.212.162.196]) mailto:sage [2023/08/27(日) 12:33:38.16 ID:QiCv/PxZr.net]
>>906
リダイレクト後のurlに

930 名前:?foo=barとかクエリ文字列付けてみるとかは?
これでフィルタにかからなくなるみたい
もちろんこれでサーバが誤動作起こさないのが前提だけど
[]
[ここ壊れてます]

931 名前:デフォルトの名無しさん (ワッチョイ cf63-n242 [153.218.137.10]) [2023/09/03(日) 21:37:03.60 ID:0BSqvC2P0.net]
サイト内にフォームが設置してあるページが複数あります
お問い合わせ、新規登録、ログイン、パスワードリマインド、などです
一時的に 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">

もっとスマートにお問い合わせページだけ入力できる
ヒントをお願いできませんでしょうか?

932 名前:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210]) mailto:sage [2023/09/03(日) 21:48:21.38 ID:qR1Ry2o90.net]
【環境】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)

933 名前:デフォルトの名無しさん (ワッチョイ 8361-yzHn [180.15.227.160]) mailto:sage [2023/09/03(日) 23:01:09.12 ID:zsKKxMoe0.net]
>>915
console.log(localStorage && (localStorage.getItem('deck')));
の結果は本当にundefined?、undefinedの上の行に何か表示されてるよね?

934 名前:デフォルトの名無しさん (ブーイモ MM7f-sgzH [133.159.150.82]) mailto:sage [2023/09/03(日) 23:17:01.93 ID:II4MkDPZM.net]
>>914
下記セレクタでイケるはず(問い合わせページ以外でinput要素とbutton要素を抽出)

body:not(#contact) :is(input, button)

935 名前:デフォルトの名無しさん (ブーイモ MM7f-sgzH [133.159.150.82]) mailto:sage [2023/09/03(日) 23:33:36.04 ID:II4MkDPZM.net]
>>915
下記のログ出力はどうなる?

console.log(localStorage.getItem('deck') !== undefined ? 'バカめ!!よく確認しろ!!' : 'undefined です');

936 名前:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210]) mailto:sage [2023/09/04(月) 13:53:40.48 ID:R0PWdUab0.net]
>>916
コンソール出力結果は

undefined
1
undefined

です

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

になります

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

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

undefinedの上が空行になってるならdeckに対する値が入ってる
それが空文字ならfalsyなのでconsole.log(1)は実行されない
truthyな不可視文字(例えば改行コード)が入っていればconsole.log(1)も実行される
inspectやencodeURIで中身に何が入ってるか確かめればはっきりさる



938 名前:デフォルトの名無しさん (ブーイモ MM7f-gLHL [133.159.151.232]) mailto:sage [2023/09/04(月) 14:45:10.48 ID:I1Zu7zQTM.net]
はっきりさる!

939 名前:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210]) mailto:sage [2023/09/04(月) 15:37:52.51 ID:R0PWdUab0.net]
あー わかりました
"undefined" っていう文字列がすでに入っちゃってたみたいです

丁寧に回答いただいてありがとうございました!

940 名前:デフォルトの名無しさん (ワッチョイ cf63-0HOd [153.218.137.10]) mailto:sage [2023/09/04(月) 15:59:10.40 ID:KQbfSHx50.net]
ウキキ🐒
input セレクタで解決しましたカッコイイ記述ありがとうございます

941 名前:デフォルトの名無しさん (オッペケ Sr07-JKlf [126.255.138.111]) mailto:sage [2023/09/05(火) 12:01:10.43 ID:y2XoXHZcr.net]
>【何をしたのか】開発ツールコンソール上でサンプルコードを実行すると
>条件文が undefined にもかかわらず if 文内 console.log(1) が実行される
不可解な挙動に遭遇したとき、自分が何か勘違いしてないかまずそこを疑ってみようという教訓
あとtruthyやfalsyな値の取り扱いは慎重に

942 名前:デフォルトの名無しさん (ワッチョイ 2901-pIYl [60.114.101.121]) mailto:sage [2023/09/28(木) 14:42:04.81 ID:Pzc86hhG0.net]
ほんまに、助かったで!

943 名前:デフォルトの名無しさん mailto:sage [2023/10/04(水) 23:59:59.93 ID:77DZdeZo0.net]
if(rd41.value){
dofn()
}

これが正しく実行されないのですが(暴走するというか、意味不明な実行結果が現れます)、if文の中で関数の呼び出しは出来ないのでしょうか?
もしそうなら、このコードを正しく動作するように書き換えることは出来ますか?

944 名前:923 mailto:sage [2023/10/05(木) 02:54:19.96 ID:pCa3KI6i0.net]
普通に動作しました
すみません

945 名前:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103]) mailto:sage [2023/10/16(月) 00:30:39.82 ID:tJl0Ngd50.net]
質問です
下記の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()

では上手くクリックすることができませんでした

946 名前:デフォルトの名無しさん (ワッチョイ 2e76-tQak [247.119.160.34]) mailto:sage [2023/10/16(月) 00:54:14.00 ID:SqBXoLFp0.net]
document.querySelectorAll(“.MuiDialog-container,.MuiBackdrop-root”).forEach(e => e.remove())

947 名前:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103]) mailto:sage [2023/10/16(月) 08:33:51.49 ID:tJl0Ngd50.net]
>>929
早速ありがとうございます
ただ、注意深くコピペして実行させたのですが
残念ながらメッセージパネルは閉じられませんでした



948 名前:デフォルトの名無しさん (ワッチョイ e25c-CexO [211.121.28.151]) mailto:sage [2023/10/16(月) 09:38:31.66 ID:9MW6cr+O0.net]
document.querySelector(".MuiSnackbar-anchorOriginTopCenter").remove()

949 名前:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103]) mailto:sage [2023/10/16(月) 10:55:49.91 ID:tJl0Ngd50.net]
>>931
すいません、それもダメみたいです

950 名前:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103]) mailto:sage [2023/10/16(月) 11:01:33.63 ID:tJl0Ngd50.net]
ブラウザ上の全然関係ない場所をクリックして自己解決しました

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

根本的な問題から逃げたようで悔しいですけどw

951 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 20:00:13.55 ID:xAzUmtPF0.net]
>>928
誰一人解決できなかったのか?
すまん、俺もわからんw

952 名前:デフォルトの名無しさん (ワッチョイ 877c-JmE3 [122.212.18.110]) mailto:sage [2023/10/25(水) 13:36:08.76 ID:JRNrMb5/0.net]
名前付き引数としてプロパティをもつオブジェクトを引数にする場合のJSDocの書き方ってどう書くのが正しいのでしょうか?
ネットで調べて以下の画像のように書くと、VSCodeで関数の説明で表示される時にプロパティ側の日本後説明部分が表示されません。
imgur.com/xhSQcMc.png

構文のほうには型は反映されてるので読み込めてはいるようなのですが…

953 名前:デフォルトの名無しさん (ワッチョイ 5fc2-vcKV [133.155.195.156]) mailto:sage [2023/10/26(木) 10:06:04.96 ID:QIG+kzYs0.net]
source = ['いぬ=ドッグ', 'ぬこ=猫咪', 'キャット=にゃんこ', 'ねこ=キャット', 'わんこ=小狗', '老鼠=ねずみ', '小狗=ドッグ', 'マウス=ねずみ', '猫咪=キャット']
これを
result = [['いぬ', 'ドッグ', 'わんこ', '小狗'],
['ぬこ', '猫咪', 'キャット', 'にゃんこ', 'ねこ'],
['老鼠', 'ねずみ', 'マウス']]
これに集計するにはどうしたらいいですか

954 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 12:52:26.88 ID:jSMDhhI40.net]
>>936
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

955 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 12:52:36.47 ID:jSMDhhI40.net]
>>936
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

956 名前:デフォルトの名無しさん [2023/10/26(木) 13:05:50.11 ID:m2KCtDyt0.net]
canvasでarc関数でx:100,y:100の位置に青で塗りつぶした半径3の円を描いたんですが
これと同じ位置に同じ半径で同じ色で塗りつぶした円を描くと四角形ぽくなってちょっと大きくなって表示されます。
背景を塗りつぶして1回目に描いた円を一度消去してから2回目の円を描いても同じでした。
文字の場合でも同じ位置に同じ文字を重ね書きすると太くなっちゃいました。
どうすればちゃんと同じ位置に同じ物を描いても太くならないようにできますか?

957 名前:デフォルトの名無しさん (ワッチョイ c791-DWPP [242.12.24.181]) mailto:sage [2023/10/26(木) 22:17:18.42 ID:npbiXWKI0.net]
>>936
それは質問ではなくて丸投げと言います



958 名前:デフォルトの名無しさん (ワッチョイ fff0-f0DH [241.193.34.196]) mailto:sage [2023/10/27(金) 08:04:19.82 ID:93zv19AS0.net]
>>936
競技プログラミングのスレで聞いて!

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

UnionFind は、プログラミング・コンテスト・チャレンジブック(蟻本)に載っている

959 名前:デフォルトの名無しさん (ワッチョイ 639d-XI6K [109.236.1.125]) [2023/11/13(月) 18:52:10.34 ID:qEXCkkFf0.net]
alertのテキストをコピペする方法とかってご存知ありませんか?

どなたか知恵をお貸しください

960 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 22:10:22.42 ID:FIfUHr+c0.net]
質問したいなら詳しく書こうね

961 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 02:43:20.79 ID:MYkZh+2q0.net]
>>942
alertのテキストをコピーするには、通常はウェブページ上でalertが表示されている状態で、テキストを選択して右クリックし、"Copy"や"コピー"を選択する方法があります。ただし、ウェブサイトのalertはJavaScriptで生成されるもので、そのテキストを直接コピーする方法は制限されていることがあります。可能であれば、そのテキストを手入力でコピーすることができます。

962 名前:デフォルトの名無しさん (ワッチョイ c5f9-EFnx [244.158.6.121]) mailto:sage [2023/11/14(火) 19:07:48.92 ID:WEqhXBJy0.net]
検索すれば?
コピーを防ぐ方法は、幾つかある

ブラウザのF12 ボタンの開発者ツールで調べるとか

963 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 20:45:30.47 ID:Mc/CoQSw0.net]
>>942
マルチボスト先に答えがある
https://mevius.5ch.net/test/read.cgi/hp/1478002550/706-

964 名前:デフォルトの名無しさん (JP 0H89-BcU5 [104.234.140.171]) mailto:sage [2023/11/15(水) 11:30:55.95 ID:FHoogchzH.net]
>>939

亀だけど
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();
でやると円が太らなかったよ

965 名前:デフォルトの名無しさん (ワッチョイ e374-n7Dx [211.124.81.22]) [2023/11/15(水) 12:39:52.38 ID:D0hDoGTF0.net]
亀が2chに書き込みにやってきた

966 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 20:41:48.61 ID:oUDu0vRd0.net]
console.log()のlogってどういう意味ですか?
printとかputじゃなくてlogで出力って珍しいですね

967 名前:デフォルトの名無しさん [2023/11/18(土) 14:13:31.53 ID:mHEv1Kbm0.net]
consoleオブジェクトのログ情報を出力するためのlogメソッド…



968 名前:デフォルトの名無しさん (アウアウウー Saa1-UHOz [106.180.4.201]) [2023/11/18(土) 16:58:25.29 ID:rXJKESWNa.net]
blogのlog

969 名前:デフォルトの名無しさん (ワッチョイ 0d5f-uy16 [14.8.71.128]) mailto:sage [2023/11/18(土) 18:26:17.47 ID:vb+682X10.net]
彼岸島の名産品

970 名前:946 mailto:sage [2023/11/18(土) 23:53:58.59 ID:rj8Lk8BJ0.net]
…どこまで信じたらいいの?

>>950
ありがとうございます

971 名前:デフォルトの名無しさん (ワッチョイ e300-5mk2 [2400:2200:7f1:bf91:*]) mailto:sage [2023/11/19(日) 10:42:09.47 ID:HAfvoabg0.net]
いえいえ

972 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 16:19:56.96 ID:q8v/AXQl0.net]
const arr =Array(3).fill([]);
arr[1].push(0);
console.log(arr);

この場合arrは[[], [0],[]]になっていることを期待するのですが実際には[[0], [0], [0]]となっています
まったく納得いかないのですがなぜですか

973 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 16:41:25.42 ID:LC62eXy40.net]
>>955
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#value
>配列を埋める値。もし value がオブジェクトであれば、配列のそれぞれの要素はそのオブジェクトを参照します。

974 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 16:49:32.78 ID:q8v/AXQl0.net]
>>956
fillがそういう仕様なんですね
納得です
ありがとうございました

975 名前:デフォルトの名無しさん (ワッチョイ eb79-5mk2 [2400:2200:7f6:ca17:*]) mailto:sage [2023/11/21(火) 08:31:09.87 ID:reAksYQu0.net]
いえいえ

976 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:06:08.47 ID:Hk8WzggI0.net]
変数宣言の際に、letよりconstを積極的に使うべき、とされているのはなぜでしょうか?
後で値を変えられるletの方が便利だと思うのですが

977 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 00:26:41.03 ID:nlRha+4K0.net]
JSにかかわらず変数は使ってる道中に値変換したり変数使いまわしてるとエラーの種になりやすいし、それを防止するのが大きいかな
配列やオブジェクトの値はconstでも変えられるし

昔はそういうごちゃごちゃ動く変数のトレースするのもプログラム組むやつの能力ってされてたなぁ



978 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 03:01:31.39 ID:KDSVu4Ne0.net]
コードを上から読んでいく時にconstだとこの値は後から変わることがないと決めつけて読むことができる
letだとどこかで書き換えられるのに注意しながら読まないといけない

979 名前:デフォルトの名無しさん [2023/11/22(水) 10:49:23.49 ID:5A+ZhXZi0.net]
可読性の部分が大きいよね
varで変数定義しているクソコードなんかリファクタリングしたくないだろ?

980 名前:デフォルトの名無しさん [2023/11/22(水) 11:06:59.29 ID:5A+ZhXZi0.net]
constで最初から定義した後にそれが動的な値だった場合タイプエラーを起こしてからletに書き換える事はあるけど最初からletで定義しちゃうと後々constに書き換えた場合もしそれが動的な値ならプログラムそのものが動かなくなって新たなるバグを生むでしょう?
最初は縛りを強くしておいて後から緩めるはあるけど逆はないですよ

981 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 15:03:20.05 ID:hF+LjdVs0.net]
条件によって const の値を変えられるようになるといいんだけどな。
簡単なのなら参考演算子でやれるけど。

982 名前:デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45]) [2023/11/22(水) 20:15:59.75 ID:5A+ZhXZi0.net]
>>964
よくわからないけどそれってconst使う意味あるの?

983 名前:デフォルトの名無しさん (ワッチョイ 2539-YW6P [2400:2200:6f2:ad2b:*]) mailto:sage [2023/11/22(水) 20:54:04.80 ID:FIiKhTS50.net]
察するに初期代入時に場合によって違う値を入れたいということだろう
三項演算子を出してるし

984 名前:956 (ワッチョイ 4d1d-f5/H [180.178.89.53]) mailto:sage [2023/11/22(水) 21:26:20.43 ID:VeafCB/q0.net]
答えてくれた方々ありがとうございました
積極的にconstを使っていきたいと思います

985 名前:デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240]) mailto:sage [2023/11/22(水) 21:54:03.90 ID:7CtxEw9g0.net]
>>965
うまい例になってるかわからないけど、何かのプロパティに値が入ってたらそれ、無ければデフォルト値を 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 に切り出せよと言うかもしれないけど、できればそうすりゃいいけどどこにでも適用できるというわけでもない。

986 名前:デフォルトの名無しさん (ワッチョイ 250c-YW6P [2400:2200:6d0:af1d:*]) mailto:sage [2023/11/22(水) 22:23:44.12 ID:lZKHNjwl0.net]
調べてみると苦肉の策で↓みたいな書き方が紹介されてたけど可読性考えるとどうだろうね
const x = (() => {
let a, b, c;
:
return a + b * c;
})();

987 名前:デフォルトの名無しさん (ワッチョイ e3c2-fy5B [2001:240:2467:98ce:*]) mailto:sage [2023/11/22(水) 22:52:37.25 ID:8gAUwwkj0.net]
関数に切り出さない意味がわからない



988 名前:デフォルトの名無しさん (ワッチョイ 6bcf-ekUX [153.206.41.110]) mailto:sage [2023/11/23(木) 00:25:34.14 ID:9np+Rtrn0.net]
欲しいのはただのブロックなのに関数として書かなければならないというのが余計なことをやらされている感はある。

989 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 01:53:09.12 ID:pAGXWPD10.net]
var使え

990 名前:デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240]) mailto:sage [2023/11/23(木) 15:16:53.54 ID:d47OCYFA0.net]
>>969
処理の結果として複数の const、例えば x y を求めたい時は、その書き方でも難があるよね

991 名前:デフォルトの名無しさん (ワッチョイ 2d12-YW6P [2400:2200:6f7:92d9:*]) mailto:sage [2023/11/23(木) 15:39:42.20 ID:98Thj8w70.net]
>>973
その場合はタプルで受け取るようにすれば問題ないよ
const [x, y] = (() => {
let a, b, c;
:
return [a + b * c, a * b + c];
})();

992 名前:デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240]) mailto:sage [2023/11/23(木) 15:58:06.00 ID:d47OCYFA0.net]
>>974
ああ、それが現状の最適解な気がするね。
後で汎用関数化したくなっても対応しやすいし。
まあ >>971 みたいな感覚はあるし、関数としてのコストも気になっちゃうけど。

993 名前:デフォルトの名無しさん (ワッチョイ 551d-1fOb [180.178.89.53]) mailto:sage [2023/11/29(水) 23:49:26.08 ID:oO9dmq1+0.net]
const num = 1;
とした時、numはCやJavaのint型と違って、1という値のオブジェクトを参照している
という理解でよろしいでしょうか?
(numという名前でラベリングされたメモリ領域には、1そのものではなく
数値オブジェクトへの参照値が入っている?)

994 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 04:02:01.17 ID:uIFlL3tD0.net]
>>976
1 はプリミティブ値。
Object型ではない。

995 名前:973 mailto:sage [2023/11/30(木) 22:41:28.93 ID:l5hD/Y3Y0.net]
>>977
レスありがとうございます

分かりました
文字列('Hello World'など)もプリミティブなんですよね
どうやって内部で実装されてるんですか?

996 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 22:57:08.84 ID:mSFTiyup0.net]
MDNをまず読みましょう
https://developer.mozilla.org/en-US/docs/Glossary/Primitive

997 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 23:13:04.35 ID:5k4SwxyG0.net]
>>976
実装的には全て参照扱いだよ
ただし数値の場合は参照(ポインタ)そのものに数値を埋め込むという方法
だから全て参照だけどメモリは消費しないというハック



998 名前:デフォルトの名無しさん mailto:sage [2023/12/01(金) 01:54:56.09 ID:Bo4sqMI/0.net]
>>978
質問が大雑把過ぎる
もっと具体的に詳しく

999 名前:975 (ワッチョイ 691d-zrcD [180.178.89.53]) mailto:sage [2023/12/02(土) 04:48:25.07 ID:3pMMmiCv0.net]
返信くれた方々、ありがとうございます

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

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

>>981
すみません、以後気を付けます

1000 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 10:49:58.14 ID:qpNh64Np0.net]
>>980は気にしなくていいよ
英語苦手でもプリミティブには7つの型がある、ぐらいは読めるだろう
あと日本語のページがないか調べるぐらいはしよう
https://developer.mozilla.org/ja/docs/Glossary/Primitive

1001 名前:デフォルトの名無しさん (ワッチョイ 91ca-j/4L [122.132.80.240]) mailto:sage [2023/12/02(土) 11:43:24.98 ID:/unkk9Eq0.net]
>>982
そもそもそんなことを気にしてどうするの?
何がしたくての質問?

ぶっちゃけ表向き気にするべきなのは、その変数 a を別の変数 b に代入して、b を操作したら a まで同じように変わるのかどうかだけだと思うよ。

1002 名前:979 (ワッチョイ 691d-zrcD [180.178.89.53]) mailto:sage [2023/12/03(日) 12:45:58.94 ID:FUDcVj1n0.net]
>>983
分かりました
ありがとうございます

>>984
レスありがとうございます
うーん、まあこだわりとでも言いましょうか…
個人的にはそこまで知っておくことは無駄ではないと思います

1003 名前:デフォルトの名無しさん (ワッチョイ c1b6-egvc [2400:2200:6d6:9e9c:*]) mailto:sage [2023/12/03(日) 13:08:07.26 ID:tV1DejKO0.net]
>>978の質問なんかは明らかに自分のスキルや理解力に不相応なことを知ろうとしてない?
それを知ろうとするのはもっと力を付けてからがいいと思う

1004 名前:デフォルトの名無しさん (ワッチョイ 1901-+tyV [60.118.124.10]) mailto:sage [2023/12/03(日) 14:24:30.66 ID:GsReymgf0.net]
>>985
実装を知る以前に仕様は理解してる?
「仕様書のここをどうやって実装しているか、を知りたい」なら誰かしら答えるかもしれないが、そのようなレベルにも見えない
仕様を理解せずして、実装を理解するのは無理

1005 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 17:15:18.22 ID:TpyXoIhbM.net]
>>987
乗っかって補足すると、同じ仕様の実装なんて何通りもあるのよね。
そこであえて実装を知りたいというなら、その理由も書く方が間違いないよね。

1006 名前:982 mailto:sage [2023/12/04(月) 23:09:24.91 ID:GWbm6wp00.net]
レスありがとうございます
遅くなってすいません

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

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

>>988
分かりました
まあ実装って言い回しが大仰でした
参照を使ってあるかどうかを特に知りたかったんです

1007 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 23:27:59.49 ID:lRGkzbxI0.net]
そのレベルを気にする人はもうフレームワーク作るレベルだろう



1008 名前:デフォルトの名無しさん (アウアウウー Sa9d-/D3x [106.146.123.7]) mailto:sage [2023/12/05(火) 20:06:09.74 ID:gtr9NjJza.net]
>>985
あ、ややこしい書き方してすまん
単にuint64_tが値の参照でオブジェクトの場合はポインタが入ってて
整数の場合はそのまま使ってると言うことを言いたかっただけ
typedef uint64_t JsValue;

JsValueが「値」を指す参照

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

こうすることでオブジェクトも数値も同じように扱える
V8もJSCも全部これ

1009 名前:982,986 mailto:sage [2023/12/05(火) 23:32:22.63 ID:c1y4Tvg20.net]
レスありがとうございます

>>990
そうなんですかね

>>991
内容がハイレベルですね

1010 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 00:21:20.37 ID:HaZOzd170.net]
>>989
入門書を読んで間もないレベルなら、口が避けても「仕様を理解した」とは言えない
実装を覚えるのは仕様書を読めるようになった後だろう
https://262.ecma-international.org/14.0/

1011 名前:デフォルトの名無しさん mailto:sage [2023/12/09(土) 10:39:43.45 ID:npLWblUF0.net]
素人な質問で申し

1012 名前:有りません。
下記のスクリプトで何故か関数丸々出力されてしまうのです。
テキストでは改行が多すぎる為、投稿出来ないため画像で申し訳有りません。
下のグレーのフォントが出力結果です。
出力指定していないので、何も出力されないはずなのですが…。

https://i.imgur.com/tJnx1oK.jpg
[]
[ここ壊れてます]

1013 名前:デフォルトの名無しさん mailto:sage [2023/12/09(土) 11:31:37.42 ID:In8GNdRi0.net]
>>994
画像でコート見るのはしんどいので、>>2のサイト使って現象が再現するコードを掲示してほしい

1014 名前:デフォルトの名無しさん [2023/12/09(土) 14:27:43.55 ID:iYG1bkmj0.net]
>>994
どうでもいいけど関数名の付け方にセンスないな
コメントもつける意味がないゴミ
変換ならconvertとかにすりゃいいのに…

1015 名前:デフォルトの名無しさん mailto:sage [2023/12/09(土) 15:46:37.17 ID:W9usxQKOr.net]
/や:が入ってるのを明示してるのはコメントとして意味があるだろう

1016 名前:デフォルトの名無しさん (ワッチョイ 1b56-m+YX [2400:4176:2846:5b00:*]) mailto:sage [2023/12/09(土) 16:39:16.69 ID:0uXDsiHr0.net]
classのインスタンスで#プライベートメソッドにアクセスする方法ってないんでしょうか?

1017 名前:986 (ワッチョイ b51d-g9yR [180.178.89.53]) mailto:sage [2023/12/09(土) 17:13:36.47 ID:YETt4fHv0.net]
>>993
はい
リンクありがとうございます



1018 名前:デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20]) mailto:sage [2023/12/09(土) 17:46:24.03 ID:Mnb70srnr.net]
なかったんで次スレ立てた
https://mevius.5ch.net/test/read.cgi/tech/1702111239/

1019 名前:デフォルトの名無しさん mailto:sage [2023/12/10(日) 11:19:27.25 ID:ngtmyS7f0.net]
>>995
サイトの使い方がいまいち分からず試してましたが、サイトでは症状が再現できず想定通りの挙動でした。これは作ってるアプリ側に原因があるのでしょうかね。
mementoというdbアプリだったのですが。

>>996
自覚はあります。プログラムに興味を持ち練習はじめなので勘弁してやってください。思いつかないんですorz

1020 名前:デフォルトの名無しさん (ワッチョイ 35cb-tek/ [2400:2200:6f2:ada4:*]) mailto:sage [2023/12/10(日) 11:47:16.59 ID:v6fUhk/70.net]
>>1001
>>994を実行してる環境について書いてくれないと
コードで見えてる部分以外については知りようがないんだから

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

続きが必要なら次スレにどうぞ

1021 名前:デフォルトの名無しさん [2023/12/16(土) 00:37:24.71 ID:xiFcB2tC0.net]
テスト

1022 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 495日 8時間 39分 45秒

1023 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<355KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef