X



+ JavaScript の質問用スレッド vol.143 +

■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2019/12/26(木) 19:50:04.40ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです

■前スレ
+ JavaScript の質問用スレッド vol.142 +
https://mevius.5ch.net/test/read.cgi/hp/1568622157/
0002Name_Not_Found
垢版 |
2019/12/27(金) 01:15:43.40ID:???
■FAQ

◆開発者ツール(Developer Tools)の基本的な使い方
 ▼諸注意
  - 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
  - Edge- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
  - Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
  https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
 ▼要素を検証
 1. ページ上で右クリックして [要素を検証]
 2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
 3. 右側のサイドバーから知りたいステータス名のタブを選択する
   - [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
   - [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
   - [Properties] タブ … 選択したDOMノードのプロパティを表示
 ▼コンソール
 1. JavaScript コード上で console.log('Hello, World!'); と入力
 2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
 3. [Console] パネルに "Hello, World!" と表示される
 (※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。)
0003Name_Not_Found
垢版 |
2019/12/27(金) 01:15:59.17ID:???
■各種仕様 (続き)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.w3.org/TR/uievents/ (UI Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ MSDN Library
https://msdn.microsoft.com/en-us/library/ie/hh828809 (Internet Explorer API)
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML)
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html

■テンプレ案
http://fiddle.jshell.net/fH4cC/180/show/light/

■FAQ
http://fiddle.jshell.net/vSqKr/44/show/light/
0004Name_Not_Found
垢版 |
2019/12/27(金) 01:16:15.89ID:???
■参考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
0005Name_Not_Found
垢版 |
2019/12/27(金) 01:16:34.96ID:???
■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に http://jsperf.com/ (githubのアカウントが必要です)にコードをUPしてブラウザ毎に速度計測する事を推奨します。

例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証(要出典)されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。

■各種仕様
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
0007Name_Not_Found
垢版 |
2019/12/27(金) 01:17:06.24ID:???
Q. jQueryはどのバージョンを使えばいいのですか?
A. IE9以上であれば、jQuery 3.0を使用してください。
IE8以下にも対応するならば、jQuery 1.12を使用してください。

補足

jQuery 1.9 までは一系統しかなく、古いブラウザも含めて全て対応していました。
その後、古いブラウザを切り捨てるためにバージョンを分岐させました。
古いブラウザにも対応した1系(1.10、1.11、12)と
古いブラウザを切り捨てた2系(2.0, 2.1, 2.2)です。

1系と2系は対応ブラウザの違いだけで機能は全く一緒です。
機能が同じなのにメジャーバージョンが違っているのが分かりにくい
ということでバージョン番号の付け方を変えることになり、
新たに古いブラウザを切り捨てたjQuery 3.0、そして古いブラウザにも対応した
jQuery Compat 3.0がリリースされる予定でした。

しかしマイクロソフトが古いIEのサポートポリシーを変更し
サポート中であるOSで動く、最新のIEしかサポートしなくなったために、
2016年1月でVista上のIE8のサポートが終了しました。

そのため予定されていたjQuery Compat 3.0がなくなり、
jQueryは3.0に一本化されました。
0008Name_Not_Found
垢版 |
2019/12/27(金) 01:17:22.59ID:???
■JavaScript主要ライブラリ・フレームワーク 利用率
https://w3techs.com/technologies/overview/javascript_library/all

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
0009Name_Not_Found
垢版 |
2019/12/27(金) 01:17:39.19ID:???
■各種仕様
◆ Standard ECMA-262
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 2015, いわゆる ES6)
https://www.ecma-international.org/ecma-262/9.0/ (ECMAScript 2018)
https://tc39.es/ecma262/ (ECMA-262 最新ドラフト)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)

削るべきか要審議
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
0010Name_Not_Found
垢版 |
2019/12/29(日) 17:05:16.56ID:RZV6QmbA
html内に記述のjavascriptにはlinter?は効かないのでしょうか。
オンラインでそれに対応したサービスはないでしょうか。
0011Name_Not_Found
垢版 |
2019/12/30(月) 19:50:08.90ID:???
2019年もjQueryのシェアは微増で終わりましたね(苦笑)
だから言ったんだよ。誰もがウェブアプリ作ろうと思ってたりしないんだから
普通のウェブサイトならjQueryでいいんだって
適切じゃない技術に乗り換える意味がない
0012Name_Not_Found
垢版 |
2019/12/30(月) 20:02:39.64ID:???
どっかのフロントエンジニア君(笑)が必死に終わる終わるいっても
結局はこの結果ですよ。Angular?ReactJS?一年経ってもぜんぜん増えてませーんw

https://w3techs.com/technologies/history_overview/javascript_library/all
Historical trends in the usage of javascript libraries for websites
73.5%  73.6%  73.7%  73.8%  73.9%  74.0%  73.9%  73.9%  74.1%  74.1%  74.1%  74.0%  74.1%  74.2%
結果+0.7%

https://w3techs.com/technologies/history_overview/javascript_library
Market share trends for JavaScript libraries
97.2%  97.3%  97.3%  97.3%  97.3%  97.3%  97.4%  97.4%  97.4%  97.5%  97.5%  97.5%  97.3%  97.4%
結果+0.2%


2011年より
28.3% 42.8% 54.5% 57.4% 61.5% 68.3% 71.9% 73.1% 73.6% 74.2%
74.0% 84.1% 90.2% 92.9% 94.5% 95.8% 96.4% 96.2% 97.3% 97.4%
0013Name_Not_Found
垢版 |
2019/12/30(月) 20:37:31.23ID:???
形骸化してるだけなのに哀れだね
0014Name_Not_Found
垢版 |
2019/12/30(月) 20:40:29.08ID:???
形骸化?AngularやReactが増えないから
jQueryは減らないんですよ

AngularやReactが形骸化しちゃったと?w
0015Name_Not_Found
垢版 |
2019/12/30(月) 21:24:40.42ID:???
ここまでjQuery信者っぷりが露骨なテンプレだと、何も感じないな
2020年も彼は平常運転なんだろうね
0016Name_Not_Found
垢版 |
2019/12/30(月) 22:01:38.93ID:???
一生懸命覚えたjQueryを使った案件が減っちゃうとまんまが食えなくなっちゃうんだろうね
かわいそうに
0017Name_Not_Found
垢版 |
2019/12/30(月) 22:23:51.87ID:???
でもjQuery減ってないじゃんw
AngularとかReactはバージョナップで
また覚え直しになるでしょ?
0019Name_Not_Found
垢版 |
2019/12/31(火) 01:26:51.56ID:???
現実を見据えた奴なら全部覚えるだろ
jQueryに拘ってるのは信者だけ
0020Name_Not_Found
垢版 |
2019/12/31(火) 03:43:03.03ID:???
そりゃjQueryが消えるわけないんだから
jQueryも全部の中に含まれるだろうな
0021Name_Not_Found
垢版 |
2019/12/31(火) 05:12:47.54ID:???
>>17みたいにjQuery以外をこき下ろすのはアホってことだな
0022Name_Not_Found
垢版 |
2019/12/31(火) 05:27:29.38ID:???
別にこき下ろしてないだろ
Angularが1と2で互換性なくなったのは事実だし
ブラウザ標準のWeb Componentsが控えてるから
脱Angular、脱Reactの流れは明らか
0023Name_Not_Found
垢版 |
2019/12/31(火) 05:37:48.66ID:???
目指せフルスタックエンジニア
0024Name_Not_Found
垢版 |
2019/12/31(火) 09:30:44.31ID:???
Web Componentsが控えてるから脱Angular、脱Reactになるというのなら
jQueryなんてとっくに使われなくなってるはずでしょ
ここは自ら学ぶスレでJS仙人Web仙人を目指す者が多いだろうけど
全体で見ればできるだけ自ら学びたくなくて他者にすがりたい人が多いでしょ

だからこのスレでライブラリやフレームワークを進めるのは
このスレ以外で相談されたときと比べたら控えるべき

例えば全く無知な人からこういう見た目のグラフを起きたいと言われて、
WebGLの数十のAPIと数十の技法をここで説明仕切るのは不可能だし、
より噛み砕いても説明しきれないときはWebGLを0から学んでこいとだけいうのはあまりに辛辣なので
グラフ表示ライブラリを提示して、そちらのこの使い方を変わりに学べということを言うのは極悪ではないとは思う

何れにせよ目的が学ぶことより問題対処の答えをもらうほうが大きくなってはいけないということ
ここは仕事依頼所ではなくて質問者が自ら学ぶ機会を作るための場所ということを忘れてはいけない
0025Name_Not_Found
垢版 |
2019/12/31(火) 09:37:35.58ID:???
そこで質問者に何を学ばしたいのかということ
jQuery力を身に付けさせたいのか、
jQueryなどに頼らなくてもWebAPIで実現できる力を身に付けさせたいのか、
それは各回答者によって違うし違ってて良いと思うが
ここがJavaScriptスレということは頭の片隅に置いておいてほしい

フランス料理スレがあったとして、そこで電子レンジ中心でするというのは面白いと思うが
あまり電子レンジ最高、これに頼らないのは変だというアピールをすると
なにかに特別こだわるのであれば亜流として他スレでやれということにってしまうのは仕方がないだろう
0026Name_Not_Found
垢版 |
2019/12/31(火) 12:45:02.16ID:???
>>24
> Web Componentsが控えてるから脱Angular、脱Reactになるというのなら
> jQueryなんてとっくに使われなくなってるはずでしょ

それは違うよ。Web Componentsはウェブアプリを作るもの
なので同じウェブアプリを作るAngularやReactと競合してる。

jQueryはウェブサイトに動きをつけるもの
Web Componentsと競合してない。

将来的にはWeb Componentsで作ったコンポーネントを
組み合わせるライブラリとしてjQueryが使われるだろう
0027Name_Not_Found
垢版 |
2019/12/31(火) 19:12:55.80ID:???
jQuery厨と反jQueryとのバトルかお
大晦日だし朝までやってみろだお
生テレビみたいに
0028Name_Not_Found
垢版 |
2019/12/31(火) 19:42:37.59ID:???
>>26
Web ComponentsとjQueryを対比してるのではなくて、
標準で補えるような機能があるから、競合すると言って移行が進むとは限らないでしょってこと
競合するってことは見方を変えると親和性が高く補い合えるということでもあるのだから

Web Componentsはウェブアプリを作るものではなく
要素を新たに作ったりコンポーネント化するというのはむしろ旧来のWebの作り方の延長上にあるものでしょ
それに作れたからと言ってそれらを上手く使ったり運用することまでは含まれていないのだから
そういう面でフレームワークは必要でしょ

またjQueryはウェブサイトに動きをつけるものっていうのであれば
Web Animation APIが競合するでしょ
でもだからといってjQueryが不要ということにはなっていないでしょ
0029Name_Not_Found
垢版 |
2019/12/31(火) 19:47:56.44ID:???
>>26
標準の各機能というのはあくまで機能であって、
フレームワークとか、ライブラリでもjQuery規模のものは
その世界観をまるごと提供するもので、そこに意味があるわけでしょ

そういう使い方をしているのであれば、
標準機能があるからフレームワークやライブラリが不要とはならないでしょ
「機能」のような粒度でそれらを欲しているわけではないのだから
0030Name_Not_Found
垢版 |
2019/12/31(火) 23:39:49.36ID:???
>>28
jQueryとの対比?何を言ってるのですか?
標準の機能があるからAngularやReactのような重いフレームワークが不要になり
またそれに伴いフレームワークがまたガラリと変わるって話をしてるんですが

> Web Componentsはウェブアプリを作るものではなく
> 要素を新たに作ったりコンポーネント化するというのはむしろ旧来のWebの作り方の延長上にあるものでしょ

従来のWebの延長だから、みんなWeb Componentsを選ぶでしょうね

> またjQueryはウェブサイトに動きをつけるものっていうのであれば
> Web Animation APIが競合するでしょ
動きってアニメーションのことじゃないですよ(笑)

動きというのは各コンポーネントの連携の話です。
AngularやReactでコンポーネントを作る時代は終わり
Web標準のWeb Componentsでコンポーネントを作るようになります。
いろんな所がオレオレブランドのコンポーネントを作るようになるでしょう
そこにフレームワークは組み込まれません

コンポーネントは部品です。その部品をつなげるものが必要です。
それがjQueryです。
0031Name_Not_Found
垢版 |
2019/12/31(火) 23:45:28.54ID:???
jQueryでコンポーネント(笑)作ってる奴には関係ないだろ
0032Name_Not_Found
垢版 |
2020/01/01(水) 00:09:12.79ID:???
Web Componentsでコンポーネント作るんでしょ?
0033Name_Not_Found
垢版 |
2020/01/01(水) 15:14:45.12ID:???
>>30
それは違う
原則として標準機能というのは低レイヤーを攻めてる
フレームワークなどは高レイヤー
Web Componentsも一番大きい部分はなにかというとShadowDOMであり
今まで既存の要素spanやdivなどを無理くり使って
欲しい物を作っていたのがよりスマートにできるということ

スマートにできるようになったからと言って、
開発者誰もが自分でShadowDOMを触るかと言うと違う
そこは引き続きフレームワークを使うのが普通だろう

要するにこの手の標準機能はフレームワークを
よりスマートに作れるようにするためにあると言っても過言ではない

>>コンポーネントは部品です。その部品をつなげるものが必要です。
そのとおり
>>それがjQueryです。
それは違う
jQueryは「Query」とついてることで分かるように要素を扱うことには特化しているが
要素間の高度な連携のための機能は入っていない
jQueryしか使わないのであればそこのロジックは全部自前で書くことになる
だからjQueryはあくまで「ライブラリ」と言われている
0034Name_Not_Found
垢版 |
2020/01/01(水) 16:34:48.95ID:???
>>33
デスクトップアプリの歴史を学んだほうが良いぞ
ShadowDOMでコンポーネントが作れるようになったら
次起きる流れはコンポーネントの配布だ

コンポーネントは特定のフレームワークに依存せずに
単独で使えたほうが良い。そしてツリービューとかそういった
便利なものが配布される。そしてRADツールの登場だ

RADツールを前提としたプログラミングモデルになる
.NETフレームワークと同じようなもん

今もあるがそれがウェブ標準技術をベースに再構成される
今あるものは何も残らんよ。MFCが消えたのと同じように
すべてが作り直される
0035Name_Not_Found
垢版 |
2020/01/01(水) 16:52:45.29ID:???
>>33
> jQueryは「Query」とついてることで分かるように要素を扱うことには特化しているが

jQueryで要素を操作するんじゃないよ。要素の操作はコンポーネントに組み込まれる。

jQueryの担当はイベントハンドラだよ。
コンポーネント時代において、コンポーネント間の情報のやり取りは
すべてイベントによって引き起こされる。イベントドリブンって知ってるかね?w

コンポーネントから特定のベントを受け取り、そしてそのまま又は多少加工して
他のコンポーネントに情報を渡す。コンポーネントは必ずしもUIを持っているとは限らない
タイマーコンポーネントのようなものもある。

ウェブという貧弱な技術からスタートしているだけで
結局の所、必要としているプログラミングモデルは、
最初から自由だったデスクトップアプリと変わらない。
デスクトップアプリを見ればウェブ技術の将来はわかる
0036Name_Not_Found
垢版 |
2020/01/01(水) 18:51:12.67ID:???
イベントハンドラに特化したライブラリがあれば充分だな
めでたしめでたし
0038Name_Not_Found
垢版 |
2020/01/02(木) 00:39:17.61ID:???
FormDataのappendをjqueryのcallbackで使ったらappendされなかったのですが
これはjqueryのせいですよね?
たしか$.ajaxでは"processData":falseと"contentType":falseの設定しなきゃいけなかったような・・
ajaxのときとは違ってエラーがでなかったのでめちゃくちゃハマりました・・
0039Name_Not_Found
垢版 |
2020/01/02(木) 00:42:39.36ID:???
いいえ、あなたの使い方が間違ってるだけです
0040Name_Not_Found
垢版 |
2020/01/02(木) 01:13:52.66ID:???
>>39
よくよく考えるとformdataにはキーも値もsetされていて
そのformdata送信後のパラメーター(コンソールのnetworkのところ)に反映されてないだけかも、でした
jqueryのcallback(例えばtoggleとかeach)の中でformdata.appendのときは送信後のパラメータに反映されてなくて
jquery関係ない外のブロックでformdata.appendすると送信後のパラメーターに反映される
みたいなところまでは検証できたと思います
”そもそもformdataにキーがセットされているか否か”をまた近い内に検証してみます
てっきり、パラーメータに反映されない=formdataにキーがセットできてない
だと思ってました
004140
垢版 |
2020/01/02(木) 08:37:20.01ID:???
https://httpbin.org/
サイト上のコンソール上にて検証しました
var prm=[["key0","val0"],["key1","val1"],["key2","val2"]];
var $hoge=$('<div id="hoge">hogehoge</div>');
$(document.body).append($hoge);
var formData=new FormData();
formData.append(...prm.shift());
$hoge.toggle(function(){
formData.append(prm[0][0],prm[0][1]);
formData.set(prm[1][0],prm[1][1]);
});
$.ajax({
"url": "https://httpbin.org/post";,
"type": "POST",
"processData":false,
"contentType":false,
"data": formData
}).complete(res=>console.log(res));

$.eachは大丈夫でした
$().toggleで使うとキーがappendできないっぽいです
0042Name_Not_Found
垢版 |
2020/01/02(木) 08:58:04.72ID:???
> $().toggleで使うとキーがappendできないっぽいです
だからそんなことはないって
お前が使い方間違ってるだけ
0043Name_Not_Found
垢版 |
2020/01/02(木) 09:06:04.54ID:???
だいたいその検証でなにがどうなってるのかさっぱりわからんし
他人にわかるようにかけ
0044Name_Not_Found
垢版 |
2020/01/02(木) 10:57:00.44ID:???
>>42,43
chromeとffでしか検証していませんが
FormDataにはgetメソッドというのがあってそれを使うとキーが取得できます
var prm=[["key0","val0"],["key1","val1"],["key2","val2"],["key4","val4"]];
var $hoge=$('<div id="hoge">hogehoge</div>');
$(document.body).append($hoge);
var formData=new FormData();
formData.append(...prm.shift());
$hoge.toggle(function(){
formData.append(prm[0][0],prm[0][1]);
formData.set(prm[1][0],prm[1][1]);
formData.append("key3","val3");
});
formData.set(prm[2][0],prm[2][1]);
console.log(formData.get("key0"));//val0
console.log(formData.get("key1"));//null
console.log(formData.get("key2"));//null
console.log(formData.get("key3"));//null
console.log(formData.get("key4"));//val4
0045Name_Not_Found
垢版 |
2020/01/02(木) 11:08:02.59ID:???
一応原因はわかりました
toggle内でconsoleするとなぜか最後のconsoleの後にconsole.logされるのでおかしいと思い
時間を置いてから最後のconsole.logを実行したらキーがセットされていました
0046Name_Not_Found
垢版 |
2020/01/02(木) 11:34:00.98ID:???
>>35
コンポーネントは要素でしょ
要素を操作するってことじゃん
逆に要素の属性指定で操作できない要素を作ったら
それWeb Componentの意味半減でしょ
0047Name_Not_Found
垢版 |
2020/01/02(木) 11:46:59.68ID:???
>>46
コンポーネントとなってる要素は操作する(事がある)
コンポーネントの中身の要素は操作しない

> 逆に要素の属性指定で操作できない要素を作ったら
コンポーネントとなってる要素の属性は操作する
コンポーネントの中身の要素の属性は直接操作しない(メソッド、イベント経由で行う)
0048Name_Not_Found
垢版 |
2020/01/02(木) 12:57:56.70ID:???
JQ厨にとってのコンポーネントはこれだから
同じものと思わない方が良い
<div class="my-component">
 <input type="checkbox" name="switch">switch1
</div>
0049Name_Not_Found
垢版 |
2020/01/02(木) 17:46:44.67ID:???
input type="file"のファイルを選択するボタンを押さずにダイアログを開きたいのですが
どうやればいいのでしょうか(File APIの常にひらっきぱなしD&Dのやつではありません)
0050Name_Not_Found
垢版 |
2020/01/02(木) 18:28:40.53ID:???
>>44
「javascript formdata」で検索して、MDN のサンプル通りに作れば?
0052Name_Not_Found
垢版 |
2020/01/02(木) 19:08:57.22ID:???
>>50
フォームの設置は簡単なのですが
ファイルを選択ボタンをjavascriptでクリックしたことにするやりかたがわからなかったのです
>>51
.click()で思い通りのやつができました!!
ありがとうございました!
0054Name_Not_Found
垢版 |
2020/01/03(金) 06:50:22.61ID:???
>>48

"俺が想像する"JQ厨にとってのコンポーネントはこれだから

でしょ?

そしてお前は、お前が想像するjQuery厨を叩いてるだけ
お前の中のお前が作り出した架空のjQuery厨と争ってるw
0055Name_Not_Found
垢版 |
2020/01/03(金) 08:56:28.07ID:???
>>54
ならこのコードをコンポーネントと呼ぶ奴は
jQuery厨でもないただのアホってことでいいんだよな?

いやー良かった良かった
0056Name_Not_Found
垢版 |
2020/01/03(金) 14:20:36.90ID:???
Web Componentsの話をしてるんだから
(今の文脈では)コンポーネント=Web Componentsでしょ?

今の文脈ではだからね。
Reactの話をしているときに、コンポーネント=Web Componentsなわけはない
0058Name_Not_Found
垢版 |
2020/01/03(金) 15:53:59.15ID:???
>>56
つまり文脈が変わればコンポーネントと呼ぶと?
0059Name_Not_Found
垢版 |
2020/01/03(金) 16:09:50.73ID:???
そりゃあそうだろう
componentsは何かの固有名詞ではなく
部品って意味の一般名詞だもの
0060Name_Not_Found
垢版 |
2020/01/03(金) 16:13:11.16ID:???
いや全然部品じゃないじゃん
0061Name_Not_Found
垢版 |
2020/01/03(金) 17:18:50.68ID:???
>>60
PHPなどを使ってその部分だけ別ファイルにして
使い回せるようにすれば部品になるでしょ?
0062Name_Not_Found
垢版 |
2020/01/04(土) 08:54:51.63ID:???
結局>>42さんの>だからそんなことはないって
のそんなことってどんなことだったんですか・・?
0063Name_Not_Found
垢版 |
2020/01/04(土) 22:31:49.98ID:???
https://api.jquery.com/toggle/#toggle-duration-complete
toggle関数の仕様を確認すると、
durationを省略してcompleteのみを指定した場合、completeが実行されるのはdurationのデフォルトである400ms後。
つまり、>41 は設定処理実行前に出力してる。
よって
> $().toggleで使うとキーがappendできないっぽいです
toggle関数の中でFormData#appendの動作が変わる、なんてことは起きてない。
0064Name_Not_Found
垢版 |
2020/01/05(日) 09:49:35.82ID:???
ようは400ms経つ前にappendされてないformdataを送ってしまうので
post先に反映されないということでは?
つまり>>42の段階で>そんなことはないって
のニュアンスが違うような
仮にそういう意味ではなく>>63だということは最初からわかってた
ってことなら>>44の結果が出る前に
「toggleの処理より先に$.ajaxやってるから」もしくは「全部toggleの中に書け」みたいな言い当てができているはず
それらを踏まえて>そんなことはない
のニュアンスは明らかに、>>41通りやってもformdataは送れる
みたいな意味だよなぁ・・
0065Name_Not_Found
垢版 |
2020/01/05(日) 10:12:41.94ID:???
>$().toggleで使うとキーがappendできないっぽいです
の意味は質問者回答者それぞれの視点で
質問者>>41 ( 結果的にappendされていないデータが返ってきた → appendできない、なぜ? )
回答者1 ( appendはできていることを知っている → appendできない、と言っているのは間違っている )
回答者2 ( appendはできていることを知っている → appendできないと思っているのは、処理の順番を質問者が知らないから )

ざっくりこういう回答者の思考パターンがあると思うけど
回答者1みたいな人だと、そもそもソレがわからないから質問してるんだが?みたいな質問とかなり相性が悪い
もちろん質問者がコードを開示しなかったり質問の難易度にもよるけど
0066きりん
垢版 |
2020/01/13(月) 01:45:37.42ID:O01yZc0t
function boxclear03() {
const clears = document.getElementsByClassName('clear03');
for(var i=0, len = clears.length; i< len; i++){
var clearem = clears.item(i);
clearem.value = "";
clearem.checked = false;
}
}


あるイベントが行われると、
クラス「clear03」の要素全ての、フォームの値とチェックボックスのチェックが取り除かれる
スクリプトを作ってみたのですが、フォームはクリアになるのですが、チェックボックスはクリアに
なりません。
チェックボックスをクリアにするにはどうすればいいでしょうか?
0067きりん
垢版 |
2020/01/13(月) 02:45:34.21ID:O01yZc0t
すいません。自己解決しました。
0068Name_Not_Found
垢版 |
2020/01/14(火) 08:57:13.93ID:1IADoVEp
【環境】Windows10 pro, chrome バージョン: 79.0.3945.117(Official Build) (64 ビット)
【条件】自前の class データを、JSON 経由で保存・復元したいが、復元部分のやりかたがわからない
【何をしたのか】
(1) 自前の class データを用意
(2) データを入力
(3) そのデータを、class ごと localStrageに stringify で保存
(4) (3) のデータを localStrage から stringify と parse で取得
(問題) 取得した文字列をどうしたら、自前の class に再格納できるのかわからない
【エラーメッセージ】なし
【期待する結果】自前の class にすんなりデータ格納する方法が知りたい

【サンプルコード】
(1) class testClass {
constructor ( a, b, c ) {
this.aa = a;   this.bb = b;   this.cc = c;
};
あとは上記のゲッターセッター
}

(2) var xxx = new testClass ( 963, 852, 741 );
(3) localStorage.setItem ( "testKey", JSON.stringify( xxx ) );

ここで、 testKey を chrome のデバッグ機能で見ると、
{ "aa": 963, "bb": 852, "cc": 741 } が入っているのは確認。

(4) JSON.parse( JSON.stringify ( localStorage.getItem ( "testKey" ) ) );
で取得すると、{ "aa": 963, "bb": 852, "cc": 741 } が得られるが、
この値をどうしたら testClass 型に戻せるのかわからないです。

イメージ的には、下記のような感じのことがしたいです。testClass yyy にデータを読み込む感じ
testClass yyy = JSON.parse( JSON.stringify ( localStorage.getItem ( "testKey" ) ) );
0069Name_Not_Found
垢版 |
2020/01/14(火) 10:01:01.54ID:???
>>68
(2) var xxx = new testClass ( 963, 852, 741 );
(3) localStorage.setItem ( "testKey", xxx.AABBCC );
みたな感じで(3)で{ "aa": 963, "bb": 852, "cc": 741 }を返すゲッター(AABBCC)を放り込み
で、その後は(も)xxxを扱う
というのが普通だと思うけど
0070Name_Not_Found
垢版 |
2020/01/14(火) 11:14:50.45ID:1IADoVEp
>>69
すみません、(4) について教えて下さい。

新しく作った testClass のデータに
以前のセッションで保存していた localStorage データを
復元するように読み込む方法が知りたいです。
0072Name_Not_Found
垢版 |
2020/01/14(火) 14:51:30.03ID:???
>>70
localStorage.setItem('testKey', `data:text/html,<script>alert('testClass相当のオブジェクトを書き込む');</script>`);
$(document.body).append(localStorage.getItem("testKey"));
0073Name_Not_Found
垢版 |
2020/01/14(火) 18:52:23.05ID:PQLCVKFf
一般的にインラインの記述をすると、デバッガーが効かなくなるんでしょうかね
0074Name_Not_Found
垢版 |
2020/01/14(火) 23:29:02.33ID:???
>>70
型とかそもそも…

説明ではnewしてインスタンスが返る
とか普通の言語っぽく言ってっけど
ただのオブジェクトですし

そのtestClassをコピペしてtestClass2作って
new testClass2したら
全く同じもの出来ちゃうよ
0075Name_Not_Found
垢版 |
2020/01/15(水) 00:17:26.17ID:???
RegExp.$1.replace('foo', 'bar')

などとすると、RegExp.$2が機能しなくなるようなんですが
この理由について解説してるサイトがあれば教えて下さい
0077Name_Not_Found
垢版 |
2020/01/15(水) 03:39:33.40ID:???
それは後方参照の説明をしてるだけで質問の答ではない
0078Name_Not_Found
垢版 |
2020/01/15(水) 04:16:57.38ID:???
>>68
constructor の引数を、オブジェクト渡しに、変えた方が良いのでは?
JavaScript では、constructorの多重定義が出来ないので、面倒

class Test {
constructor ( obj ) {
this.a = obj.a;
this.b = obj.b;
}
}

var obj = new Test ( { b: "2", a: 1 } );
console.log( obj );
// Test { a: 1, b: '2' }
0079Name_Not_Found
垢版 |
2020/01/15(水) 05:54:33.72ID:???
>>77
・回答には多様性があります。他人の回答を尊重してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
0080Name_Not_Found
垢版 |
2020/01/15(水) 06:19:09.29ID:???
つまりそれを利用してわざと的外れな回答をしたわけだな
0081Name_Not_Found
垢版 |
2020/01/15(水) 06:28:18.73ID:???
わざと的外れな回答をしたかどうかは関係ありません
ルールに従いましょう
0082Name_Not_Found
垢版 |
2020/01/15(水) 09:27:17.98ID:???
new FileReaderのreader.readAsTextってめちゃくちゃ読み込み遅くないですか?
フォルダ30個分(ファイル数100個くらい)を同時にやってみたら
いつまで経ってもうんともすんともいいません
マシンのスペックに依存しているのはわかるのですがもしかしてそれ以外にも制限あったりしますか
0084Name_Not_Found
垢版 |
2020/01/15(水) 12:17:13.18ID:???
new FileReaderで読み込んでアップロードし終わったファイルデータ?の
メモリ解放的なことってどうにかできないものか・・
タブ閉じればいいけど、同じタブだとどんどん貯まってく
0085Name_Not_Found
垢版 |
2020/01/15(水) 14:08:56.43ID:???
>>84
どっかに変数で保持し続けてたりしない?
0087Name_Not_Found
垢版 |
2020/01/15(水) 22:13:43.55ID:???
>>85
var hoge=formdata;みたいにそのままにしてた
hoge=nullとかにすれば開放されるの?
今度試してみる
0088Name_Not_Found
垢版 |
2020/01/16(木) 12:45:06.52ID://pOUTQK
>>68 です。
みなさん、いろいろご回答ありがとうございます。
説明が下手ですみません。

ゲームのセーブデータのような使い方をしたいと思いました。
ネットを頼りに見様見真似で、保存していた
{ "aa": 963, "bb": 852, "cc": 741 }
を取得できたのはいいけど、この文字列をどうしたら便利に使えるか
(=元のデータに復元できるか)、がわかりませんでした。
探し方がわるいのか、どの説明も上記の「文字列として取れます」で終わっていて、
その先の解説が欲しいなと…

それとも、文字列を取得できた時点で JSON の役目はおわっていて、
あとは csv 読み込みみたいに自分で切り分けて使うのでしょうか。
みなさんなら、この文字列どうするかんじでしょうか。。。

最悪、JSON使わなくても大丈夫そうな処理なのですが、
せっかくなので使って便利なら試したく思いました。
0089Name_Not_Found
垢版 |
2020/01/16(木) 13:35:55.10ID:???
const obj = JSON.parse()
const yyy = new testClass(obj.aa, obj.bb, obj.cc)

yyy.aa // 963
0090Name_Not_Found
垢版 |
2020/01/16(木) 22:29:56.27ID:???
>>88
データ形式によっちゃ使えないけど例だけ満たせればよいなら

const yyy = new testClass(null, null, null);
JSON.parse(json, (key, value) => {
 if (key) yyy[key] = value;
});

とかw
009178
垢版 |
2020/01/16(木) 23:34:41.94ID:???
>>78
みたいに、

new testClass( obj )
と、1つの引数のオブジェクト渡しに変えた方が、良さそう

引数を3つも渡すのは、面倒でしょ?
0092Name_Not_Found
垢版 |
2020/01/17(金) 03:55:24.33ID:???
理由は面倒だから?w
new testClass(1, 2, 3)
と書くのが面倒で、
new testClass({a: 1, b: 2, c: 3})
と書くのは面倒じゃないんだ?www
0093Name_Not_Found
垢版 |
2020/01/17(金) 06:25:26.57ID:???
頭が悪いね
大ヒント:obj.a
0094Name_Not_Found
垢版 |
2020/01/17(金) 06:40:13.58ID:c4cACoID
テトリスくらい作れないと話になりませんか?
0095Name_Not_Found
垢版 |
2020/01/17(金) 08:13:00.78ID:gip8AQMU
WebフォームとDBいじるだけならテトリス要らないと思われ
ゲーム作るならテトリスをコピーするのは大事だけど、新しい落ちゲー作るアイデアのが大変
0096Name_Not_Found
垢版 |
2020/01/17(金) 08:21:36.97ID:c4cACoID
新しいおちげー作るにしてもテトリスは基本になるかなと
ゲームエンジン使ってるんですけどね
0097Name_Not_Found
垢版 |
2020/01/17(金) 15:43:36.63ID:s+p7yde/
みなさん本当にありがとうございます。

>>89
すみません、保存するのは何かのポイントのように変わるものです
数字は固定じゃないです

>>90
アロー演算子わかんないです…

>>91
ちょっと何言ってるかわかんないです…(自分の習熟度が低すぎて)
localStorage.getItem ( "testKey" ) から取れた値を復元したいです

>>92
var aaa = new testClass ( 1, 2, 3 );
localStorage.setItem ( "testKey", JSON.stringify( aaa ) );
var bbb = new testClass( localStorage.getItem ( "testKey" ) );

で、bbb が {aa: "{"aa":1,"bb":2,"cc":3}", bb: undefined, cc: undefined} になっちゃった…
おしい…?
でも、そんなニュアンスのことをしたかったです。

>>93
はい(真顔)
なんで皆さんが頑なに localStorage.getItem ( "testKey" ) を起点に答えてくれないのか
未だにわかっていません…
{"aa":1,"bb":2,"cc":3} になった時点で再利用できないデータなのか。。。

−−−
初歩から出直すべきですかね… (^^;;;
0099Name_Not_Found
垢版 |
2020/01/17(金) 20:08:42.03ID:???
最近不思議に思っていることがあります
各ブラウザがサードパーティクッキーを制限すると発表して騒ぎになっていますが、
別に広告主が提供先サイトにJSを埋め込ませれば好きなように好きなだけ広告主のサーバーとやり取りさせられますよね?
サードパーティクッキーを制限すると、どんな問題が本質的に解決するのでしょうか?
0100Name_Not_Found
垢版 |
2020/01/17(金) 20:11:14.10ID:???
広告主に「たくさん広告表示されました!だからお金ください!」って
請求できるってこと?
■ このスレッドは過去ログ倉庫に格納されています

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