+ JavaScript の質問用スレッド vol.121 +
■ このスレッドは過去ログ倉庫に格納されています
JavaScript に関する何でも質問スレです。
お気軽にどうぞ。 Ruby など、たいていの言語に、複合代入演算子がある ここでの質問なのかわからないですが
アナリティクスなどで、訪問者のiPhoneのバージョンがわかるようにしたり、集計ってできますか?
例えばiPhone12が○○アクセス、全体シェア○○%のように >>802
GAならこっちで聞いた方がいいよ
【アクセス解析】Google Analytics 8 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/hp/1485660054/ const $el = document.getElementById('hoge');
let func = () => {
console.log($el);
}
setInterval('func()',1000);
としたところ、$elはnullになってしまいます。
let func = () => {
const $el = document.getElementById('hoge');
console.log($el);
}
setInterval('func()',1000);
とすれば$elには値が入りますが、setIntervalを実行する度にconstをセットするのが
どうもスマートでないように思います
JSの作法的に正しくて、スマートに書こうと思ったら
どう改善したら良いでしょうか? >>804
setIntervalの気持ち悪い書き方を直すだけ
setInterval(func,1000); スマートな書き方を聞くやつはスマートじゃないの法則 Firefox のコンソールで 0/-2 など 0を-xで割ると -0と出るのですが
プログラミングでは一般的なのでしょうか
0と出てきて欲しいんですが >>809
>プログラミングでは一般的なのでしょうか
そこそこ一般的 ありがとうございます。
よく考えれば今回は-0でも問題ありませんでしたのでそのまま処理しました。 https://developer.mozilla.org/ja/docs/Web/JavaScript
完全な初心者向け
JavaScript ガイド
中級者向け
上級者向け
リファレンス
ツールとリソース <style>
#test{
filter:sepia(50%);
}
</style>
<ul id="test">
<li><img src="./img1.png"></li>
<li><img src="./img2.png"></li>
</ul>
<input type="button" value="クリック" オンクリック="aaa()">
<スクリプト>
function aaa(){
var elm_list = document.querySelectorAll("#test li");
elm.list[1].style.filter = "sepia(0%)";
elm_list[1].style.border="Solid 3px #0000ff";
}
</スクリプト>
セピアを0にして画像を元の色にしたいんだけど色が変わりません
borderの方は線が表示されたのでセレクタは正しいと思うけど
どうしてでしょうか?どうすれば元の色にできますか? ulに対してsepia(50%)設定してるのにliを0%にしたところで変わらんよ
見た目は子孫に影響するけど、プロパティ値は継承しないのでdisplayやopacityなんかと一緒で親の効果を上書きできるわけではないよ
#test li {
filter: sepia(50%);
} 特定の要素から特定のイベントのイベントリスナーを削除することは可能でしょうか?
関数への参照を保持していない状態です。
具体的にはwindow.addEventListener("storage",function(){〜})の形で登録されているようなものです。
ピンポイントで上記だけ削除するのが難しいようであれば、window要素に紐づくstorageイベント全てを一括削除という形でも問題ないです。 chromeはできるかわからないけど
firefoxならublock originで
yahoo.co.jp##+js(aeld, storage,/functionの中身を正規表現で/)
でいけそうだけど >>820
要素のイベントを全て削除
elm.replaceWith(elm.cloneNode(true))
windowはアキラメロン イベント登録前に割り込めるならEventTarget.prototype.addEventListenerあたりをフックするとか addEventListenerをフックするのが一番現実的なんですかね?
しかし、要素に紐づくイベントリスナーや、管理している全てのイベントリスナーを出力するみたいな関数は存在しないんですね……
ありそうなものだけど、というか無いならどこでどうやって管理してるんだろう…… >>825
自分で書く部分ならもちろんそうするんですが、Chromeの拡張で特定のページの邪魔な動作をシャットアウトしたいんですよね。 X軸方向のスクロールを常に禁止にし、常にスクロールをゼロの位置にする事って可能でしょうか?
cssでスクロールバーを出さない方法はありますが、要素が自由に動いてしまうのでスクロールしてしまう事が多々あります >>822 に一票
クローンして差し替えることによりelmとその子孫のイベントリスナーが消え、その他の属性は残る >>826
キャプチャリングフェーズでstopPropagation #test li{
background:#0000ff;
}
#test li:hover{
background:#00ff00;
}
というcssがある場合hoverのbackgroundを取得したいんだけど
querySelectorAll("#test li:hover")とやっても取得できませんでした。
どうやればいいんですか? :hoverはquerySelectorAllで取得できません
ちなみにgetComputedStyle(element, ":hover")もできない どうやったらできるかを考えるのが、
あなたたちの仕事です hoverのプロパティ自体を見たければstyleエレメントを見ればいいんじゃないかな
いまカーソルがのってるかを見たいなら
mouseoverイベントか対象にtransition入れておいてtransitionのイベントを見ればいいんじゃないかな >>832
<ul id="test">
<li>aaa</li>
<li>bbb</li>
</ul>
var element_list = document.querySelectorAll("#test li:hover");
var st = getComputedStyle(element_list[0]);
var val = st.getPropertyValue("background");
alert(val);
こうやっても取得できなかった
他に方法はないんですかね >>837
document.styleSheets クエリーセレクターにホバーは入れられないって言ってるだろ >>835
それは
var element = document.getElementById("test");
element.styleということですか? jQuery には、hover 時のイベントがあるけど >>841
>>835は意味不明
style要素といってるから、まずはstyle要素でスタイルを定義するところからなんじゃない? >>844
style要素だよな?
link要素で外部CSS定義していたら、style要素に書き換える必要がある
何のためにそんなことする?
内容からCSS記述をパースさせるのか? >>845
element.onmouseover = function(){
element.style.background = cssのhoverから取得したbackground;
}
というふうにしたかった >>846
それは「styleプロパティ」という
>>835は「styleエレメント」といっていたから意味不明だった
そして、styleプロパティでは>>831定義のCSSを取得出来ない >>Array.from(document.styleSheets).map(e=>Array.from(e.rules).map(e=>e.cssText).join()).join().includes(":hover")
←true F12 開発者ツールのコンソールで、実行した
style_sheets = document.styleSheets
css_rules = style_sheets[0].rules
css_rules[1].cssText
出力
'#test li:hover { background: rgb(0, 255, 0); }' そりゃdocument.styleSheetsで取得出来ないとは誰もいってないし 見苦しい言い訳は不要
負けを認めるか、潔く退場するかの2択 スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります リスクも回避方法もない
過去には問い合わせで許可を得た上で図書館のサーバーにスクレイピングをした人が捕まってる >>851
#test1 li:hover,#test2 li:hover{
background:#0000ff;
}
というような書き方の場合test1 li:hoverを取得できないやろ >>854
俺は>>838と>>843,845,847だが、何も間違ったことはいってないつもり
どの辺が言い訳なのか教えてくれ 俺からすると>>844,846が言い訳
「styleエレメントを見ればいい」に突っ込み入れてるのに、頓珍漢な返答で困った 結局言い回しに数レスかけて難癖付けたってだけの話ね 結局、正答は>>838と>>848だけ
他の回答はノイズでしかないでしょ >>860
言い回しだけでなく、ミスリードだと思うんだが、お前に分かるなら教えてくれ
>>835
> hoverのプロパティ自体を見たければstyleエレメントを見ればいいんじゃないかな
「styleエレメント」の言い回しを修正したとして、hoverのプロパティをどうやって取得するんだ? >>855
5ch は、マルチポスト禁止!
同じ質問を、複数のスレや外部のサイトに書いてはいけない
プログラム板のスレに回答しておいた
【まず1嫁】くだすれPython(超初心者用) その54
https://mevius.5ch.net/test/read.cgi/tech/1623240344/867 >>862
また言い回しだね
プロパティ(の内容)ってなんで補完できないかな >>864
いやだから、それでどうやって実装する? 言い回しが悪ければ実装手段も示せない>>835の負けだな
言い訳が見苦しい 頭のおかしい人に以下のようなことを言われました
>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない
具体的な書籍名を教えてください
>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない
どこでそんなルールが決まっているのでしょうか? >>871
>>835と何の関係もないコードを出されましても 横からだが、>>835が>>848になるとは俺も読めんわ
どう解釈したらこのコードになるのかさっぱりわからん 分かるが、こんな難解コード書くならループ書くわ
スタイルシートを回って、ルール回って、全部をテキストとして結合して、:hover が含まれてるか判定 翻訳してみた
hoverのプロパティ自体を見たければstyleエレメントを見ればいいんじゃないかな
↓
:hover疑似クラスを見たければ、document.styleSheetsを見ればいいんじゃないかな
間違ってる部分は他の正しそうな単語に置換していけば、いずれは正解に辿り着く
質問者は変換作業を頑張れ styleエレメントをdocument.styleSheetsと読みかえるところがエスパー力高いな それって CSSの優先順位や詳細度に継承おまけにimportantやなんか考慮するととてつもなくややこしくなるんじゃ >>878
コードから文章を読み取るのは出来そうだが、コードがない状態で文章からコードを作るのはまず無理だろうな >>878
hoverのプロパティ自体とあるから中身をa.style以外からとろうとすれば
document.styleSheets[x]ぐらいしかとるとこなさそうだけど >>881
正解を知ってる俺達が文章を改竄するのは難しくない
だが、もしも俺が正解を知らない質問者なら、document.styleSheetsには辿りつけない a.style以外からとるんだなとわかればぐぐればすぐわかるわな みんなすげーな
エスパー力5の俺にはJavaScriptは無理だと思った 質問者はstyleの定義まで知ってるのだから
たどりつけないことはないと思うけどなあ 0からググるのと
なにか入ってからググるのでは大違いだからな >>820なんですが、>>830の方法が今回やりたいことに一番適合してていい感じに止めたい処理止めれました
回答頂けた方々ありがとうございます 有名企業などのサイトのsourceを見てみると、大概見た事ない独自の?jsファイルが山盛りなんですけど、
あれってどういう事ですか?three.jsだとかそういうの直接使わないで組み替えたりするんですか?
あとなんであんなに山盛りscriptがあるのか、、読んでも全く勉強にならないしどう勉強したらいいかもわあからない、、 >>892
そういうのを自分で調べないから
いつまでたっても理解できないんだよ 一個一個ublockでブロックしていったら何をしているかわかるんじゃないの? >>822
横からですが、子要素のイベントが残ってたら便利そうと思って試してみたらら
全部外されてしまいましたw
自作関数なら参照リレー渡しが無難ですね 数学座標を画面座標に変換する関数はありますか?
あれば何を使えばいいんですか?
画面座標は左上が(0.0)で下方向に行くとがy座標が増加
数学座標は中心が(0,0)で下に行くとy座標がマイナスなので
これを画面座標に変換しないとちゃんと表示できないので
■ このスレッドは過去ログ倉庫に格納されています