[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
440: (ワッチョイ cdf0-JDfe [58.98.96.219]) 2022/12/19(月)14:10 ID:GaFatWVX0(1) AAS
>>438
>>439
ありがとうございました
selectortextを呼び出して疑似的にプロパティ名で編集できるような関数を作ってみます。
441
(1): (ワッチョイ 2101-eq55 [60.103.74.80]) 2022/12/19(月)21:50 ID:K0fHbKFE0(1) AAS
外部リンク:developer.mozilla.org

let style = document.styleSheets[0].cssRules[0].style;
style.fontSize = "1em";
// style.setProperty("font-size", "1em");
442: (JP 0H11-JDfe [126.249.157.89]) 2022/12/21(水)07:34 ID:nEbzRDrKH(1/3) AAS
>>441
ありがとうございます。

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

それとも
省6
456: (オッペケ Sr11-y+PC [126.208.237.5]) 2022/12/22(木)20:32 ID:NthFDCjcr(1) AAS
次の話に移る前にまず>>451>>452に答えるべきだろう
言葉遣いだけ丁寧にしてもそういうのが疎かだと相手にされなくなる
457
(2): (JP 0H11-JDfe [126.249.157.89]) 2022/12/23(金)07:08 ID:OG24yN7PH(1/5) AAS
>>452
424,437,440,442の記載の通り、cssRuleを直接編集したいと考えています

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

>>445様のご指摘があって、再度検索してみたのですが
別スタイルシートのcssをオブジェクト化して参照する方法が見当たらず
省5
458
(2): (ワッチョイ 2101-eq55 [60.103.75.178]) 2022/12/23(金)08:30 ID:d3IbDeU70(1) AAS
>>454 でクロスオリジンの場合にnullになるって指摘されてるけど、これに引っかかってるだけじゃないかな
この場合はどうにもならんと思う
459
(3): (オッペケ Sr11-y+PC [126.194.246.38]) 2022/12/23(金)10:44 ID:Lv24OjDar(1) AAS
>>457
ブラウザのコンソールで↓を実行したらどうなる?
for(const ss of document.styleSheets){console.log(ss.href); console.log(ss.cssRules);}
460
(1): (ワッチョイ 427c-e5AJ [43.235.241.201]) 2022/12/23(金)17:28 ID:o+ONuUnd0(1/2) AAS
>>458で指摘している通り、他の所から読み込んだスタイルはそもそも変更出来ないって書いてあるんじゃね?
外部リンク:w3c.github.io

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

>>459のように実際にcssRulesにアクセスすると自分の所のcssじゃない場合をアクセスしようとすると
Uncaught DOMException: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules
at <anonymous>:1:76
みたいなエラーになる
省2
461: (ワッチョイ 427c-e5AJ [43.235.241.201]) 2022/12/23(金)17:30 ID:o+ONuUnd0(2/2) AAS
変な日本語になってるなw

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

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

jsのエンジンは<link rel>を実行すると
jsの実行コンテキストを記録するメモリ部分に
省5
463
(1): (オッペケ Sr11-y+PC [126.194.240.154]) 2022/12/23(金)20:54 ID:2ps+kI7qr(1/3) AAS
>>462
>クロスオリジンの適用を受けずに編集できるかなと
君の>>450>>457の発言ではCSS参照が別ファイルでも同一オリジンでは問題なく出来て
別オリジンのみ問題が発生していると認識しているとは読み取れないけども
別ファイル即ち別オリジンと勘違いしてない?
同一オリジンなら別ファイルでも参照出来ることは理解してる?
464: (JP 0H11-JDfe [126.249.157.89]) 2022/12/23(金)20:55 ID:OG24yN7PH(3/5) AAS
>>460
今勉強再開して思い出しました。
@keyframesのプロパティや値を
動的に変更したいと考えたのです

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

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

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

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

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

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

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

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

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

皆様ありがとうございました
486
(1): (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) 2022/12/26(月)15:01 ID:pO4MU7IP0(1/5) AAS
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";
省21
487: (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) 2022/12/26(月)15:02 ID:pO4MU7IP0(2/5) AAS
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;
省13
488: (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) 2022/12/26(月)15:07 ID:pO4MU7IP0(3/5) AAS
線幅を変更するスクリプトなのですが、一応完成しました。
自分で使うだけならこれでいいのですが、他人に使ってもらう場合、ダイアログに「線幅を追加する」という項目を増やしたいと思っています。
rd21 = pg2.add("dropdownlist", [20, 40, 150, 65], ["0.1 mm", "0.12 mm", "0.15 mm", "0.2 mm", "0.25 mm", "0.3 mm", "0.4 mm", "0.5 mm", "0.6 mm"]);
のところに項目を追加していくようなコードを書くことは可能なのでしょうか?
自分自身を書き換えるコードだと思うのですが…
(削除はどうでしょうか? 例えば0.15 mmがいらないと思った場合、"0.15 mm"のを削除するコードを書くことは可能ですか?)
489
(1): (スプッッ Sd5e-HEC+ [1.75.242.231]) 2022/12/26(月)15:27 ID:oXRhIFIqd(1/2) AAS
スレ内を線幅で検索しても何も引っかからないのにこの書き出しで何か伝わると思ってるのすごいわ

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

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

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

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

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

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

calc()
と()をつけて表せるものが普通の関数、それを変数に代入したもの
省3
500
(1): (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/04(水)19:01 ID:jNmuxM610(2/8) AAS
例えば以下の2つの関数があります。

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

■「無名関数」を変数に格納
let calcResult2 = function(a,b){
省9
501
(2): (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/04(水)19:02 ID:jNmuxM610(3/8) AAS
SetInterval()
に与える引数は、関数リテラルでなくてはならないそうです。

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

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

という理解でよろしいでしょうか?
502
(3): (ワッチョイ 8701-1zgH [60.103.77.208]) 2023/01/04(水)20:37 ID:UYb7FHhp0(1/3) AAS
外部リンク:developer.mozilla.org

外部リンク:developer.mozilla.org
リテラルに関数は含まれてないな

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

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

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

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

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

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

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

代わりに、以下で動きます。
省8
515
(1): (オッペケ Sr4f-JZbg [126.194.244.157]) 2023/01/04(水)22:46 ID:GLj+17iFr(4/4) AAS
>setTimeout($('#display').html(' '), 1000);
これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない?
html()が戻り値としてjQueryを返すからそれが引数として渡ってるでしょ

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

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

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

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

「引数funcは必ず関数リテラルで指定してください。」
画像リンク[png]:uploda1.ysklog.net

「関数リテラルは....ある関数の引数として渡したり....」
画像リンク[png]:uploda1.ysklog.net
520: (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)00:27 ID:EVXeoiyo0(3/10) AAS
>>518
理解したありがとう!
1-
あと 482 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.038s