+ JavaScript & jQuery 質問用スレッド vol.8 +
レス数が1000を超えています。これ以上書き込みはできません。
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/hp/1467906819/ なんか質問者が俺の疑問に答える前に変な流れに
なりそうだから先に書いておくわ
モジュール間の依存性を高めることなく連携させたいなら
jQueryの機能のカスタムイベントを使えば良い
関数をグローバルに定義する必要も
importも使う必要もない
だがそもそも>>636のようなことをするのがおかしい >>641
すみません、後々jQueryがらみかなと
>>642
$(function()は理解してましたが中に書くほうがいい気がしまして
それが普通とあれば解決です
詳しくありがとう
よくわかりました >>648
関数内で定義された関数を外部から呼び出す方法を知りたいって質問に
そんなことするのは間違ってる、おかしいなんてのが答えになってるのかね
勝手に問題を変えちゃいかんだろう >>649
何いってんの? イベント使えばできるし
そもそもそんなことをする必要はないって話だろ
外部から呼び出すのが間違ってるんじゃなくて
その必要がないだろって話をしてる だいたい関数内で定義された関数を外部から呼び出す方法を知りたいって質問に
関数を外部に出せばいいっていうのは、勝手に問題を変えてることになる >>651
君はそんな回答してないじゃん
642はそういう回答しているが >>652
だから回答の前に、なんでそんなことをしたいのか聞いたんだが?
話の邪魔するなら消えろよ
モジュールの依存性を減らすには、グローバル関数に
しないほうが良いしそのやり方もある。
もっといいやり方があるんだが、そのためには
何故そうしたいのかの理由がわからないことには適切な答えは出せない
だめなやり方しか知らないなら、他人にとって害にしかならないから
答えないでくれないかな jQueryの機能のカスタムイベントと言っても
関数が外部ファイルで独自イベント起こす方がhtmlからじゃ
結局質問と同じことにならないか? >>653
635と636の質問内容から飛躍しすぎじゃないの?
スコープが分ってればそんな質問も出なかったと思ったんだけど?
何そんなに怒ってんのよ? 怒ってないが? jQueryを使ったもっといいやり方があるから
その話をするじゃまをするなと言ってる いやスコープはわかってるが外は望ましくない(と思ってた)からいい方法ないか?
という話だぞ
なんでそんなことをしたいのかは聞かなければならないことなのか?
すでに答えてる人いるし >>658
スコープがわってたらあんな質問するわけねーじゃんw >>657
ならそれを書けばいいのに何もったいぶってるのかな
質問時点でコードも書かれてるのだからある程度意図はわかるだろうに
その点>>642はさすが、先ず解決に至ってる
別な方法はまたそれで示せばいい 赤の他人がワーワー言った所でなんの役にも立たんわw
ただjQueryを使ったもっといい方法があるということだけはここに残しておこう
俺のレスを見てるはずなのに無視してるってことは、
何か(良からぬ)意図があってその話題をしてる可能性があるからな >>640,643
今回はソースを全部質問者が用意してるんだからいとも何もかもソースよめばわかるだろ
だから単に回答をかいてあげればよかっただけなのに
上から目線で否定だけするならスレチだから消えてくれ
>>640でまずそれをききたいって何をききたいのかさっぱりわからんし
日本語不自由かよ 質問者のソースの場合は initCheck が $('#chk') ってチェックボックスにからむイベントだから
>>638 でもいうようにグローバルにする必要はなく
「ここならエラーなし」の場所にかくほうがきれいだけど
それとは別に一般論として
「HTML内から外部jsの関数実行
または
2つの外部jsで、片方から片方の関数実行
はどうやるのでしょうか?」
に対しては >>642 と回答するしかない $(function() から出すという修正がOKなら
イベントを使ってやり取りするって手もあるだろ 質問の意図を理解して順序立てて説明すればね
いきなり「そんなやり方間違ってるjQuery使え」ってアホかと >>665
ソースかいてやればいいのにそれだけいってもわかるわけ無いだろ
質問者のレベルにあわせて回答してやれよキチガイ 無視されてる時点であいてにされてないか理解できてないってのもわからにアスペ 開発の会話をきいてるだけで中途半端な知識だけあってコードかいたことがない営業みたい chrome 拡張機能で jQuery を動かして
ブラウザゲームの特定の表示がでたらデータを抽出(とりあえず localStorage にでも保存)したいんですけど
$('#result').on('load', () => {
console.log("event start");
});
とかいてもなぜか実行されません
はじめから HTML にかかれてるわけじゃなく動的に生成されるHTM:Lだからな気がするんですが
#result って要素が動的に生成されたときに何かを実行するってどうかけばいいんでしょうか >>672
ありがとうございます
ttp://js.studio-kingdom.com/jquery/events/delegate
これでいいんでしょうか?
$("body").delegate(".enemy_info", "load", () => {
console.log("enemy_info");
});
とかいても実行されないです
chorome の要素には確かに
<div class="enemy-info">
が存在してるんですが load イベントを起こさずにHTMLを生成することができるんでしょうか
それとも deligate対象は body だとダメなのでしょうか >>672
んー delegate の説明を読むと
デフォルトで $document だったものの範囲を制限できるってだけで
別に後から生成されたものにイベントがセットできるだけではない気がするのですが…
本当に delegate だけで load されるようになるんでしょうか… 要素タブは現在のDOM構造だからソースタブで最初からあるかどうか見なよ。
あとメソッド名はonのままでいいよ。delegateの機能はonに集約された。 >>671,673-674
delegate 案内している人のそれはミスリードだから無視しなさい
要素ノードが生成されても、loadイベントなど発生しないし、loadイベントはバブリングしない
彼が勝手に誤解しているだけだから参考には値しない
君が必要としているのは、MutationObserver
https://developer.mozilla.org/ja/docs/Web/API/MutationObserver >>677
Chrome拡張機能でjQueryに拘る理由ある? こういう思い込みが激しいところが学習が進まない理由なんだろうな 他所で「jQueryにはMutationObserverがないと聞いたのですが」で質問するタイプっぽい >>681
そこでjQueryでの書き方を教えて貰って、「もう5chは信用しません」と憤慨するところまで読めた >>676
いろいろ試したけどうまく動かない
サンプルコードほぼそのままで外側の content とか warapper とか動かなさそうなのあったので
指定してもダメで document ぜんたいにしてもダメなんですよね
直下の要素が変化したときしかイベントはとんでこないんでしょうか
chrome 開発ツール眺めてるとアニメーションごとに DOM ころころかわって(紫色になる)んですが…
target がまだ生成されてないせいかと思って $(() => {}) でかこってみたりもしたけど
1回も console.log にとんでこない…
$(() => {
const target = document;
// オブザーバインスタンスを作成
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
console.log(mutation.type);
});
});
// オブザーバの設定
const config = { attributes: true, childList: true, characterData: true };
// 対象ノードとオブザーバの設定を渡す
observer.observe(target, config);
// 後ほど、監視を中止
observer.disconnect();
}); ついでに質問なんですけど javascript って slepp みたいなのないんでしょうか
>>676 のページの情報だけだとイベントで取得するのは自分には無理そうなので
setTimer 使ってよむのを遅らせれば enemy-info のDOMがとれるので
1 秒おきぐらいにループで DOM をみはって情報を得ようかなとも考えてるところです サンプル通りにobserveしたすぐ後にdisconnectしちゃったら監視も糞もないし
childList: trueだけではtargetに対して追加されたものだけを監視するのでsubtree: trueも必要
あとありがちなMutationObserverのハマリどころとしては
先にdocument fragmentを作ってからDOMツリーに追加されてる場合はMutationRecord.addedNodesには直にDOMツリーに追加した頭の要素のみが列挙される点 あ subtree は true にしてました
かきわすれです
>サンプル通りにobserveしたすぐ後にdisconnectしちゃったら監視も糞もない
なるほど!
天才です!
動きました!!! コードをコピペするだけで説明は全く読んでないだろ
質問しても、アドバイス通りに対応するだけで中身を理解しようとしないから、そうなるんだ… すいません…
とりあえず一言動いてくれたらそれから
オプションいろいろ変更してみて使い方おぼて行きたかったんですけど
1回も動かなかったので…
サンプルコードに終了コードはコメントアウトしててほしかった…
まずはコピペで動く状態にしてほしくないですか? >>688
>>676のリンク先にdisconnect()の説明が載ってるから、それで分かるだろ
説明を読みたがらないコピペプログラマの自己勝手な都合にしか見えんぞ >>684
const sleep = time => new Promise(resolve => {
setTimeout(resolve, time);
});
console.log('4秒後にうんこと叫びたい…');
await sleep(4000);
console.log('うんこ!!'); Ruby で、Nokogiri, Selenium WebDriver で、ブラウザを自動操作しているけど、
たぶん、その要素が現れるまで待つこともできる
タイムアウトも設定できる SeleniumはJava製。
公式ドライバーもJava
コミュニティ製の各言語バイントはRubyのドライバーよりNodeのドライバーのほうがよくメンテされている。
まあNodeならSeleniumなんて列車砲持ち出さなくてもPupetteerでらくらく家財宅急便だけとなwww
しかし↓の記事読むとRubyもやるじゃんと思ってしまった。
世界最大のソフトウェア開発プラットフォームで最も人気なプログラミング言語は何なのか?
https://gigazine.net/news/20181116-top-programming-languages-2018/ 質問です
text()で取得した内容を判断して処理したいのですが
濁点、半濁点等が入っていると上手く動きません
よろしければご教授下さい。
html
<p id="hoge">ガギグゲゴ</p>
script
hogegoge = $('#hoge').text();
if(hogegog == ガギグゲゴ){
処理 ←ここの処理に行かない
}else{
処理 ←こっちらが処理される
} >>695です
先のはスプリクト間違いです
実際はこちらのスプリクトです。
html
<p id="hoge">ガギグゲゴ</p>
script
hogehoge = $('#hoge').text();
if(hogehoge == ガギグゲゴ){
処理 ←ここの処理に行かない
}else{
処理 ←こっちらが処理される
} 「ガギグゲゴ」は本当に「ガギグゲゴ」なんでしょうか? 'ガギグゲゴ' 又は
"ガギグゲゴ" 又は
`ガギグゲゴ` >>697 「ガギグゲゴ」は本当に「ガギグゲゴ」なんでしょうか?
とはどういうことでしょうか?
>>698
ガギグゲゴ部分は囲ってありました
すいません。
if(hogehoge == 'ガギグゲゴ'){ ガギグゲゴの前後に空白文字が入ってる
「ガ」ではなくて「カ」+濁点だった >>701
濁点が分離していました。
エディターが勝手にまとめていたみたいです。
ありがとうございました。 >>664
jQueryの人勘違いしてたっぽいな
今度はphp使ってと言い出してる だから探ってたんだろ
答えもせず否定から入って不自然だった >>703
誰と勘違いしてるんだ?
俺はPHPの話なんかしてねぇよ >>695-702
結合文字列は「カ」+濁点で、合成文字は「ガ」
Mac だけは、デフォルトで結合文字列なので要注意! 文字列の比較はtrimなどをした後normalize関数を通すのが常識
横着してそのまま比較しちゃそりゃうまくいかないよ 日中韓でnormalize すると、別の文字に変わるものがあるから、危険と聞いたが? if( str.match() )とかで指定文字列があるかどうかを確かめてからそれをreplace()するのって意味ないですか?
文字列を2回探させるぶんムダな処理をさせてしまうことになる…?
それなら最初からreplace()だけのほうがいいですか? 世の中無駄な処理ばかりだからどっちでもいい
他人に無駄と言われようがどうせソースなんか見ない
そんなことより何かを実現させるほうを先にやるんだ
バグなんかどんなアプリにも存在する
世界はクソコードで動いている 大抵の場合、書いたコードを見るのは自分自身なんだ
そのためにできるだけメンテしやすく書いておくだけなんだよ 実際のところメンテナンスのしやすさは簡単な話ではない。
極力シンプルなほうが良いのか、思考したままの情報が多い方が良いのか。
そういうことを考えることが時間の無駄。
自然と思いつくまま書くのが最も生産性が高い。
あえてメンテナンスしにくいように書くやつはいないから、
それでも自分にとっては十分なコードになる。 >>723
そこにコードがあるからメンテナンスしなきゃいけないんだよ。
コードがなければ(少なければ)メンテナンスするものも少なくなる
それだけははっきりしてるんだから
書き方でどうこう言う前に、まず書くコードを減らすこと優先すれば良い 3ヶ月前の自分の書いたコード見てぶん殴りたくなる事もある それだけ成長してるってことやね
期間置いてもスムーズにコードを書けるなら、それはよくやったと自分をhomeてあげていいと思う どうにも解決できなくて困っております( ;´Д`)エロい人お願いします。
Animate.cssを実行するJクエリ、たとえばwaypointsやScrollTriggerなどで作成したスクロールで可視範囲になってから動くアニメーションがmacOSのSafariだけで動かなかったり、動いても目的のアニメーションが実現しないのはなぜですか。他のブラウザはOKなのに safari css のサジェストが酷いな
反映されない、崩れる、バグなどお祭り状態だ 漏れは、WEB+DB 106号に載っている、web-animations-js というポリフィルを使ってみたけど、
Edge では対応していなかった
Safari でも動くのは、Technology Preview 版だけかも 無名関数の
funciton(){}
が長いので
f(){}
みたいに書ければと思ったのですが、
f = funciton();
のようなことはできますか? それは出来ない。
()=>{}
とか
_=>{}
とかで我慢できんか? >>735
こんな書き方があったのですね、ありがとうございます
即時関数にするとこうですね
(()=>{
alert('aaa');
})()
気持ち悪いですね アロー関数使えるってことはletやconst使えるってことだもんな… >>739
tuhs.orgが怪しいとか草生えますよ あれスラッシュって2つ続けても問題なく解決できるのか みんな当たり前のようにanguler, react, vue使えるもんなの? テーブルって真横の値(とあるtdの一つ前or次のtd)は簡単に取得できるけど
真上や真下の値は簡単に取得する方法ある? Bourne ShellのソースだとURLから分かって貰えない悲しみ >>746
とあるセルの周囲のセルが1つとは限らないだろう
そこはどうするつもりなんだ? reactとreduxでログインページ作るのに20ファイルも必要とかww
はぁ >>751
な?バカみたいだろ?
reactとか、JavaScriptに完全に依存したサイトで
すでにJavaScriptファイルが数十個作られています
みたいな状況を解決するものであって、
HTMLメインのサイトではただ面倒になるだけなんだよ それは当たり前だろ。
必要の無いものを無理に使っては絶対にダメ。
js無しで済むならそれが一番軽いし速いんだから。 >>753
jsファイルが数十個なんてサイトは作り直しだな
あとhtmlメインサイトをこのスレで出しても無意味 Extensible Web、Module、HTTP2的には数十個あっても正しい >>755
無意味ではないね。HTMLメインのサイトで使うのが
JavaScriptの一番多いユースケースだから 普通バンドルまとめるだろ
共通部分別にするにしても数十個とか異常 1モジュール1000行未満で切り分けていけば
そこそこのWebアプリなら数十モジュールくらいいく
おかしくはない 普通バンドルまとめるだろ
共通部分別にするにしても数十個とか異常 普通バンドルまとめるだろ
共通部分別にするにしても数十個とか異常 >>762
なんでバンドルにまとめるの?
まとめなかったらどんな問題があるの? お客様にお待ちいただくことになる
しかしそんなお客様もキャッシュを持ってるから普段は気づかない
要は開発者の傲慢
傲慢を客に押し付けて
「ドヤ!ロードはええだろ!バンドラー使ってるんだぜ!」
たったのこれだけ そうだよね? 2個ぐらいならバンドルにまとめなくても十分早いよね jQueryに依存しているjsファイルで質問です
htmlのパースを邪魔しないようにjsファイルをどうにかしたいと思います
・document.ready()でscript要素のDOM生成
・bodyの最後に書く
どちらが良いでしょうか
asyncとdeferは前後しまくってバグりまくって手がつけられなかったです 纏めないほうが必要になった時点でモジュールを遅延ロードとかもできるし明らかに早い 質問させてください
<input type="file">
<div id="hoge" style="display:none;">
HOGE
<input type="button id="piyo">
</div>
上記のソースコードで
ファイル選択時にHOGEの枠を表示したい
piyoクリックでHOGEを非表示したいです
よろしくお願いします <input type="file">
https://developer.mozilla.org/ja/docs/Web/HTML/Element/Input/file
表示・非表示は、display・visibility プロパティの2通りがある
jQuery で作ったけど、ボタンを押すと、テキストとボタンも消えてしまうから、
ボタンは、div の外に作らないといけない
<body>
<label for="file1" style="display:block;">選択して</label>
<input type="file" id="file1" name="file1">
<div id="btn1_wrapper" style="display:none;">あいう
<button id="btn1">押して</button>
</div>
<script type="text/javascript" src="../jQuery/jquery-3.1.0.js"></script>
<script>
$( '#file1' ).change ( function( ) {
$( "#btn1_wrapper" ).css( "display", "block" );
} );
$( '#btn1' ).click ( function( ) {
$( "#btn1_wrapper" ).text( "" ); // 空文字列を設定する
} );
</script>
</body> >>775
ありがとうございます
しかしながら「押して」ボタンは1度使うともう2度目は使えないですか? ボタンを、div の外に出してみれば?
divの中に入っていると、div内のテキストを上書きすると、ボタンも削除されてしまうから、
この構造を変えるしかない ここを、display none に修正して
>$( "#btn1_wrapper" ).text( "" ); // 空文字列を設定する
$( "#btn1_wrapper" ).css( "display", "none" );
ただし、同じファイルを選択しても、change イベントが発生しないから、
フォルダ内に、ファイルが1つしかない場合に困るかも >>773
やっぱりbodyの最後が一番ですよね
headから出っるのが気持ち悪いですが、我慢します
今後はjqueryなども全てbodyの終了直前に書くようにします
ありがとうございました >>779
うおおお!ありがとうございます!完璧です!
感謝! <button type="submit" disabled>
本当は、ボタンも消すと言うよりも、
disabled で有効・無効を切り替えたいだけじゃないの?
ボタンが消えるというのは、奇妙な振る舞い
jQueryでフォームのボタンを有効・無効にする
https://uxmilk.jp/40456 ユーザーサポート歴の長い俺から言わせてもらうと
「一度きちんとボタンが押されたから二度押し防止のためにボタンが無効化されてるんだ」
なんて理解できる一般人はよっぽど精通した人だけ
反応がないとあちこち触って投稿中に別のページに遷移したりする人もいる
だからアニメーション画像と共に投稿中であることを表示して
時間がかかっているようなら更にその旨を表示する
完了するまで触るなと表示する
そのくらいはしないと一般人相手には厳しい jQuery UI のモーダル画面のようなものが出て、
ボタンを押したら「押しました」と確認画面が出るようなものが、
うっとおしいけど、わかりやすいのかも jQueryのバージョンは幾つにしていますか?
wordpressは1.12なのですが、これを使えば良いのでしょうか そんなの自分で決めれよ
なんで他人に決めてもらわなきゃ何もできないんだ? >>786
何をイカってるんだ?
失敗談や地雷バージョンを聞いて避ける事が出来るなら、
それに越したことはないだろう
>>785
それで動くならそれで良い
wordpressなら差分のmigrateも入るからバージョンによる差異は起こりにくい
コードを書く時はno.conflictを外さずに
jQuery(function($){ 〜
に書くこと
もし何かプラグインやライブラリが動かないならjQuery3.x入れれば良い >>787
ありがとうございます!
migrateって?なんですか!?
下のコードもよくわからないのでもっと詳しく教えてください >>788
>migrate
jQuery1.xと3.xの差を埋める差分
>下のコード
そのままだと$が使えない
・WordPress標準のjQueryを使う場合の書き方
http://primarytext.jp/blog/1298
$()使わずにjQuery()使うならキにしなくてもいいけどね >>789
差ってどんな差がありますか?
2.xじゃだめでしょうか?
あとリンクありがたいのですが難しいのでもっと初心者にわかりやすいリンクくれると助かります… >>790
1→3は色々と軽量化、追加・削除された関数等がある
https://qiita.com/fmy/items/345a264a1cf2e2a73f62
1+migrateで3相応の機能になる
2は忘れた。無条件に使わなくて良いバージョンという認識しかない
知りたければ「jquery バージョン 差異」辺りで検索
>あとリンクありがたいのですが難しいのでもっと初心者にわかりやすいリンク
「wordpress jquery $ is not a function」
で検索してくれ 2.x系は最新ブラウザだけに対応すれば良い場合に
古いブラウザの対応を切り捨てたものとして作られたが
結局需要がなくて3.x系で一本化された >>791
> 1+migrateで3相応の機能になる
逆、3+migrateで、1との互換性が完璧になる
基本的に1系と3系には高い互換性があるが、3は1の時代では必要だったが
今は不要な機能などが削除されてたり機能強化に伴う仕様変更などがある
そういったものを復活させるもの
3系に置き換えて動かなくなったものがあればmigrateを使用して
古いコードを置き換えていくことで、3系に完全対応させる >>793
スマン、完全に間違ってた
ずーっと間違ってたわ・・・ migrate入れてるけどなんか動かないなぁ、まぁ互換性100%ってわけでもないしって諦めてた
オワタ 普通に使うなら3でいいのかな?
ajax使わないならその部分削除するとすっごい軽くなると聞いたけど名前が思い出せない
vueと合わせて使ってみたい 3でいいよ
ライブラリ複数入れるのはオススメしない。何かあったら超ハマるぞ vueとかサイト全体をJavaScriptフレームワークに
置き換えるのが前提のものを使うのは大変すぎるだけ バックエンドフレームワークとフロントエンドフレームワークの二重管理になるから
中規模以上のサイトになると両方メンテしないといけなくなる
何か新たにデータを取得して表示させるだけなのに、バックエンドとフロントエンド両方対応しないといけない
しかも整合性合うように
バックエンドでデータは更新されているのにフロントエンドで保持しているデータが更新されていませんでしたとかよくある Vue.js, Nuxt.js では、axios, Lodash を使う bodyではなく何かoverflow-y:scrollがかかっているブロックの中で、目的の要素を頭出ししたいのですが
<article style="overflow-y:scroll height:500px;">
<section style="height: 300px;"></section>
<section style="height: 300px;"></section>
<section style="height: 300px;"></section>
<section style="height: 300px;"></section>
<section style="height: 300px;"></section>
</article>
const $section = $('article').children().eq(3);
const top = $section.offset().top;
$('article').scrollTop( top );
ではどうもズレるようです
というかブロックの中身がいくつであってもtopの値が変わらないですね
こういう場合、何を使えばいいのでしょうか
$section.prevAll().each()で.outerHeight(true)を合計するくらいしか思い浮かばないですが… $section.get(0).scrollIntoView(true)でいけました
こんなのあったんだ… 実験的な機能らしいけど
>>803
マジですか? クリックする度に、HTMLの要素(DIVでもよい)のdisplayをオン・オフ切り替える関数ってどうすれば良いんですか? $(function() {
$('.switch').click(function(e) {
$('.popup').show();
});
});
だと、クリックしたら1度表示されてそれっきりじゃないですか。
もう1度クリックしたら非表示、
そこから更にクリックしたら表示
ってしたいのですが html
<div id="chinko">うんこ<div>
<button id="chikubi" type="button">まんこ</button>
css
.minaide {display: none;}
js
function hadakaodori() {
$('#chinko').toggleClass('minaide');
}
$('#chikubi').on('click', hadakaodori); >>808
非表示のものをどうやってクリックするんだ 再質問ですが、
そのクリックで表示・非表示の切り替えをして、同時にマウスホバーでも表示・非表示をやり、
それらが矛盾無く正しく動作するような関数ってどう作ればよいでしょうか? 私は、ホバーのケースはCSSで、クリックのケースはJSでと分けてしまったせいか、おかしな動きになってしまいます 状態(共有)変数が必要で、それを通して更新する
クリック → 変数 ← ホバー 共有変数として、
$('.switch').checked = false;
こんな感じにしてやろうとしたんですが、上手く行きませんね
.switch っていうのは、オンオフを切り替えるスイッチ役の要素(クラス)です
ウェブページを開いた直後はページ内の全てのスイッチ役の要素はスイッチオフなのでfalseを設定してます。 $(function(){
$('.switch').checked = false;
$('.switch').click(function(e){
if($(this).checked = !$(this).checked){
$(this).next('.popup').css({'display':'inline'});
}else{
$(this).next('.popup').css({'display':'none'});
}
});
$('.switch').hover(function(e){
$(this).next('.popup').css({'display':'inline'});
},function(e){
if(!$(this).checked){
$(this).next('.popup').css({'display':'none'});
}
})
}); >>818
propを使う
https://qiita.com/i47_rozary/items/db77352cc0af8d05d39a
あとjQueryだと
$('.switch').checked = false;
ではなく
$('.switch').checked(false;)
という書き方が多いよ。どっちも動かないけどね JavaScriptでは
オブジェクト.プロパティ = 値;
っていう書き方出来てたのにJqueryでは無理なんですね jQueryもJavaScriptなんだから、
JavaScriptで出来ることはjQueryを使っていても出来るよ こうすれば上手く出来ました
$(function(){
$('.switch').each(function(){
$(this).prop('checked', false);
});
$('.switch').click(function(e){
if($(this).prop('checked',!$(this).prop('checked'))){
$(this).next('.popup').css({'display':'inline'});
}else{
$(this).next('.popup').css({'display':'none'});
}
});
$('.switch').hover(function(e){
$(this).next('.popup').css({'display':'inline'});
},function(e){
if(!$(this).prop('checked')){
$(this).next('.popup').css({'display':'none'});
}
})
});
ありがとうございました サンプルコードをどうぞ
https://codepen.io/infologicmation/pen/yGVzdw
クリックによる表示・非表示切り替え
と
ホバー・アウトによる表示・非表示の切り替え
が矛盾無く共存できています >>824
span要素にcheckedプロパティは存在しないのでpropは使ってはいけない >>824
cssメソッドではなくclassを設定するようにしましょう >>824
hoverはCSSを使用するようにしましょう 模範解答例
https://jsfiddle.net/w6bm0fn5/
[JavaScript]
$(document).on('click', '.switch', function() {
$(this).toggleClass('checked');
});
[css]
.popup {
display: none;
}
.switch.checked + .popup {
display: inline;
}
.switch:hover + .popup {
display: inline;
}
HTMLは>>824から変更なし
jQueryは最小限のJavaScriptで実現できる = HTML+CSSにメインの処理を任せることで高速に実行できるのです。 >>828
凄いです。綺麗です
ありがとうございました。 クラス名に「checked」という名前つけるのは避けるな俺なら JavaScriptはなくても出来る
https://jsfiddle.net/ry9Lhpz7/
>>830
微妙なところだね。本質的にはcheckboxと同じだからねぇ Vue.js などの、リアクティブ・プログラミングだろ 今って即時関数に閉じ込めないんですか?
(function() {
//処理
})(); なぜ、何を閉じ込めたかったのか?
それはvar変数のスコープが関数スコープだったため、var変数のスコープを閉じ込めたかったのだ。グローバルと各ブロックで変数名が衝突しないように。
ブロックスコープなletとconstがある今、それは(大抵の場合)不要。 >>834
それです。
const baz=()=>{
let foo=1;
console.log(foo);
}
ダメですか node.js用でないただのローカルhtml+jsファイルから
node.js用のjsを呼び出して(起動させて)返り値を得る…みたいなことってできないですかね
現時点ではわざわざコマンドプロンプトから「node ○○.js」ってやってテキストファイルを生成させて
そのテキストファイルを開いてコピーしてhtmlのテキストエリアに貼り付けってやってるんですが
これを省略したくて…
(html内だけで完結できないのは、生成するデータの取得にnode.jsの認証用プラグインを使ってるため)
htmlファイル自体がちゃんとfile:///でなくnode.jsによるサーバー(localhost)を通ってないとダメなんでしょうか ポン刀持ってヤクザ事務所に斬り込めば返り血を得ることができるよ >>839
Nodeを起動させっぱなしで
WebSocketとかで通信するのはだめなんか? VSCode の拡張機能、Code Runner とか、Ctrl+Shift+P のRun Code みたいな、
簡単に、Node.js で実行する拡張機能はないの? >>841
大人しくそうするのが一番手っ取り早いんでしょうかね…
Nodeを起動させるバッチファイルを書いてスタートアップに登録しておけば起動は問題なし…?
一応Node.jsの触り(ビギナーズブック https://www.nodebeginner.org/index-jp.html)
はやったことあるはずですが、それでも現状からの移行を問題なくすんなり迅速にできるか不安なので
もし他に方法があればと思い聞いてみました バッチファイルをクリックしたら、
HTML出力するコマンド実行して、ブラウザで開くような
バッチファイル作ればいいだけじゃん >>844
あー…?
いえ、>>839にも書きましたが
基本的にはhtmlを使って作業していて、文字列を取得したいときにnode.jsを起動してテキストエリアに貼り付けてそれをhtml側でパースして…ってやってるので
都度htmlを生成するとなると…
とはいえテキストエリアに初期値を設定したいだけのときはそれでも良さそうですね 普通にwebpackとかでつなげりゃいいだけでしょ >>846
node.jsと行ったり来たりする手間は省けてないような…?
>>848
webpackってファイル数をまとめるやつでしたっけ
こういうことにも使えるんですか
>>847
単なるローカルhtmlファイルではやりづらいことも、html由来のデスクトップアプリなら色々できるようになりそうだとは薄々思ってましたが
どうやればいいのかいまいちわからずにいたところでした
まだ少ししか調べられていませんがElectron良さそうですね
TW.jsというのもあるようで… ABCいずれかのクラスを持っている
かつ
DEFいずれかのクラスを持っている
みたいなorとand混合の条件絞り込みってできますか? $('.A, .B, .C').filter('.D, .E. .F') VSCode Amazing Plugin - Quokkajs rapid prototyping playground.
https://youtu.be/klLP8EeTKtc
VSCode の拡張機能の、Quokka.js は?
Node.js で実行したものを、リアルタイムで、端末とエディタ内の両方に表示する
let numbers = [ 1, 2, 3 ]
let doubled = numbers.map( n => n * 2 )
doubled
//=> [ 2, 4, 6 ]
でも、エディタ内の結果からは、コピペできない!
端末からコピペするしかない chromeのコンソールもおんなじことしてくれるのであまり感動しなかった… >>851
どうもありがとうございます
期待通りのものが作れました >>843
個人的なことならブラウザ拡張で済ますって方法もあるよ
どうせNodeも外部通信くらいにしか使ってないんじゃないの? >>852
は、ブラウザではなく、Node.js で実行している
このQuokka.js の無料版は、既に存在するファイルから、実行できない。
新規ファイルでしか実行できない selectboxの各optionの文字色を変えるにはどうしたらいいでしょうか?
背景=$('option').eq(n).css('backgroundColor', c);はできますが
文字=$('option').eq(n).css('color', c);は変わりません
Opera、Chromeで確認してます(foxは共にできず)
addClass使えはなしでお願いします(これでもできませんが) 補足
cは#000000の形式で
文字色を変えるは動的にです >>857
iphoneドラムロールになるし、あれは背景を変えられない
ブラウザを絞ればもう少し対応策があるかもしれない
ただ、諦めたほうが良いとは思う >>859
iphoneや泥は捨てでいいです
動作せずは困りますが色なしは可です
PCのWinで機能すればいいです いや、捨てでいいですって切り分けることが不可能でしょ
もし白黒の電子ペーパー端末で見たり色弱者が見た場合のこととか考えてる? >>857
selectとoptionにスタイルかけるのは無理だから諦めろ
どうしてもやりたいなら代替要素でselectっぽい物を描画するライブラリを使えばいい
このスレ的に言えばjQueryUIでも使えばいいんじゃないか? >>864
これな〜
モバイルだと画面の下の方でそれクリックすると下にはみ出して操作性悪いんだよな
あまりオススメできない
モバイルのデフォルト機能に任せた方が、個人的には良いと思う まあモバイル捨てていいらしいからいいんでない?
なんならモバイルで見たら普通のselectで出しわけしてもいいし 色弱に配慮する必要あるか?
そんなん言ったら全盲の人にも配慮しろってなって際限無いじゃん 俺は一応配慮してるわ
Lighthouseで指摘されたとこパパっと直してハイ終わり!
属性付けるだけで、2,3時間で全部終わった
まぁこれぐらいならやっといて損はないかなと 色弱ってFirefoxのシェアと同じくらいには居るんだから無視できないでしょ Firefoxは基本Chromeサポートのついででサポートできるからするけど
そうじゃなかったらChrome以外切り捨ててるな俺だったら >>861
そのためにかつ健常者でも見やすくするために色を変えるのです
>>863
背景は通常にできるのにテキストはできず、別の仕組みなのですね
簡単にできると安易に考えてましたがあきらめます
ありがとう
ちなみに>>862は別人 >>861
ちなFirefoxは勝手に切り分けられます >>875
ややこしくなるから次質問する時はIDトリップ付けたほうがいいかも >>877
IDトリップ?検索してみます
忠告ありがとう >>857
ChromeでもFirefoxでも文字も背景も色変わるけどなぁ 見た目挙動を統一したいならCanvas使えばいいだけなのにね
PaintWorkletでも良いけど >>881
Canvasでフォームの値を送るにはどうしたら良い?
ちょっとここにサンプル書いてみてよ Canvasに要素っぽいものを表示して、クリックされた座標でイベントを発火させるだけだよ
難しくは無いけどかなりめんどくさい
ただ、表示は本当になんとでも出来る >>883
いえ、ですからここに書いてくださいと
それとフォームって知ってますか? フォームって知ってますか?って
既存のフォームが嫌で自分勝手に空き放題したいんだから
勝手に好きなように自分がフォームだと思うものを作ればいいじゃない canvasベースのゲームとか流行ると思ったら全く流行らなかったでござる 質問と全然関係ないところで盛り上がるのすきだよなお前ら >>886
Canvas使う意味がないですよねって話をしてるんだが
普通に画像でいいやん >>887
html5ベースのゲームはほぼ100%canvasでしょ >>881
そんなめんどくさいことしてるの?
できてもクソ重くね?
あと見た目挙動を統一なんて誰か言ってたっけ? >>890
> html5ベースのゲームはほぼ100%canvasでしょ
そういうのってフレームワーク使わないよね?
っていうか、それHTML5ベースと言って良いんか?
canvasタグ以外のタグ使ってないやろ? >>889
お前大アホ?
セレクトボックスの話をしてるんだぞ? >>893
だからセレクトボックスをcanvasで作るとか無駄な努力でしょ
HTML使ってできるものをわざわざ独自で作るとかさ どんな環境でも同様の表示がしたい場合はHTMLでは困難だし
しようとすること自体がナンセンスと言ってるんだが伝わらなかったか HTML5は同様の表示ができるように
作られたものなんですが? HTMLはテキストとセマンティクス(意味)を伝えるために作られた物で
表示に関しては・・・ね >>879
いわくできるみたいだが
どうせハッタリだろうが Chromeが出た瞬間くらいにとくにセレクトボックスの色つけも含めて
HTML/CSS/JSの挙動について大規模に実験した記憶があるけど
ブラウザによってこれは反映されるけど、こっちは反映されないとかバラバラだったな
確かFirefoxはかなり検討してた
だけどimodeブラウザ2.0、NetFrontだっけ?が一番正しいってこともままあったな
HTML5がムーブメント生まれる瞬間でとにかく足並みを揃えさせるが難しかった時代
divで1点1点打つCanvasのポリフィルとか作った記憶がある
それでたしか100x100くらいの表示させるとガラケーで1フレーム数分とかかかってた
imodeのコンテンツ保護を無効にする手順とか、ブラウザをクラッシュさせるJSとか
沢山発掘して今思うと一番Webを楽しんでたときだな
__proto__廻りのバグやそれを元にした脆弱性とかも普通に俺でもホイホイ見つけられた時代 そのうち半分くらいは報告したが
今のように報奨金制度とか全く流行ってなかったので
特にお礼も言われずに終わってたのが今振り返ると悔しい >>899
Firefoxは背景色表示はできてたが
あるバージョンから突然できなくなってしまった と思ったらこのスレ見たのかまたできるようになってて草
コード何一つ変えてないのに お前の思考レベルが草だろ
Firefoxがいつ更新されたと思ってんだ
糞馬鹿か 47 名前:仕様書無しさん[] 投稿日:2018/12/05(水) 18:33:46.31
https://w3techs.com/technologies/overview/javascript_library/all
> w3techsによると2017年1月の時点で71.9%のサイトがJavaScriptのライブラリとして
> jQueryを使用していることが判明し、それ以降もシェアの増加が続いていたが、
> 2018年4月〜2018年10月の約半年間で変化が見られず、ようやく73.3%〜73.4%で
> 増加が停止したようである。
73.5%に増加してるな。まだ微増してるってことか?
48 名前:仕様書無しさん[] 投稿日:2018/12/06(木) 07:20:27.93
jquery最強じゃないかwww
react 厨さん息してますかー?
49 自分:仕様書無しさん[sage] 投稿日:2018/12/26(水) 21:45:04.58
https://w3techs.com/technologies/overview/javascript_library/all
> w3techsによると2017年1月の時点で71.9%のサイトがJavaScriptのライブラリとして
> jQueryを使用していることが判明し、それ以降もシェアの増加が続いていたが、
> 2018年4月〜2018年10月の約半年間で変化が見られず、ようやく73.3%〜73.4%で
> 増加が停止したようである。
> 73.5%に増加してるな。まだ微増してるってことか?
あぁ、もうだめだ。 73.6%にまた増加してる。微増し続けてた。 増えているのはアフィゴミどもとかが量産してるwordpressが増えているから
これを開発者がjQuery使ってるとか勘違いするバカが勝ち誇ってるだけ その可能性はあるよね。WordPress使ってるところが32.8%、何も使ってないのが45.1%だから
https://w3techs.com/technologies/history_overview/content_management/all/y
仮にWordPressを使ってるサイトをJavaScriptを使ってないとみなせば
jQueryのシェア 73.6% は 40.8% 相当と考えられるかもしれないよね!
それでもJavaScriptライブラリを使ってないサイト24.3%よりはるかに多いけどね!
そんなことよりReactのシェアが0.5%から0.2%に減ったのが問題なんじゃぁ >>907
wordpress以外にもjQuery使ってるかもわからんゴミサイトがたくさんあるからな
お前はゴミをかき集めて勝ち誇ってるゴミ信奉者
そんで>>904の分析頼む でもそれいったら、React使ってるゴミではないサイトは
手足の指の数程度だろ・・・ 分析も何も、このアンケートに記録した人は
普段どんなものを作ってるんですか?でしか無いと思うけど?
どうせウェブサイトではなくてウェブアプリ開発者用のアンケートで偏ってるんでしょ?
切り取ったデータでわからないけど、せめて誰を対象としたアンケートなのかいってくれないとね 世界的にはjQueryはバカ御用達ライブラリという認識
もはやバカか無能しか使わないんだよ そう思ってないとやってられないんだよ
冷静に考えるとメリット無いんだが
ほらみんなやってるしすごいって言ってるし 質問です
自作のページ【A】で、何かしらのイベント(例えば'#a'をクリック)が起こるたびに
バックグラウンドで開いた他者製のページ【B】で、何かしらのイベント(例えば'#bをクリック')を起こしたいと思っています。
自分で考えつく方法としては例えば、Chrome拡張機能などで他者製のページ【B】に対し
「このページが開かれるたびに'#b'をクリック」
というユーザースクリプトを設定しておき
自作のページ【A】で'#a'をクリックするたびに【B】を開く⇢すぐ閉じる
くらいしか思いつきませんが
開いたり閉じたりしない、もう少しスマートな方法ってないでしょうか? >>916 追記です
「このページを開いたとき」でなく
$(window).on('focus')
としておき、タブを切り替えるだけでいけますかね…?
しかしページを新たに開くのでなく、元々開いているタブにフォーカスを切り替えることなんてできるんでしょうか >>917
なんて言えばいいのかちょっと難しいですが
業務上ちょいちょいクリックしたいボタンがあって
(悪いことではないです その他者製のページというのも半ば身内製と言いますか…
自由に変更要望を出せるものではないんですが)
わざわざ画面を行き来してボタンを探す時間の節約…
という面もありますが、うっかり忘れを防止したいというのもあります
(2つのページをセットで作業してるものの、基本的にAのページばかり開いててBの作業をやり忘れることがよくあり
忘れてて後からになると業務に遅れが生じてしまうので…) 【Ruby】window_handles・・・複数のウインドウハンドルを取得する
http://www.seleniumqref.com/api/ruby/window_get/Ruby_window_handles.html
Selenium WebDriver の、
driver.switch_to.window(ウィンドウ・ハンドル) Ruby で、Selenium WebDriver なら、
driver.navigate.to url_0 # url_0 を開く
driver.execute_script( "window.open()" ) # 新しいタブを開く
driver.switch_to.window( driver.window_handles.last ) # 新しいタブへ移動する
driver.navigate.to url_1 # url_1 を開く
all_handles = driver.window_handles
driver.switch_to.window( all_handles[ 0 ] ) # url_0 へ移動する その用途でSeleniumを使うのは時間の無駄だって言っておく そしてseleniumはJava製。いろんな言語のドライバが出ているがrubyのドライバはメンテナンスが悪い。るび〜すと(笑)が飽きっぽく、「る、るびぃ〜でもできるしっ」と言いたいがためだけの実験作だからだw $ gem list selenium
selenium-webdriver (3.141.0)
Ruby のは、141 まで進んでいる! >>917
web上の事務作業を楽にするって事だろう
>>916
基本的には難しい
もしjsで別タブを触れるとすると、サイト開いた瞬間に全タブの情報を抜き取るってアホみたいな事が可能になる
>自作のページ【A】で'#a'をクリックするたびに【B】を開く⇢すぐ閉じる
>くらいしか思いつきませんが
>開いたり閉じたりしない、もう少しスマートな方法ってないでしょうか?
これが通るならコレでいいと思う
>>920はアホみたいな方法なので止めておいた方が良い そりゃ、JavaScript は、そのページ内・DOM を操作するものだろ
一方、Selenium Webdriver は、ブラウザを操作するもの。
そのブラウザで開いている、すべてのページを、人間がするように操作できる
役割が異なる まあchrome限定でいいならpupetteerで両方できるんですけどね 質問させてください。
これのaryC選択を、aryAとaryBの両方を参照するようにしたいのですがどうしたら良いでしょうか?よろしくお願い致します。
↓
var aryA=["動物","植物"];
var aryB=[];
aryB["動物"]=["哺乳類","両生類"];
aryB["植物"]=["種子植物","その他"];
var aryC=[];
aryC["哺乳類"]=["ヒト科","サル科","ネコ科"]
aryC["両生類"]=["カエル科","サンショウウオ科"]
aryC["種子植物"]=["被子植物","裸子植物"]
aryC["その他"]=["シダ植物","細菌類"]
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1222942487 var a=["X","Y"];
var b=[];
b[ a[0] ]=["A","B"];
b[ a[1] ]=["C","D"];
// b => [ X: [ 'A', 'B' ], Y: [ 'C', 'D' ] ]
var c=[];
c[ b["X"][0] ]=["0","1"];
c[ b["Y"][1] ]=["2","3"];
// c => [ A: [ '0', '1' ], D: [ '2', '3' ] ] >929
修正。これを
c[ b["X"][0] ]=["0","1"];
c[ b["Y"][1] ]=["2","3"];
これに変えても、同じ
c[ b[ a[0] ][0] ]=["0","1"];
c[ b[ a[1] ][1] ]=["2","3"]; Firefoxってwidth、height操作のアニメーションやslideDownの挙動がすごくもっさりしませんか? とあるサイトに対して、Chrome用のユーザースクリプトを作っています。
そのサイトでは、内部で一気にまとめて処理すればいいところを
わざわざ人間が#a #b #c #dという4つのボタンを順番に押さなければなりません。
これを何らかの1動作(例えば右クリック)だけで済むようにしたいのですが
ただ単に
$('body').on('contextmenu', () => {
$('#a').click();
$('#b').click();
$('#c').click();
$('#d').click();
return false;
});
などとしただけでは、#aの処理が終わる前に#bがクリックされてしまいうまくいきません。
setIntervalを使う以外にどんな選択肢があるでしょうか?
$.when().done()とかだと「クリックをしたことによって起こったイベント」までは待ってくれないですかね? 「起こったイベント」という言い方だとなんか変だったかもしれませんね(クリックそのものがイベントか) >>932
a,b,c,dの処理はどう定義されているのかを調べてから質問してくれ 完了した際にドム内容が変更されるなら
DOMSubtreeModified propertychange
で検知すればいいと思う $.when().done() などがネストする場合は、使えるなら、async/await などが良い
>#aの処理が終わる前に、#bがクリックされてしまいうまくいきません
単に、処理A・B を続けて書いているだけなのに、実行される順番が変わるのか?
そんな事があるのか? ああ、ABCD の順番でクリックされるけど、
Aの処理に、時間が掛かっている間に、
BCDの処理の方が、先に終わってしまうという事か
それは、非同期処理の順番を指定するしかない 要素の中心を起点に拡大・縮小させながら対象をshow,hideさせることはできますか >>936
#a,b,c,dが非同期処理なら、あり得る >>938
要素による。inlineとかだと出来ないので、一時的にdisplayを変更したりwrapperを設定する必要がある
あと、文字のサイズも変わらないので何か変になると思う ・canvasを変更
・ページ遷移
この時、canvasで変更された内容をそのまま持ち越すということは可能でしょうか?
ajaxでcanvas意外を変更するか、画像で一旦どこかに保存するしかないでしょうか >>940
アニメーションはCSSでやったほうが良さそうですね
show→アニメーションはできたのですが、アニメーション→hideがうまくいかず… >>941
data uriにして持ち越すか
描画するデータを持ち越して再描画するかかな >>943
あーなるほど、別にdisplay:none;にすることに拘らなくてもいいですね
transform:scaleでギリギリまで縮小して最後にwidth、height0にするようなkeyflames書いてみます >>938
foreignObjectを使ってCanvasに描画してやるのがオススメ >>946
ふつうにtransform: scale()じゃだめなのか 遅くなりましたが>>932です
>>934
デベロッパーツールで調べてみるとどういうわけか、
#a〜#dを押すことによって実行される関数a()〜d()自体は単に<head>内にa.js〜d.jsを追加するというだけのものでした
a.js〜d.jsの中身はいずれもわずか20行ほどで、for内でreplaceを繰り返した結果を<textarea>に反映させるというものです
(何故こうなってるのかはちょっとわかりませんが… なにか意味あるんでしょうか)
使うのが今だけなら、いっそこれらの中身を全部コピペしてユーザースクリプトにまとめてもいいんでしょうけど
a.js〜d.jsの中身(replaceすべき文字列)が将来的にいつの間にか書き換わってることもあるでしょうからそれは避けたいなと…
>>935
DOMSubtreeModified propertychange!
そんな凄いものがあったんですね…!
これは今後色々捗りそうです
今回は<textarea>の中身がJSで勝手に書き換わるのはどうもonchangeでは検知できないようで困っていたのですが
先述のように<head>内に<script>を追加するのを検知すればいけるかもしれません
>>936-937
つまりこういうケースではasync/awaitのみの1択…という感じですかね
async/awaitなら全部待ってくれるんですね > つまりこういうケースではasync/awaitのみの1択…という感じですかね
ぜんぜん違う。というか関係ない
絶対に使わないというわけではないが、問題解決のための手段ではない
例えば、3人交代で仕事する時、相手に起きた出来事を引き継ぎするだろ?
async/awaitはその引き継ぎ作業に相当する。
引き継ぎは行うことだが仕事内容ではない > 今回は<textarea>の中身がJSで勝手に書き換わるのはどうもonchangeでは検知できないようで困っていたのですが
使えないんじゃね? DOMツリーが変わるわけじゃないんだから >>949
では他にはどんな引き継ぎ方があるでしょうか?
(ユーザースクリプトからだと、関数a()を直接呼び出すことはできませんでした)
>>950
<head>への<script>の追加はDOMツリーの変更とは見なされず、DOMSubtreeModified propertychangeでは検知できない…ということでしょうか >>951
調べるのは引き継ぎ方じゃなくて、clickの中でやってる処理が終わったタイミングを知る方法
それさえわかればasync/awaitなんぞ使わず普通にclick()使えばいい >>952
ではやはりそれぞれの関数が最終的に行っているのは<textarea>のvalueへの文字列の代入ですね… >>932
順序なんて考えたくないでござる!って場合はこれでどうだ
str = '';
$.get("a.js", '', function(response) {
str += response;
$.get("b.js", '', function(response) {
str += response;
$.get("c.js", '', function(response) {
str += response;
$.get("d.js", '', function(response) {
str += response;
});
});
});
});
eval(str); 完全に自分用のjsならこれでいいやろ。順序は絶対に狂わない
エラーは適当に書いてくれ なんで最初っから定数としてundefined用意しなかったの
関数にするとしてもundifined返すための関数なら引数いらなくね
なんでvoid(0)ってしてるの?なにを評価してるの >>958
http://memories.zal.jp/WP/blog/20150504_2542.html
http://blog.yuku-t.com/entry/20111111/1321021731
※下は2011年の古い記事
昔はundefinedを上書きできてしまう仕様だったので、
それに対する保証としてvoid()があったと思われる
>なんで最初っから定数としてundefined用意しなかったの
これは全員思っていると思う
変数でundefinedは正気の沙汰じゃない
つまり今は使う意味が無いと思う >>959
今もundefined変数を定義出来るので、状況によっては必要
(typeof演算子で代用出来るケースがほとんどだと思うが) constと思ってた、違うのか
var undefined = 1
これどうなってるんだ
代入がエラーにならないけど何を代入してもundefined が返ってくる >>958
voidは関数ではなく、演算子だぞ
演算子に(0)を与えるコードが異常 >>961
グローバルコードだろ?
constや関数コード内のvarでやってみろ
グローバル変数を書き換えられない理由はObject.getOwnPropertyDescriptor() jsのundefinedは幾ら何でも特殊すぎる
新しくnullを作って欲しい jsでnullとundefinedって別だよね
他の言語でもそうなの? nullとundefinedが2つ存在して、同値扱いは普通に考えてないんじゃない? null == undefined
>true
null === undefined
>false
やめろ 同値判定でfalse出てんだから同値じゃないじゃん。
どうちてそんなこと言うの? 出とるぞ
null == undefined
>true
同じ形ではないようだが >>968
そうだよ
だから、そもそも同値扱いしかあり得ないし、>>966は考慮にも値しない × そもそも同値扱いしかあり得ないし、
○ そもそも同値扱いはあり得ないし、 ==も===も両方EqualityExpression何だが
仕様書にないオレオレ用語は止めてくれ ・抽象的な等価性比較 (Abstract Equality Comparison) (==)
・厳格な等価性比較 (Strict Equality Comparison) (===) ・=== を使用する 厳格な等価性 (strict equality) ("三重等号" または "同一性 (identity)")
・== を使用する 寛容な等価性 (loose equality) ("二重等号") J.Celko 信者のミックが書いているけど、
データベースでは、3値論理。Ruby もそう。
true, false, null
E.F.Codd は、unknown も加えた、4値論理を唱えたけど、
あまりに複雑すぎて採用されなかった JS, PHP では、必ず厳密等価演算子を使うべき!
使わないと、想定外に型変換されて、バグる
Ruby では、バグる要素が多いから、これを採用しなかった Rubyにおける==,===,eql?,equal?の違い
https://mickey24.hatenablog.com/entry/20100910/1284052782
==
オブジェクトの同値性のチェック
クラスやオブジェクトの性質に合わせて再定義できる
===
オブジェクトの同値性のチェック(所属性を加味)
case式で使われる
クラスやオブジェクトの性質に合わせて再定義できる
eql?
オブジェクトの同値性のチェック(==より厳密)
Hashで二つのキーが等しいかどうかを判定するのに使われる
クラスやオブジェクトの性質に合わせて再定義できる
再定義した場合はhashメソッドも再定義しなければならない
equal?
オブジェクトの同一性のチェック
object_idが一致するかどうかを調べる
再定義してはならない es2015からちゃんとSameValueの考え方が示されてる def 、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww >>985
これは酷い。この体たらくで簡単だのバグりにくいだのホザいてんだから呆れる。 必ず===を使うべきというのは間違い
どちらかと言えば==を使うべき
ここ20年職場でもネットでも色んな人を見てきたが
==の方が使用頻度かなり高いのにハマった人は同じくらい
例えばよくあるパターンが正規表現でマッチして数値と比べる場合
==を使うと数値と文字列を勝手にいい具合に比較してしまうとしても
===を使っても数値と文字列が意図せずに来てしまうことには対処できない
本当の問題は数値と文字列が意図せず混在しやすいというところにあるからだ
そうしたときに、==だと高確率で実際問題が起きないが、===だと直ちにハマる
いくら潜在的なバグを生みうると言ったって、その確率は経験上こだわる必要がないほど低い >>988
正規表現なら、if(/^\d+$/.test(1234)) のように書くので、===も==も使わない なるほどif(/^\d+$/.test('+1234'))あ、あれ?通らない…(TдT)
if (+1234 == '+1234')は通るのに… >>991
俺がなんでああいう独特な書き方をしたか分からないか?
書いたことはちゃんと理解してくれないと困る
「本当の問題は数値と文字列が意図せず混在しやすいというところにあるからだ 」
と言ってるだろう
君は正規表現でマッチした値を変数に入れたりすることは一切ないのだろうが
世間ではよくあるのだよ 正規表現って何でコーテーションで囲まなくても良いの?
これが良くわからない
replace('/foo/')
としてしまってアレアレってなる >>996
まずJavaScriptのリテラルはこれだけある。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#Literals
'foo'は文字列リテラルで、
/foo/は正規表現リテラルだ。
昔からある堅い言語は正規表現リテラルがないから文字列からnewして作ってた。
JavaScriptでもそのような作り方もできる。
new RegExp('foo')
これは/foo/と同じように使える。
詳しくは述べないが厳密にはちょっと異なるのでリテラルで書くことを推奨しておく。 >>996
あとほんとに'foobaz'を'barbaz'に変えるようなreplaceは
'foobaz'.replace('foo', 'bar')と、単純に文字列でいい。正規表現使う必要ない。 >>997-998
そういう事なのか、ありがとう
ずっとよくわからずに使ってた このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 453日 14時間 47分 50秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。