+ JavaScript の質問用スレッド vol.136 +
■ このスレッドは過去ログ倉庫に格納されています
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください
■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです >>518
使えるブラウザと使えないブラウザがある
新しく追加された仕様だから、まだ対応してない
ブラウザがあるということ
そういったブラウザ間の互換性を吸収するためにjQueryがある >>519-520
chromeとff試しましたがnot a functionでした
なるほどcallしてみます
>>521
ブラウザの拡張にするほどでもない感じの簡易ブックマークレット用途なので
仕方なくDOMapiを使ったのです
使いたいサイト先がjQuery使ってればよかったのですが。 そういや昔ブックマークレットで改行ができないのが嫌で、
ブックマークレット自体はscriptタグを書き出すだけにして
特定のURLのスクリプトを読み込むようにしたなぁ >>518
[...document.getElementsByTagName('div')].map() >>518
NodeListはArrayライクオブジェクトであってArrayではないので、Array.fromで変換しましょう ただしArray.fromが全てのブラウザで動くとは限りません 新構文使った[...]とは違って単なる関数だからポリフィルあるし。 ということで、ブックマークレットにポリフィル埋め込みましょう! NodeListはmapはないけどforEachもってるよ getElementsByTagNameが返すのはHTMLCollection
DOMは歴史的理由から、直感に反するような仕様が多いので
それを無くすためのjQueryでもある 秘技・プロトタイプ拡張でmapを生やすという手もあるぞ ただしDOMオブジェクトをプロトタイプ拡張
できるかどうかはブラウザ依存である >>531
ほんとだ、getElementsByTagName が返すのは NodeList じゃないんだな…
簡単に回したいなら document.querySelectorAll(‘div’).forEach でいいんじゃね >>534に書いてあるように、
実装を変える前のブラウザでは動かない >>535
querySelectorAllが実装されていたとしても
forEachが使えるかどうかはブラウザ依存 >>518
返すのが配列じゃなくてコレクションなんて気づけないよね最近は
色々便利になってきたし
jQuery以前に俺俺ライブラリ書いてたおっさんたちは
同じようにハマったからよく知ってっけど w3mやlynxではcallもダメだろ。つまりブラウザ依存。 逆に最近のほうが気付き易いだろ。
なぜならconsoleで実行するとコンストラクタ名が表示される親切機能ついてるし最近 Ruby のNokogiri は使いやすいけど、単数・複数形が異なる
一方、jQuery では、0・1・複数形のすべてが配列だから、シームレスに書ける >>542
死ね不人気クソ言語キチガイ苦しんで死ね > 返すのが配列じゃなくてコレクションなんて気づけないよね最近は
もともとJavaScriptはブラウザが実装しているDOM(C/C++で実装)
しているものを、呼び出して使える簡易な言語だったからな。
C/C++で実装されているものが、JavaScriptの配列(DOMとは無関係)に
なるわけがないんだよ 最近セミコロン省略してるのよく見るけど流行ってるの?
それともpythonerの悪いくせ? >>537
forEachはPolyfill作れる 組み込みオブジェクトにメソッド追加して
Polyfill作れるかどうかはブラウザ依存 >>547
es仕様を完全把握してるからどこでセミコロンが自動挿入されるのか完璧に理解して使いこなしているのだ。お前のようなザコと一緒にするな。 >>547
ミニファイしたらセミコロン省略されるんだから最初からいらんだろ あとこのライブラリのコードとか
ttps://github.com/nathancahill/split/blob/master/packages/splitjs/src/split.js
あげたらキリないけどよく見る
セミコロン省略した方がかっこいい風潮あるのか? 好き嫌いはともかくJavaScript Standard Styleくらい知っとけよ雑魚
https://github.com/standard/standard
スター2万 >>553
結構あるのか、気にしてなかっただけかも
>>551の通り把握できていれば省略しても何ら問題はない
インデントをタブにするかスペース2個にするかの違い(よりは影響大きいけど)
要は好み
混ざってて滅茶苦茶気持ち悪いな、これはさすがに良くない
https://qiita.com/khsk/items/f331798acfb99ef347fc >>556
こいつの思想のほうがよっぽど気持ち悪い
偉そうによくここまで適当なこと言えるな >>556
セミコロン禁止に抵抗ある人向けのJavaScript Semi-Standard Styleもあるらしい
https://github.com/Flet/semistandard >>558
でも大抵の参考書にはセミコロンは絶対つけましょうって書いてるからさ
今まで知らなかったわ >>562
ありがとう!
質問まとめて、またあとで質問させて頂きます 質問
var text="ランダムな文字列1abcランダムな文字列2defランダムな文字列3"
という文字列がある場合にtextからランダムな文字列2だけを削除する短い書き方はあるでしょうか?
つまりabcとdefで挟まれている部分を削除することが条件で、abcとdefはそのまま残して
"ランダムな文字列1abcdefランダムな文字列3"
となるようにしたいです >>564
text = text.replace( /(abc)(.*)(def)/, '$2' ) >>565
それだと結果が
"ランダムな文字列1ランダムな文字列2ランダムな文字列3"
となってしまいますよね?
でも応用して考えて分かりました、
text = text.replace( /(abc)(.*)(def)/, '$1$3' )
とすればいいわけですよね。
ありがとうございます!感謝感謝です >>566
ごめんなさいそうでした。
よく読んでなかった… 仮にランダムな文字列1にabcが入った場合
どちらのabcを優先したらよいのだろう >>564 >>567
いえいえ本当に助かりました
>>568
なるほどそれだと後の方ですかねぇ…でも今回の場合それは考えなくて大丈夫なので566でおkです セミコロン省略がバグの温床になるときってのは要は謎の改行をしてるときで、まずそんな書き方するべきじゃないし、そんな書き方してる時点でバグとか気にしない人だろう return辺りで結局セミコロン必須の場面があったはず >>571
いや、だから謎の改行だろうがバグの可能性あるならセミコロンありでいいんじゃね?てこと
省略するメリットってタイプ量が減る、ファイルサイズが減る、くらい? 結局改行が必要になるのでファイルサイズもほとんど変わらない
デメリットの方が多いと思う Javascript3大宗教論争
・セミコロン論争
・const論争
あと一つは? 言語仕様のほとんどをなあなあにしたアイクとネスケが悪い jsは争点が多すぎて、逆に争うのが無駄だと気付きやすいかも
もう好きにやってろって ふわふわ言語
まぁでも大分良くはなったと思う
昔は本当に酷かった;; >>580
セミコロン2つもつけてんじゃねー!2つとも消せや! >>521
結局これ。
ブラウザをコントロール出来る社内システム以外は新しいのが使いにくい。 問題「jQueryが使えないサイト用のブックマークレットなのですがどうしたらよいですか」
答え「jQueryを使えばよい」
安定のjQuery気違いクオリティwww >>583
> 問題「jQueryが使えないサイト用のブックマークレットなのですがどうしたらよいですか」
どこにそんなふうに問題出したやつがいるの?
お前馬鹿じゃないの?
あ、だからヤブヘビするのかw 元の質問がブックマークレット用途だからjquery使ってないって言ってるじゃん
そもそもブックマークレット作るのに互換性なんてそうきにするもんでもないだろ
>>535 でいいと思うが ブックマークレット用途って言ったのは
jQueryの名前が出た後だろ
時系列ちゃんと考えろや
ブックマークレット用途っていうのなら
ポリフィルも使えないってことになるし
> >>535 でいいと思うが
forEachが使えないブラウザもある >>587
> forEachが使えないブラウザもある
w3mやlynxへの対応もしっかりなw >>589
はい。そうすると必然的にHTML+CSSメインで書いて
JavaScriptは動きをつけるという使い方になる
jQueryが一番得意とするやり方 NodeListのforEachが使えないブラウザもあるって、もはやIEぐらいなもんだろ
他のモダンブラウザはどれもまともに動くぞ
ブックマークレット用途でそんなの動作保証する必要あるのかっていう話よ いやIEで動かないのは問題だがブックマークレットならどうでもいいな >>587
> ブックマークレット用途っていうのなら
> ポリフィルも使えないってことになるし
なぜ? >>591
> へーw3mでjQuery動くんだ知らなかった
JavaScriptが使えないブラウザでも出来る限り対応しろってことだよ
>>595
しらん。ブックマークレットだからjQueryが使えないといったやつに聞け
(元の質問者のことではない) >>597
> しらん。ブックマークレットだからjQueryが使えないといったやつに聞け
うん。だから、
「ブックマークレット用途っていうのなら
ポリフィルも使えないってことになるし 」
と発言した>>587に質問してる >>597
> JavaScriptが使えないブラウザでも出来る限り対応しろってことだよ
それ、もうjQuery関係ないじゃん
>>590の「jQueryが一番得意とするやり方」って明らかにおかしいだろ ファイルの冒頭・最後に、セミコロンを付けないと、
ファイル結合時に、文がつながってしまうことがあるとか >>598
なんで一つ前の>>586に言わないの?
> 元の質問がブックマークレット用途だからjquery使ってないって言ってるじゃん
(↑質問者はそんなこと言ってない。だから言ったのは>>586)
アンカーがなかったから気づかなかったのかな?
なら俺が言ったことでわかったから、それを踏まえて>>586に言おうね (使ってないのと使えないのとではずいぶん意味が違うな) (それ以前に質問者はブックマークレット用途だから使ってないなんて言ってないな) (ブックマークレットでjQuery使ってもいいしな) (元サイトで使われてないならブックマークレットで読み込んでもいいし) >>601
>>586をよく読みなさい
「元の質問がブックマークレット用途だからjquery使ってないって言ってるじゃん」
は他人の言を述べているだけでしょ?
>>586が「ブックマークレット用途だからjquery使ってない」わけではないでしょ?
そもそも、586がどうあれ、>>587は
「ブックマークレット用途っていうのなら
ポリフィルも使えないってことになるし 」
と書いてるんだよ
587は「586は〜といってる」ではなく、自分がそうだと思っている書き方でしょ?
この物言いで>>587に質問して何が悪いのさ
なんか、自分の発言を「他人の発言からとってきただけの借り物」かのような言い訳してくる奴、定期的に出てくるけど、日本語勉強した方がいいと思うよ? > 「ブックマークレット用途っていうのなら
> ポリフィルも使えないってことになるし 」
>
> と書いてるんだよ
だって「元の質問がブックマークレット用途だからポリフィル使ってないって言ってるじゃん」 「元の質問がブックマークレット用途だからjquery使ってないって言ってるじゃん」
という嘘は許すが
「元の質問がブックマークレット用途だからポリフィル使ってないって言ってるじゃん」
という嘘は許さない
なぜならjQueryがきらいだからだ!
まあこんな発想なんだろうなぁ jQuery房は借り物の言葉で語って、何かあると「俺の発言は借り物だから元の発言者に文句をいえ」というわけか、なるほど >>612
そのままの意味だが?
>>587が>>586に責任転嫁してるのが現状 >>613
だから何が責任転嫁なんだ?全く意味不明 そもそも、ブックマークレットでポリフィル使えない云々は>>587しか言ってないじゃん ブックマークレットでjQueryが使えないというのなら、
当然ポリフィルも使えないんじゃね?
だってポリフィル読み込まないといけないでしょ?
ポリフィル読み込むのが許されるならjQuery読み込めばいいで終わるし >>617
それな。馬鹿はその関係性が理解できないんだよw ieはなんで開発やめないの?
ieコンポーネントに依存してるアプリがあるから? jQuery厨とjQueryアンチの争いがいかに不毛かが掴める流れ >>586の「元の質問がブックマークレット用途だからjquery使ってないって言ってるじゃん」は>>522の代弁なのに、>>587が勝手に勘違いして「586がブックマークレットでjQueryは使えない」と誤読した
で、「ブックマークレットでjQueryを使えないなら、ポリフィルも使えいないはずだ」のニュアンスで>>587は書いたつもりだったが、日本語がおかしくて自分がそう考えている風に解釈できる文章だった
だが、>>587はそのミスに気が付かず、「これは586の弁だから、586に文句をいえ」と繰り返しているわけだな ■ このスレッドは過去ログ倉庫に格納されています