- 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
- 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()でダイアログに計算式が入力出来るね
|

|