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
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で使えるのはいいなあ 情報ありがとう