X



+ JavaScript の質問用スレッド vol.137 +
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2019/01/06(日) 20:11:13.75ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

※前スレ
+ JavaScript の質問用スレッド vol.136 +
http://mevius.5ch.net/test/read.cgi/hp/1542707959/
0002Name_Not_Found
垢版 |
2019/01/06(日) 20:12:10.67ID:???
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
0003Name_Not_Found
垢版 |
2019/01/06(日) 20:19:55.21ID:???
■テンプレ案
https://fiddle.jshell.net/6ksf2087/show/light/

■参考URL
ダウンロード、CDN
http://jquery.com/download/
ブラウザサポート
http://jquery.com/browser-support/
jQuery UI
http://jqueryui.com/
jQuery UI ダウンロ−ド
http://jqueryui.com/download/
リファレンス等
http://alphasis.info/
http://www.jquerystudy.info/
http://js.studio-kingdom.com/
【翻訳まとめ】jQuery 3.0 アップグレードガイド - Qiita
http://qiita.com/fmy/items/345a264a1cf2e2a73f62
0004Name_Not_Found
垢版 |
2019/01/06(日) 20:20:14.89ID:???
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
0006Name_Not_Found
垢版 |
2019/01/06(日) 20:21:41.75ID:???
https://w3techs.com/technologies/overview/javascript_library/all

w3techsによると2017年1月の時点で71.9%のサイトがJavaScriptのライブラリとして
jQueryを使用していることが判明し、それ以降もシェアの増加が続いていたが、
2018年4月〜2018年10月の約半年間で変化が見られず、ようやく73.3%〜73.4%で
増加が停止したようである。

しかしながら、減少の傾向は見られず、マーケットシェア(JavaScriptを使用しているサイトでの使用率)
https://w3techs.com/technologies/history_overview/javascript_library は97.2%を
示していることから、jQueryからの移行が始まったと言うより、上げ止まりであると考えられる

jQuery以外では、この1年でBootstrapが2%程度、Underscoreが1%程度増加している以外は
ほとんど変動はなく、期待されていたAngularは過去最高の0.5%から0.1%減少した0.4%に、
Reactは過去最高の0.6%から0.5%と大きく減少し、0.1%に下がっていることが判明した。

またいずれのライブラリも使用していないサイトは24.5%で
2017年まで減り続けていたがこの一年ではほとんど変化はない。

この状況が大きく変化するときは来るのだろうか?この先の動向が注目される
0012Name_Not_Found
垢版 |
2019/01/06(日) 20:41:08.96ID:???
じゃあ使用率のデータあるっていうの?
0015Name_Not_Found
垢版 |
2019/01/06(日) 20:59:56.27ID:???
>>14
お前はjQueryスレ行けや
こっち来んな!!
0016Name_Not_Found
垢版 |
2019/01/06(日) 21:02:47.49ID:???
>>14
トレンド
https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89
> トレンド(英語:trend)は、時代の趨勢、潮流、流行のこと。ファッション、マーケティング、
> 経済動向分析などの分野でよく使用される。統計学では、傾向変動を指す(#統計学用語)。

googleトレンドなんだから、今の流行を示してるに決まってるだろ
0017Name_Not_Found
垢版 |
2019/01/06(日) 21:05:56.40ID:???
>>15
何をそんなに怒ってるの?

>>16
ただの検索数だよ
クローラの割合、前年比、トレンドをあわせて考えると、
reactを使い始めて、検索しながら手探りで使い始めている層が多いということが考えられるね
0018Name_Not_Found
垢版 |
2019/01/06(日) 21:07:20.32ID:???
reactの0.1%って幾らなんでも少なすぎない?
と思ったけど個人サイトやペライチのサイトも考えればそんなもんか
ペライチサイトでもjQueryだけはとりあえず入れるからなぁ
0019Name_Not_Found
垢版 |
2019/01/06(日) 21:15:10.12ID:???
> reactの0.1%って幾らなんでも少なすぎない?
そこはそんなに重要じゃなくて、2018年に0.7%まで増えていたのが
2918年終わりには一気に0.2%まで減ってしまったところなんだよな
順調に増えてるなら、低くてもまだ出たばかりだって言えるんだけどさ

https://w3techs.com/technologies/history_overview/javascript_library/ms/y
0020Name_Not_Found
垢版 |
2019/01/06(日) 21:16:01.77ID:???
> 2918年終わりには一気に0.2%まで減ってしまったところなんだよな
900年ほど水増ししちゃったw
2018年の終わりってことね
0021Name_Not_Found
垢版 |
2019/01/06(日) 21:16:31.95ID:???
>>19
jQueryスレでやれカスブタ野郎!!!
0022Name_Not_Found
垢版 |
2019/01/06(日) 21:19:12.20ID:???
>>21
Reactの話題をjQueryスレでやるっておかしくね?w
0023Name_Not_Found
垢版 |
2019/01/06(日) 23:48:08.82ID:pumZpKMR
>>3
なぜjQuetyスレのテンプレを使う?
啓蒙活動は余所でやってくれ
0024Name_Not_Found
垢版 |
2019/01/08(火) 09:33:13.12ID:70burGZj
質問

<span onclick="funca()">
<a href="abc
0025Name_Not_Found
垢版 |
2019/01/08(火) 09:34:54.25ID:70burGZj
>>24すみません途中で書き込んじゃいました。改めて

質問

<span onclick="funca()">
<a href="a">link</a></span>

というような状況で、linkをクリックした時にリンクを開く動作だけしてspanのonclickが働かないようにする
(伝播しないようにする?)にはどうしたら良いんでしょうか?
0026Name_Not_Found
垢版 |
2019/01/08(火) 12:38:32.80ID:???
>>25
訪問したサイトにイベント付きのリンクがあり、
そのイベントを発火させないスクリプトをあとから実行したい
ということなら
a要素をspanから出して直後に挿入とか
span要素の親要素.insertBefore(span要素.querySelector('a'),span要素.nextElementSibling);
もっと簡潔に書けそうですが
https://jsfiddle.net/Lcn8orwv/
0027Name_Not_Found
垢版 |
2019/01/08(火) 13:04:33.39ID:???
>>25
<a href="a" onclick="arguments[0].stopPropagation()">link</a>
0029Name_Not_Found
垢版 |
2019/01/08(火) 18:49:57.58ID:???
>>27
ありがとうございます。バッチリいけました。
onclickの中のarguments[0]の役割について勉強になりました。なるほど。
0030Name_Not_Found
垢版 |
2019/01/09(水) 05:25:30.34ID:???
「javascript stoppropagation preventdefault」で検索!
0031Name_Not_Found
垢版 |
2019/01/09(水) 06:23:07.93ID:???
argumentsが使えるなんて保証されてんの?
0032Name_Not_Found
垢版 |
2019/01/09(水) 09:15:46.00ID:???
そらそうよ。
onclick="function(e) {e.stopPropagation();}"
って書くのと同じなんだからarguments[0]はイベントオブジェクト
0033Name_Not_Found
垢版 |
2019/01/09(水) 11:29:10.76ID:???
> onclick="function(e) {e.stopPropagation();}"
> って書くのと同じなんだから

それは保証されてんの?
0034Name_Not_Found
垢版 |
2019/01/09(水) 12:26:11.70ID:???
なんだが分からんが俺が保証しようw
0038Name_Not_Found
垢版 |
2019/01/10(木) 09:32:58.20ID:2AtXVlsu
>>33
同義じゃね?
無名関数で一度ラップされてるだけで
0039Name_Not_Found
垢版 |
2019/01/10(木) 15:36:42.44ID:???
>>38
それなら
onclick="void function(e){e.stopPropagation();}()"
と書くことになるけどこれはエラー。
この場合eもarguments[0]もundefined。
0040Name_Not_Found
垢版 |
2019/01/10(木) 17:17:24.23ID:2AtXVlsu
>>39
void演算子つくと、onclick属性の値はundefinedになっちゃ
…いま気づいたわ間違ってたわすまんこ

<a onclick=" arguments[0].stopPropergation(); ">



a要素.addEventListener('click', function(){ arguments[0].stopPropergation(); });


onlick属性の値は
addEventListenerの第二引数に渡される関数の中身だた
0041Name_Not_Found
垢版 |
2019/01/10(木) 17:39:03.85ID:???
arguments[0]に頼らざるを得ないのかよ
なんか気持ち悪いな
0042Name_Not_Found
垢版 |
2019/01/11(金) 00:14:21.33ID:???
>>41
そんな書き方は普通されないし、する必要もない
<a onclick="event.stopPropagation()">
がある
0043Name_Not_Found
垢版 |
2019/01/11(金) 01:38:27.07ID:???
>>42
グローバルにeventが置かれてるのは
IE、safari、chromeだけじゃね?
違ったっけ?
0044Name_Not_Found
垢版 |
2019/01/11(金) 09:13:39.91ID:???
eと並んでjs側でも慣例的によく使われるとはいえイベントオブジェクトを勝手にeventという特定の変数名にバインドされてるのは更に気持ち悪いな。arguments[0]のほうがまだマシだわ。
0045Name_Not_Found
垢版 |
2019/01/11(金) 09:50:37.79ID:???
あれってバインドされてるんじゃなくて
window.eventってのが最初からいて
全てで起こるイベントを拾ってるんだと思ってた
0047Name_Not_Found
垢版 |
2019/01/11(金) 21:44:42.64ID:???
テンプレートストリングってバックチックで囲むやつのことですか?
0048Name_Not_Found
垢版 |
2019/01/11(金) 21:46:45.41ID:???
今井寿がどうしたって?
0050Name_Not_Found
垢版 |
2019/01/12(土) 01:16:23.16ID:???
くらえ! テンプレートストリングバックチック!!
0052Name_Not_Found
垢版 |
2019/01/12(土) 09:32:50.42ID:???
>>51
ありがとう、これですか
f-stringみたいで使いやすいですね
今はテンプレートリテラルと呼ぶのか
0053Name_Not_Found
垢版 |
2019/01/12(土) 10:50:35.29ID:???
テンプレートリテラルバックチック!!
0054Name_Not_Found
垢版 |
2019/01/12(土) 17:08:09.17ID:???
テンプレートストリングからテンプレートリテラルに改名されてもmdnのurlは昔の名前のままなんだな。当たり前か…
0055Name_Not_Found
垢版 |
2019/01/13(日) 06:55:46.95ID:asIlMu3r
google maps APIで、マーカーに関連付けしたInfoWindowの内容を取得するにはどうしたらいいでしょうか?

具体的には、以下のようなマーカーアがある状態で、マーカーをクリックしたら、地名・タイトル・本文 を文字列として取得したいです。
var marker1 = new google.maps.Marker( { position: { lat:30, lng:135 }, label:'地名', icon:'icon.png', map:map });
var info1 = new google.maps.InfoWindow( { content: '<div class = "inf">タイトル<br><div>本文</div></div>' } );
marker1.addListener('click', function(){ info1.open(map, marker1); } );
0056Name_Not_Found
垢版 |
2019/01/13(日) 11:00:45.93ID:???
タイトルのセレクターは、div.inf
本文は、div.inf > div

地名は、わからない
0057Name_Not_Found
垢版 |
2019/01/13(日) 11:40:14.49ID:???
アロー関数の前につけるvar, const, let
ってどれでもいいの?
0059Name_Not_Found
垢版 |
2019/01/13(日) 11:48:06.69ID:???
let使うとif等のブロック内で定義した時、ブロックから出ると使えなくなる
その方がいい場面があればletだけど、多分内と思う

脳死でconstで良いと思う
varはもう生涯使わんでいい
0060Name_Not_Found
垢版 |
2019/01/13(日) 12:03:07.48ID:???
>>58
>>59
ありがとう
varはデプリケーテッドなんですね
let はスコープ内だけで
varはglobal
constは定数
0061Name_Not_Found
垢版 |
2019/01/13(日) 12:13:26.62ID:???
constはletとスコープは一緒
値を更新しないならconstが推奨される
アロー関数を変更することなんてまず無いんだからconst一択
どうしてもconstではできない時(少ない)だけletを使う
0062Name_Not_Found
垢版 |
2019/01/13(日) 12:23:27.73ID:???
アロー関数と関数宣言って使い分けがめんどくさい
なんでこんなクソごっちゃで仕様めちゃくちゃにしてるんだか
0063Name_Not_Found
垢版 |
2019/01/13(日) 12:39:59.91ID:???
アロー関数は当分使わないかな
なんか見づらいんだよな
0064Name_Not_Found
垢版 |
2019/01/13(日) 13:04:40.46ID:???
アロー関数は「関数である値」と考えればいいよ
見づらいのは関数だと考えているから。

例えば、 sort(比較関数) みたいな時
引数はsoft関数にわたす値のようなもんでしょ?

だから関数として見えるんじゃなくて
値として見えるように、ああいう構文になってるんだよ
0065Name_Not_Found
垢版 |
2019/01/13(日) 13:06:35.64ID:???
>>62
ついて来れない人達のために
仕方なく互換性を残してるんだよ
0066Name_Not_Found
垢版 |
2019/01/13(日) 13:12:07.30ID:???
まあ関数リテラルのシンタックスシュガーだけど実際は中の挙動が違うし当たり前だけど定義の前では使えない
0067Name_Not_Found
垢版 |
2019/01/13(日) 13:13:16.73ID:???
アロー関数の => {} の{}の仕様は無くして欲しかったね。returnも使えなくしてほしかった
=> の右側は式だけで十分
0068Name_Not_Found
垢版 |
2019/01/13(日) 13:19:11.56ID:???
だからアロー関数と関数宣言の両方を使ってるソースみると、なんで統一しないの?ってなることもある
だけどこれは仕方のないことなんだよ
統一したいならfunctionを使うしかない
0069Name_Not_Found
垢版 |
2019/01/13(日) 13:31:32.20ID:???
=> = function
こういう代入ができればいいのに
0070Name_Not_Found
垢版 |
2019/01/13(日) 13:35:22.93ID:???
>>68
目的が違うからだよ

・関数は宣言しておいて何処か別の場所で使う
・アロー関数は別の関数に値として渡すために使う

書き方を分けることで、どういう使い方をするのかを
読み手に読み取らせることが出来る
0071Name_Not_Found
垢版 |
2019/01/13(日) 13:36:07.62ID:???
「使い方が違う」というのを理解せずに
単に「書き方が違う」とだけしか思ってないやつがいるんだよな
0072Name_Not_Found
垢版 |
2019/01/13(日) 13:54:05.63ID:???
>>70
>・アロー関数は別の関数に値として渡すために使う

渡すためだけにしか使えないわけじゃないんだけど、それはどこで誰が決めたの?
0073Name_Not_Found
垢版 |
2019/01/13(日) 14:12:56.13ID:???
input検証にhtml5からrequiredプロパティが使えるようになったとのことで
それ試してるんですがvalidになったときの状態はどうやって判定したらいいのでしょう?
input[name="hoge"]がパターン^abcでvalidになるとして
if ($('input[name="hoge"]').value.match(/^abc/))
のようにとってしまっては
ただvalidとinvalidでスタイルを変更するだけの飾りになってしまうので
何かvalidになったときその要素に何かプロパティが設定されるのではないかと思うのですが
ちょっと調べてもわかりませんでした
ご存知の方教えていただけるとありがたいです
007473
垢版 |
2019/01/13(日) 14:28:38.45ID:???
すみません追記です

$('input[name="hoge"]')は$hogeとして
patternプロパティ参照して
if ($hoge.value.match($hoge.pattern))
ではとれます
if ($hoge.value.isvalid)
のようにとれるのが理想でプロパティ見てますが
っぽいのが見当たりません
0075Name_Not_Found
垢版 |
2019/01/13(日) 14:30:39.77ID:???
$('input[name="hoge"]:valid') でいいでしょ?
無駄なことしなーいw
007673
垢版 |
2019/01/13(日) 14:56:58.66ID:???
>>75
:の意味がよくわからず思考から除外してました
それでとれることを確認しました
Event.targetにも対応したかったのでそれをヒントに調べましたところ
checkValidity()メソッドでいけることがわかりました
$hoge.checkValidity()

どうもありがとうございました
0077Name_Not_Found
垢版 |
2019/01/13(日) 19:29:07.92ID:???
オブジェクト(変数)名を取得する方法を教えてください。
具体的には、以下のようにしたいです。

let variable1 = "";
let variable2 = [];
let variable3 = 12;

let list = [];

list.push(variable1);
list.push(variable2);
list.push(variable3);

for(let i = 0; i < list.length; i++)
{
alert(list[i].???);           //variable1 variable2 variable3と順番に表示
}
0078Name_Not_Found
垢版 |
2019/01/13(日) 19:35:26.00ID:???
長い

const variable1 = "";
const variable2 = [];
const variable3 = 12;

const list = [variable1, variable2, variable3];

for (const i of list) {
 alert(???);           //variable1 variable2 variable3と順番に表示
}
0079Name_Not_Found
垢版 |
2019/01/13(日) 19:43:44.97ID:???
listに入るものは変数名ではなく変数の中身だけなので無理
0080Name_Not_Found
垢版 |
2019/01/13(日) 19:54:58.99ID:???
こんな感じで書く方法があれば行けるかもねぇ

for (arr) {
console.log(this.var_name);
}
0081Name_Not_Found
垢版 |
2019/01/13(日) 21:13:18.39ID:???
const variable1 = "";
const variable2 = [];
const variable3 = 12;

const list = {variable1, variable2, variable3};

for (const [key, value] of Object.entries(list)) {
alert(key);
}
0083Name_Not_Found
垢版 |
2019/01/13(日) 21:30:43.28ID:???
おまえ頭柔らかいな
ほめてやろう
0084Name_Not_Found
垢版 |
2019/01/13(日) 21:39:04.89ID:???
>>81
レベルが違うってはっきりわかんだね
0085Name_Not_Found
垢版 |
2019/01/13(日) 22:34:07.85ID:???
やっぱダメだわ大抵の処理系ではvariable1, variable2, variable3の順で出てくるれるが仕様では順序保証されてない
0086Name_Not_Found
垢版 |
2019/01/13(日) 22:42:52.36ID:???
Mapなら確か順序保証されてたからそっちにすれば
0087Name_Not_Found
垢版 |
2019/01/13(日) 23:25:31.42ID:???
eval使っていいならこんなのはどうじゃろ?
順序保証されたぞ。

const variable1 = "";
const variable2 = [];
const variable3 = 12;

const list = ['variable1', 'variable2', 'variable3'];
const map = list.map(name => [name, eval(name)]);

for (const [key, value] of map) {
alert(key);
}
0088Name_Not_Found
垢版 |
2019/01/14(月) 02:25:40.41ID:???
関数を文字列化して、そこから正規表現で抜き出すw
0089Name_Not_Found
垢版 |
2019/01/14(月) 13:32:41.26ID:???
>>77
いずれにしても、変数名を文字列で渡さなければ、無理

const map = new Map([['variable1', variable1], ['variable2', variable2], ['variable3', variable3]]);
for (let [key, value] of map) condole.log(key)
0090Name_Not_Found
垢版 |
2019/01/14(月) 16:46:47.82ID:???
ちょっと趣向を変えてこんなのとかw
順序は保証されるし変数名を文字列で渡さなくてもいいぞ。

const variable1 = () => "";
const variable2 = () => [];
const variable3 = () => 12;

const list = [variable1, variable2, variable3];

for (const func of list) {
alert(func.name);
}
0092Name_Not_Found
垢版 |
2019/01/14(月) 16:54:47.92ID:???
もう終わりにしてくれるか
0093Name_Not_Found
垢版 |
2019/01/14(月) 17:36:46.04ID:???
そもそも変数名を取得する設計を見直した方がいい
何がしたかったのかをもう一度よく考えてみるべき
0094Name_Not_Found
垢版 |
2019/01/14(月) 18:13:17.12ID:???
>>81
個別に変数を作らなければ良い
const map = new Map([['variable1', ""], ['variable2', []], ['variable3', 12]]);
for (let [key, value] of map) console.log(key);
0095Name_Not_Found
垢版 |
2019/01/14(月) 18:17:17.65ID:???
Mapリテラルまだー?
今の初期化構文、わかりづらいしリストに型の違う値入れなきゃで気持ち悪い
0096Name_Not_Found
垢版 |
2019/01/14(月) 18:19:23.94ID:???
それならMap使う必要まったくなくない?

const list = [['variable1', ""], ['variable2', []], ['variable3', 12]];

for (const [key, value] of list) {
alert(key);
}
0097Name_Not_Found
垢版 |
2019/01/14(月) 18:24:35.90ID:???
variable3の値だけ欲しいときに毎回find走らせるの?
0099Name_Not_Found
垢版 |
2019/01/14(月) 18:42:47.94ID:???
あー、まぁ「variable3は必ずlistの3要素目である」っていう前提下ならlist[2][1]とかでいけるのか
自分がそういう書き方しないから抜けてたわ
0100Name_Not_Found
垢版 |
2019/01/14(月) 18:47:02.84ID:???
>>97
keyはユニークなんだから、配列と違って全体検索ではないでしょ?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況