◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

+ JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net YouTube動画>1本 ->画像>6枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1457452716/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1 :デフォルトの名無しさん:2016/03/09(水) 00:58:36.45 ID:S0itb4sM
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

2 :デフォルトの名無しさん:2016/03/09(水) 01:00:06.15 ID:S0itb4sM
■質問テンプレート
【環境】OS, 実行環境をバージョンと共に記入してください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■前スレ
+ JavaScript の質問用スレッド vol.118 + [転載禁止](c)2ch.net
http://echo.2ch.net/test/read.cgi/tech/1429634108/

■過去スレ全集(Web制作)
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)

■テンプレ案(Web制作)
http://fiddle.jshell.net/fH4cC/167/show/light/

■関連スレ
ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/
CSS初心者スレッド=13th=(c)2ch.net
http://peace.2ch.net/test/read.cgi/hp/1423959729/
Canvasについて語ろう
http://peace.2ch.net/test/read.cgi/hp/1305093769/

3 :デフォルトの名無しさん:2016/03/09(水) 01:00:44.46 ID:S0itb4sM
■FAQ
http://fiddle.jshell.net/vSqKr/43/show/

■開発者ツール(Developer Tools)の基本的な使い方 (全部は http://fiddle.jshell.net/vSqKr/43/show/#Browser-Developer-Tools )
◆諸注意
- 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
- IE9- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと 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 型の中身をそのまま表示してくれます。)

4 :デフォルトの名無しさん:2016/03/09(水) 01:01:12.81 ID:S0itb4sM
■各種仕様 ( http://fiddle.jshell.net/vSqKr/43/show/#Link も参照 )
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
https://web.archive.org/web/20140715002617/http://www2u.biglobe.ne.jp/~oz-07ams/prog/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://people.mozilla.org/~jorendorff/es6-draft.html (ECMAScript 6 有志HTML版)
http://kangax.github.io/es5-compat-table/ (ECMAScript 5 compatibility table)
http://kangax.github.io/es5-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 和訳)
◆ 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)

5 :デフォルトの名無しさん:2016/03/09(水) 01:01:55.31 ID:S0itb4sM
■各種仕様 (続き)
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html

■諸注意
vol.115でlodashを不必要に推奨して啓蒙する行為が多く確認されており、ライブラリ系の質問はvol.116から禁止されました。
vol.115,116ではライブラリ禁止する発言が見られた直後にライブラリを許可する意図で次スレを立てる行為が確認されています。
本スレッドでライブラリ許可を求める発言が確認された場合は不要な争いを避ける為、スルーすることを推奨します。
ライブラリの質問はライブラリスレへ誘導し、誘導行為への反論はスルーしてください。

6 :デフォルトの名無しさん:2016/03/09(水) 03:00:01.13 ID:6uZQGjqP
http://hayabusa6.2ch.net/test/read.cgi/pc2nanmin/1439353617/216
        ↑ ↑ ↑ ↑ ↑ ↑

7 :デフォルトの名無しさん:2016/03/14(月) 08:46:07.23 ID:RZ1GsRz+
誰かいませんか?

8 :デフォルトの名無しさん:2016/03/14(月) 10:15:53.45 ID:h0SaP8VW
いますよ。ずっと。あなたの後ろに。

9 :デフォルトの名無しさん:2016/03/14(月) 10:50:06.69 ID:t/84a/RD
いま来ました

10 :デフォルトの名無しさん:2016/03/14(月) 11:03:34.88 ID:h0SaP8VW
宇宙からのメッセージです

11 :デフォルトの名無しさん:2016/03/14(月) 11:20:27.58 ID:JjlziuNG
前スレが消化されてから人も増えるかと

12 :デフォルトの名無しさん:2016/03/20(日) 19:33:23.36 ID:0939kaIS
JQueryみたいなライブラリを使わずに非同期APIを同期的に実行する良い方法は有りませんか?

13 :デフォルトの名無しさん:2016/03/20(日) 20:03:50.21 ID:evsTqtHC
Promiseでラップするのが無難

14 :デフォルトの名無しさん:2016/03/21(月) 04:13:33.83 ID:lwkXzPK7
>>12
Promiseに対応していない古いブラウザでやるなら
bluebirdというライブラリを使うといい。
標準のPromise機能に加え便利メソッドが増えている。

15 :デフォルトの名無しさん:2016/03/21(月) 07:35:25.86 ID:fN+PxOXs
javascriptでクローラは作れますか?
具体的には画像のダウンローダーを作りたいです。
下位階層まで根こそぎ取ってくるようなものです。

node.jsで作れるとあったのですが

16 :デフォルトの名無しさん:2016/03/21(月) 07:36:57.38 ID:lwkXzPK7
初心者がよく言うセリフ
○○言語で△△は作れますか?

作れない言語なんてまず無いよ。

17 :デフォルトの名無しさん:2016/03/21(月) 08:47:44.94
>>15
まんま本出てるから大丈夫よ

18 :デフォルトの名無しさん:2016/03/21(月) 09:22:30.77 ID:Xz9aFOH3
>>14
ライブラリを使わずにって書いてあるのが読めない人ですか?

19 :デフォルトの名無しさん:2016/03/21(月) 09:35:52.01 ID:lwkXzPK7
>>18
読めないんじゃなくて、読まない。

20 :デフォルトの名無しさん:2016/03/21(月) 09:51:19.79 ID:Xz9aFOH3
>>19
つまり、ヴァカってことですね。

21 :デフォルトの名無しさん:2016/03/21(月) 09:52:34.56 ID:lwkXzPK7
>>20
それは論理的じゃないな。
なぜ読まない=馬鹿なのか?

22 :デフォルトの名無しさん:2016/03/21(月) 10:11:23.87 ID:Xz9aFOH3
>>21
馬鹿は口を閉じてるといいよw

23 :デフォルトの名無しさん:2016/03/21(月) 10:21:00.80
jQueryの話しようぜ

24 :デフォルトの名無しさん:2016/03/21(月) 10:25:47.94 ID:lwkXzPK7
>>23
了解

25 :デフォルトの名無しさん:2016/03/21(月) 10:42:07.02 ID:Xz9aFOH3
>>24
馬鹿は口を閉じてるといいよ

26 :デフォルトの名無しさん:2016/03/21(月) 11:57:05.09 ID:Q2tTgw28
では聞こう。JQueryの定義とはなんだ?

27 :デフォルトの名無しさん:2016/03/21(月) 15:29:23.97 ID:lwkXzPK7
JQueryじゃなくてjQueryな

28 :デフォルトの名無しさん:2016/03/21(月) 22:05:08.28 ID:iER/zWdn
>>23
なんでIDないの?

29 :デフォルトの名無しさん:2016/03/21(月) 22:51:19.14 ID:gUE5p+TD
Idが出ないと死ぬっていう都市伝説

30 :デフォルトの名無しさん:2016/03/21(月) 22:57:43.40 ID:hs33rQ/Z
>>15
クローラーは、Rubyだろ。
paiza.IO で、それっぽいコードをよく見るけど

まあ、Electron(Node.js + Chromium)でやりたいなら、やれば?

31 :デフォルトの名無しさん:2016/03/21(月) 23:22:13.08 ID:isb2gyBM
ページにテキストフォーム、セレクトメニュー、チェックボックスが多数ありまして
保存ボタンを押すとcookieを保存して、読み込みボタンを押すとcookieが読み込まれる
というページを作りたいです。
javascriptでnameを一つ一つ指定して保存するような感じでなら出来たのですが、
今後要素が増えるたびにcookieの方も調整するのが面倒だと思いました。
ページ全体の状態をまるごとcookieに保存するのに簡単なコードの書き方などありますでしょうか?
jQueryでも何か簡単な方法はないかと探しているんですが初心者なのでいまいちわからないです
よろしくお願い致します。

32 :デフォルトの名無しさん:2016/03/21(月) 23:31:41.43 ID:hs33rQ/Z
cookieには、そんなに大きいデータは入れられない。
せいぜい、1KB以下まで

HTML5のWeb Storage でオフライン環境に、キャッシュを保存する

33 :デフォルトの名無しさん:2016/03/22(火) 01:14:15.87 ID:UN51cu0Y
では問おう。状態とは何か?

34 :デフォルトの名無しさん:2016/03/22(火) 01:20:20.54 ID:rdrmg4XV
ドラゴンブックを読んで状態数の削減を実装する。

35 :デフォルトの名無しさん:2016/03/24(木) 00:38:34.81 ID:YyzBD89/
promiseを返す関数a b cがあるとして
aのpromiseが終わったらbを実行
bのpromiseが終わったらcを実行
cのpromiseが終わるまでaの呼び出し元で待機
みたいな処理をネスト控えめに書けますか?

36 :デフォルトの名無しさん:2016/03/24(木) 00:50:23.16 ID:QUxdzUzn
>>35
それが出来るのがプロミスだろうが!

37 :デフォルトの名無しさん:2016/03/24(木) 01:10:42.04 ID:Dc6NU6wk
呼び出し元で待機、の解釈によるけど返ってきたインスタンスを指すなら可能
そのコード位置からの同期処理の再開を指すならasync/await使わないと無理

38 :デフォルトの名無しさん:2016/03/24(木) 02:23:12.67 ID:vscoeD/v
async/awaitはPromiseを使った処理をもっと簡潔に書けるように
JavaScript構文を改良したものなんだから、
async/awaitでできるならばPromiseでもできるんだよ。

39 :デフォルトの名無しさん:2016/03/24(木) 14:33:45.16 ID:yOLyGMcJ
javascriptでi osとアンドロイド両方のスマホアプリは作れます?
作れるとしたらデメリットは有りますか?
遅いですとか

40 :デフォルトの名無しさん:2016/03/24(木) 14:49:26.54 ID:v9bzQn8L
質問
let ar = [];
let br = ar;
ar.unshift(0); とか ar.push(0); とかしても br は ar と常に同じ配列を参照してる事は保障されてる?

41 :デフォルトの名無しさん:2016/03/24(木) 15:17:29.36 ID:yOLyGMcJ
後もう一つ質問なんですが、node jsで画像のダウンローダーっぽいものは作れますか?

42 :デフォルトの名無しさん:2016/03/24(木) 22:40:22.01 ID:sBlWvTvY
JavaScriptのスレッドモデルがよくわからんのだけど
JavaScriptのコードとして書いた部分はUIスレッドで実行されるって保証されてるの?
C#で言うとBeginInvokeした時のよう考えていいのだろうか
p = 非同期API();
q = 非同期API();
p.done(A);
q.done(X);
p.done(B);
と書いた場合に別スレッドで実行されるのはあくまで非同期APIだけで
AとBとCはPromise使おうがsetTimeoutしようが単に後回しにされるだけで結局全部UIスレッドで実行されるから絶対に衝突しないって事でいいの?

43 :デフォルトの名無しさん:2016/03/25(金) 01:13:56.64 ID:Y9GDVUzX
>>39
作れる
デメリットは変換に使うプラットフォームの仕様やバグに付き合う必要があること

>>40
されてる
その場合brが参照しているのはarじゃなくて配列自身

>>41
作れる

>>42
だいたい最終行の理解で合ってる
シングルスレッドでレンダリングとキューの消化を交互に繰り返してる感じ

44 :デフォルトの名無しさん:2016/03/25(金) 11:11:25.08 ID:eOfUcnNe
HTMLでラインみたいなチャット画面作ってるのですが、フッターに設置したテキストボックスをタップするとキーボードでテキストボックスが隠れてしまいます
どうすればよいでしょうか?
ちなみにコントローラはjsです

45 :デフォルトの名無しさん:2016/03/25(金) 21:00:38.71 ID:N0KH+ld0
隠れないように、または隠れても見える位置までスクロール出来るように余裕を取る

46 :デフォルトの名無しさん:2016/03/26(土) 13:53:31.01 ID:GwvfWp/j
>>44
Android 5.1.1 Google Chrome で再現できない
https://jsfiddle.net/nL82196v/
現象を再現可能なコード、対象ブラウザ名及びバージョンは?

47 :デフォルトの名無しさん:2016/03/26(土) 15:24:40.02 ID:KP7AUrYI
nodejsってnodejs側のプロンプトを使うんですか?
win側のプロンプトを使うんですか?

48 :デフォルトの名無しさん:2016/03/26(土) 16:39:24.78 ID:hZGT0ViJ
>>47
というと?

49 :デフォルトの名無しさん:2016/03/26(土) 19:19:26.98 ID:2IjmMYr5
ページの全状態を保存したい
閉じて再び開いたときに元の状態に戻したい
なんとかなりませんかねこれ

50 :デフォルトの名無しさん:2016/03/26(土) 21:28:37.50 ID:AMZqaLeO
>>49
DOMの内部状態は再現できないのでどうにもならない
最初からなんとかするように作れ

51 :デフォルトの名無しさん:2016/03/26(土) 22:31:52.28 ID:5qdFWVjA
amazonのこれから開催予定のセールのページで
商品一覧で商品のタイトルにspan id="dealTitle"
がそれぞれ使われてるんですけど、idって重複していいんですか?

52 :デフォルトの名無しさん:2016/03/26(土) 23:56:34.06 ID:nOSHwcxN
>>49-50
RoR, CakePHP などのフレームワークでは、

フォーム送信のvalidateで、入力エラーがあると、
フォームに入力した内容も、消されずにそのままになっているけど、
これはサーバーサイドだからな

クライアント側で、前の画面を保存するには、
入力内容をファイルで保存するしかない

53 :デフォルトの名無しさん:2016/03/27(日) 03:48:09.52 ID:HhHg2DAX
>>52
だから最初からそう言ってんだよ出しゃばり

54 :デフォルトの名無しさん:2016/03/27(日) 07:23:56.73 ID:60dasars
localStorage使えばええんちゃうの

55 :デフォルトの名無しさん:2016/03/27(日) 09:50:21.72 ID:MdJCnp0Y
Viewはシリアル化不可能だからModelをシリアル化可能にするしかないのかな
そしてViewの状態をModelから関数的に復元できるように設計にしなければならないと

56 :デフォルトの名無しさん:2016/03/27(日) 10:03:52.53 ID:HhHg2DAX
データ変更イベントで全部制御すればよし
開始時は全てが変更とみなす
これでDOMイベントもwebsocketもstorageイベントも全てに対応だ

57 :デフォルトの名無しさん:2016/03/27(日) 10:25:36.38 ID:/vjbvHhC
var org ="全100件・・・_全120件..._全45件_'''"
var ret =org.replace( /(全)(\d+)(件)/g, "$1" +"/"+ ("$2"-0+1)+"/"+"$3" )

ret の値
期待→ 全/101/件・・・_全/121/件..._全/46/件_'''
実際→ 全/NaN/件・・・_全/NaN/件..._全/NaN/件_'''

正規表現の置換ですが "$2”を 数値に変換して値を1増やすことができません。
parseInt、Numberを使ってもおなじでした。

解決方法ご存知の方がいましたら教えていただければ幸いです。

58 :デフォルトの名無しさん:2016/03/27(日) 12:19:54.26 ID:x3ePCErE
>>49
そういうのはブラウザ側に任せるべき領分(セッションの復元)だと思うのだけど。
どうしてもやりたいなら、

- focusの記録(localStorage)
-スクロール位置の記憶(localStorage)
- JavaScript機能の状態をhashに記録(pushState)
- ログイン状態の記録(Cookie、サーバサイド処理)

59 :デフォルトの名無しさん:2016/03/27(日) 12:24:40.83 ID:UR7Ecaqc
replaceの第二引数が "$1/NaN/$3" になっててそもそも$2が消えてるな
文字列じゃなくて関数突っ込んでその第三引数を変更するのがいいと思うよ

60 :デフォルトの名無しさん:2016/03/27(日) 12:25:14.33 ID:x3ePCErE
>>57
replaceのコールバック関数で受け取るか、while, execでキャブチャした変数から作り直すか

61 :57:2016/03/27(日) 14:39:03.13 ID:/vjbvHhC
>>59,60
こんな感じでしょうか?


var org ="全100件・・・_全120件..._全45件_'''"
var ret =org.replace( /(全)(\d+)(件)/g,
function(
matchText,
ref1,
ref2,
ref3,
position,
self)
{

return ref1+((ref2-0)+1)+ref3;
}

ひとまず、期待通りの動きができています。
アドバイスありがとうございました。

62 :デフォルトの名無しさん:2016/03/27(日) 16:17:42.83 ID:wSRwnaYP
node jsでリクエストモジュール(最初から入ってますよね?)を使って画像取ってきたいのですが、

var my = require('絶対パズ/request');
console.log(my);

としてもモジュールにアクセス出来ないというエラーが出るんですが、なぜでしょうか?
他の問題でしょうか?
あと、requestモジュールは、インストールはされている状態なのでしょうか?

63 :デフォルトの名無しさん:2016/03/27(日) 18:10:03.43 ID:s1WEC1Fp
>>61
無駄な変数が多いな。

var org = "全100件・・・_全120件..._全45件_'''"
var ret = org.replace( /(?<=全)(\d+)(?=件)/g, function(num) {
 return parseInt(num)+1;
});

ES6を使うのならば更に短くなるけど
var ret = org.replace( /(?<=全)(\d+)(?=件)/g, num => parseInt(num)+1)

64 :デフォルトの名無しさん:2016/03/27(日) 18:54:15.04 ID:UR7Ecaqc
>>62
まずバンドルされてるのはhttpね
次にパズじゃなくてパス(Path)
そんでglobalのモジュールは名前だけでrequireできる
nodeスレのテンプレに初心者向けのリンクがあるから目を通すといいよ

65 :デフォルトの名無しさん:2016/03/27(日) 19:49:01.73 ID:bXTz64zw
この言語ってイベントはdomにしかないのか

66 :デフォルトの名無しさん:2016/03/27(日) 20:32:51.88 ID:+zvcgvl1
そもそもタスクキューが言語レベルで定義されたのがES2015からだからね
Promiseで使われてる

67 :デフォルトの名無しさん:2016/03/27(日) 20:42:59.04 ID:HhHg2DAX
>>65
どうしたらそんな馬鹿な結論に

68 :デフォルトの名無しさん:2016/03/27(日) 21:44:33.38 ID:bXTz64zw
>>67
自作クラスにイベント定義しようとして方法をググったらdocument.createEvent使えって書いてあったからそういうもんなのかなと
.NETみたいな汎用的なマルチキャストデリゲートはないのかな

69 :デフォルトの名無しさん:2016/03/27(日) 21:59:43.14 ID:mBj9pM3F
現状ESの範囲でやるならPromiseを利用するしかない。
因みにdocument.createEventは古過ぎて非推奨なやり方。
今はEventコンストラクタを使う。

70 :デフォルトの名無しさん:2016/03/27(日) 23:43:22.80 ID:HhHg2DAX
>>68
jsは元からdelegate的にthis付けて関数渡せるからいらん
と言うかそう言う意味のイベントなんて
わざわざ言語に入れてる方が珍しい
スレッディングが問題ならsetTimeout

71 :デフォルトの名無しさん:2016/03/27(日) 23:59:58.48 ID:HhHg2DAX
なぜPromiseが出てくるんだ?

72 :デフォルトの名無しさん:2016/03/28(月) 00:15:44.30 ID:2h3yopdG
node.addEventListener("xxx", function (e) {xxx();});
node.addEventListener(...
とか書くの超だるいじゃん
node.onxxx += (e) => xxx();
node.onxxx += ...
って書ければいいじゃん
つかDOM要素以外はaddEventListenerが定義されてないからそこから書かなきゃだしもうやだ

73 :デフォルトの名無しさん:2016/03/28(月) 00:33:41.97 ID:qkrUQjq7
>>72
node.addEventListener("xxx", xxx);

74 :デフォルトの名無しさん:2016/03/28(月) 00:43:14.68 ID:jP0nw9w8
>>68
nodeならEventEmitterを使えばいいよ。
EventEmitter2とかならブラウザでも動くらしいけど

このスレに居るやつはブラウザで動くJavaScriptのことしか
知らないから、よく現実的ではない回答がでてくるので注意。

75 :デフォルトの名無しさん:2016/03/28(月) 00:45:19.83 ID:jP0nw9w8
>>65
> この言語ってイベントはdomにしかないのか

DOMは言語じゃない。
ブラウザが用意しているライブラリにすぎない。

76 :デフォルトの名無しさん:2016/03/28(月) 02:04:57.93 ID:NypY0af3
XMLHttpRequestについて勉強しています。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
 if (xmlhttp.readyState == 4) {
  if (xmlhttp.status == 200) {
   /*この内容を関数外から参照したい*/
   var data = JSON.parse(xmlhttp.responseText);
  }
 }
}
xmlhttp.open("GET", "test.json");
xmlhttp.send();

alert(data); /* こんな感じで表示したい */

これでJSONファイルから値を取得できるのですが、
function()外からdataの値を参照するにはどうすればいいのでしょうか?
上記のalertに値が入る方法を教えて下さい。

77 :デフォルトの名無しさん:2016/03/28(月) 04:22:27.57 ID:+hSVfs2f
>>71
setTimeoutもD(B)OM APIだから。
JobキューによるイベントループがES言語レベルで定義されたのはES2015からで、
それにアクセスできるのはPromiseしかない。
他は全部外様な物。

>>76
コールバックを勉強

78 :デフォルトの名無しさん:2016/03/28(月) 07:34:18.85 ID:Kq+xA51M
>>74
ブラウザについてだけ言ってるレスってどれ?

79 :デフォルトの名無しさん:2016/03/28(月) 07:38:22.67 ID:Kq+xA51M
>>77
タスクキューはイベントとは別
そもそもそれ自体は簡単に実装できるし

80 :デフォルトの名無しさん:2016/03/28(月) 14:08:14.84 ID:bQjH0a26
>>64
どうもありがとうございます。
そっちのスレも見てみます

81 :デフォルトの名無しさん:2016/03/28(月) 14:12:43.07 ID:AqyD+FoJ
>>76
グロバル変数

82 :76:2016/03/28(月) 15:21:37.64 ID:NypY0af3
>>77
コールバックってreturnで返すやつですよね?
>>76のソースで言う
var data = JSON.parse(xmlhttp.responseText);
の後に、
return data;
を書いても受け取り方が分かりません。
xmlhttp.onreadystatechange = function ()
としているわけですし・・。

>>81
グローバル変数って関数外で変数宣言しますよね?

var json_data;
var xmlhttp = new XMLHttpRequest();
〜中略〜
var data = JSON.parse(xmlhttp.responseText);
json_data; = data;

としてjson_dataに代入されません。
XMLHttpRequestを使ったやり方では違うんですかね?
マニュアルを何度も見たのですが、この辺がよくわかりません・・・

83 :デフォルトの名無しさん:2016/03/28(月) 15:29:23.31 ID:8nd4zd+D
var dataって変数消しな

84 :デフォルトの名無しさん:2016/03/28(月) 15:35:31.52 ID:UwAduPwe
分岐するので非同期通信では無理
同期通信にしないと返り値はとれないよ

85 :デフォルトの名無しさん:2016/03/28(月) 16:19:51.96 ID:3hfk1W8A
>>79
そりゃ同期的なものなら幾らでもできるが、
DOMイベントとか一般的な非同期なイベントはESの範囲では表現できない。
ただしPromiseを活用することでできる。

86 :デフォルトの名無しさん:2016/03/28(月) 17:12:03.19 ID:5Y2MOZMB
>>82
代入するまで処理を停止させるんですから、まさに同期通信の挙動ですよね
他の方もいってますが、同期通信にしては?

87 :デフォルトの名無しさん:2016/03/28(月) 17:18:33.22 ID:To6NOCCD
>>82
素朴な疑問なんだが、dataに代入してるその部分でalert(もしくはalertにあたる処理)しちゃいかん理由があるのだろうか?

88 :76:2016/03/28(月) 17:31:19.89 ID:NypY0af3
>>86-87
クラスや関数の中でJSONのデータを取得して、それを関数外から参照したいのです。
なんか根本的に間違ってるんですかね・・。
JSONファイルの内容って非同期通信以外でも取得できるのかも・・。

とにかく、>>76のコードではどうやっても無理という結論で良いのでしょうか?

89 :デフォルトの名無しさん:2016/03/28(月) 17:44:30.66 ID:szf/wSg3
>>88
流れを良く追ってないが、
> xmlhttp.send();
は非同期通信なので、呼び出し後データを受信する前に処理はすぐに下に遷移する。

> alert(data); /* こんな感じで表示したい */
なので、この行ではまだデータは受信していない。

Ajaxの受信完了時に
> var data = JSON.parse(xmlhttp.responseText);
が実行されるが、そもそも>>76のコードが一つの関数なら、もうその関数の
実行は終わってるわけでreturnなどはできない。

ではどうするかというと、>>76がfunc()の中だとして、
・var data = ...の行の下に処理を書く
・global_data = としてグローバル変数に入れる(もちろん、受信前は空)
・funcにcallback関数を引数で渡す

var my_callback = function(data) { //dataを参照する処理 };
があったとして、
func = function(callback_func) {
...
var data = JSON.parse(xmlhttp.responseText);
callback_func(data);
...
}

func(my_callback);
で呼び出す。

90 :デフォルトの名無しさん:2016/03/28(月) 17:45:50.00 ID:3hfk1W8A
同期XHRはWorker以外では極めて非推奨だから非同期を使うしかない
非同期を使うとそのようには書けない
ただジェネレータやasync/awaitを使って同期的に書くことは出来る

おまけで言うなら
onreadystatechangeではなくonloadを使い、
JSON.parseではなくresponseType='json'を使うのが今流
そしてさらにモダンなのがfetch
どのみち非同期的な書き方に慣れたほうがいい

91 :デフォルトの名無しさん:2016/03/28(月) 18:09:19.03 ID:UwAduPwe
生産性と利便性を考慮するなら
jQuery ajaxを使った方がいいと思う
学習目的なら流してね

92 :76:2016/03/28(月) 18:19:55.16 ID:NypY0af3
>>89
かなり詳しくありがとうございます。以下の様なコードに変更しました。

var my_callback = function(data) {
alert(data);/* dataの中身が表示される*/
 return data;/*これでは無理*/
};

func = function(callback_func) {
 var xmlhttp = new XMLHttpRequest();
 xmlhttp.onreadystatechange = function () {
  if (xmlhttp.readyState == 4) {
   if (xmlhttp.status == 200) {
    var data = JSON.parse(xmlhttp.responseText);
    callback_func(data);
   }
  }
 }
 xmlhttp.open("GET", "test.json");
 xmlhttp.send();
}

/*コールバックが実行される*/
func(my_callback);

/*my_callbackをreturnにした場合*/
var hoge = func(my_callback);
alert(hoge);/*何も表示されない*/

コメントにも記述していますが、my_callback内でalertをすればアラートが表示されます。
しかし、my_callbackの内容を受け取りたいとしてreturnをした場合は表示されません。
関数外から参照するのは無理なのでしょうか?

93 :76:2016/03/28(月) 18:22:49.16 ID:NypY0af3
>>90-91
フリーのプラグインなど、jQuery使っていないものがありまして、
そういうプラグインをカスタマイズして、JSONファイルの内容を参照し、
そのプラグインに組み込みたい、というのが最終目的です。

ですので、非同期通信やJavascriptの基礎から勉強しているのですが、
理解が乏しく、皆さんのアドバイスを正確に受け取れていない状態です・・・

94 :デフォルトの名無しさん:2016/03/28(月) 18:31:35.81 ID:szf/wSg3
>>92
> 関数外から参照するのは無理なのでしょうか?
my_callback()もfunc()の外側なんだが・・・。

つまるところ、自分が参照したい全ての所から参照できる変数global_dataを作って、
> var data = JSON.parse(xmlhttp.responseText);
のかわりに
> global_data = JSON.parse(xmlhttp.responseText);
とやればいいだけの話。

ただし問題は、いつglobal_dataにデータが設定されるかわからない所。

95 :デフォルトの名無しさん:2016/03/28(月) 19:45:04.22 ID:UwAduPwe
>>93
var getJson = function() {
var x;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
x = JSON.parse(xmlhttp.responseText);
}
}
xhr.open('GET', 'test.json', false);
xhr.responseType = 'JSON';
xhr.send(null);
return x;
};

var data = getJson();

jQuery ajaxを使った方がいいと思うけど

96 :デフォルトの名無しさん:2016/03/28(月) 19:48:00.76 ID:UwAduPwe
訂正
誤:x = JSON.parse(xmlhttp.responseText);
正:x = JSON.parse(xhr.responseText);

97 :デフォルトの名無しさん:2016/03/28(月) 20:51:31.44 ID:To6NOCCD
>>92
手続き型っぽい書き方あきらめたらどうだ?
returnする目的って、要はその下でなんか呼びたいんでしょ?

フリーのプラグインとやらを、そこで初期化したらどうなの?scriptタグ書くとかして。あんまり勧めないけど。
プラグインって何なの?

98 :デフォルトの名無しさん:2016/03/28(月) 21:12:37.35 ID:surT/WgL
1つ間違いなく言えることは今新しくjQuery ajaxを使うより
fetchのポリフィルを使ったほうがベター。

99 :デフォルトの名無しさん:2016/03/28(月) 21:13:11.47 ID:Kq+xA51M
>>85
いや実装できるよ何をおっしゃてるのか…

100 :デフォルトの名無しさん:2016/03/28(月) 21:43:03.94 ID:surT/WgL
>>99
何をどう使えば実装できると言うの?
簡単でいいから教えて。

101 :デフォルトの名無しさん:2016/03/28(月) 22:07:15.35 ID:To6NOCCD
>>100
jQueryのasync:falseとか言われるよ。

102 :デフォルトの名無しさん:2016/03/28(月) 22:36:17.91 ID:5Y2MOZMB
>>92
あなたのやりたいことは同期通信だからopenの第三引数をfalseに設定する
https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest#open()
通信が終わるまでスクリプトの実行を停止するからUI的に美しくないけどね

103 :デフォルトの名無しさん:2016/03/28(月) 23:31:36.73 ID:+LUEdcB2
美しくないだけならいいが、"must not"で禁止されてるからね。
後方互換性のために今はまだコンソールへの警告だけで利用できるが、
いつ例外を吐くようになっても文句は言えない。
https://xhr.spec.whatwg.org/#sync-warning

104 :76:2016/03/28(月) 23:45:17.88 ID:NypY0af3
>>95
この方法で出来ました!!まさに求めていたとおりです!
全体を関数に入れた変数にしてreturnすればよかったんですね。

コードの良し悪しはあるかと思いますが、
自分としては目的の動作が出来たので前に進めました。

皆さん、親身になってアドバイスして頂き、本当にありがとうございます。
今後も精進していきます。

105 :デフォルトの名無しさん:2016/03/29(火) 00:04:17.83 ID:QYd4S8TL
>>102
それ非推奨。
chromeなんかだと、そのうち例外出して落とすからって言ってる。

106 :デフォルトの名無しさん:2016/03/29(火) 00:22:53.72 ID:CiYiwfo2
つーか ID:5Y2MOZMB みたいなアホは黙れよ
同期を教えて助けたつもりになっているアホも
だからお前らはゆとりのままなんだよ

107 :デフォルトの名無しさん:2016/03/29(火) 00:34:20.46 ID:K66wvvFn
プラグインを改造したいっていうことなんだし、まあいいんじゃね?

108 :デフォルトの名無しさん:2016/03/29(火) 02:00:12.73 ID:YkBe3d8C
どうやってもコード汚くなるんだがどうすればいいの
ジャヴァスクに親和性高いパターンとかあるのか

109 :デフォルトの名無しさん:2016/03/29(火) 02:28:56.54 ID:oBN7G4CB
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

この本は、Scott Meyers の本より、わかりやすい

110 :デフォルトの名無しさん:2016/03/29(火) 04:22:40.86 ID:40DENoq9
XMLHttpRequestでPromiseとかいい出すと
jQueryを使った方が楽って結論になるんだよな。

クロスブラウザのAjax通信+Promiseになってるから

111 :デフォルトの名無しさん:2016/03/29(火) 04:24:33.66 ID:UIi8OIde
>>100
アホかいな
配列と定期的なループで実装できるだろ
実際タスクキューなんて大半がそうなっとるわ

112 :デフォルトの名無しさん:2016/03/29(火) 04:26:21.27 ID:UIi8OIde
もしかしてjsは非同期だけどシングルスレッド、という基本的な事すら理解してない?

113 :デフォルトの名無しさん:2016/03/29(火) 06:04:51.79 ID:coyYjSQU
webworker使えば非同期じゃん

114 :デフォルトの名無しさん:2016/03/29(火) 09:53:30.62 ID:yarEvdgl
エンジニア(技術者)とは理論を現実化すること
ここを見ていると能書きばっかりでガックリ

115 :デフォルトの名無しさん:2016/03/29(火) 10:12:35.49 ID:ISdoAk/Z
>>66,77は>>65を納得させるコードを書けばいいと思う

116 :デフォルトの名無しさん:2016/03/29(火) 10:29:19.12 ID:NT5SVIu7
>>114
能書き以下の文句のみ書く奴もわからんけどね。
理論を現実化するって何なんだ?
コールバックするものを同期的にどうしても値を返したい、ってそれか?

117 :デフォルトの名無しさん:2016/03/29(火) 10:46:38.03 ID:z/ezpeX2
>>103
なるほど。将来的に廃止予定だから警告や例外を発しても良い仕様なのね。勉強になった。

118 :デフォルトの名無しさん:2016/03/29(火) 10:46:56.26 ID:yarEvdgl
御立腹のようで
失礼、能書きじゃなくて薀蓄かな
覗いてみた個人的感想として流してくれたらいいんだけど
質問に対して>>95のように回答してから薀蓄を並べる方が良いのでは?
ってことですよ

119 :デフォルトの名無しさん:2016/03/29(火) 12:09:31.03 ID:NT5SVIu7
>>118
俺書いたけどね。
コードじゃなくて考え方だけど。
理解できないコードよりも余程為になるように書いてるつもり。

var getJson=function(cb){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
 if (xmlhttp.readyState ==4 && xmlhttp.status == 200) return cb(JSON.parse(xmlhttp.responseText));  
 };

xmlhttp.open("GET", "test.json");
xmlhttp.send();
}

getJson(function(ret){
//alertなり、
//document.write("<script src='プラグインのjs'></script>");なり、
//data=ret;なり、
})
すれば?って話。

どーしてもdataが入るまで処理を止めたいなら、
yieldとか使うしかねーんじゃないの?

120 :デフォルトの名無しさん:2016/03/29(火) 13:24:26.66 ID:ZJ5WWFRI
>>119
それは非同期通信でJSONデータを取得しての分岐処理だよね
質問の主旨は変数に通信でJSONデータを格納することだよ

121 :デフォルトの名無しさん:2016/03/29(火) 13:34:39.47 ID:kWaaro/J
ちょっともうコールバックの概念と、Javascriptにおけるスコープの概念を知らない奴は黙ってて欲しい

122 :デフォルトの名無しさん:2016/03/29(火) 13:35:38.58 ID:NGEgZfA0
コールバック内で受け取った値をその外で使おうとする所が破綻してる
それは途中どういう手段を用いようが同期処理という (UIを止める処理だけを同期処理と言う訳じゃない)
コールバック内で受け取った値はコールバック内で処理すべし

123 :デフォルトの名無しさん:2016/03/29(火) 14:01:50.79 ID:kZZssD4f
>>111
その「定期的」なループがESの範囲では実現できないでしょ。
精々ビジーループしかできない。
それだと例えばDOMの変更をポーリングしてそれをイベントとすることはできない。
イベントとして実際重要なのは刹那の間処理を外部に受け渡して待つこと。
これができないとDOMイベント同じ使い勝手と効果のものは実装できない。
その刹那の間待つ定期的なループをESの範囲で実現しようとすればPromiseを使うしかないという話。

124 :デフォルトの名無しさん:2016/03/29(火) 14:03:11.20 ID:0EsoxiRu
>コールバック内で受け取った値をその外で使おうとする所が破綻してる
まったく石頭だわ
Storageに保存して外で使うことできるけどな

125 :デフォルトの名無しさん:2016/03/29(火) 14:15:07.45 ID:z/ezpeX2
>>123
Promise で DOM Events 相当の機能を実現できる気が全くしないのだけど、
例えば、MutationObserver 相当の事を Promise で実装するにはどのようなコードを書く?

126 :デフォルトの名無しさん:2016/03/29(火) 14:17:53.64 ID:kZZssD4f
>>125
Promiseを活用すればsetImmediateやnextTick相当の機能を実装できるから
それでポーリングすればいい。

127 :デフォルトの名無しさん:2016/03/29(火) 14:23:21.29 ID:NGEgZfA0
>>124
いつStorageに保存されたかをどうやって知るんだよ
結局何らかの同期処理をすんだろ

128 :デフォルトの名無しさん:2016/03/29(火) 14:32:13.22 ID:zwegJ/gg
おめぇら馬鹿だな。

イベントはPromiseの代わりになるが
Promiseはイベントの代わりになるとは限らない。

例えばダウンロードの進捗具合のように
定期的に発生するイベントはPromiseでは実現できない。
Promiseは状態が遷移したらそれ以降動かないからだ。

onreadystatechangeもStateが変わるたびに呼び出されるから
Promiseでは全てを実現できない。

まずこれが基本だから、これを理解してから喋れ

129 :デフォルトの名無しさん:2016/03/29(火) 14:38:06.76 ID:NGEgZfA0
requestAnimationFrameを使え
この中で状態をポーリングしてUIを更新すればちらつかずに更新できるし
スクロールにもきちんと追従できる

130 :デフォルトの名無しさん:2016/03/29(火) 14:50:41.80 ID:yLeRa/O1
>>127-129
元の流れが
>>65-68
のような無茶な流れなので、実用上の話と思うと当然無茶がある
それと、基本的にイベントに当たるものを作る時の話だからね

簡単な例えではsetTimeout的な機能も作れない
勿論全てのタスクを登録してビジーループで回したり、
事ある度にタスク管理に処理を戻せばある程度は可能だが、
Promiseを使えば既存のsetTImeoutやcreateEventとほぼ同じ使い勝手・効果のものを
エミュレートすることができる

131 :デフォルトの名無しさん:2016/03/29(火) 15:02:49.41 ID:0EsoxiRu
>>127
当たり前だろ、毎回非同期通信しないために
同期通信で格納することを前提で言ってるんだよ
キミの言うようなことを言ってたらグローバル変数も使えないよ

132 :デフォルトの名無しさん:2016/03/29(火) 15:09:45.93 ID:z/ezpeX2
>>126
よくわからないんだけど、それで MutationObserver 相当の事が出来るのね
具体的なコードが欲しいんだけど

133 :デフォルトの名無しさん:2016/03/29(火) 15:10:48.04 ID:NGEgZfA0
>>131
同期処理するんだったら何もStorageを出さなくてもいいよ
普通にグローバル変数を使えばいいんだから
なんでStorageを出した?

134 :デフォルトの名無しさん:2016/03/29(火) 15:16:11.37 ID:0EsoxiRu
>>133
論点をずらしてるんじゃないよ
石頭だって言ってるんだよ
日本語OK?

135 :デフォルトの名無しさん:2016/03/29(火) 15:21:23.12 ID:NT5SVIu7
>>120
変数に格納してんじゃん。。
getJsonに渡してる匿名関数のコメントの三行目の代入はグローバルにだよ。
そっから好きなスクリプトタグ書けって言ってんの。

136 :デフォルトの名無しさん:2016/03/29(火) 15:26:38.39 ID:0EsoxiRu
>>119に対して、>>120の指摘が当然だろ?
もっと逆上って言えば、質問者の意図する回答をしていないから荒れるんだよ
>>76の問に対して、>>95の回答 これで普通は解決なんだよ
あとは個々の主観ばかりの与太話にしか思えないよ

137 :デフォルトの名無しさん:2016/03/29(火) 15:28:19.14 ID:NT5SVIu7
教えてくれって言われたから教えて、
日本語読めないからコードかけって言われて、
コード書けって言われたからコード書いたらコードリーディングも出来なくてて、
ド低能にも程があるわ。

138 :デフォルトの名無しさん:2016/03/29(火) 15:30:38.77 ID:NT5SVIu7
>>136
アホか。
非同期通信で、一つずつ次の作業をするのは、
同期通信にほかならんだろ。
.then().then....
は全部非同期だよ。順番に呼んでるだけで。

そもそもグローバル変数に保存してるしな。

139 :デフォルトの名無しさん:2016/03/29(火) 15:34:40.10 ID:NGEgZfA0
>>134
いや突然Storageとか言って引っ込みつかなくて顔真っ赤にしてるのはわかったよw

140 :デフォルトの名無しさん:2016/03/29(火) 15:38:22.94 ID:z/ezpeX2
>>119は非同期処理前提なら妥当な提案だと思うけどね
この処理の肝はコールバック関数で受ける事であってグローバル変数やStrageだとかは完全な蛇足
>>76を完全に満たすには>>95の同期処理しかないわけだけど、現実的には非同期処理の方が望ましいからね

141 :デフォルトの名無しさん:2016/03/29(火) 15:39:09.01 ID:Z5Jc75xQ
まああれじゃね
非同期XHRはJSのコールバックや非同期処理の良い勉強になるから
自分で色々調べて練習しろっていうのが最良の答えじゃね

142 :デフォルトの名無しさん:2016/03/29(火) 15:43:56.03 ID:0EsoxiRu
>>139
お前が顔真っ赤なだけだろ?w

>>76が、味噌ラーメンを注文したんだから、
塩分多いから、やっぱりチャーシュー麺、醤油の方が美味しいよ、
味噌は塩分多いから...
など、どうのこうの言っているのと同じ
味噌ラーメンを食いたい人には味噌ラーメンを食わせば良いんだよ
さあ仕事するわ

143 :デフォルトの名無しさん:2016/03/29(火) 15:52:51.17 ID:NGEgZfA0
>>142
シメはラーメンかよwwお前にふさわしいよw

144 :デフォルトの名無しさん:2016/03/29(火) 16:29:40.76 ID:zwegJ/gg
>>130
> Promiseを使えば既存のsetTImeoutやcreateEventとほぼ同じ使い勝手・効果のものを
> エミュレートすることができる

setIntervalはどうやって作るの?

145 :デフォルトの名無しさん:2016/03/29(火) 16:33:27.36 ID:kWaaro/J
>>122
ajaxでdata collection取得

画面に反映

ユーザが何か操作

data collection更新

ajaxでpost

って普通だと思うけど。

146 :デフォルトの名無しさん:2016/03/29(火) 18:18:43.36 ID:NT5SVIu7
>>142
つくづくアホだな。
あたたかい水下さい→そんなもんねえよ、その代わり湯をやるよ。ってくらい的外れな事に現実的な回答を返してるよ。

米粉で作ったラーメン下さい→なんの事かわからんけど、米粉で作るのはフォーで、こういうの。
ラーメンはこういうの、って答えてるんだよ。

塩分が多いとかそんな問題じゃなくて。
食いたいものが物として現実解では有り得ないよ、って指摘。
何も読めてないのか、もう振り上げた拳が降ろせないのかわからんが、
新しい知識を素直に取り入れるのもプロだよ。

147 :デフォルトの名無しさん:2016/03/29(火) 18:21:00.48 ID:zwegJ/gg
お湯っていうのは、英語でhot waterっていうんだよ。
つまり熱い水。

148 :デフォルトの名無しさん:2016/03/29(火) 18:22:02.75 ID:NT5SVIu7
>>147
そうだね。知ってるよ。
同じように、日本語で言う同期的な処理を、javascriptではコールバックで行うんだよ。

149 :デフォルトの名無しさん:2016/03/29(火) 18:24:59.77 ID:kWaaro/J
>>148
> 同じように、日本語で言う同期的な処理を、javascriptではコールバックで行うんだよ。
それは初耳

150 :デフォルトの名無しさん:2016/03/29(火) 18:25:56.86 ID:NT5SVIu7
>>149
まぁ、Promiseの実装でも見てみれば?

151 :デフォルトの名無しさん:2016/03/29(火) 18:32:13.69 ID:kWaaro/J
>>150
非同期処理だって、コールバックで処理するだろと思っただけ

152 :デフォルトの名無しさん:2016/03/29(火) 18:39:58.03 ID:BL4JYHCh
物は言いようってやつだろ
これ以上相互理解は出来ない
話は終わり

153 :デフォルトの名無しさん:2016/03/29(火) 19:50:19.09 ID:cRlulqCL
非同期XHRのsend直後にsleepさせてみたらどうかと思ったけど
実際の通信の方が終わっても一旦イベントループ勧めないと状態が更新されないのな
やっぱりfetchとawaitでも使うしかないか

154 :デフォルトの名無しさん:2016/03/29(火) 20:13:48.80 ID:CiYiwfo2
本日の低脳荒らし ID:yarEvdgl
理由:他の文句言っている奴は少なくとも「技術的観点」から物を言っているが、
こいつは感情的なことを言っているだけ。

てか俺はむこうのキチガイBBA = ID:NypY0af3 = ID:yarEvdgl じゃないかと思っているんだが。
とにかく回答が欲しい、それについては煽ろうが他人の指摘を無視しようがお構い無しだろ。
低脳っぷりも似ている。
そもそも質問も見覚えがあるんだが。

お前らが何をしたいのか分からんが、回答先と回答内容はちゃんと選べよ。
お前らのためにもならないぞ。
回答すればいいってものじゃないんだよ。

>>119
挑発に乗るな。お前のためにもならないぞ。
どうみても>>76は一行も理解しておらず、コピペでしかないだろ。
だから76は何とかしてコードを書かせたいだけなんだよ。自ら学ぼうなんて微塵も思っていない。
そもそも回答に不服があるのなら、かっこいい回答を自分で書けば済む話だ。
それも出来ない癖に文句を言っている時点で察せ。

そもそも「車輪の再発明」をあれほど嫌うお前らが何故「回答の再発明」を嬉々としてやるのか意味不明だ。
どうやらお前らゆとりは何故「車輪の再発明」が駄目なのか理解できていないようだ。

これは「回答の再発明」だと思われる案件は、無視したほうがいい。
多分それがお前らのためにもなると思う。

155 :デフォルトの名無しさん:2016/03/29(火) 20:21:42.04 ID:cRlulqCL
必ずしもそうは言えないかと
Webの進歩は日進月歩で何が最良かは日々変わるので、
それを確かめることが無意味ではないということと、
車輪の再発明は初心者が技術を磨くためには有用で、
その教え方としてどうするのが良いのかを議論するのも無駄ではない。
だからこそ皆話し始めて話を続けているわけで

156 :デフォルトの名無しさん:2016/03/29(火) 20:40:04.88 ID:z/ezpeX2
車輪の再発明は勉強の為に役立つね
「車輪の再発明をしなくていいから車輪が何かを知っている必要はないんだよ」と主張する輩もいるけど、違うと思うな

157 :デフォルトの名無しさん:2016/03/29(火) 21:48:07.43 ID:D22lADAw
お前らのレスこそ非同期そのもの

158 :デフォルトの名無しさん:2016/03/29(火) 22:55:48.28
一日中スレに張り付くのはロングポーリングかな

159 :デフォルトの名無しさん:2016/03/29(火) 23:20:15.85 ID:CiYiwfo2
>>155
「再発明」は自習に「有用」で、君が「教え方」を学びたいのなら、
君がやるべき事は、MDNを再読することだ。
それが「車輪の再発明」におけるライブラリコードリーディングに該当する。
少なくともここで "sleep" とか言い出して余計に混乱させることではない。

それにお前らも分かっていると信じたいが、「車輪の再発明」と同様、
お前ら以上にJavaScriptを知っている連中が、お前ら以上に時間をかけて丁寧に説明しようとした結果がMDNだ。
もちろん誤字脱字訂正も為されている。(デバッグ済)
だからそれ以上の説明をここでサクっと出来ることは稀だ。
ライブラリ推進派なら、MDNの説明を使える部分はさくさく引用して終わりにするべきだ。
糞みたいな説明されても質問者も迷惑だろ。

お前らは結果的にお互いに足を引っ張り合っていることに気がついていない。
「同期XHR」なんて明らかに間違いだし、そもそも非同期で書けないようではJavaScriptではやっていけない。
そこで躓いたら、インストールするしかないんだよ。
こいつは非同期以前にクロージャ、スコープ、グローバルも分かってない風だし、
「最初からやりなおせ」が正しい解答だ。
ここで間違った「同期XHR」を教えるのは、一時的には解決になるものの、長期的に見ると遠回りになる。
お前らもそういった「長期的に見て遠回り」のことばかり教えられ、
結果的に時間の割に成長せず、低レベルにとどまっているように見える。

まるきり分かってないような奴は、「最初からやり直せ」で追い返すべきだ。
それが本人のためにも、君らのためにもなるんだよ。

160 :デフォルトの名無しさん:2016/03/29(火) 23:25:54.24 ID:zwegJ/gg
3行にまとめろ

161 :デフォルトの名無しさん:2016/03/29(火) 23:27:50.39 ID:h9Hf6Oqw
質問が日に6つも7つもある状況なら言ってることも多少理解できるが
そうでないのだから、別に慣れ合いを楽しんだっていいでしょ

162 :デフォルトの名無しさん:2016/03/29(火) 23:52:24.48 ID:NT5SVIu7
>>151
データが来てから、何かを行う、
これを同期的な処理と言わずなんと呼ぼうか。
他の処理とは非同期だけどね。
って言葉遊びだよ。
なんかすまなんだ。

>>154
人間、コピペから始めるもんだよ。
小1のひらがな書き取りから漢字ドリルから、読書感想文から文学作品に至るまで。
それがナンセンスだよ、と言われて、考え方を示唆されて、それでも分かんなくて例を出されて、アホさを痛感すれば多少は学ぶだろ。
だからクソ叩くけどね。

163 :デフォルトの名無しさん:2016/03/30(水) 00:30:36.08 ID:Op2rn9Lq
>>159
> それが「車輪の再発明」におけるライブラリコードリーディングに該当する。
「車輪の再発明」は何のコードを読まず、一からコードを書くことを指すものだと思うが、コードを読んだらそれはただのコピペプログラミングではないのかね
「車輪の再発明」をするならPolyfill系が実用的かつ内部動作を知る機会を得られてお勧めだな
Selectors APIとかclassListとか仕様書とにらめっこしながらコードを書くのは割と楽しい

164 :デフォルトの名無しさん:2016/03/30(水) 08:02:34.29 ID:rLuvgVFw
>>156
少なくとも現代社会では君のような奴は必要とされない。

165 :デフォルトの名無しさん:2016/03/30(水) 09:03:18.80 ID:BnXnDw8Q
納期が迫ってるチーム内でこんな会話してたらそりゃ無駄だと思うが
ここでは必要なことだよ

166 :デフォルトの名無しさん:2016/03/30(水) 11:19:35.17 ID:dKie64pY
>>164
現代社会ではじゃなくてIT土方企業ではの間違いだろw
自ら学習せずしてどうやって技術力を高めるのか?
お前のように自分の価値を自分で貶める輩がいるから日本の技術者は給料が低いんだぞw

167 :デフォルトの名無しさん:2016/03/30(水) 11:42:46.78 ID:5NyBO0m8
会社にとって生産性を意識しない一般レベルの技術者はゴミ
また、プロとは呼べない

168 :デフォルトの名無しさん:2016/03/30(水) 12:41:28.81 ID:rLuvgVFw
>>167
ですね。

169 :デフォルトの名無しさん:2016/03/30(水) 12:47:47.70
いま倉庫物流業界におるけど
IT技術より業界のしきたり?慣習?を理解する方が大変
人に聞かないと判明しないし…喫煙所でコーヒー奢ったり…

170 :デフォルトの名無しさん:2016/03/30(水) 12:54:55.38 ID:yO7JBNvw
決められた納期で最大限の結果を出すのがプロ
その為には自分がやりたかった事を他人に振ることもするし
逆に時間を作って自分がやりたい車輪の再発明もする
ただプロジェクト自体は必ずうまく行くから誰も文句は言わない
それが出来る奴

171 :デフォルトの名無しさん:2016/03/30(水) 13:06:33.19 ID:iiS6Zli9
>>170
プロに夢見すぎ
金が稼げてればプロ

172 :デフォルトの名無しさん:2016/03/30(水) 14:37:03.78 ID:Op2rn9Lq
生産性と勉強の時間は別問題
生産性が下がるから勉強しないというのは本末転倒

173 :デフォルトの名無しさん:2016/03/30(水) 15:00:52.65 ID:rLuvgVFw
>>172
詭弁は他でやるといいよ

174 :デフォルトの名無しさん:2016/03/30(水) 16:04:19.16 ID:aZ4nzpeD
特定の文字列例えば’ABC’の文字列を含むTextNodeの検索を行いたいのですが
querySelectorみたいなもので全体に対して検索書けるようなAPIはあるのでしょうか?

175 :デフォルトの名無しさん:2016/03/30(水) 16:16:36.25 ID:cWDvBnb1
>>174
何回も同じ質問をするな

176 :デフォルトの名無しさん:2016/03/30(水) 16:23:20.36 ID:Op2rn9Lq
>>174
document.evaluate

177 :デフォルトの名無しさん:2016/03/31(木) 11:29:17.02 ID:ymqhTLQ0
>>171
違うだろ、本職でも稼げない奴は沢山いる

178 :デフォルトの名無しさん:2016/03/31(木) 11:36:31.72 ID:fi72UJLf
>>176
ありがとうございますXPathってもしかして結構便利なんですかね。
とりあえず目的のことができました。ありがとうございます

179 :デフォルトの名無しさん:2016/03/31(木) 11:52:08.55 ID:AghJqbjM
>>177
稼げてない奴は「自称プロ」

180 :デフォルトの名無しさん:2016/03/31(木) 12:46:18.71 ID:z7eByYkq
node jsでnpmをインストールしようとすると、
「npm should be run outside of the node repl in your normal shell」
というメッセージが出るんですが、これはどうすれば回避出来るのでしょうか?

181 :デフォルトの名無しさん:2016/03/31(木) 13:05:54.63 ID:7B1LSXi4
その文面でググると一番上にstackoverflowでドンピシャなのが出てくるよ
どっから落として実行したのか知らんけどインストーラー使っとけって

182 :デフォルトの名無しさん:2016/03/31(木) 13:08:58.74 ID:z8vLV66o
そりゃnode jsでしようとしてるからだよ。
というかその文章で教えてくれてるじゃん。どうして読まないの???
npmコマンドはnodeのreplで使うものじゃない。
各OSの標準シェルから叩くもの。

183 :デフォルトの名無しさん:2016/03/31(木) 13:11:32.09 ID:z8vLV66o
>>181
どアホ
stackoverflowを参照するなら上の方の+5,6のそういう回答じゃなくて
+30付いてる方にしろよ

184 :デフォルトの名無しさん:2016/03/31(木) 13:14:41.63 ID:7B1LSXi4
>>183
ちょっと待てよ!
件のはそもそもnpmが使えないからnodeからnpm iしてみたらって話でしょ
恐らく>>180は同じケースだろうからああレスしたんだよ

185 :デフォルトの名無しさん:2016/03/31(木) 13:25:08.83 ID:mJpDHBVP
CSS Browser Selectorというjsファイルについて質問です
「商用利用可だが著作権の明記が必要」と解説しているサイトに書いてあったのですが、これはソースに書いておけば良いということなのでしょうか
それともスクリプトが実行されるページ内に表示する必要があるのでしょうか
よろしくお願いします

186 :デフォルトの名無しさん:2016/03/31(木) 13:47:11.71 ID:yy0681Er
何々を使っていますと、サイトのフッターにでも、書いておけば?

187 :デフォルトの名無しさん:2016/03/31(木) 13:55:36.38 ID:7B1LSXi4
どんなライセンスを使用しているかによる
そのライブラリだとCC2.5だけど本来ソフトウェア向きのものではないから微妙だな
CCの趣旨では使用したドキュメント内で著作権表示が行われることを想定しているから
Webサイトで使うならページ中にクレジット表示入れるのが無難だと思う

188 :デフォルトの名無しさん:2016/03/31(木) 14:29:30.30 ID:mJpDHBVP
>>187
なるほど
ソフトウェア向きではないんですね…
ありがとうございます 助かりました

189 :デフォルトの名無しさん:2016/03/31(木) 16:23:25.76 ID:z7eByYkq
>182
ありがとうございます
プロンプトでやったら出来たっぽいです
どこにインストールすればいいのかわかりませんが

190 :デフォルトの名無しさん:2016/03/31(木) 16:57:04.95 ID:fi72UJLf
すんませんxpathの使い方を教えて下さい

<p><a>123</a>abc<a>efg</a></p>

に対して以下のxpathを試してefgの部分は取得できたのですが
//*[text()="abc"]/*[text()="efg"]

できればabcの部分(条件を満たすエレメントの先頭要素)を取得したいのですが
どう書けばいいのでしょうか?

191 :デフォルトの名無しさん:2016/03/31(木) 17:10:45.04 ID:acvfOefz
>>190
efg取れたならそいつの親の子じゃないの?

192 :デフォルトの名無しさん:2016/03/31(木) 18:09:57.76 ID:fi72UJLf
>>191
//*[text()="abc"]/*[text()="efg"]/..//*
とすると
<a>123</a>, <a>efg</a> が取れるんですがテキストノードが何故か除外されてしまいます。

193 :デフォルトの名無しさん:2016/04/01(金) 00:55:35.78 ID:o32zNHl2
JavaScriptだとコールバックで匿名関数渡してじゃんじゃんネストしてってよくやるけど
ちゃんとユニットテストしたいときってどーしてんの?

194 :デフォルトの名無しさん:2016/04/01(金) 01:01:52.29 ID:6H5rXnFj
そもそもしない
ユニットテストはアプリケーション層以下で行う
賞味期限が切れたら殆どが使い捨てられる運命にあるプレゼンテーション層でユニットテストは作業者の負担になるだけ

195 :デフォルトの名無しさん:2016/04/01(金) 03:20:39.57 ID:0Q+2ltBp
言語エンジンを書いた時は流石に重厚なテストを書いたけど、
それ以外ではまともに書いたことがないね。
それが長期に渡って発展され続けて、かつ構造の変わらないものでないとテストを書く意味は薄い。
テストってのは一番はいつの間にか壊れてたってのを防ぐためのものだからね。
一発ものだったり、バージョンが上がる度に要件が結構変わりそうなものでは費用対効果が悪い。
まあある程度変化が落ち着いてから改めて書くってのはありだと思う。
でももうこれ以上発展させなくなった時に書いても仕方がない。
成長過程のちょうど中ほどで書くというのがベストなんだろうけど見通すのはなかなか難しい。

196 :デフォルトの名無しさん:2016/04/01(金) 03:43:30.09 ID:0hX+vVN6
>>195
テストってのはいつの間にか壊れてたを防ぐものじゃないだろ。
これはこういう動きをすると保証しますって物じゃないの?

197 :デフォルトの名無しさん:2016/04/01(金) 05:49:03.45 ID:xgn0cw4K
>アプリケーション層
>プレゼンテーション層

OSI参照モデル?

198 :デフォルトの名無しさん:2016/04/01(金) 06:53:34.67 ID:LDlR2m0j
アホが湧いてるwww

199 :デフォルトの名無しさん:2016/04/01(金) 07:13:59.22 ID:2GR9s30v
ユニットテストすべきかどうかは置いといて
JavaScriptのネストしまくってダラダラ書くスタイル嫌い
オブジェクト指向と言いつつモジュールとか機能の単位とかの概念と合わない

200 :デフォルトの名無しさん:2016/04/01(金) 07:22:16.84 ID:0P46FgGj
>>190-192
XPath って直接いじったりするもの?
何かのライブラリを通して、使うものじゃないの?

Groovyなら、XmlParser, XmlSlurper とか、イベントベースのSAX, StAX を使うと、
クロージャでコールバック関数を書ける

Groovy学習14 XmlSlurperによるXMLの解析
http://symfoware.blog68.fc2.com/blog-entry-1183.html

201 :デフォルトの名無しさん:2016/04/01(金) 08:16:46.78 ID:BBjX6NvI
>>200
https://developer.mozilla.org/ja/docs/Web/API/document/evaluate

202 :デフォルトの名無しさん:2016/04/01(金) 09:20:32.97 ID:QIAaDLEb
>>199
御意、見出しのない辞書のようなモノ
見るだけでウンザリ

203 :デフォルトの名無しさん:2016/04/01(金) 09:30:23.42 ID:CHPnKeLy
>>196
言い方見方を変えただけで実際はほぼ同じ事のように見えるが

204 :デフォルトの名無しさん:2016/04/01(金) 09:38:12.97 ID:7UmkX6sZ
>>203
違うよ。
壊れてるのを検出するためのものじゃなくて、
壊してしまうことを検出する為のもの。

205 :デフォルトの名無しさん:2016/04/01(金) 11:58:37.72
>>193
ややこしいロジックをまとめたクラスにはユニットテストするけど
CasperJSでテストして動けばええやろと言う態度です

206 :デフォルトの名無しさん:2016/04/01(金) 13:15:45.37 ID:QIAaDLEb
>コールバック
バカの一つ覚え

207 :デフォルトの名無しさん:2016/04/01(金) 13:33:28.72 ID:BBjX6NvI
>>203
>>195だとヒューリスティックスキャンのように読める

208 :デフォルトの名無しさん:2016/04/01(金) 17:45:36.67 ID:8p2KsOzx
>>204
その2つも実際はそんなに変わらないと思うが、
どちらかと言うと自分は後者のニュアンスで言ってる。

209 :デフォルトの名無しさん:2016/04/01(金) 19:53:09.41 ID:xvbiumjA
>>197
そうみたいね
JavaScriptはアプリケーション層だと思うけど

210 :デフォルトの名無しさん:2016/04/01(金) 19:55:30.67 ID:ADMr3fbY
JavaScriptとHTMLの組み合わせだとUIパターンは何がいいんですかね
MVVMはバインダが無いから上手く行かなそう
MVPとMVCだとどっちが良いんだろう

211 :デフォルトの名無しさん:2016/04/02(土) 02:29:36.95 ID:d3CGaqY7
当然最適解は状況による。
そしてMV何かは拘る必要はない。
これから標準的にオススメされていくのはRxJS 5にあるようなObservableを使ったパターンだが、
別になんだって良い。

212 :デフォルトの名無しさん:2016/04/02(土) 09:03:53.56 ID:uByagQKe



213 :デフォルトの名無しさん:2016/04/02(土) 11:20:30.33
AngularJS 1.5使ってるけどあれは何パターンなんですかのう

214 :デフォルトの名無しさん:2016/04/02(土) 13:24:45.76 ID:7QV6Y65D
>>190
descendant::text()[.="abc"]
https://jsfiddle.net/kgr5ybkq/

215 :デフォルトの名無しさん:2016/04/02(土) 15:06:34.57 ID:NSyOUFVI
>>213
MVVMじゃない。
React.jsは何パターンなんだろね。

216 :デフォルトの名無しさん:2016/04/02(土) 18:45:38.17 ID:kcrpe57e
>>215
変形Observableじゃないか?
あいつらのやった一番偉大な事は、ありきたりな物の組み合わせに名前をつけて定義するって事だと思ってる。
「こんな形の、向かい合った辺の組み合わせが平行な四角形」に、「平行四辺形」って名前をつけると、みんな頭の中にちゃんと平行四辺形が浮かぶようになるような感じ。

そもそも、クラサバアプリのwinmainとコントロールとUIスレッドの組み合わせと全く同じで、なんの発明でも無いからな。

217 :デフォルトの名無しさん:2016/04/02(土) 18:46:04.82 ID:aCJgiZnd
実質MVCしかない感じ
バインダ書くのがめんどくさいからフレームワーク無しでMVVMはまず無理
MVPは非同期処理が貧弱なせいで書きにくい
MVCなら簡単
UIイベント.done(サーバ通信().done(モデル更新).done(UI更新))
これだけで全てが上手くいく

218 :デフォルトの名無しさん:2016/04/02(土) 19:05:21.28 ID:MErRnMko
そもそもDOMの仕組み自体がMVCを包括してるんだから
厳密にMVなにかを言うのは難しい

219 :デフォルトの名無しさん:2016/04/03(日) 10:42:42.99 ID:YP3p5dYq
DOMはただの文書を操作するための規格でしかないだろう。

220 :デフォルトの名無しさん:2016/04/03(日) 11:17:51.87 ID:rmt1T5Kd
node jsでは普通のプロンプトとnode.exeのプロンプト、
何が違うんでしょうか?
どちらを使うのでしょうか?

221 :デフォルトの名無しさん:2016/04/03(日) 12:14:21.00 ID:kdjOntdl
>>47の人?

222 :デフォルトの名無しさん:2016/04/03(日) 12:24:41.11 ID:7jlo6lqN
JavaScriptってどういう形で開発して配布するのがスタンダードなんですかね

?開発時にはモジュール単位でファイルを切って
ファイル間の依存関係がある場合はscriptタグの追加によって依存先を読み込む

?開発時にはモジュール単位でファイルを切って
公開する前に全ファイルを結合してしまう

プログラマ的な感覚だと?がしっくりくるんだけどscriptタグ追加とファイルのロードが非同期的なため扱いにくく通信回数も増えるなどデメリットがある
?はちょっと気持ち悪いし結合の手間がかかる点と不必要なコードも結合してしまう点が良くない
なにかいい方法ないですかね

223 :デフォルトの名無しさん:2016/04/03(日) 12:25:15.68 ID:6MQCRpaJ
>>193
ちゃんとしたい時には匿名関数は使わない
一部を除いてほぼ全ての関数に名前を付ける

224 :デフォルトの名無しさん:2016/04/03(日) 15:30:11.54 ID:OaDtSrzO
>>220
node はコマンドで、node.exe はたぶん実行ファイル

Linuxではターミナル(端末)を起動すると、bash などのシェルが起動する。
そのシェルで、node などのコマンド名を打ち込むと、
環境変数の探索パス(PATH)の順番に、例えば、こういうディレクトリの順番で、

/usr/local/sbin/:/usr/local/bin:/usr/sbin/:/usr/bin/:/sbin:/bin
そのコマンド名が登録されているかどうかを探す

数個あるどの探索パスにも、そのコマンド名が登録されていなければ、
そのコマンド名は存在しないので実行できない、というエラーになる

端末で、which node と書けば、nodeコマンド名が、
どこの探索パス内にある、どのプログラムを指しているか、わかる。
つまり、どこかの探索パス内にある、node.exe

225 :デフォルトの名無しさん:2016/04/03(日) 18:55:00.49 ID:rmt1T5Kd
>>224
つまりwindowsについているプロンプトの方を使って、nodejsを実行するということですよね。
コマンドなしならnode.exeの方からも操作出来るってことですよね。
すっきりしました。ありがとうございます。

226 :デフォルトの名無しさん:2016/04/04(月) 04:17:01.68 ID:HKTiO3l5
なんか感覚がちょっとズレてると思うが

227 :デフォルトの名無しさん:2016/04/04(月) 09:07:46.39 ID:zlday2Sk
>>226
言っちゃ駄目だよ
自己満足してるんだから

228 :デフォルトの名無しさん:2016/04/04(月) 15:11:29.01 ID:kC7w/ICj
>>226
どういうことでしょうか?

229 :デフォルトの名無しさん:2016/04/04(月) 19:11:54.27 ID:NjHEg+Kd
javascriptがオフの場合無効化されているというテーブルを表示したいけど

<div id="JSoff" style="width: 400px; text-align:left;border: 5px solid #ffaaaa; padding:10px;background:#ffffff">
<B>JavaScript</B>が無効化されています。<BR>
全ての機能を利用するには<B>JavaScript</B>を有効にしてください
</div>

<script>document.getElementById("JSoff").style.display = "none";</script>

javascriptがオンになっている場合これだとブラウザでページを読み込むときに
一瞬ちらっと無効化されているというテーブルが表示されてしまいます
このちらつきを解消する方法はありますか?

230 :デフォルトの名無しさん:2016/04/04(月) 19:40:36.90 ID:u65DNVI0
>>229
noscriptつかえやカス

231 :デフォルトの名無しさん:2016/04/04(月) 19:48:15.98 ID:23c2ZC8H
>>229
modernizrを使えばいい。

https://modernizr.com/docs#no-js

簡単に説明すると、HTMLに<html class="no-js"> と書いておくと
JavaScriptが有効の場合に <html class="js"> に書き換えてくれる。

あとは.no-js .class もしくは .js .class とかでcssを使って
表示非表示を制御できる。

modernizrが重いと思うならば、同じことを自分で作れば良い。
単にHTMLタグのclassのno-jsをjsに変更するスクリプトを書くだけ。

232 :デフォルトの名無しさん:2016/04/04(月) 22:37:38.34 ID:aA7d4T8T
>>229
JavaScriptを使って解決するなら
document.styleSheetsを書き換えれば良い
最も、内容的にはnoscript要素が妥当な気がするが

233 :デフォルトの名無しさん:2016/04/05(火) 08:20:53.68 ID:F8KWDDTe
>>229
display.hidden

234 :デフォルトの名無しさん:2016/04/05(火) 10:04:36.42 ID:OVtadeSC
noscript、あるいはheadに埋め込んだスクリプトから上書きのstyle要素をwriteすればいい

235 :デフォルトの名無しさん:2016/04/05(火) 10:25:58.75 ID:iKLx8/tN
modernizerでもいいけど使うまでもない気が
display: none にしておいて$().readyでshow()とかで十分

236 :デフォルトの名無しさん:2016/04/05(火) 11:25:54.14 ID:vndmlNk/
>>229
ところで満足できた?

237 :デフォルトの名無しさん:2016/04/05(火) 23:22:21.68 ID:gGzP1w2i
>>235
showじゃなくてhtmlかbody要素に対するaddClassとかにしてください。

showとか使うと、showしたいものが増えるたびに
コードが増えていって目障り。

っていうか、jQueryを使うまでもなく一行のscriptで十分
ready時にやることじゃない

238 :デフォルトの名無しさん:2016/04/05(火) 23:49:48.18 ID:wlptsMO2
chrome上で、javascriptで動的に作ったデータをダウンロードさせたいのですが
このようなコードだと「0x80」ではなく「0xC2 0x80」の2バイトのファイルがダウンロードされます。

var blob = new Blob(["\x80"]);
var link = document.createElement('a');
window.URL = window.URL || window.webkitURL;
link.href = window.URL.createObjectURL(blob);
link.download = "downloadfile";
link.click();

0x7Fなら意図通り1バイトのファイルとなるのですが、解決方法ありませんでしょうか?

239 :デフォルトの名無しさん:2016/04/06(水) 00:11:19.27 ID:QegkB/wb
>>236
JavaScriptのスレ、こういうのも多いよな。
何故だかは分からんが。

240 :デフォルトの名無しさん:2016/04/06(水) 03:03:48.81 ID:kRFLofHq
質問なんですけどスレ違いならすみません
探したけどここが一番適切かなという気がしたので、そのときは誘導かけてもらえると嬉しいです

現在JavaScript勉強中なのですが、どうしてもES5の仕様が苦手というか混乱してしまう感じで、調べたところES6/CoffeeScriptなどが魅力的に思えました
ただ、ES6はまだ対応が不十分なようですし、CoffeeScriptは初心者が手を出すのは推奨できないようなことも聞きます
いずれにせよES5は一通り確認はするつもりですが、実際の開発にこれらを用いるのは推奨されがたいことでしょうか?

241 :デフォルトの名無しさん:2016/04/06(水) 03:08:36.42 ID:q1HrDxSz
>>237
addclassはどのタイミングでやるんですか?readyですか?

242 :デフォルトの名無しさん:2016/04/06(水) 03:45:58.88 ID:eDxTjoz1
>>235
何か勘違いしている気がするが、script-off時には表示してscript-on時には表示しないコンテンツ制御の話でscriptで非表示にすると一瞬見えてしまう問題への対処だぞ
あなたの説明だと逆に読める

243 :デフォルトの名無しさん:2016/04/06(水) 04:50:52.54 ID:SC9yOBng
>>242
何が勘違いだと思ったの?

244 :デフォルトの名無しさん:2016/04/06(水) 04:53:21.71 ID:SC9yOBng
>>237
それコード量変わらなくない?

245 :デフォルトの名無しさん:2016/04/06(水) 05:12:41.13 ID:7tA2KQf1
>>241
jQuery使うなら原則としてreadyでやらないといけなくなる。
だけどこの場合はそこまで遅らせる必要がない。

jQueryを使わなければそれよりも早い段階で処理を行える。
readyはDOM構築後なので厳密に言えば画面に表示されてから少し遅れて発動する。


>>244
addClassはHTMLかbody要素につける。
だからshowしたいものが増えても一つだけでいいし
何よりCSSで見た目を処理できる所が優れている。

246 :デフォルトの名無しさん:2016/04/06(水) 07:58:50.48 ID:BFsTf7eA
>>239
漏れは、乃木坂46の755を見るけど、
一瞬前のページが見えるし、勝手にスクロールが動く。
最近の投稿も見れない

この会社、バグが多すぎる

>>240
RoRは、CoffeeScript だったかな?

247 :デフォルトの名無しさん:2016/04/06(水) 10:34:16.16 ID:kxGSeBFy
>>240
ES6(今はES2015)はほぼchromeで動くしそのまま書けるよ。
個人的にはTypeScriptこそ初心者向きな気がする。
ライブラリの使い方をIDEが教えてくれるようになる。

ただしnpmの使い方とかnode.jsのエコシステムの勉強も必要になるけど

248 :デフォルトの名無しさん:2016/04/06(水) 12:39:08.17 ID:eaJ/kAxl
プレビュー機能のあるhtml5+javascriptエディタって無いですか?
ブラウザアプリを作ってますが、ブラウザの切り替えが面倒です。

249 :デフォルトの名無しさん:2016/04/06(水) 13:12:21.73 ID:y1UF9DzI
>>248
Electronでいっその事作ってみては?

250 :デフォルトの名無しさん:2016/04/06(水) 14:05:21.20 ID:eDxTjoz1
>>245
そのやり方の場合、show() が入る余地がない
https://jsbin.com/jotugupeha/edit?html,output
ちなみに、CSS採用なら>>232,234でも良くて特にclassに拘る理由はないはず

251 :デフォルトの名無しさん:2016/04/06(水) 16:02:40.09 ID:kRFLofHq
回答ありがとうございます

>>246
RoRは未経験ですがRubyが好きなのであの雰囲気に惹かれたという部分はあります

>>247
古いブラウザとかに配慮しろという話だったのでしょうか?
仕事でやるわけではないので、あまり気にしなくていい程度ならそれの方が好ましいですね
TypeScriptも確認してみようと思いますが、その場合はVisualStudio推奨です?

252 :デフォルトの名無しさん:2016/04/06(水) 17:29:23.15 ID:nw3yxtcq
TypeScriptを今から始めるのはねぇ……
まあいいか
今V8がES.nextを見据えた型付構文のテスト実装してきてるけど
そんなにTSと差異ないしね
ただし、デコレータやらジェネリックやら、
なんでもTS独自の機能使うときは
きちんとES.next標準の流れに近いものか定期的に確認した方がいいね
変なのに慣れても仕方ないから

253 :デフォルトの名無しさん:2016/04/06(水) 18:35:37.93 ID:kRFLofHq
>>252
何か微妙だったりするのでしょうか?
新旧いろんな情報が交錯しててうまく判断できずにいたのですが、自己判断できるようになるまで余計なことしない方がいいとかならばそうします……

一応最終的にはHTML5と組み合わせてアプリケーション作れると嬉しいなと思っているのですが

254 :デフォルトの名無しさん:2016/04/06(水) 19:34:51.87 ID:u2n9JpiE
まあでも余計なことしないとか言ってると何にもできない、できるようにならないから
自己満足、少々分かったくらいで満足せず、
色んな情報を常に収集し、試して分別を付けていくほうが良いと思うよ

255 :デフォルトの名無しさん:2016/04/06(水) 20:49:12.92 ID:eDxTjoz1
>>251
仕事でなくともIE11-をサポートしないのはお勧めしないが…。
「IE閲覧不可、Google Chrome, Firefox をインストールしてください。写真者お断り。」な注意書きを書く事に躊躇がないなら止めないが。
http://kangax.github.io/compat-table/es6/

256 :255:2016/04/06(水) 20:55:04.63 ID:eDxTjoz1
× 写真者お断り
○ 初心者お断り(別のブラウザをインストールできるリテラシーのある人だけ閲覧して下さい)

257 :デフォルトの名無しさん:2016/04/06(水) 21:09:16.73 ID:kRFLofHq
>>254
ありがとうございます
そうですね、無理のない程度に頑張ります

>>255
あ……思った以上に厳しい
すみません、あんまりブラウザごとの際に明るくなくて

258 :デフォルトの名無しさん:2016/04/06(水) 21:14:41.83 ID:/OWN3IzC
別にサポートしなくても普通全く見れなくなるわけじゃないんだし大げさじゃね
モダンブラウザ前提で作って、レガシーブラウザでは動くとこだけ動けばOKってスタンスは全然アリだと思うよ

259 :デフォルトの名無しさん:2016/04/06(水) 21:29:03.79 ID:eDxTjoz1
Windows 7,8,8.1の標準ブラウザであるIE11-をレガシーブラウザと称するのは抵抗がある。
Windows 7以上なら8.1にアップグレードしてEdgeへの乗り換えを促す事は出来るが。

260 :デフォルトの名無しさん:2016/04/06(水) 21:40:22.43 ID:/OWN3IzC
IE11は出たばかりの時は確かにモダンと呼べるものだったが、
現在となってはレガシーとしか言いようが無いし、
仮にIE12が出たとしても自動アップデートされず標準の流れに付いていけないものは
モダンブラウザと同等にはもてはやせず、まともに相手にできないだろう

「モダンブラウザのベースライン」に加えてそういうIE11とかを相手にするとそのとき倍労力がかかるのに加え、
知識を保持するという面でも相手にする個数倍労力がかかる
結局無難な面倒を見る落とし所は「モダンブラウザのベースライン」と「JS OFF」の2つ
それにES5がギリギリ使えるIE9や古めのモバイルブラウザを加えて3つにするかどうか

最初からIE11を下限で開発することが決まってでもいないかぎり、
合理的にどうわけてもIE11はもはやモダン側には入らない

261 :デフォルトの名無しさん:2016/04/06(水) 21:56:00.60 ID:iUuTyWAf
開発者視点ではIE11がレガシーブラウザと称することもできようが、ユーザ視点ではそうもいかない。
機械音痴の人は他のアプリのインストール方法も知らんし、新しいUIになじめる自信がなくてWindows Upgradeも怖くてやらん保守派の人は大勢いる。
そもそも、Windows VistaはWindows8にUprade出来ないしな。

262 :デフォルトの名無しさん:2016/04/06(水) 22:00:57.68 ID:kxGSeBFy
>>252
>TypeScriptを今から始めるのはねぇ……
今からTypeScript始めるのってなんか問題あるかな?
ES2015+型って感じでいいと思うけど。
RxJSもTypeScriptでライブラリ自体書き直してるらしいし
React.jsもTypeScript使ったほうが書きやすい。
MacでもVisualStudioCode+TypeScriptの環境が使い勝手がいい。
型情報を集めるためのエコシステムがまだ不便なところがあるのが問題といえば問題かも。(TypeScriptは既存のJSライブラリを型付で扱うために別途型情報を管理する必要がある)

263 :デフォルトの名無しさん:2016/04/06(水) 22:25:53.00 ID:qvzg5VgE
>>262
これからの一年で型付構文やらデコレータやらジェネリックが
標準にどういう仕様で入るか細かなとこまで見えてくる
それによっちゃTSのそれらの仕様も一部古いものとされたり変更されるかもしれない

とういうか、いくらTSがES.nextを見据えたものとはいえ、
それらの型に纏わる部分はTSが理想とする独自の世界を気づいているから
標準の軸とずれるのは間違いない
だから今は取り敢えずそこら辺はおいといて、無難なES.nextのトランスパイラで我慢しておいて、
型周りの標準仕様が粗方定まってトランスパイラが受け入れるようになってから
使っていくほうが良いのではないかと思ってね

264 :デフォルトの名無しさん:2016/04/06(水) 22:39:45.70 ID:QegkB/wb
>>246
いや、かなり紛らわしかったが、俺が言いたかったのは質問しっぱなしの馬鹿が多いということだ。
それはさておき、755見てみたが、まあ許容範囲じゃないか?こちらでは大した実害は無い。

このtwitterモドキ、何がいいのかは分からないが、これはおいておくとして、
上下逆だから、どうしても何らかの仕掛けが必要になる。
スクロールがずれるのは画像ロードがスクロール指定と非同期だからだ。
これを対策することは出来るが、スクロールがカクカクになるから今のほうがましだろう。
一瞬前画面が見える原因はXHRで中身だけ差し替えているからであり、
対策すると結局もっさりになるので大して意味が無い。
> 最近の投稿も見れない
これはtwitter_widgetが上手く動作しておらずアップデートされないということか?
こちらではよく分からない。

265 :デフォルトの名無しさん:2016/04/07(木) 00:08:51.64 ID:6pgtk04X
>>263
常に最新の仕様を使いたいと思わずES2015の範囲で使っておけばいいのでは?
ES2015の範囲ならTypeScriptはES2015+型という理解で問題ないと思う。
俺的には 静的言語によるIDE補完機能 > 最新の仕様を使いたい
だけどこの辺は好みなのかな?ES2016で便利な仕様ってなんかあったっけ?

266 :246:2016/04/07(木) 01:09:52.18 ID:pUEgfdfM
>>264
簡単には直せないんだね。ありがとう

267 :デフォルトの名無しさん:2016/04/07(木) 09:02:52.62 ID:X1sRymbk
>>265
何を使うべきかそれを全くの初心者が判断するのは厳しいだろう
それとES仕様はもう2016が固まってる時期で
次は2017と次から次に進んでいる

TSがES+αとして取り入れていたαの部分が
その「型」も含めてそろそろ2017や2018の辺りで標準に取り入れられそうだし
仕様はもうすぐ今年度一杯で細かいとこまで確定して行きそうということが重大

まあ仕様も大事なんだがそれと同じくらい実装状況も大事
つまり生きた今の、これからのJavaScriptの感じというのが最も大事で基準になるものであって
その点V8が型の実装を始めたというのは、
どこも実装に手を出してない他のES.nextの機能に比べると遥かに現実感が強く
TSの立ち位置や価値観に対して、まだ軽微だが無視できない影響を与えていると言って良い

268 :デフォルトの名無しさん:2016/04/07(木) 09:08:24.98 ID:WOcBPxvv
仕様より先に実装状況の把握
これで解決

269 :デフォルトの名無しさん:2016/04/07(木) 09:09:44.79 ID:X1sRymbk
あと型周りはO.oのようにGoogleが強く先行して推してきているものなので
V8は標準に取り入れられるよりもずっと速く実装を仕上げてくるだろう
O.oの件の反省がなければデフォルトで有効にしてくるくらいの勢いかもしれない
O.oの二の舞いになるかどうかは見ものである

270 :デフォルトの名無しさん:2016/04/07(木) 19:09:45.36 ID:9u6CMKZB
O.oとは何でしょう?

271 :デフォルトの名無しさん:2016/04/07(木) 19:55:06.94 ID:yj5lmIW7
>>270
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/observe
http://www.html5rocks.com/ja/tutorials/es7/observe/

272 :デフォルトの名無しさん:2016/04/07(木) 21:19:11.33 ID:9u6CMKZB
>>271
ありがとうございます

273 :デフォルトの名無しさん:2016/04/08(金) 01:13:27.67 ID:zB1D6Ii9
入力の検証を行いエラーがあればローカライズされたエラーメッセージのリストを返すようなWeb APIって変ですかね?
クライアントコードとサーバーコードに同じような検証コードを2回も書くのが無駄な工数に感じるのでこんな事をしています

274 :デフォルトの名無しさん:2016/04/08(金) 01:47:47.44 ID:g+7B4ruN
>>273
それがnodeが出てきた一つの理由じゃないかな。
ところでロケール送ってメッセージそのものを返してもいいとは思うけど。

275 :デフォルトの名無しさん:2016/04/08(金) 08:43:38.59 ID:NMN4wPSn
>>273
変ではないが、クライアント側での検証は通信せずに検証出来るメリットがなくなっている。
一つずつ入力の度に検証するのならsubmitするまで検証結果が分からないという事態は防ぐことができるが。
どちらにしてもサーバサイドで検証アルゴリズムを持って行きたいのならサーバサイドからpattern属性に正規表現を埋め込んで適切なフォームを生成→JavaScriptで検証させるのが妥当じゃないかな。

276 :デフォルトの名無しさん:2016/04/08(金) 16:37:31.31 ID:Y8o95cYY
Javascript、jQuery、Railsでアプリ制作勉強中の初心者です。
jQueryで中のコンテンツを切り替え可能なタブを作って、タブをクリックして表示切り替えされる中のコンテンツを入れるdivの一つにWebエディタを実装したいのですが、
正常に機能せず、エディタ部分をクリックしても反応せず、書き込みができない状況でレンダリングされてしまいます。
エディタはJavascriptで書かれているace.jsです。

【環境】mac, Rails, local
【何をしたのか】
サンプルコードの、
#box divにace.jsを表示させようとすると動作せず、
#tabmenu ul liに置くと正常に動作します。
正常に動作しないエディタ部分の画像=>http://imgur.com/MhQjdbw

【エラーメッセージ】
Chomeのデベロッパーツールでこのようにエラー表示されています。
GET http://localhost:3000/dirname/src-noconflict/ace.js 404 (Not Found)

【期待する結果】
サンプルコードの、#box divにaceエディタが正常に表示され書き込めるようにしたいです。
正常に動作したエディタの状況=>http://imgur.com/EPokymv

【サンプルコード】
http://imgur.com/4NYKoYI

jQueryのタブ切り替えが阻害要因のように思いますが、どのようにすればエディタが正常に機能するようになるのでしょうか?

277 :デフォルトの名無しさん:2016/04/08(金) 17:27:19.92 ID:pozyeBOI
function($) ← $を消す

278 :デフォルトの名無しさん:2016/04/08(金) 18:25:41.87 ID:KJJF2NFc
>>277
なぜ消すので?

279 :デフォルトの名無しさん:2016/04/08(金) 21:22:05.88 ID:Y8o95cYY
276です。
解決しました。関係ないと思ってたCSSが影響してました。

280 :デフォルトの名無しさん:2016/04/09(土) 01:00:37.29 ID:pEHBzpIW
エラーではないので、テンプレートを使わず質問させて頂きます。


[
{title:'hogehoge'},
{title:'fugafuga'},
{title:'piyopiyo'},


と続いていく配列で、それぞれのオブジェクトに通し番号(の要素)を一括で追加して、

[
{rank:1, title:'hogehoge'},
{rank:2, title:'fugafuga'},
{rank:3, title:'piyopiyo'},


281 :デフォルトの名無しさん:2016/04/09(土) 01:01:21.06 ID:pEHBzpIW
のようにしたい場合、どのように行うのが効率的(高速)なのでしょうか?
実際に内包するオブジェクトは数百個もあるため単純なループではすぐにブラウザがフリーズしてしまうのですが、Web Workerを使うほどのものなのか疑問に思い、質問させていただきました。
Web Workerを使うのが最も良いのであればそのまま使うのですが、標準の関数やjQueryに用意されている、もしくは別の方法があるのであれば教えて頂きたいです。

282 :デフォルトの名無しさん:2016/04/09(土) 01:13:09.00 ID:tonuQmGl
>>281
数百個ごときならどんな方法でもフリーズなんてしない。
本当にフリーズするのなら他の部分がいろいろと糞なだけ。
最近多いけどね、こういう初心者。

283 :デフォルトの名無しさん:2016/04/09(土) 01:18:00.15 ID:pEHBzpIW
>>282
フリーズというのは数秒〜数十秒間画面が固まる、または応答なしのウィンドウが出るという状態を指していました。言葉不足ですみません…
処理時間が長いと画面に反映できない処理で使うため、画面が固まらない、かつ出来るだけ高速に行いたいのですが、最適な方法というものはあるのでしょうか?

284 :デフォルトの名無しさん:2016/04/09(土) 01:36:40.47 ID:tonuQmGl
>>283
その動作はフリーズと称していい。
ただ、お前はJavaScriptの速度を勘違いしている。
JavaScriptはいわゆるスクリプト言語の中では最速だ。

その操作なら1msかからないはず。
それ以上かかるのなら、お前のプログラムがバグっているだけ。

で、俺が言いたいのは、初心者が「遅いんですけど」と言うときは大概バグでしかないということ。今回も。
そもそも数百個の配列なんて小さい方だ。(初心者的には大きいと感じるのは分かるけど)
だからそのレベルの初心者なのを自覚してちゃんとデバッグしろということ。

285 :デフォルトの名無しさん:2016/04/09(土) 01:48:15.06 ID:IbDbD1ux
要するに配列の中身を少し編集してオブジェクトに変換したいってんなら
楽なのはArray#map、速度重視なら環境によるがforかwhileによるループ
ただ>>284の言うようにこのケースなら本来はほとんど一瞬で終わるはずだから
現在のやり方を見直したほうがいいと思う

286 :デフォルトの名無しさん:2016/04/09(土) 04:37:41.51 ID:r3WiJsdm
そもそも速度求めるならオブジェクトなんて使うなよ
.のコスト高いんだから

287 :デフォルトの名無しさん:2016/04/09(土) 06:45:26.33 ID:r6y5A1ZI
>>284
お前は人間性に問題がある

288 :デフォルトの名無しさん:2016/04/09(土) 07:17:21.95 ID:tonuQmGl
>>287
そんなんだからお前らはゆとりのままなんだよ

ところで、ゆとり的には俺のどの言い方が気に入らず、どう言ってほしかったんだ?

289 :デフォルトの名無しさん:2016/04/09(土) 08:44:32.02 ID:Q5Od8ZTh
>>280-281
while, Array#map の2択(おそらく前者が速い)だと思うが、titleのデータはどこから引っ張ってくる?
初めからrankを持つ静的データを定義するなり、サーバサイドで処理をさせるのは不可能?
2次元配列とか、フォーマットを変更することは出来ない?

290 :289:2016/04/09(土) 08:47:15.84 ID:Q5Od8ZTh
>>280-281
連番なら配列のインデックスがそのまま使えるのでは?

291 :デフォルトの名無しさん:2016/04/09(土) 09:14:08.74 ID:H1is7YF7
manko = [
{title:'hogehoge'},
{title:'fugafuga'},
{title:'piyopiyo'},

[
{rank:1, title:manko[0]},
{rank:2, title:manko[1]},
{rank:3, title:manko[2]},


292 :デフォルトの名無しさん:2016/04/09(土) 09:16:16.71 ID:H1is7YF7
訂正
[
{rank:1, title:manko[0].title},
{rank:2, title:manko[1].title},
{rank:3, title:manko[2].title},


293 :デフォルトの名無しさん:2016/04/09(土) 11:14:18.39 ID:3zJg02z1
>>288
> ところで、ゆとり的には俺のどの言い方が気に入らず、どう言ってほしかったんだ?

ゆとりじゃない人に、
ゆとり呼ばわるすることをやめることだねw

そんなんだからいつも適当にあしらわれるんだよw

294 :デフォルトの名無しさん:2016/04/09(土) 12:00:38.42 ID:tonuQmGl
>>293
ゆとりじゃないと言い張るつもりなら、それ相当の書き込みをしろよ。
俺から見れば、>>287,293 は典型的ゆとりの反応だよ。
技術的観点は全く無く、感情論で不満を述べているだけ。嘘や言い逃れだけ上手い。
旧世代はこの場合にこの反応は無い。

お前の回答ってどれなのさ?

295 :デフォルトの名無しさん:2016/04/09(土) 14:00:31.47 ID:ovBUPKju
>>283
「フリーズする原因がrankの挿入処理にある」と切り分けできてる?
rankの挿入処理を外して高速に動作するならわかるけど、そのコードを公開した方がクリティカルな回答が得られるかと

296 :デフォルトの名無しさん:2016/04/09(土) 14:15:09.08 ID:uqse8tS2
https://jsfiddle.net/7s5apjkL/
Android端末でも画面がフリーズしなかった
既出だが、切り分けが出来てないんじゃないかね

297 :デフォルトの名無しさん:2016/04/09(土) 17:35:50.57 ID:2XO/HUgQ
>>294
ねえねえおじいちゃん、ゆとりってなあに?

298 :デフォルトの名無しさん:2016/04/09(土) 17:54:48.85 ID:3zJg02z1
>>294
俺からすれば、お前こそゆとりの反応に見えるんだがw

理由は「技術的観点は全く無く、感情論で不満を述べているだけ。嘘や言い逃れだけ上手い。」

299 :デフォルトの名無しさん:2016/04/09(土) 18:34:16.31 ID:CDqAKEr+
ID:tonuQmGl は「質問者が初心者だからデバッグをしっかりやれ」を無駄に長々と説明しているだけ
前向きな考えはまるでないのだから放っておいてやれ

300 :デフォルトの名無しさん:2016/04/09(土) 19:42:31.61 ID:VRMolwpG
この手の物で速度を気にするなら
大きな型付数値配列をメモリとして取って、
そこに読み書きするという形で全てを表現するといい
ようするにasm.jsちゃんだ

そこまでする必要が無いのであれば書きやすいどんな方法でも良いと言える

301 :デフォルトの名無しさん:2016/04/09(土) 19:48:42.91 ID:nMheNy6L
またこの、ボンクラが答えだけ欲しい流れになってるのかよ。
答まで書いて理解して貰えなかったアホの事思い出すわ。
答まで書いて理解できなかった奴はまた答だけ聞きに来るんだろうな。
また聞きに来なくても、ああこれは似たやつだなって思えるように解説書いてるのに。

302 :デフォルトの名無しさん:2016/04/09(土) 20:03:30.82 ID:nX2uL7WF
jsはなぜこんなにも互換性がないのでしょうか
GUI部分に差異があるのはある程度仕方ないと思いますがインフラ関係ない部分に非互換性があるのは解せません

303 :デフォルトの名無しさん:2016/04/09(土) 20:18:13.39 ID:0Bzp/bzz
具体的にどこよ?
そりゃ多少独自拡張があった時代もあるし、バージョンが違うのも当然あるが、
現在はコアの部分は一通り互換性取れてると言って良いと思うが

304 :デフォルトの名無しさん:2016/04/09(土) 21:28:30.58 ID:3zJg02z1
>>302
> jsはなぜこんなにも互換性がないのでしょうか

JavaScriptは多くの会社が作ってる。
こんな言語は他にはない。
一体何と比べてるのか?

RubyとjRubyの互換性のなさよりは
jsの方がずっと高い互換性があるだろう。

305 :デフォルトの名無しさん:2016/04/09(土) 22:39:27.82 ID:tonuQmGl
本日のゆとりおよび低脳
ID:pEHBzpIW = ID:H1is7YF7
ID:r6y5A1ZI
ID:3zJg02z1
ID:2XO/HUgQ
ID:CDqAKEr+
IDがころころ変わっているので何人かは同一人物のはず

ゆとりはまず「正しい回答」をするところから始めろ。
文句だけ言うのではなくてね。

とはいえ、どうやらこのスレでは人間性に問題のない非ゆとり(自称)が回答してくれるらしい。
今後は知っていても様子を見ることにする。
あと、詭弁論法を使うのは止めろ。それは本当にお前らの為にならない。
結果的に足を引っ張り合っていることに気づけ。(長期的視点で)

てか、ゆとりには「ゆとり」ってこんなに効くんだな。正直驚いたよ。
それから、ゆとりはまずJavaScriptの前に日本語をやり直したほうがいい。

306 :デフォルトの名無しさん:2016/04/09(土) 23:13:29.34 ID:FC44HapC
よくここまで中身のない話を長々と語れるもんだな

307 :デフォルトの名無しさん:2016/04/09(土) 23:59:46.74 ID:tonuQmGl
一応荒れている板に慣れてない奴らのために解説をしておく。

この状況で質問者が回収しに来ないってありえないだろ。
だから質問者はIDを変えて一生懸命俺を叩いている。
詭弁まで用いている。これはかなり悪質だ。

どうにも俺の回答、「明らかに見当違いだからさっさとデバッグしろ」が気に入らないらしい。
だとすると、普通に解答つけている奴はシロだ。
実際、回答している奴で俺に噛み付いてきている奴はいないだろ。

技術板でこういうおかしな荒れ方をするのはJavaScriptだけだ。
ほぼアフィカスだと思う。慣れてない奴は気をつけてくれ。

308 :デフォルトの名無しさん:2016/04/10(日) 00:04:28.09 ID:k5ZTlTQG
>>280
その止まるというソースをまず出してみなよ

>>307
失せろゴミ

309 :デフォルトの名無しさん:2016/04/10(日) 00:05:29.49 ID:crqXdUCC
なんか、面倒なやつだな

310 :デフォルトの名無しさん:2016/04/10(日) 00:06:05.67 ID:aYwa2P4c
285だけど関わりたくないから触れなかっただけだよ
自分を妄言の根拠の一つに入れるのは本当に勘弁して頂きたい

311 :デフォルトの名無しさん:2016/04/10(日) 00:17:27.35 ID:1TEKUIpj
こいつニュー速+でも荒らしてた奴だろ
周りとの技術レベルの落差に気づかずに噛み合わず、一人でゆとりゆとり言ってるからすぐ分かる

312 :デフォルトの名無しさん:2016/04/10(日) 00:17:27.56 ID:ipc8Qm5p
>>307
最近はC++押しもひどいで

313 :デフォルトの名無しさん:2016/04/10(日) 00:56:56.99 ID:jv2fHTjL
>>312
多分その「C++押し」って奴とは違うと思うが、
C++相談室がとんでもないことになっていたことは知っている。
ただ、俺はあれはありだと思ってるんだよね。

連中、基本的に相手の「技術的」穴に対して、
「俺のほうが詳しい」っていうスタンスでやたら攻撃的なわけだけど、
匿名掲示板で技術論議なんだからあれも一つの形だよ。よくもまあそこまでとも思うけど。

ここはクレクレアフィカス君が自分の望んだ回答(デバッグ済みのコード)が出てこないときに
煽って叩いて相手をたきつけてコードを出させようとしているだけでしょ。
自分で学ぶ気なんてなさそうだし、それ以前にコードも書いてないんだと思うよ。
そもそも日常的に書いていたら速度の見当くらいつくだろうし。

だから今回は結局コードなんて出てこないに1000ペリカ。
そもそもあれだけのことでフリーズするようなコードを書くほうが難しい。
単にフリーズするだけなら簡単だけど、
10回のループならサクッと終わらないといけないんだからね。

ところでC++相談室見直してみたら、ワッチョイなんだが、ここも次からそうしないか?
てかあれ板限定ではなかったんだな。

314 :デフォルトの名無しさん:2016/04/10(日) 01:24:54.95 ID:k5ZTlTQG
良いね
ワッチョイ入れたらお前も自分がいかに馬鹿だったか自覚するだろうしな

315 :デフォルトの名無しさん:2016/04/10(日) 03:52:05.46 ID:aIGeP9fV
>>305
> IDがころころ変わっているので何人かは同一人物のはず

全く違う。

そういう「思い込みで文句を言う」ってところが
ゆとりっぽいんだよな。おまえは。

316 :デフォルトの名無しさん:2016/04/10(日) 04:21:27.07
人をIDで判断するのはやめてください!ヘイトスピーチ!

317 :デフォルトの名無しさん:2016/04/10(日) 04:24:37.47 ID:TYHBJi84
週に休みが半日多かったのと「思い込みで文句を言う」って関係有るのか?
相手に誠実な会話を期待するならこちらも誠実であるべきだよ。

318 :デフォルトの名無しさん:2016/04/10(日) 07:23:06.28 ID:R8UfCYNB
ながながとゆとりを使って中傷して
javascriptの話ししろよ
いくらレスしても解決するわけもなくいつまでも煽りつづけるだけなんだろ
これだから質問系スレには質問したくないと思われてるんだよ

319 :デフォルトの名無しさん:2016/04/10(日) 07:31:48.59 ID:aIGeP9fV
ゆとりじゃないことが自慢です

320 :デフォルトの名無しさん:2016/04/10(日) 09:25:12.46 ID:nxfYQog6
>>306
元々、このスレの中身はない

321 :デフォルトの名無しさん:2016/04/10(日) 09:35:29.99 ID:x5LK7jRP
一番マトモなスレはこっちだからな

+ JavaScript & jQuery 質問用スレッド vol.5 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1452081417/

322 :デフォルトの名無しさん:2016/04/10(日) 17:14:19.24 ID:x8V2YJyC
荒らしが約1名潜伏しているだけでこのスレはまともな方だと思うが

323 :デフォルトの名無しさん:2016/04/10(日) 22:29:15.24 ID:gp229ozf
jQueryスレは信者スレ
頭が固い人が常駐していて話が合わないわ

324 :デフォルトの名無しさん:2016/04/10(日) 22:31:31.50 ID:2nCcxZVq
jQueryって最初はこりゃ良いやって思うけどだんだん使わなくなるよね

325 :デフォルトの名無しさん:2016/04/10(日) 22:47:05.98 ID:jv2fHTjL
本日のゆとり
ID:k5ZTlTQG、ジョブチェンジ (= ID:pEHBzpIW = ID:H1is7YF7) (= ID:2XO/HUgQ)、アフィカス
ID:aIGeP9fV (= ID:3zJg02z1 = ID:r6y5A1ZI)、アフィカス
ID:1TEKUIpj
(ID:CDqAKEr+)

ゆとりには幼稚園児ほどの知能しかないから、お菓子さえくれれば大満足。
間違っていることでも、やさしく教えてくれさえすればいい。
そりゃ永遠とゆとりのままな訳だよ。ポストゆとりの出現で駆逐されることを願う。

同期XHRを教えるなんて明確な間違いだし、
今回も結局俺の「明らかに見当違いだからさっさとデバッグしろ」以上のものは無いだろ。
そりゃそうだ、これが正解なのだから。

まあ分かった、ゆとりにとっては間違った内容でも優しければ正解なんだよな。
歯磨きは面倒だからやらなくていい。
注射は痛いから打たなくていい。
勉強は面倒だからしなくていい。
非同期は難しいから書けなくていい。
デバッグは面倒だからやらなくていい。掲示板で煽ればデバッグ済みのコードが出てくる。

こんな価値観の奴がはびこれば国が滅ぶ。
出来れば自殺して欲しいね。それがお前らゆとりが出来る最大の貢献だよ。

326 :デフォルトの名無しさん:2016/04/10(日) 22:53:20.51 ID:SsCYllss
自殺教唆罪というのがあって、もしお前のそのレスでゆとりが自殺してしまったら、
お前は犯罪者になりかねないけど大丈夫?

327 :デフォルトの名無しさん:2016/04/10(日) 22:56:16.39 ID:6Gk/Jc3O
jQueryでいいと思うのはeach等の配列系メソッドかな
HTMLCollectionやNodeListになぜ配列と同等のメソッドが定義されてないのか理解に苦しむ
それ以外は独自拡張満載、未だにキャプチャリングフェーズ未対応、handleEvent未対応、標準APIとの動作の違い...etc
気になる現象が多数あるんだよな

328 :デフォルトの名無しさん:2016/04/11(月) 04:15:11.76 ID:QsR4QMdK
なぜかというとそりゃ言語とは独立したものだからね。
下手に付けるといろんな言語との不一致で余計分かりにくくなる。
まあ最近のquery()とかが返すElementsならArrayを継承してるし、
NodeListもiterableにされる感じだし、
それでなくともArray.from()使えばいいだけだからね。

329 :デフォルトの名無しさん:2016/04/11(月) 09:45:48.71 ID:ql5kNjs+
jQueryはJavaScriptの単なるライブラリなんだけど

330 :デフォルトの名無しさん:2016/04/11(月) 10:09:39.80 ID:nkOUJN5N
単なるセンスがないライブラリがより正確

331 :デフォルトの名無しさん:2016/04/11(月) 11:21:43.35 ID:ZXdKwmPg
>>328
DOMとECMAScriptが別定義なのは理解してるが、「NodeListはStandard ECMA-262 6th Editionもしくは上位版のArrayを継承する」と定義して良かった気がしないでもない
それでなくとも、Map.prototype.forEachのようによく使うメソッドだけでも配列とは別に定義して欲しかった

query,Elementsの存在ははじめて知ったが、どの仕様定義?
使ってみたいんだが、該当仕様が見つからなかった

332 :デフォルトの名無しさん:2016/04/11(月) 12:57:35.79 ID:nmed7NL6
JSはなんでも標準に要求するより自分で作った方が手っ取り早いね
車輪の再発明やオレオレライブラリが好きな人種にはすごくいい言語だ

333 :デフォルトの名無しさん:2016/04/11(月) 14:15:42.99 ID:ORuOCkHy
しかしそれを読む他人に負荷がかかる

334 :デフォルトの名無しさん:2016/04/11(月) 15:08:25.05 ID:/4tKcoWK
車輪の再発明と言う表現を使う人が多いのはなぜ?

335 :デフォルトの名無しさん:2016/04/11(月) 16:41:03.10 ID:jGs+gPDI
>>334
gugure baka

336 :デフォルトの名無しさん:2016/04/11(月) 16:50:55.08 ID:ql5kNjs+
>>330
いや、JavaScriptにセンスがないから
jQueryのようなライブラリが発生するんだが

337 :デフォルトの名無しさん:2016/04/11(月) 17:11:13.08 ID:ExJ+musA
センスがあろうがなかろうがライブラリは作られる

338 :デフォルトの名無しさん:2016/04/11(月) 17:17:01.76 ID:rdw4J+ev
>>324
> jQueryって最初はこりゃ良いやって思うけどだんだん使わなくなるよね

そう?
AngularJSやReactは導入するのが大変で
ウェブアプリを作るならまだしも、
ウェブサイト、つまりHTMLにJavaScriptで軽く動きを
つけるぐらいならjQuery使うのが楽だけど。

339 :デフォルトの名無しさん:2016/04/11(月) 18:05:55.51 ID:3648G8MM
>>331
JSでArrayやビルトインクラスが真に継承できるようになったのはES6から。
ES6以前、それも大昔に定義されたNodeListをいまさらそのように変えるのは良くない
メソッドが定義されているかで処理を分けるのはまだ表の方法とされているが、
それ以外の方法を使わなければならないのはダーティーさが増す。

よってArrayを継承する新たなメソッドが作られた。
作られたのだが、ブラウザ連中が何時までたっても実装に踏み込まず
(ビルトインサブクラスの仕組みをDOMなど外部の環境から適応出来るようにするのは
JSエンジンとDOM管理コード双方の大幅な改修が必要で手間)
Firefoxに至ってはJS内に限ってもまだ完全なサブクラス化を提供しやがらないので
この前ひとまずコミットアウトされた。
https://github.com/whatwg/dom/commit/10b6cf1ba02806220d5461a3bdb7939728b73635

340 :デフォルトの名無しさん:2016/04/11(月) 18:15:36.42 ID:oAFnNIvt
javascriptができればC++もできるようになりますか?

341 :デフォルトの名無しさん:2016/04/11(月) 18:20:46.53 ID:ql5kNjs+
>>340
無理

342 :デフォルトの名無しさん:2016/04/11(月) 18:43:57.62 ID:3648G8MM
JavaScriptが本当にできればエンジンのソースを読んだりするようになるのでできるようになる

343 :デフォルトの名無しさん:2016/04/11(月) 19:58:27.61 ID:rf8a3oqm
var new_select = document.createElement("select");
var php = "<?php include(\"resist.php\") ?>"
new_select.innerHTML = php;

これだとPHPの記述がコメントになるんだけど
どうすればいいの

344 :デフォルトの名無しさん:2016/04/11(月) 21:43:59.89 ID:Dip4Tgpn
テキストノードにしたいならinnerHTMLじゃなくてtextContent

345 :デフォルトの名無しさん:2016/04/11(月) 21:51:32.95 ID:/KA1eOwr
というか、
innerHTML ぐらい読めないのか?

346 :デフォルトの名無しさん:2016/04/11(月) 22:58:33.39 ID:rf8a3oqm
テキストノードではなく
<?php
include("resist.php");
?>
ボタンを押すことで上をhtmlに追加して
データベースから取得して表示するresist.phpを作動させるみたいなイメージで>>343を書いたんだけど
他に良いやり方が思い付かない
どなたか無知の僕にご教授を……

347 :デフォルトの名無しさん:2016/04/11(月) 23:04:19.31 ID:Dip4Tgpn
サーバーとクライアントの区別が付いてないのかな
発想が大分おかしいからまずPHPがどういう仕組で動いているのか調べた方がいいよ
続くようならPHPの質問スレで聞いてね

348 :デフォルトの名無しさん:2016/04/11(月) 23:07:07.59 ID:CbAg4Lxb
1から勉強しなおしたほうがいい

349 :デフォルトの名無しさん:2016/04/11(月) 23:09:08.63 ID:rf8a3oqm
ありがとうございました
勉強しなおします……

350 :デフォルトの名無しさん:2016/04/11(月) 23:16:17.41 ID:XNNO/Nee
>>339
結局、>>328の「最近のquery()とかが返すElementsならArrayを継承してる」は実装も仕様もないものを指していたのか

351 :デフォルトの名無しさん:2016/04/11(月) 23:55:11.50 ID:ACs+zaq9
>>350
勘違いしてほしくないが、重要なのはNodeListはイテラブルにするに留めて
Arrayを継承する別の何かを用意するというような方向性であり
それから得られる、今はArray.fromを使うと良い、
将来的には[...list]がDOMを含む大体のArrayLikeの展開に使える立ち位置になるんだなということに始まる
様々なこれからコードを書いていく、またライブラリやフレームワークを作っていく上での指標であって、
メソッドが仕様に載ってるか載っていないかは些細なこと

実際仕様は「Old-style」の名残が残ってるように、Elementsの案は無くなったわけではなく水面下に潜っただけ
あるないの1か0かではなく、各アイディアがどのような立ち位置かをメーリングリストやらを見て
大局的に把握しないと行けない

352 :デフォルトの名無しさん:2016/04/12(火) 01:37:52.02 ID:gsam7bTJ
将来はとか今はとか、そうやって
コロコロ変わるからだめなんだよ。
jQuery等のライブラリを使えって言うのはそういうこと。
書き方は今と一緒でもバージョンが上がれば内部的に新しい書き方を使ってくれる。

353 :デフォルトの名無しさん:2016/04/12(火) 06:57:04.68 ID:64alg/wn
>>352
それは勿論そうだが、それより一歩先の話をすると
ライブラリを選ぶにも作るにも完全に気分の赴くままよりは、
これからの標準の流れに沿うものであるべきだと自分は思ってる

例えば2年くらい前ならPromiseが細かいメソッドはどうなるか分からないけど
振る舞いのタイプはもう分かっていたわけで、
それならjQueryのDeferredではなくA+系の方を使うかという選択ができる。

将来的には循環ができ皆で今の標準を作っていくExtensible Web構想が理想。
まあそれがしっかりするには東京オリンピックの頃までかかるだろうが、準備は今から必要。

354 :デフォルトの名無しさん:2016/04/12(火) 09:27:07.71 ID:8rWfNdXR
指向や実装は変化する
現時点で何がベターなのかが重要
Firefoxみたいにどんどんと落ちぶれるよ

355 :デフォルトの名無しさん:2016/04/12(火) 10:24:12.73 ID:gsam7bTJ
>>353
> それならjQueryのDeferredではなくA+系の方を使うかという選択ができる。
せやな。jQuery 3.0のDeferredもA+と互換になるしな。

https://blog.jquery.com/2016/01/14/jquery-3-0-beta-released/
> jQuery.Deferred is now Promises/A+ compatible
> jQuery.Deferred objects have been updated for compatibility with
> Promises/A+ and ES2015 Promises, verified with the Promises/A+
> Compliance Test Suite. This meant we need some major changes to the .then() method:

>>354
> 現時点で何がベターなのかが重要
ベターなものを変わっていくので、使い捨てアプリを作っているのでない限り、
変化させていくことが重要だよ。例えばjQueryもこのようにA+互換に変化した。
急に変化されることは難しいので、ゆっくり連続的に変化させていくことが重要。
言い換えると変化させていけるのであれば、すぐに切り捨てる必要もないんやで。

356 :デフォルトの名無しさん:2016/04/12(火) 11:17:05.41 ID:pmgBJfny
時代遅れになっても自分である程度手綱を握ってられる技術がいい
そういう意味では jQuery は適度にコードも読めて楽だった

357 :デフォルトの名無しさん:2016/04/12(火) 11:18:03.72 ID:9GLSOaWr
>>351
策定段階で仕様が削除されるのは良くある事だし、別にいいさ
問題は「なぜ削除された仕様を>>328で持ち出したのか」
>>331にわざわざ仕様書を調べる時間をとらせて申し訳ないと思わないのか

358 :デフォルトの名無しさん:2016/04/12(火) 11:46:23.82 ID:FTpyWeJj
仕様を作るのが仕事な人なら別に構わないが、
その他の多くの人は最新仕様を追っても消耗するだけ

最新仕様を使うことは目的じゃない。

359 :デフォルトの名無しさん:2016/04/12(火) 12:09:30.61
IE11で動く画面しか作っちゃいけないんすよ、うち

360 :デフォルトの名無しさん:2016/04/12(火) 12:10:42.76 ID:vv/iXFzr
「最新仕様を使うことは目的」とは誰も思ってないと思うが

361 :デフォルトの名無しさん:2016/04/12(火) 12:15:39.55 ID:t+8zPvsS
最新仕様を追う人は実装が安定していない事ぐらい分かっているから

362 :デフォルトの名無しさん:2016/04/12(火) 12:33:51.88 ID:FTpyWeJj
そういう安定してないものを勧めないでください。

363 :デフォルトの名無しさん:2016/04/12(火) 12:41:36.39 ID:t+8zPvsS
誰か最新仕様を勧めてたか?
削除された仕様が存在するかのように説明したのは酷いとは思ったが

364 :デフォルトの名無しさん:2016/04/12(火) 14:25:17.42 ID:zrhvNbq0
query/queryAll/Elements はこれか
>>328の確認不足だな
https://github.com/whatwg/dom/commit/10b6cf1ba02806220d5461a3bdb7939728b73635

365 :デフォルトの名無しさん:2016/04/12(火) 17:50:48.81 ID:YDME1+9m
>>357
そりゃここまでのやり取りの結果からすれば言葉足らずな部分もあったかもしれないけれど、
別に何かの証明をしているわけではないし、
1レスの返答内に少しも隙を作っちゃいけないってのは厳しすぎないか?

そもそもこちらは一方的に何か正解のような物を押し付けて1レスで完結させようとしてたわけでもなく、
それに関する話題で話しかけたかったわけ。
こちらが言った事に対して>>328が無視するかも知れないし、どこにどう食いついて来るかは分からない。

今回はElementsに食いついてくれて、それで仕様書を調べてくれて、見つからないという返事を返してくれた。
ああ、それなら自分がそれに関するより深い返答を返そうという流れは不誠実かい?


まあ正直に言うとElementsで誘った部分もあったけど、それは悪意ではなくテクニックとしてやっただけだし
実は削除されていた!なんて知らんかって急遽偉そうに取り繕った誤算もあったけど
結果的に話題を展開することができて満足してるよ。スマンな。

366 :デフォルトの名無しさん:2016/04/12(火) 18:13:30.66 ID:ac/sujZj
ここはJavaScript の質問スレッド
JavaScriptについて語るスレッドではない
本当に仕様がないな
バカ

367 :デフォルトの名無しさん:2016/04/12(火) 19:16:35.13 ID:FTpyWeJj
>>366
> (10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

これらはJavaScriptに関する意見だ。
何の問題もない。

368 :デフォルトの名無しさん:2016/04/12(火) 19:43:27.82 ID:lq30kg7p
>>366それはこの場面で使う決め台詞じゃないでしょ
客観的に見て阿呆は君だよ
質問形式が決まっててキッチリ一問一答が行われるスレならまだしも
ただぼんやりと流れているのが人間である我々の現実だし
質問に対して議論してはいけないと決まってるわけでもないし
もし間違いであるなら>>327は荒らしも同然で、そういうレスを一切するなということになってしまう

369 :デフォルトの名無しさん:2016/04/12(火) 21:43:49.65 ID:mC0fEeYI
>>365
あなたは>>339で「Arrayを継承する新たなメソッド」とqueryなのかそれ以外の何かなのか分からないぼかした表現で誤魔化した
>>351の返答でようやくquery,elementsの事を指していたのだろうと想像がついた
間違いを犯してはいけないとまでは思わないが、間違ったら偉そうに取り繕う前に素直に訂正するのは当然だろう

370 :デフォルトの名無しさん:2016/04/12(火) 22:27:14.03 ID:h5oBzMsU
「Arrayを継承する新たなメソッド」
ってのはごまかしたわけではなく文字抜け
「Arrayを継承するクラス(Elements)のインスタンスを返すメソッド」
という方がより言いたいことにあっている

すぐに気がつきはしたが真反対のことを書いたわけでもなく、補完してくれることに期待できるレベルだし、
先の理論で、別に隅々まで神経質に仕上げなくともこういう会話のやり取りで指摘されたら
付け加えてあげれば十分思い訂正はしなかった

自分が取り繕ったのは削除されたのを知ってた風に装ったことだが、
勘違いしてほしくないがごまかしたのとは違う、
自分が削除されてたのを知っていたかどうかは別に>>327と始めた話の本質には関係がない
つまり知っていたとしても自分の言いたいことに変化はないので、そこに関して間違ったわけではない
だから削除されていたと知っていたとして話を一段落付かした。
これはテクニックであり、自分なりの「誠実さ」であり、ごまかしではない。

そして削除されてたと知っていたかどうかなどの話の展開になったので
そこでは確かに「間違った」ので、真実を公開し、かるぅく謝罪した
なぜかるぅくかはもう言わなくても分かるよな

371 :デフォルトの名無しさん:2016/04/12(火) 22:28:06.16 ID:FTpyWeJj
どうでもいいことをグダグダ続けるなよ

372 :デフォルトの名無しさん:2016/04/12(火) 22:29:23.74 ID:fnwI8WJc
そろそろ他の言語もブラウザに乗せようよ
JavaScriptにはもうウンザリ

373 :デフォルトの名無しさん:2016/04/12(火) 22:43:48.78 ID:FTpyWeJj
>>372
> そろそろ他の言語もブラウザに乗せようよ
それをやったのはマイクロソフトだけなんだよな。
VBScript。他のブラウザはそういうことをやらなかった。

まあ単純に他の言語をのせるわけにはいかないからね。
セキュリティ的に言語標準でできることを制限しなければいけない。
例えばどの言語にもあるようなファイルの読み書きをブラウザ版では
使えないようにしないといけない。

374 :デフォルトの名無しさん:2016/04/13(水) 03:28:48.11
Luaとか組み込み言語として速いし簡単だと思うんすけどね
技術的などうこうより互換性とかセキュリティとか、テストの方が100倍大変なんでしょうね

375 :デフォルトの名無しさん:2016/04/13(水) 07:42:05.79 ID:GgADnCL9
今更何かを載せても仕方ないし、それに似合うだけの言語がないでしょ
Web APIは今やJS依りになってきてるし
それを解決しようとしたのがDartだったけど
結局JSを改良していくのと比べて然程メリットがないと分かった

そういうAPIと関係ない部分を他言語で作ってwasmに変換してっていう時代は
これから来る可能性はあるけど、メインはJSのままだろうね

376 :デフォルトの名無しさん:2016/04/13(水) 08:16:28.15 ID:DCkaewxP
このまま生産性の低いjsに依存し続けるのは人類規模での損失
これからの世代に申し訳ない

377 :デフォルトの名無しさん:2016/04/13(水) 08:36:54.94 ID:N3hRKpiT
>>376
生産性が低いのはお前なんですよwww

378 :デフォルトの名無しさん:2016/04/13(水) 08:47:17.62 ID:OPbsDvyC
言語によって生産性は変わらない。

タイプ数の違いや、改行の数の違いは
生産性には全く結びつかない。

言語によって生産性は変わらず
ライブラリによって生産性は変わる。

379 :デフォルトの名無しさん:2016/04/13(水) 08:49:52.79 ID:OPbsDvyC
CoffeeScriptはいい例だな

書き方が変わるだけで、生産性の向上には
つながることができなかった言語

380 :デフォルトの名無しさん:2016/04/13(水) 09:56:55.91 ID:DCkaewxP
それは嘘だね
C#はJavaの3倍生産性が高い

381 :デフォルトの名無しさん:2016/04/13(水) 10:11:47.50 ID:N3hRKpiT
>>380
そういう寝言は別に書かなくていいよ。

382 :デフォルトの名無しさん:2016/04/13(水) 10:18:02.93 ID:zGtnPLFL
生産性と標準ライブラリを混同しちゃいかんだろ。
まあ.net FWはかなり良いのは確かだけど、逆に依存したらえらい目に合うと思うよ。
1989/01/08変更のファイルが残ってるような言語で開発してるけど、
1/10に役所に提出する書類に間に合わせるのに、FWの出荷待つとか無理だし、それが間に合わないと客が潰れるレベルの損失出るとかヤバいよ。

383 :デフォルトの名無しさん:2016/04/13(水) 10:56:57.38
ASP.NETの検証コントロール(クライアントとサーバ両方やってくれる)とかSqlDaraSourceとか超楽

384 :デフォルトの名無しさん:2016/04/13(水) 11:03:53.99 ID:OPbsDvyC
>>382
標準ライブラリの話はしていないよ。
標準じゃなくても良い。

ライブラリやフレームワークの有無で
生産性は大きく変わるが、言語の違いでは
生産性は殆ど変わらないって話。

385 :デフォルトの名無しさん:2016/04/13(水) 11:25:41.89 ID:/y2OU546
>>379
その通りです。
自己満足の世界

386 :デフォルトの名無しさん:2016/04/13(水) 12:48:23.40 ID:u+HfQS9z
Luaでは余りにjsに近い

387 :デフォルトの名無しさん:2016/04/13(水) 12:51:05.79 ID:u+HfQS9z
cとclojureの生産性が同じ……?

388 :デフォルトの名無しさん:2016/04/13(水) 13:00:30.95 ID:OPbsDvyC
>>387
十分なライブラリがそろっている状態では
ほとんど変わらん。

389 :デフォルトの名無しさん:2016/04/13(水) 13:02:14.51
どんな言語でも「こんなんは書いた覚えあるわな」
ってコピペしてくるわけだから
またはググってコピペだから
あんまり変わらないかも

390 :デフォルトの名無しさん:2016/04/13(水) 15:26:02.76 ID:SBj4pmRf
1つの正規表現を複数回使うときでも
事前コンパイルみたいにnew RegExpで正規表現オブジェクトを作って使いまわしてコスト低減、ってあんまり見ないんだけど
これなんか問題あったりする?あるいは効果なかったりする?

391 :デフォルトの名無しさん:2016/04/13(水) 15:42:37.87 ID:DCkaewxP
効果は実測するしかない
クライアントJavaScriptはUIとネットワークの世界の言語だからほぼ無意味だろうね

392 :デフォルトの名無しさん:2016/04/13(水) 17:53:01.31 ID:sN8Fln5r
>>390
new RegExpじゃなくて正規表現リテラルでも事前に作って使いまわしてコスト削減されるのは変わらないと思うけど、実装の最適化次第かな

var i = 0, reg = /^p/, string = 'pattern';
while (i++ < 50000) {
reg.test(string);
}

393 :デフォルトの名無しさん:2016/04/13(水) 21:10:15.40 ID:7l1cW0em
正規表現オブジェクトのキャッシング最適化は各エンジンここ1年で実装が進んでるし
まだまだこれからの分野

394 :デフォルトの名無しさん:2016/04/13(水) 21:55:02.11 ID:g3cnBes/
JSON.parse( "/regexp-string/" )って必要性は感じないよね?
オブジェクト内に含まれる正規表現が空オブジェクトに変換されてモヤッてしただけなんだけど。
Dateもいっそ"Date(〜)"でいいのではないかなと。

395 :デフォルトの名無しさん:2016/04/13(水) 22:22:20.53 ID:7l1cW0em
JSONはJSのためだけのものじゃないしね
そんなことを言ってたらキリがない

396 :デフォルトの名無しさん:2016/04/13(水) 22:51:56.96 ID:g3cnBes/
>>395 たしかに、納得納得。

397 :デフォルトの名無しさん:2016/04/14(木) 14:42:53.97 ID:J1EObEvz
JSかCSSかどっちが悪いのかわからないのですが
スマホサイトでボタンを押すと画面外からメニューが出るものを作っています
具体的にはメニューのdivのpositionのleftを100%にして画面右にはずしておいて
トップにfixedしたボタンをクリックでJSを動作させてleftを50%に書き換えてアニメーションさせてます

ただこの書き方だとコンテンツの途中、スクロールした状態でボタンを押すと
メニューが横から出てくると同時にコンテンツがトップまで戻ってしまいます
コンテンツのその場でメニューを出したいのですがこれは何が原因で上に戻ってしまうのでしょうか?

398 :デフォルトの名無しさん:2016/04/14(木) 14:58:42.01 ID:SPtT+geu
あ?

399 :デフォルトの名無しさん:2016/04/14(木) 15:02:45.14 ID:JkBXQj6P
>>397
それはこっちかな

(X)HTML/CSS/Dreamweaverの質問に優しく答えるスレ21©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1457595681/

400 :デフォルトの名無しさん:2016/04/14(木) 15:14:54.24 ID:bRZRCETq
javascriptで円を描きたいのですが、始点と終点の使い方について教えてください
math.piという関数が出てきますが、これはいったいどういう意味なんでしょうか?
始点は0で終点は360という書き方でも円はかけると思うのですが、これを使う意味が分かりません。

401 :デフォルトの名無しさん:2016/04/14(木) 15:17:35.51 ID:ettVKtfM
じゃあ使わないでください。

402 :デフォルトの名無しさん:2016/04/14(木) 15:28:29.14 ID:J1EObEvz
自己解決しました
return false;書けば戻らなくなりました
JSでしたね

403 :デフォルトの名無しさん:2016/04/14(木) 15:28:37.11 ID:jsKKLFZF
>>400
あなたは0と360と言う情報から円周上のxとyを全て求めて円を描くことが可能なのですか?

404 :デフォルトの名無しさん:2016/04/14(木) 15:35:54.28 ID:jrefqPbU
>>400
角度の単位に一周を360度(直角が90度)になる馴染みのある単位系をなぜ使わないのか?
馬鹿なのか、死ぬのか、とまでは言わないが不便ではないか。という意味のご質問ですか?

角度の単位の代表的なものは、ご存知の一周を360度とするものです。
これは昔、一年が360日と考えられていたころに発明された60をベースにした単位(60秒=1分、60分=1時間)です。
他に、直角を100(単位はグラディアントとかグラードとか言う)とする、10進数こそ正義、という単位もあります。

プログラミング言語でよく使われる単位はラジアンで、半径に対する弧の長さの比を使って角度を表すものです。
これを使うと一周は円周率(pi)の2倍になります。
三角関数というもの(サイン、コサインなどなど)があり、は画像系のプログラミングでもよく使います。
で、この単位系(ラジアン)の便利なところは、三角関数の微積分で、100とか360のような係数が出たり消えたりしないことです。

405 :デフォルトの名無しさん:2016/04/14(木) 15:36:41.24 ID:bRZRCETq
上のものです
例えば、Math.PI*1.5としたら、円周率の1.5倍ということで半円ができるはずですが、
私の認識は間違ってるんでしょうか?

406 :デフォルトの名無しさん:2016/04/14(木) 15:42:39.26 ID:jrefqPbU
>>405
扇型の中心角の話だとして、
半円(中心角180度)は、円周率の1倍、(piそのもの)になります。
円周率の1.5倍だと270度に相当し、円の3/4になります。

407 :デフォルトの名無しさん:2016/04/14(木) 15:44:34.83 ID:SppvdaVa
>>405
普段使っている単位を使いたい気持ちはわかる

1.5が半円は間違えだ

408 :デフォルトの名無しさん:2016/04/14(木) 16:22:09.26 ID:MIl70kQk
あんたらには無縁の話だろ

409 :デフォルトの名無しさん:2016/04/14(木) 16:30:42.23 ID:XpoLc8eO
クラスの設計について教えてください。
最近になってコンストラクタ関数にもプロパティを生やすことができるのを知り(クラス変数?)、
名前空間も綺麗に整うため、生成したインスタンスを格納する配列をコンストラクタ関数に
入れようと思っています。
このような設計は何か問題が無いか、アドバイスをください。
簡単なコードではやりたいこともでき、関数もオブジェクトならば問題無いような気がするのですが、
大きなコードを書いたらどこかで詰むんじゃないかと、不安なんです。

var App = {};
App.Person = function(name, state) {
this.name = name;
this.state = state;
}
App.Person.prototype.setState = function(state) {
this.state = state;
};
// インスタンスを格納する配列
App.Person.persons = [];
// インスタンスが共通で使うオブジェクト
App.Person.state = { warking: 0, swiming:1, sleeping:2 };
// 配列に入れて様々な処理をしたい
App.Person.doSomething = function (){
for (var i = 0; i < App.Person.persons.length; i++) {
if (App.Person.persons[i].state === App.Person.state.swiming) {
console.log("泳いでいるのは" + App.Person.persons[i].name)
}
}
}

App.Person.persons[0] = new App.Person("吉田", App.Person.state.warking);
App.Person.persons[1] = new App.Person("村松", App.Person.state.swiming);
App.Person.doSomething();

410 :デフォルトの名無しさん:2016/04/14(木) 17:00:55.17 ID:bRZRCETq
>>406
>>407
なるほど、円周率*1が180度を表すのですね。
ラジアンというものを調べてきます。

411 :デフォルトの名無しさん:2016/04/14(木) 17:14:39.55 ID:IJnJnibC
javascriptにクラスはありません
ないものの話をするのはやめてください

412 :デフォルトの名無しさん:2016/04/14(木) 18:05:27.57 ID:fy/Ek9QC
作ればあるし、作らなければないよ?
何を持ってないと言ってるの?

413 :デフォルトの名無しさん:2016/04/14(木) 18:32:10.48 ID:h3KiwqeP
>>410
ラジアンって中学の数学じゃなかったっけ、、、
いや数?だったか

414 :デフォルトの名無しさん:2016/04/14(木) 18:33:19.79 ID:MIl70kQk
JavaScriptはクラス指向じゃないからな

415 :デフォルトの名無しさん:2016/04/14(木) 18:34:38.19 ID:h3KiwqeP
って検索したら数?か、、、

416 :デフォルトの名無しさん:2016/04/14(木) 18:39:04.99 ID:yvAyG8T7
高校数学だけど諸事情により弧度法学んでない人も多くいるよ
個人的な事情じゃなくて指導要領の問題

417 :デフォルトの名無しさん:2016/04/14(木) 19:06:36.98 ID:Y0ioTXAP
学んでないんじゃなくて記憶にないだけだろ
おまえらどうせ授業なんて聞いてやしなかったんだろうし

418 :デフォルトの名無しさん:2016/04/14(木) 19:44:33.43 ID:uLJO6cEY
>>411
ES6で糖衣構文が出来た
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/class

419 :デフォルトの名無しさん:2016/04/14(木) 19:44:44.31 ID:yvAyG8T7
いやいや、高校教育はどんどん幅が広くなってきてて絶対やる必修科目/項目が減ってきてる
特に弧度法は10年近く数IIから数学IIIに移されてた。文系だと数IIIはやらないしそうでなくてもなおざりにされることはよくある
さらに指導要領の遵守と教師の裁量と教師の趣味思考信条と授業の時間制限とまあ色々あるので…

もちろん忘れてるケースも多いだろうけど本当に教わってないケースも意外とあるから知ってる前提は中学レベルくらいに留めるのが無難かもね

420 :デフォルトの名無しさん:2016/04/14(木) 20:10:23.25 ID:IxiTROQl
つまりゆとりは中卒だと

421 :デフォルトの名無しさん:2016/04/14(木) 20:12:34.54 ID:x1J0G4cD
必死に濁してるようだが学んでないやつはバカとしか読めない

422 :デフォルトの名無しさん:2016/04/14(木) 20:49:29.50 ID:6J+p43e3
>>409
関数のプロパティを使うのはいいが、設計思想に首を傾げるところが多い
・明らかにコンストラクタでないのに App (大文字から始まる名前)
・PersonにPersonのインスタンスを格納する不思議(Array.arrays = new Array をやってるようなもの)

423 :デフォルトの名無しさん:2016/04/14(木) 21:09:35.74 ID:XgnJW0xC
>>410
中卒か?

424 :デフォルトの名無しさん:2016/04/14(木) 21:13:45.57 ID:VgjdRSr0
いい加減、学歴を貶める不毛な行為は止めないか

425 :デフォルトの名無しさん:2016/04/14(木) 21:18:13.65 ID:zHhupJkO
いったいどうすれば再利用可能な美しいコードを書けるの?

426 :デフォルトの名無しさん:2016/04/14(木) 21:35:42.71 ID:/lnot8M5
 ___    ハ,,,,,ハ.∩
/ || ̄ ̄|| r( ゚ω゚ )ノ  はーーーー!
|.....||__|| └‐、   レ´`ヽ
| ̄ ̄\三  / ̄ ̄ ̄/ノ´`
|    | ( ./     /



ふゅーーーっ!
 ___            ∩ハ,,,,,ハ
/ || ̄ ̄||         _ ヽ( ゚ω゚ )∩  じょんッ!!
|.....|| ゚ω゚ ||         /`ヽJ   ,‐┘
| ̄ ̄\三  / ̄ ̄ ̄/  ´`ヽ、_  ノ
|    | ( ./     /      `) )


          ___
       ∩/ || ̄ ̄||
      _ ヽ|.....|| ゚ω゚ || 7
      /`ヽJ   ,‐┘/
     ´`ヽ、_  ノ
        `) )

427 :デフォルトの名無しさん:2016/04/15(金) 01:36:57.07 ID:paMmofV4
class構文は糖衣構文とは呼べない
全く新しい概念・機能が入ってるから

428 :デフォルトの名無しさん:2016/04/15(金) 02:06:22.81 ID:goHZ67UE
>>409
クラスAのインスタンスの集合を、クラスAに収納しているの?

そんなややこしいことをせず、単に普通のコンテナに入れればよいだけ。
そうしないと、便利なコンテナのメソッドが使えない

429 :デフォルトの名無しさん:2016/04/15(金) 06:58:43.14 ID:ypL17/E1
ラジアンでは2πが一周に相当するらしいですが、この場合のπとはいったい何のことでしょうか

430 :デフォルトの名無しさん:2016/04/15(金) 07:00:36.03 ID:9VFl1+zB
おまえにもついてるだろ2つ

431 :デフォルトの名無しさん:2016/04/15(金) 07:25:02.81 ID:ypL17/E1
あっすいみせん
読み方が違うんですね

432 :デフォルトの名無しさん:2016/04/15(金) 07:32:43.52 ID:RSig610Q
日本語も間違ってますが

433 :デフォルトの名無しさん:2016/04/15(金) 12:14:37.10 ID:nRwhaoVL
>>409
察するに、インスタンスを生成したときに、自動的に管理されるようにしたい?

クラスで管理するのではなくて、管理するオブジェクトを別に作ればいいのでは?
クラスで管理すると、複数系統の管理ができない。
例えばPersonが人を表すと仮定して、地球の人と火星の人を別に管理しようとしても出来ないでしょ。

434 :デフォルトの名無しさん:2016/04/15(金) 13:30:28.84 ID:ypL17/E1
デフォルトのjavascriptで円グラフというか、パックマンのような顔を描くことはできますか?

435 :デフォルトの名無しさん:2016/04/15(金) 13:35:23.94 ID:sM2G3xuL
なんでできないって思うの?

436 :デフォルトの名無しさん:2016/04/15(金) 13:41:22.10 ID:HeSDe1m1
パックマンの顔ってどこですか?

437 :デフォルトの名無しさん:2016/04/15(金) 13:48:20.94 ID:cx5PLOSb
>>434
デフォルトのJavaScriptではできない。
ブラウザのJavaScriptならDOMあたりを使ってできる。

>>435
なんで出来ると思ったの?

438 :デフォルトの名無しさん:2016/04/15(金) 13:53:37.43 ID:gXCAJEC6
前に見たことがあるヤツはこれ使ってた
google.visualization.PieChart

439 :デフォルトの名無しさん:2016/04/15(金) 14:02:06.59 ID:q0YL4+kw
>>434
デフォルトのjavascriptとは?

440 :デフォルトの名無しさん:2016/04/15(金) 14:07:54.02 ID:cx5PLOSb
そりゃクライアントでもサーバーでも共通して使えるものが
JavaScriptだろ

441 :デフォルトの名無しさん:2016/04/15(金) 14:14:43.47 ID:gq7S3zH1
なんで質問に対してみんな威圧的なの?

442 :デフォルトの名無しさん:2016/04/15(金) 14:22:28.54 ID:Nh0RiUpt
揶揄が含まれる質問するから

443 :デフォルトの名無しさん:2016/04/15(金) 14:54:23.01 ID:RMsg6cvq
質問ばっかしてるから嫌われるんだよ
少しはてめえでがんばれや

444 :デフォルトの名無しさん:2016/04/15(金) 15:02:42.56 ID:wfLLyc7m
>>441
内容のある回答で答えている人はみな穏やかですよ

>>443のような粗野で下卑た方とは違います

445 :デフォルトの名無しさん:2016/04/15(金) 16:05:48.54 ID:ypL17/E1
>>437
http://edu.happy-kakurembo.com/entry/51
回答ありがとうございます。
このページの最後あたりのパックマンの絵は、arcに対してどのような指定をすればいいんでしょうか?

446 :デフォルトの名無しさん:2016/04/15(金) 18:33:26.08 ID:MBFKaPoJ
>>444
お前は本物の下種

447 :デフォルトの名無しさん:2016/04/15(金) 20:56:44.07 ID:CgWnf6JN
>>427
あったっけ?

448 :デフォルトの名無しさん:2016/04/15(金) 21:25:34.80 ID:YAV9sBDZ
extends時のsuper周りかな?
HomeObject、this未初期化、NewTargetとか。

449 :デフォルトの名無しさん:2016/04/15(金) 23:12:26.62 ID:goHZ67UE
>>445
ブラウザ上でのお絵描きは、HTML5のCanvas を使うのが一般的。

Canvasを調べたら?

450 :デフォルトの名無しさん:2016/04/15(金) 23:38:52.79 ID:cx5PLOSb
果たしてCanvasはデフォルトのJavaScriptといえるのだろうか?

451 :デフォルトの名無しさん:2016/04/15(金) 23:42:08.84 ID:XOash53W
十中八九次も質問で返ってくる

452 :デフォルトの名無しさん:2016/04/16(土) 00:22:55.74 ID:3KgdSRGk
>>422,428,433
遅くなってすいません
助言に従ってインスタンスは管理用オブジェクト、あるいはコンテナに
入れてそっちでいろいろやろうと思います。
コンストラクタ以外の1文字目大文字は今までこっちの方がわかりやすいと思って
貫いていたのですが、Googleなどのスタイルガイドは小文字を推奨しているので
これも止めることにします。
独善的な部分が多くあったみたいで、どの指摘も参考になりました。
ありがとうございます。

453 :デフォルトの名無しさん:2016/04/16(土) 02:48:50.71 ID:MfNAX89g
CSSの話題はここでいいんですか?

454 :デフォルトの名無しさん:2016/04/16(土) 03:10:29.72 ID:iaL+2UmD
はい

455 :デフォルトの名無しさん:2016/04/16(土) 03:20:43.40 ID:JpTn0h26
>>409,452
ここでは話にならないと思ったら以下へ。
http://echo.2ch.net/test/read.cgi/tech/1449440793/

456 :デフォルトの名無しさん:2016/04/16(土) 07:16:19.11 ID:9WyxoOSE
>>455
Web制作板で批判が集中して「話にならん」といってプログラム板に逃げた人が立てたスレ
仕様に疎いようでまともなレスも「おまえはわかってない」で一蹴するような人だからお勧めしないな

457 :デフォルトの名無しさん:2016/04/16(土) 08:31:06.50 ID:SqNX4mZ2
> textContentってquerySelectorで引っかけられないよね?
http://echo.2ch.net/test/read.cgi/tech/1449440793/65

この人いろんなスレで同じ事を聞いてない?
>>214で答えが出ているのに学習能力のない人だなー

458 :デフォルトの名無しさん:2016/04/16(土) 13:50:59.55 ID:JpTn0h26
>>456
> Web制作板
以下を正しいと主張する連中ね
http://peace.2ch.net/test/read.cgi/hp/1444186237/579
http://peace.2ch.net/test/read.cgi/hp/1448293871/88

判断は各自でご自由に
経緯もその前後で分かるはず
そして他スレが流れ出すとWeb制作板には幼稚園児が沸くところも同じ

459 :デフォルトの名無しさん:2016/04/16(土) 13:59:06.33 ID:eCi0HCfm
他所のいざこざ持ち込まないで貰えませんかね

460 :デフォルトの名無しさん:2016/04/16(土) 14:04:05.19 ID:bDnIkDuW
本人だからほっとけよ

461 :デフォルトの名無しさん:2016/04/16(土) 15:44:51.07 ID:z5NEAFo4
>>458
後者は俺のレスだがなんかおかしいか?
superを使える場面ならわざわざ展開しなくとも
せっかくだからsuper使ったほうが良いだろうと
至極当たり前なことを言ってるだけなんだが。

462 :デフォルトの名無しさん:2016/04/16(土) 23:57:06.24 ID:R1w7ejAd
頑張って前後を読もうとしたけど長文過ぎて諦めた

463 :デフォルトの名無しさん:2016/04/17(日) 02:50:29.74 ID:9ampxFQS
まあいつものパターンでしょ。
あくまで性質・概念・思想で物を言う者と、実務で物を言う者の食い違い。
つまり、JSのクラスシステムについて、今どう認識できるかという話と、どう書くべきかという話がごっちゃになってる。

464 :デフォルトの名無しさん:2016/04/20(水) 19:48:18.67 ID:Lz+3WzGz
スレ違いすいません
photoshop上でラスタライズされた状態の平行四辺形オブジェクトの
各頂点の座標を取得出来ないか質問したいのだけれど
jsxについての適当な質問スレッド教えてください。。。orz

465 :デフォルトの名無しさん:2016/04/21(木) 22:25:52.33 ID:po+YH9ZN
<script type="text/javascript">
function checkdiv( obj,id ) {
if( obj.checked ){
elem = document.getElementById(id);
elem.style.backgroundColor='red';
}
else {
elem = document.getElementById(id);
elem.style.backgroundColor='green';
}
}
</script>
<input type="checkbox" checked="checked" onclick="checkdiv(this,'para')" />
<div id="para">表示</div>

こんな感じでチェックボックスのOnとOffで背景色が代わるようにしたんだけど、
checked="checked"で最初からチェックが入った状態の時もそれに対応する色にできないだろうか?

466 :デフォルトの名無しさん:2016/04/21(木) 23:35:15.20 ID:ReA7Xa9U
そういうのはCSSの役目です

467 :デフォルトの名無しさん:2016/04/21(木) 23:50:48.23 ID:X/7QzBzM
>>465
input.defaultChecked

468 :デフォルトの名無しさん:2016/04/21(木) 23:52:12.99 ID:po+YH9ZN
>>466
CSSで先に定義しておいてJavaScriptで直すということでしょうか?

469 :デフォルトの名無しさん:2016/04/21(木) 23:55:31.27 ID:po+YH9ZN
>>467
これなら行けそうです。
ありがとうございます。

470 :デフォルトの名無しさん:2016/04/22(金) 00:56:04.95 ID:4mUicHSB
いやそれcssのセレクタだけでできるだろ…
input[type="checkbox"]+#para { background-color:red; }
input[type="checkbox"]:checked+#para { background-color:green; }

471 :デフォルトの名無しさん:2016/04/22(金) 01:59:59.83 ID:DlNhB7g+
:checked は IE9+ で利用可能なので実用圏内ではないかね
http://caniuse.com/#feat=css-sel3

472 :デフォルトの名無しさん:2016/04/22(金) 08:15:14.68 ID:DIThdNQ9
むしろこれを使わないと言ったら
CSSに親でも殺されたのかと疑うレベル

473 :デフォルトの名無しさん:2016/04/22(金) 08:27:03.15 ID:2EQFG1P2
僕のパパはフロントエンドエンジニアなんだ
毎日朝早くから夜遅くまでCSSと戦っていた
そう過労死で亡くなるその日まではね

474 :デフォルトの名無しさん:2016/04/22(金) 08:50:00.81 ID:o7fkiimI
ブロントエンジニアにみえたじゃねーか殴るぞ

475 :デフォルトの名無しさん:2016/04/22(金) 09:30:42.89 ID:4UoNuspO
僕のパパは○○エンジニアなんだ
毎日朝早くから夜遅くまで○○と戦っていた
そう過労死で亡くなるその日まではね


>>473
あなたの「好きな」ものを入れてくださいw

476 :デフォルトの名無しさん:2016/04/22(金) 09:50:04.46 ID:Wc1XF5nd
 ┏━━━━━━━━━━━━┓
 ┃  なまえをいれてください.  ┃
 ┗━━━━━━━━━━━━┛
.                ┏━━なまえ━━┓
.                ┃  きちがい   .┃
.                ┃   ̄ ̄ ̄ ̄  .┃
   ┏━━━━━━━┻━━━━━━━━┓
   ┃あ い う え お は ひ ふ へ ほ .┃
   ┃か き く け .こ ま み む め も ┃
   ┃さ し す せ そ や   ゆ    .よ ┃
   ┃た ち つ て と ら .り る .れ ろ ┃
   ┃な に ぬ ね の .わ    を    ん ┃
   ┃っ .ゃ .ゅ ょ  ゙  ゚  もどる.l>おわり.┃
   ┗━━━━━━━━━━━━━━━━┛

477 :デフォルトの名無しさん:2016/04/22(金) 10:32:43.47 ID:dFG2RycI
>>470
できました。

478 :デフォルトの名無しさん:2016/04/23(土) 03:21:55.64 ID:EfkjAa5E
jQueryの質問で恐縮ですが、気になることがあるので教えて下さい。

CSSの:hoverとjQueryのon操作(マウスオーバーなど)って似たようで違うんですかね?
例えば、CSSで:hoverを適用していたのに、jQueryでon操作をすると、CSSのhoverが
無効になるということがありました。

479 :デフォルトの名無しさん:2016/04/23(土) 08:19:57.77 ID:16xisiTl
>>478
CSSは詳細度の高いスタイルが優先されるからjQueryコードの処理内容を読むべし
https://triple-underscore.github.io/selectors4-ja.html#specificity-rules

480 :デフォルトの名無しさん:2016/04/23(土) 15:09:16.70 ID:EfkjAa5E
>>479
ありがとうございます。読んでみましたが、特に解決しません・・。

ウィンドウサイズを可変したらメニューが変わるというのを作っているのですが、
なぜかclickが連続して2回実行されるんですよねぇ。
e.stopPropagation();を入れたりしてるんですが。
(clickして要素が開閉するやつです。toggle()を使っています)

もう少しソースがまとまったらまた質問させていただきます。

481 :デフォルトの名無しさん:2016/04/23(土) 15:23:21.83 ID:dqBuSyui
clickイベントを2回与えてるからじゃないの?

482 :デフォルトの名無しさん:2016/04/23(土) 17:29:56.78 ID:EfkjAa5E
自己レスですが、on、click内で

$(document).on('click', '.toggle', function(e){
$("+ul", this).toggle();
e.stopPropagation(); // これは駄目
e.stopImmediatePropagation(); //これだと1回になる
});

こんな感じで行けました。
同じようにclickがなぜか2回実行される方は試してみてください。

483 :デフォルトの名無しさん:2016/04/23(土) 21:29:49.04 ID:hIFK+dKK
>>482
Firefoxで、エレメントに紐付いてるイベント見て、2つ以上ついてたら、自分がonしている所か、jQueryをミニファイされてない方使ってそのonにブレークポイント置いて予想外のonしてないか確認すれば?
お前のソースの事はお前にしかわからんのだから。

484 :デフォルトの名無しさん:2016/04/24(日) 10:16:17.66 ID:C+cT95fe
>>482
> e.stopImmediatePropagation(); //これだと1回になる
これで1回になるなら>>481の指摘通り、同じ要素に2回以上の click イベントを定義するコードを書いてる
対処療法で済ませず、コードを読み直してバグを修正した方が良い

485 :デフォルトの名無しさん:2016/04/24(日) 10:30:55.32 ID:H9KkWHxX
>>484
いいじゃなか
ドヤ顔で自己満足してるんだから

486 :デフォルトの名無しさん:2016/04/24(日) 12:31:48.88 ID:yPs3jUb8
原因の理解を放棄し、場当たり的な修正しかしない時点で今後も同じバグを作り続けると思うよ

487 :デフォルトの名無しさん:2016/04/24(日) 12:58:55.52 ID:RNhCJQSk
場当たり的なプロジェクトならそれが正解
保守も自社がやると決まっているなら場当たり的な対応はしないけどね

488 :482:2016/04/25(月) 02:48:54.21 ID:MdSMyYZD
皆さん色々とご指摘ありがとうございます。
短いソースで同じ状況を再現できたので記載します。

■jQueryのバージョン:1.11.3
■scriptの内容
jQuery(document).ready(function ($) {
 $(window).on('load , resize', function () {
  if (window.innerWidth <= 480) {
   $(document).on('click', '.toggle', function(e){
    $(this).next().slideToggle(300);
   });
  }
 });
});
■styleの内容
.sub { display:none;}

■HTMLのbodyの内容
<div class="main"><a class="toggle">メイン</a><div class="sub">サブ</div></div>

489 :482:2016/04/25(月) 02:49:24.22 ID:MdSMyYZD
■制作の意図
レスポンシブでブラウザウィンドウサイズの切り替えによって、
scriptの内容が変化する物を作っています。上記はスマホ用の部分のみ記載しています。

■不具合の手順
1:横480px以上の大きさ(例えば、1024*768)のウィンドウサイズでファイルを開く
2:ウィンドウサイズを480px以下にする
3:メインをクリックする→サブが表示される。またクリックすると閉じる(開閉動作)
4:ウィンドウサイズを480px以上にする
5:またウィンドウサイズを480px以下にする
6:もう一回、メインをクリックすると2回動作されてしまう(1回のクリックで、閉じて閉まる)

デバッグを見てもいまいち原因が理解できないのですが、
どこに問題があるか分かりますでしょうか?

490 :デフォルトの名無しさん:2016/04/25(月) 03:30:02.07 ID:Ps5j2E75
素人目にはonResizeごとにイベントを上書きじゃなくて追加してるんだから当たり前に見えるんだけど
なんなら泥臭く$(window).on('load , resize', function () { 直後にフラグ確認を仕込めば1回が保障されるんでないか

491 :デフォルトの名無しさん:2016/04/25(月) 04:01:26.78 ID:wavxOtJH
>>490
> 直後にフラグ確認を仕込めば1回が保障されるんでないか

やめろw
フラグを使ったら負けだと思え。

一般的にイベントハンドラっていうのは
起動時(onload時)に全部つけてそのままにする。
その後は追加も削除もしないようにする。

492 :デフォルトの名無しさん:2016/04/25(月) 04:05:25.79 ID:wavxOtJH
>>489
作ってるときは、かっこよく見えるんだよなぁw

slideToggle使うのやめれ。
CSSのメディアクエリーだけで完結させろ。

スライドするとかっこよく見えるんだろうが、
ウインドウのサイズ変更(縦横変更)なんて
通常は滅多にやらない。

作ってるときは、頻繁に変えるから
サイズを変えたときに、かっこよくしたいと思うのだろうが、
アニメーションなんかせずにぱっと変えたほうがいい。

493 :デフォルトの名無しさん:2016/04/25(月) 10:11:52.96 ID:8V9apdt+
>>488-489
>>490の指摘通り、新しいclickイベントハンドラが追加(上書きではない)されるのが原因
上書きさせるなり、上書き処理そのものが必要なロジックに変更すればいい

オリジナル(>>488)
https://jsfiddle.net/smo4v6ae/
関数宣言(上書きされず) ※addEventListenerなら上書きされる
https://jsfiddle.net/smo4v6ae/1/
off->on(上書きされる)
https://jsfiddle.net/smo4v6ae/2/
clickだけ(上書き不要)
https://jsfiddle.net/smo4v6ae/3/

jQuery#onは同じ関数オブジェクトを指定しても上書きしない時点でDOM Eventsよりも劣るな(これはバグじゃないのか?)
あなたの要件はこれで解決されるが、ウインドウサイズを480px以下にリサイズし、slideToggleで要素を隠した後にウインドウサイズを481px以上にリサイズすると隠された要素を表示する手段がなくなるな
そう難しくないので回避する手段を自分で考えてくれ

494 :493:2016/04/25(月) 10:26:03.11 ID:8V9apdt+
>>488-489
>>492の指摘通り、メディアクエリの方が遥かにスマートだな
slideToggle も transition を使えば実装可能だろう
https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions
toggle処理はちょっと面倒だが、:checked を使えば可能
input[type=checkbox] を使うか、aria-checked を使うかは迷いどころかもしれんが
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_checkbox_role

あと、<a class="toggle"> は止めたほうが良い
リンクでない要素にa要素をつけるぐらいならspan要素でも使ったほうが良い

495 :デフォルトの名無しさん:2016/04/25(月) 10:39:06.04 ID:+thJ1HWA
根本的にイベントの扱い方の問題
>>488見たらわかると思うけどねw

496 :デフォルトの名無しさん:2016/04/25(月) 11:03:57.31 ID:sTr8T40l
>>495
質問者以外は皆分かってると思うよ

497 :デフォルトの名無しさん:2016/04/25(月) 11:13:49.93 ID:Vb9mflyV
>>492
> ウインドウのサイズ変更(縦横変更)なんて
> 通常は滅多にやらない。
メディアクエリを使うならウインドウリサイズにも対応するので主張が矛盾してる

498 :デフォルトの名無しさん:2016/04/25(月) 12:21:02.08 ID:SIfnh3qZ
>>488
on複数回呼んでるじゃねえかw
onは、イベントハンドラを追加する、って関数だからな。
resize発生する度にイベントハンドラが増えていってるよ。
readyで、リサイズのイベントハンドラ足すんじゃなくて、
clickのイベントハンドラ足して
そのclickのハンドラの中で幅を判定してなんなりしろよ。

499 :デフォルトの名無しさん:2016/04/25(月) 12:25:10.40 ID:+thJ1HWA
>>488
基本的なことを理解すべき

$(function() {
$('a.toggle').click(function() {
if ($(window).innerWidth() <= 480) {
$('div.sub').slideToggle(300);
}
return false;
});
});

500 :デフォルトの名無しさん:2016/04/25(月) 12:36:19.71 ID:+thJ1HWA
飯食いながらだったので抜けてので、追記
$(function() {
$(window).resize(function(){
$('div.sub').hide();
});
$('a.toggle').click(function() {
if ($(window).innerWidth() <= 480) {
$('div.sub').slideToggle(300);
}
return false;
});
});

501 :デフォルトの名無しさん:2016/04/25(月) 12:38:13.10 ID:SIfnh3qZ
>>493
アホか。追加で良いんだよ。
匿名関数をその場で宣言してるなら別の関数だし、
同じ関数を複数回適用したい時に中でカウンタ持つはめになるじゃん。
設計の是非はおいておいて、範囲指定と、要素で絞ってonかけたいとかあるっしょ。
リスト全体にhoverでフォントサイズを1つ大きく、要素指定でもhoverでフォントサイズを1つ大きくってしとけば、わかりやすい法則性でフォントサイズ制御したりできんじゃん。

one使え。

502 :デフォルトの名無しさん:2016/04/25(月) 14:24:44.11 ID:kKT6Zxsu
>>498
w

503 :482:2016/04/25(月) 15:45:16.13 ID:MdSMyYZD
皆さん、色々とありがとうございます。

>>500のソースを見る限り、resizeの中にclick操作を入れたので、
複数回呼ばれる形になったんですかね?
この書き方だと何回も実行されませんでした。

あと、on使ってるのは、click(functionよりもon('click'って書き方にしろ
ってのをどこかで見たのでそうしていたのですが、
これも使いどころによって正しくないみたいですね。

皆さんのレスを参考にもう少し勉強してみます。

504 :デフォルトの名無しさん:2016/04/25(月) 21:46:02.92 ID:JSGjZ52R
>>503
onでもええやで

505 :デフォルトの名無しさん:2016/04/25(月) 22:02:03.57 ID:Ps5j2E75
>>503
俺もえらそうなこと言えるようなたいした人間じゃないが
いったんjqueryから離れて基礎を学び直すのをマジおすすめ

506 :デフォルトの名無しさん:2016/04/25(月) 23:02:39.46 ID:D+WslEY/
>>497
> メディアクエリを使うならウインドウリサイズにも対応するので主張が矛盾してる

リサイズっていうのは、サイズを変えることだ。

メディアクエリを使うのはページが表示された時の
サイズに応じた処理をするためだ。
初期のサイズであって、リサイズのためではない。

だから主張は矛盾していない。
ウインドウのリサイズなんてめったにしないだろ

507 :デフォルトの名無しさん:2016/04/26(火) 00:25:14.44 ID:YAhU7UJr
>>506
それはあなたがリサイズのユースケースを想定していないだけだ
Windowsタブレットではマルチウインドウが標準だし、そろそろAndroidにもマルチウインドウが登場する
ウインドウを全画面から2画面に分割した場合、メディアクエリが発動する
デスクトップOSでも同じ現象が起きる

508 :デフォルトの名無しさん:2016/04/26(火) 09:15:49.75 ID:ZTlcFrw8
Windowsが標準w

509 :デフォルトの名無しさん:2016/04/26(火) 11:14:53.22 ID:v8OmTco7
今時、マルチウインドウなんて当たり前だろうに想像力の乏しい人だね

510 :デフォルトの名無しさん:2016/04/26(火) 11:19:29.88 ID:x636ghAj
俺はリサイズよく使うよ
解像度が違う別のディスプレイに移動させるときとかね

511 :デフォルトの名無しさん:2016/04/26(火) 21:12:17.34 ID:gA9V/byj
PCモニタのアスペクト比を16:9にしてからリサイズを良く使うようになったな
4:3の頃はまず使わなかった(モニタが小さかったのも一因だろうが)

512 :デフォルトの名無しさん:2016/04/26(火) 22:22:59.39 ID:swW8g96r
>>507
お前、一つのページを見ているときに
マルチウインドウで、サイズを変えるのか?

もう一回聞くぞ。
マルチウインドウを使うかどうかじゃなくて、
サイズを変えるのか?

小さい画面で使うのはサイズ変更じゃない。
サイズ変更した状態でページを開いているだけだ。

今話しているresizeイベントでスライドするという処理は
「ページを開いた後でサイズを変更する」という一連の動作を
した時にだけ発動するものだ。

しないだろお前?

513 :デフォルトの名無しさん:2016/04/26(火) 22:24:34.54 ID:swW8g96r
>>507
> それはあなたがリサイズのユースケースを想定していないだけだ

リサイズのユースケースがないなんて話はしていない。

リサイズ時にアニメーションして欲しいとは思わないって言ってるだけだ。
作っている方は何度もリサイズして実験して満足がいくものをとか思ってるかもしれんが、
見る側からしたら、ウインドウのリサイズなんてまずしない。

514 :デフォルトの名無しさん:2016/04/26(火) 22:27:14.76 ID:sgDROvum
>>512
>>507を読み直したら?
それとも、あなたは「ウインドウを全画面から2画面に分割」する動作をしないといいたいのかな

515 :デフォルトの名無しさん:2016/04/26(火) 22:38:30.96 ID:A0x7AT0j
>>512-513は多分、デスクトップOSしか想定していないから「画面の分割なんてするわけねーだろ」と一蹴する気がする
タブレットを使ったことがないんだろ

516 :デフォルトの名無しさん:2016/04/26(火) 22:52:00.82 ID:aeiDD/mA
>リサイズ時にアニメーションして欲しいとは思わないって言ってるだけだ。
こんなの書いてる時点でどうにもならない

517 :デフォルトの名無しさん:2016/04/26(火) 22:56:43.65 ID:7RJVkgnK
というか、リサイズ時にアニメーションって
一体なんのこと言ってるの?

518 :デフォルトの名無しさん:2016/04/26(火) 23:08:56.30 ID:A0x7AT0j
>>517
多分、>>493が指摘した問題への対策じゃないかな
slideToggle で隠れた要素がウインドウを481px以上にリサイズした時に表示する手段がなくなるので予め隠れた要素をアニメーションで表示させておく
と思ったけど、「リサイズなんてするわけねーだろ」の人だったね
ホント何なんだろ

519 :デフォルトの名無しさん:2016/04/26(火) 23:15:10.53 ID:m+yPBzkk
「480px以下にリサイズ後に.toggleをclick時にアニメーション」を省略して「リサイズ時にアニメーション」と説明したんじゃない?
日本語が不自由なだけな気がする

520 :デフォルトの名無しさん:2016/04/26(火) 23:25:48.62 ID:oZATkmH1
日本語が不自由といえば>>501もわけがわからんかったな

> アホか。追加で良いんだよ。
「何が」追加で良いのか分からん
「resize時にclickイベントハンドラが追加で良い」なら要件を満たせてないのであり得ない
https://jsfiddle.net/smo4v6ae/1/ のjQuery#onが追加で良い」なら後半のhover云々の説明との整合性がとれん

jQuery(element).on('click', handler);
jQuery(element).on('click', handler);
jQuery(element).on('click', handler);
element.addEventListner('click', handler, false);
element.addEventListner('click', handler, false);
element.addEventListner('click', handler, false);

イベントハンドラが3回追加されて便利な状況がさっぱりわからん
こんなことやるならhandlerの中で3回繰り返した方がよっぽどいい

521 :デフォルトの名無しさん:2016/04/26(火) 23:48:56.02 ID:swW8g96r
>>514
> それとも、あなたは「ウインドウを全画面から2画面に分割」する動作をしないといいたいのかな

そりゃすることぐらいあるだろう。

だが、2画面に分割したいと思った時に、
それがたまたま、お前のページである可能性は極めて少ない。

そんなマイナーなアクションのためにアニメーションを付けるのが
無駄だと言ってるの。

思い返してみ? 今日お前が2画面に分割した回数を。

522 :デフォルトの名無しさん:2016/04/26(火) 23:52:46.47 ID:7RJVkgnK
ウインドウをリサイズした後に特定の要素をclickすると
window.innerWidthが480px以下ならメニュー?をslideToggle
ってことだよね?
リサイズ時にアニメーションって関係ないじゃんw

523 :デフォルトの名無しさん:2016/04/26(火) 23:58:16.87 ID:Bi6OX6KX
>>521
ブラウザとテキストエディタを2画面分割で開いてブラウザのページ内容をコピーしてテキストエディタにペーストするのは良くある事なんだけど
ブラウザを見ながらテキスト入力できるのはマルチウインドウの最大のメリットでしょ
「自分がしないから他の人もしないだろう」って思い込みは色々危険だよ

524 :デフォルトの名無しさん:2016/04/27(水) 00:26:39.16 ID:mjPz9hpH
スマホの横持ち、縦持ちを切り替えることはしょっちゅう起こるよ

525 :デフォルトの名無しさん:2016/04/27(水) 04:38:04.23 ID:ymPBswSy
>>524
同じページを表示したまま、縦横に何度も持ち帰るんか?
その時画面のアニメーションを見たいんか?

526 :デフォルトの名無しさん:2016/04/27(水) 05:07:52.00 ID:iS2uJpqo
要は、主目的は画面全体のアニメーション表示ではなく、画面が広いときはメニューを横並びに表示させて
画面が狭いときはメニューをクリック/タップで展開/収納のトグル動作させたい、
ということと思われる
そうでなければ画面の幅に応じてイベントを追加する意味がない

527 :デフォルトの名無しさん:2016/04/27(水) 08:44:26.76 ID:tEogpAYP
>>520
要件はどうでも良くて、api仕様はそれで良いと言ってるんだよ。
その後、once使えと言ってるじゃないか。

528 :デフォルトの名無しさん:2016/04/27(水) 09:22:32.44 ID:9uyPVyt/
>>526
メニューというか特定の要素をclickした場合
画面サイズで何だかの振り分けをしたいんじゃないの?
何れにしてもリサイズをアニメーションって意味不明
単なる持論だよ

529 :デフォルトの名無しさん:2016/04/27(水) 11:46:48.06 ID:VeDPJalk
>>527
API仕様がそれで良い理由が明確でない
しかも、once()で解決しないだろ

530 :デフォルトの名無しさん:2016/04/27(水) 12:04:54.36 ID:x1DYS/Nj
>>527
once()のAPIが見つからないけど、one()の事?
one()を使ったらクリックして閉じた後にウインドウリサイズしないと開けなくなったんだけど
https://jsfiddle.net/38wrnxu7/

531 :デフォルトの名無しさん:2016/04/27(水) 12:21:41.01 ID:PwdWdDII
offしてからonすればいいんじゃね?

532 :デフォルトの名無しさん:2016/04/27(水) 13:01:52.49 ID:x1DYS/Nj
>>531
その辺りは>>493で全て答えが出てるから
>>499-500がドヤ顔で解説しているのも既出だし、何がしたいんだか

533 :デフォルトの名無しさん:2016/04/27(水) 15:19:37.97 ID:BFKJgt+J
>>523
オナニーにしか使わないからresizeは必要ない派には、何を言っても理解できないよ。

534 :デフォルトの名無しさん:2016/04/29(金) 10:29:51.62 ID:Zpx1WpIM
>>533
そんなこと言ってるやついないけど、

むしろ、自分の都合のいいように
書き換えるお前には理解できないだろうよw

535 :デフォルトの名無しさん:2016/04/29(金) 11:58:35.72 ID:2UzU1Fa0
+ JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net	YouTube動画>1本 ->画像>6枚
+ JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net	YouTube動画>1本 ->画像>6枚
指定した商品のキーワードとカラーが現れると自動クリックするメソッドがurlが乱数対策で書き換えられたので使えなくなりました。
他の要素から検索する場合、どう書き直せばいいのでしょうか?

536 :デフォルトの名無しさん:2016/04/29(金) 12:28:51.15 ID:Z5nc+wFx
>>535
そのソースだけでは理解不能だと思う
window.location で検索して学習するれば解決するじゃないかな?

537 :デフォルトの名無しさん:2016/04/29(金) 14:50:02.78 ID:FtHCzag5
ブラウザ操作の自動化は、Firefoxで、SeleniumIDE を使って出来ないか?
または、Selenium WebDriver を使って、プログラムするとか

Seleniumデザインパターン&ベストプラクティス、2015

OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本

538 :デフォルトの名無しさん:2016/04/29(金) 15:12:10.79 ID:npmLXJBi
>>535
自動でクリックすると何の役に立つの?

539 :デフォルトの名無しさん:2016/04/29(金) 15:13:47.73 ID:JN3HPUnt
転売厨だろどうせ

540 :デフォルトの名無しさん:2016/04/30(土) 14:09:13.13 ID:uVz81x78
GitHubで匿名通信(Tor、i2p等)ができるBitComet(トラッカーサイト不要でDHTだけで日本語検索可能)
みたいな、BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenant(純粋P2Pのファイル共有ソフト)の完成が待ち遠しいプログラミングできないアスペルガーw
    

541 :デフォルトの名無しさん:2016/04/30(土) 19:08:39.84 ID:HhSXq6WP
>>537
いまどきIDEはねーよ

542 :デフォルトの名無しさん:2016/05/01(日) 16:53:27.97 ID:sgiYXWIX
JavaScriptの文法をひととおり勉強し終わったんですが
コード書くにはどのIDE使うのが標準ですか?
いまはわざわざメモ帳使ってます。(まあそれほど本格的にはやってない段階ですが、しかし将来は本格的にする予定なので。)


JavaならEclopse、
VisualC#やVisualBasicならVisualStudio、
AndroidならAndroidStudio
がそれぞれ標準みたいになってるじゃないですか。

JavaScriptはそのへんどうなってますか?

543 :デフォルトの名無しさん:2016/05/01(日) 17:24:58.87 ID:avBwiD/Q
>>542
Atomとか

544 :デフォルトの名無しさん:2016/05/01(日) 17:42:02.88 ID:sgiYXWIX
>>543
ありがとうございます
Atom試してみます

ところでAtomは他言語も標準的IDEになってる言語はありますか?
あまりマスターすべきIDEの数を増やしたくないのでJavaScriptをEclipseやVisualStudioでもできるようならそのほうが理想的なのですが。

545 :デフォルトの名無しさん:2016/05/01(日) 18:12:07.05 ID:t8gRHm+a
>>544
JavaScriptに標準IDEはありません
主にシンタックスのカラーリングや補完機能あればいいと思う
自分の好みでいいんですよ

546 :デフォルトの名無しさん:2016/05/01(日) 19:03:40.53 ID:6DCl83u4
「JavaScript」の標準にIDEはMozillaが作ってるだろ
つまらん嘘つくなよ

547 :デフォルトの名無しさん:2016/05/01(日) 19:54:17.33 ID:IEJxz53a
インテリセンス最強のエディタは?
今の所VSが強い印象だけど対抗馬いるか?

548 :デフォルトの名無しさん:2016/05/02(月) 01:55:39.31 ID:T+iaWOtl
>>544
本格的にやるなら、サーバーでの編集用にVimかEmacsを覚えるというのも手だが、言語の練習と同時には覚えるの辛いだろうな・・・

549 :デフォルトの名無しさん:2016/05/02(月) 14:30:45.71 ID:5BTmw4JC
VSCode

550 :デフォルトの名無しさん:2016/05/02(月) 19:09:21.56 ID:Fa0O9xkC
質問です。
JavaScript で、

 var data = 'Price1080';
 var Price = data.match( /^(Price|Kakaku)(\d+)/ );
 if ( Price[2] == 1080) { 【←エラーが発生する行】
  alert('1080円です');
 }

とした場合には正常に動作しますが、data に 正規表現でマッチングしない文字列が与えられていた場合、例えば、

 var data = 'PriceNashi'

だったときには、

 Firefox 最新版の場合 TypeError: Price is null
 Chrome 最新版の場合 Uncaught TypeError: Cannot read property '2' of null(anonymous function)

といったエラーがエラーコンソールに流れてしまいます。

Price[2] が null なのは分かるのですが、こういった変数が null の場合にもエラーを発生させない方法はないでしょうか?
(Price[2] が null なら、単にif文の中身を実行しないようにしたいです)

if ( Price[2] != null ) でチェックしようとしても、同様に「TypeError: Price is null」が発生してしまうので困っています。

ご教示お願いいたします。

551 :デフォルトの名無しさん:2016/05/02(月) 19:22:45.64 ID:vIuKkp7F
if (Price!==null)

552 :デフォルトの名無しさん:2016/05/02(月) 19:50:52.07 ID:86Jgi2PX
if ( Price && Price[2] != 1080 )

553 :デフォルトの名無しさん:2016/05/02(月) 21:22:42.79 ID:nFATBe9U
var Price = data.replace(/Price|Kakaku/, '');
if (Price == '1080')

554 :デフォルトの名無しさん:2016/05/02(月) 21:47:19.59 ID:58IGANjT
それ頭にpriceは書かなきゃいけないの?
なくして数値型で判定した方が確実だと思うけど

555 :550:2016/05/02(月) 21:56:37.86 ID:Fa0O9xkC
>>551-552
ありがとうございます。
教えていただいた方法で試してみたところ、エラーは発生しませんでした。解決です。
if文で配列全体の存在を確認する分にはエラーは発生しないけど、
配列内の要素の存在を確認した場合、その配列自体が存在しないとエラーになっちゃうようですね。

>>553-554
色々な解放があるようですね。
ありがとうございます。

556 :デフォルトの名無しさん:2016/05/03(火) 04:50:38.58 ID:1U/0N7SV
>var Price = data.match( /^(Price|Kakaku)(\d+)/ );
>if ( Price[2] == 1080) { 【←エラーが発生する行】

普通、1行目の後に、いきなり2行目を書かない。
論理的につながっていない

1行目の後には、少なくとも1つでも、一致したかどうかの判断が必要

そして一致していれば、2行目の処理へ進む。
一致するものが無ければ、2行目へ進まない

557 :デフォルトの名無しさん:2016/05/03(火) 08:47:51.21 ID:65DdW2hV
var num = Price ? Price[2] : null;
if (num == '1080')

558 :デフォルトの名無しさん:2016/05/03(火) 15:41:32.16 ID:6WBArbcg
JS的には普通はこう
var price = +( data.match( /^(Price|Kakaku)(\d+)/ ) || [] )[2]
if ( price == 1080) {

判定をするのはJSらしくない
暗黙の型変換を利用し値を早い段階で確定させていくのが正しい動的型付けの手法

559 :デフォルトの名無しさん:2016/05/03(火) 16:12:55.52 ID:64Up/wnd
書き方が悪くないか?正規表現なら
replace(/^.*(Price|Kakaku)([0-9.]+).*$/g,'\\1')-0
かなんかして、1080と比較したら確実じゃないの?

560 :デフォルトの名無しさん:2016/05/03(火) 16:13:50.36 ID:64Up/wnd
あ、リロードしてなかった。すまん。

561 :デフォルトの名無しさん:2016/05/03(火) 17:09:50.29 ID:2ApUtfSZ
^(?:(Price|Kakaku)(\d+))?

と、全体は一致するようにするとか

replaceするやつは '1080' でもマッチしてしまいそう

562 :デフォルトの名無しさん:2016/05/03(火) 17:14:00.54 ID:65DdW2hV
Price || Kakakuの他にも異なった文字列が
存在する、しないで変わってくるね

563 :デフォルトの名無しさん:2016/05/03(火) 17:29:30.46 ID:IJoN7jmc
とりあえずIEでもChromeでも
そこに書いてあるJavaScriptのコードを少しだけ改変/追加したいのですが
簡単にコードエディットする方法はありますか?
インテリセンスだけがついてあれば充分です。
現状はメモ帳にコードを貼り付けてやってるのでものすごく効率が悪い。
ちなみにJavaScriptはまだかなりの初心者です。

564 :デフォルトの名無しさん:2016/05/03(火) 17:49:40.27 ID:YTE1L/l3
おまえごときその辺のテキストエディタで十分

565 :デフォルトの名無しさん:2016/05/03(火) 17:54:18.04 ID:64Up/wnd
>>559
自己レスで間違えてた。
\\2に置換すると、Priceに続く数字だけ残る。

566 :デフォルトの名無しさん:2016/05/03(火) 17:55:12.59 ID:G4OBLQ5I
ブラウザのコンソールからファイル編集して保存できるよ
メモ帳すらいらん

567 :デフォルトの名無しさん:2016/05/03(火) 18:55:05.50 ID:IJoN7jmc
>>564
あまりわたしを怒らせないほうがいいぞ。
わたしは真剣に聞いているのだからな。

568 :デフォルトの名無しさん:2016/05/03(火) 19:00:51.75 ID:mbDp1eZa
昨今のテキストエディタは優秀だから騙されたと思って拾ってこいや
てめえにゃもったいないくらいのサポートしてくれるっての

569 :デフォルトの名無しさん:2016/05/03(火) 19:01:38.06 ID:IJoN7jmc
>>568
たとえばどれでしょうか?

570 :デフォルトの名無しさん:2016/05/03(火) 19:43:50.15 ID:G9XEXQGe
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrent(Covenant)が活発な情報交換・交流コミュニティでオープンソース開発されています(プログラマー募集中)

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise氏)がそういう人と話したいそうなので、よろしければツイートお願いします<(_ _)>
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできない情報発信好きアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません


571 :デフォルトの名無しさん:2016/05/04(水) 06:10:29.02 ID:0hExvDHP
>>563,569
https://atom.io/
https://www.sublimetext.com/

572 :デフォルトの名無しさん:2016/05/04(水) 09:13:01.47 ID:bRkFYhVs
>>563
MSDNの、IE11・F12 開発者ツールの使い方を参照

573 :デフォルトの名無しさん:2016/05/05(木) 10:19:03.70 ID:ydt/wr9U
>>567
真面目に聞いてる人が放置するのか

574 :デフォルトの名無しさん:2016/05/05(木) 10:44:15.30 ID:fknk/t2B
最強のエディタはVSと相場は決まっておる
他のエディタはロクなインテリセンスのないゴミばかりだよ

575 :デフォルトの名無しさん:2016/05/05(木) 11:52:59.62 ID:SMfsRko8
notepad 最強伝説

576 :デフォルトの名無しさん:2016/05/05(木) 11:57:07.40 ID:F9EaZa1N
自己満足が最強

577 :デフォルトの名無しさん:2016/05/06(金) 00:24:25.24 ID:4boKzuh/
エディタなら秀丸一択だろうが
4200円するけどそれだけの価値はある

578 :デフォルトの名無しさん:2016/05/06(金) 08:25:56.04 ID:wkAp2vOU

秀丸は世界的でなくDTDを採用していたりと外も中も古臭く拡張を作りづらく
JSのように日進月歩で絶賛進化中の言語情勢に全くついてこれていない

579 :デフォルトの名無しさん:2016/05/06(金) 10:19:44.07 ID:XipIUMCb
chrome developertoolコンソール
インテリセンスもあるし

580 :デフォルトの名無しさん:2016/05/06(金) 10:22:17.38 ID:SIBOz9L4
秀丸はもうだいぶレガシーになってしまったな
少し前はNotepad++だったけどそれも過去になった

今のところAtomがいいけど
ちょっと重いんでVS Codeに期待

581 :デフォルトの名無しさん:2016/05/06(金) 12:30:06.56 ID:QA9WXQLh
禿丸って、ちゃんとインテリセンスある?

582 :デフォルトの名無しさん:2016/05/06(金) 13:06:16.77 ID:b+5YqGKq
秀丸ってまだ存在してたんだ

583 :デフォルトの名無しさん:2016/05/06(金) 14:17:41.74 ID:G4Kxj38O
4200円ていつの時代の話だよ

584 :デフォルトの名無しさん:2016/05/06(金) 19:01:56.63 ID:tQEExFw/
ternjsさえのれば、どの環境でもだいたいおなじくらいのインテリセンスなのかなあと思った
それ以上はTypeScript使わないかぎりしんどい気がする

585 :デフォルトの名無しさん:2016/05/06(金) 21:49:21.53 ID:qd0GNKqW
みなさん、javascriptってこの先生き残ると思いますか?

586 :デフォルトの名無しさん:2016/05/06(金) 22:08:01.20 ID:zDXbuI6Z
ブラウザで動く言語としてはJavaScriptは確実に生き残るだろう。
その他のaltJSは殆どが死滅するはず。JavaScriptの上位互換といえるような
TypeScriptだけがMSの興味を引いている限り生き残る。

COBOLが生き残ってることからもわかるように、
特定の分野で多く使われた言語は長く生き残るものだよ。
言語仕様の良し悪しじゃない。

死滅した言語っていうのはVBやDelphiだけど、
これは開発元が開発をやめたか大幅に縮小したため。
逆に言えば開発元が開発をやめない限り使い続けられる。

そしてJavaScriptの開発元はどこか?MS、Google、Mozilla、他
このように複数あるから開発を一斉にやめるってことがまず考えられない。
加えて改良が進められているから辞めようって声も上がらない。
辞めるぐらいなら改良すればいいわけだからね。

587 :デフォルトの名無しさん:2016/05/06(金) 22:49:31.18 ID:HS1krX3+
>>586
Delphiとか当時は革新的だったよなぁC++Builderとかとともにお世話になった。
その中の人が今はc#やtypeScript作ってるんだよね。

588 :デフォルトの名無しさん:2016/05/07(土) 00:27:39.35 ID:H9AjK5sV
FileReaderで画像の複数読み込みを行って、画像とファイル名を対に表示したいのだけど、非同期ゆえ一致しない場合がでてくるのですが、何か良い方法はないでしょうか?

var name = new Array();
var data = new Array();
$('#images').on('change', function (event) {
var files = $(this).prop('files');
var fileReader = new Array();
for (var i = 0; i < files.length; i++) {
name[name.length] = files[i].name;
fileReader[i] = new FileReader();
fileReader[i].onload = function (event) {
var n = data.length;
data[n] = event.target.result;
$('body').html($('body').html() + '<div>' + name[n] + '<img src="' + data[n] + '"></div>');
};
fileReader[i].readAsDataURL(files[i]);
}
});

589 :デフォルトの名無しさん:2016/05/07(土) 01:25:28.41 ID:R3j+TLGo
jQueryって毎回スクリプトタグ書かないと動かないんですか?

590 :デフォルトの名無しさん:2016/05/07(土) 04:30:24.07 ID:S68KOTjs
jqueryでreplaceする時にreplace(/test/g,'test2')みたいなコードみたんだが、検索文字列をなぜクォーテーションで囲ってないのだ?
このトークンはどういう扱いになっているの?

当方、javasctipt初心者です。

591 :デフォルトの名無しさん:2016/05/07(土) 04:45:54.23 ID:S68KOTjs
正規表現オブジェクトというのね。
自己完結しました。

592 :デフォルトの名無しさん:2016/05/07(土) 08:19:51.56 ID:nYaS7NzX
>>589
jQueryに限らず、外部スクリプト化したいなら<script>を書かなければならない
onclick属性やonload属性等のイベントハンドラ属性だけで完結できるならこの限りではない

593 :デフォルトの名無しさん:2016/05/07(土) 08:44:10.25 ID:nYaS7NzX
>>588
画像とファイル名は同時に表示出来ているのでは?
それよりも document.body を上書きしていたり、jQueryを使っているにも関わらずfileReader[i].onload のような素のJavaScriptコードが見られたり、HTML出力でfilesと同じ順序を保証していない事が気になる

594 :デフォルトの名無しさん:2016/05/07(土) 11:48:23.84 ID:98qiMegf
>>589
JavaScriptのこういう所は何とかして欲しいよ
コードのモジュール化、再利用がめんどくさすぎる
未だにブラウザ間で最低限の互換性すら取れてないし
IT業界の最前線で使われている言語とは思えない

595 :デフォルトの名無しさん:2016/05/07(土) 12:11:46.43 ID:7m+gJQ3f
何言ってだこいつ

596 :デフォルトの名無しさん:2016/05/07(土) 12:22:16.57 ID://iuahhd
頭悪いんだろうからほっとけよ

597 :デフォルトの名無しさん:2016/05/07(土) 12:40:50.09 ID:98qiMegf
いやいやこれに同意できないって相当毒されてるぞ
JS以外の言語触った事無いのか?

598 :デフォルトの名無しさん:2016/05/07(土) 12:47:05.73 ID:bc2M0je5
あなたこそ梅毒でも煩ってるの?
ここよりお医者に行くべきだよ

599 :デフォルトの名無しさん:2016/05/07(土) 12:58:07.39 ID:H9AjK5sV
>>593
コードに関しては、非同期部分の問題となってる部分をチェックしていただける方がおられた場合に簡単にテストできるよう、
ポイントに絞ったものとなってますので、最終的にはファイル名ソートもしくは入力順に表示するつもりですし、もちろんdocument.bodyの上書きなど行うこともありません
ですので問題定義以外の部分でのコードの粗はご了承ください

さて、このコード、確かに画像と名前は同時に表示されますが、「filesと同じ順序を保証していない」とご理解いただけてるように、
nameはfiles順に代入されていきますが、dataは読み込み完了時に代入され、書き出しもそのタイミングです
1:サイズ大
2:サイズ中
3:サイズ小
と、あった場合、nameは1,2,3、dataは概ね小、中、大と代入されていき、対になって表示されることは保障されていません

600 :デフォルトの名無しさん:2016/05/07(土) 12:59:41.90 ID:98qiMegf
>>598
可哀想なやつだな
まあ生き方は人それぞれか

601 :デフォルトの名無しさん:2016/05/07(土) 13:07:53.42 ID:HCFqFuTE
>>594,597
多分、あなたがいっているJavaScriptはクライアントサイドスクリプトの事だろうが、クライアント側の環境に依存するから簡単に後方互換性を捨てることが出来ない
Node.jsなら十分可能だから
クライアントサイドスクリプトは製作側の環境だけ整えても仕方ないのだから言語の問題というよりもユーザのリテラシーや古い環境に固執すユーザの考え方の問題

ES6でモジュール管理機能が追加されているから古いブラウザを切り捨てる気があるなら可能
現状ではAltJSを使うなり、Babelでトランスコンパイルするのが妥協点

602 :デフォルトの名無しさん:2016/05/07(土) 13:18:35.30 ID:HCFqFuTE
>>599
onload 時に出力結果を配列 or DocumentFragment にキャッシュしておき、その要素数が files.length と一致したら document.body.appendChild してみては?

603 :デフォルトの名無しさん:2016/05/07(土) 15:09:05.53 ID:NRmKgF8p
そもそもWebという仕組みがモジュール化しずらいんだから仕方がない
HTML5+でパッケージングの案とか出てたけど立ち消えになったしな

604 :デフォルトの名無しさん:2016/05/07(土) 16:24:25.14 ID:rW+w2i1Z
Microsoft全てを委ねていればこんな体たらくにはなってなかった

605 :デフォルトの名無しさん:2016/05/07(土) 17:31:40.76 ID:q+dYax/I
どいつもこいつもジャップは母国語すら満足にしゃべれなくなったのか?

606 :デフォルトの名無しさん:2016/05/07(土) 17:50:30.87 ID:7m+gJQ3f
void 0 === a && ~~

a === void 0 && ~~

こういうのってどっちがいいとかある?

607 :デフォルトの名無しさん:2016/05/07(土) 17:54:47.43 ID:kizhSvpl
結果を先に書いておかしいと思わないの?
おまえセンスねえからやめたほうがいい

608 :デフォルトの名無しさん:2016/05/07(土) 18:14:28.17 ID:v072DMKU
>>604
おうJScriptが主流になってたな

609 :デフォルトの名無しさん:2016/05/07(土) 19:18:58.60 ID:PsySjkPg
>>604
そんなことしてたらここまでブラウザは進化しなかった

610 :デフォルトの名無しさん:2016/05/07(土) 19:25:18.36 ID:rW+w2i1Z
こういうバカな反逆者がブラウザの正しい進化の道を閉ざしてきたんだな

611 :デフォルトの名無しさん:2016/05/07(土) 19:26:31.11 ID:JbOpDSya
>>594
ブラウザ間の最低限の互換性は取れてるような。
caniuseでも通してみりゃわかるだろうけど。
モジュール化も、module.exportsして今のところはwebpackか何か通しておけばいいんでないの?

612 :デフォルトの名無しさん:2016/05/07(土) 20:07:07.26 ID:rW+w2i1Z
手段があるなら良いってもんじゃ無いよね
当たり前のようにサポートされてないって事がweb業界のリーダー達の怠慢を表してる
Microsoftがリーダーになっていればこうはならなかった

613 :デフォルトの名無しさん:2016/05/07(土) 21:10:40.66 ID:kFFwjeQZ
スレ違いだったらすいません。webプログラマーを目指そうかどうか、悩んでいます
SQLやフレームワークでデータを引っ張ってきてphpでhtmlを生成し、htmlにcssで装飾し、jsで動きをつけて・・・と思っていたのですが、
IE8や下手するとIE6の対応、IEはJscriptというjavascriptと少し違う言語…などの変な多様性に悩んでいます
いくつかサイトを作ってみましたが、IE6で動かなかったり、携帯ブラウザで表示が崩れたりして大変困っています。
困っているというか、どうしていいかわかりません。

ブラウザ間の違い等、どこまでサポートしているかなどの基準はあるのでしょうか?

614 :デフォルトの名無しさん:2016/05/07(土) 21:14:56.21 ID:znoXDAwn
>>613
文面を見るかぎりWebプログラマーには向いていないと思うので別の道を探してください

615 :デフォルトの名無しさん:2016/05/07(土) 21:20:22.07 ID:rZxk5OUW
ES6 module が来ても HTTP で GET している限り、パフォーマンス低下は免れないわけで何が嬉しいのか良くわからん
CSS の @import のように始めの頃だけ重宝されていずれ使われなくなる気がする
moduleが必要だとは思うが、>>611のいうようにwebpackでbuildすれば最適なパフォーマンスが得られるわけでブラウザ側で実装する必要性を感じない

616 :デフォルトの名無しさん:2016/05/07(土) 21:38:26.64 ID:rZxk5OUW
>>613
今時、IE8- は古すぎると思うけど、顧客の要求仕様か特殊な案件?
各種フレームワークのサポートブラウザを確認
互換性情報はWebにあふれているから活用しようか
http://caniuse.com/
http://www.quirksmode.org/compatibility.html
http://kangax.github.io/compat-table/es5/
https://msdn.microsoft.com/ja-jp/library/cc351024.aspx
https://developer.mozilla.org/ja/docs/Web

617 :デフォルトの名無しさん:2016/05/08(日) 01:45:49.69 ID:a6za2jQ4
>>588
そもそも複数のリソースファイルは、5個ずつパラレル読み込みで、
複数あるサーバーのどこから読み込んでいるのかすら、わからない。
どのファイルが先に読み込まれるかも、当然わからない

F12開発者ツールで、リソースの読み込みタイミングを見てみ

onChange は、要点に関係ないだろ

>new Array();
[]; 空配列リテラルを使う

>>613
IE6なんて、対応しないだろ

CSSもツールで、関数(ミックスイン)で書く。
Sass & Compass 徹底入門、2014

他に、Bourbon にも、ミックスイン集がある

618 :デフォルトの名無しさん:2016/05/08(日) 02:14:54.64 ID:OocjjMXM
>>599
> nameはfiles順に代入されていきますが、dataは読み込み完了時に代入され
答え自分で書いとるやないかーい

fileReader[i].onload = function (event) {
&nbsp;&nbsp;var n = data.length;
&nbsp;&nbspdata[n] = event.target.result;
}



fileReader[i].onload = (function (n) {
&nbsp;&nbsp;return function (event) {
&nbsp;&nbsp;&nbsp;&nbsp;data[n] = event.target.result;
&nbsp;&nbsp;};
})(i);

619 :デフォルトの名無しさん:2016/05/08(日) 02:15:33.52 ID:OocjjMXM
s/&nbsp;/ /g

620 :デフォルトの名無しさん:2016/05/08(日) 11:04:13.34 ID:J2x5cRTw
>>618-619
bodyへの挿入処理がない
多分、>>602の通りの実装にするんだろうけど

621 :デフォルトの名無しさん:2016/05/08(日) 13:29:51.82 ID:P/nJjC5X
ID:H9AjK5sV です
ID:OocjjMXM 様のCallback使う手法でうまくいきました
レスして頂いた皆様、有難う御座いました

622 :デフォルトの名無しさん:2016/05/09(月) 08:47:40.90 ID:W7sFbKKM
jQueryで作っているんですが
下のような内容でボックスのどこでもクリックやタッチしたらclass = "box"のIDを
変数に取得したいんですが商品名や説明があるところだと
クリックやタッチは反応してるんですがIDが取れません。
商品名のところでクリックやタッチしてもclass = "box"のIDを取得できる書き方はありませんでしょうか?

$(".box").click(function(event){
 var boxId = event.target.id;
}

<div class = "box" id ="item1">
<div class = "title">商品名1</div>
<div class = "text">説明1</div>
</div>

<div class = "box" id ="item2">
<div class = "title">商品名2</div>
<div class = "text">説明2</div>
</div>

623 :デフォルトの名無しさん:2016/05/09(月) 08:58:44.04 ID:dyobdVC7
>>622
hasClassやclassListで分岐処理して
event.target.parentNode.id

624 :デフォルトの名無しさん:2016/05/09(月) 16:48:27.63 ID:wbQMz1Tb
>>622
event.currentTarget.id

625 :デフォルトの名無しさん:2016/05/09(月) 21:03:12.68 ID:o7YvYv9W
jQueryってそんなにありがたがるようなものかな
最近は無くて困る事ってそんなにないよね

626 :デフォルトの名無しさん:2016/05/10(火) 00:01:34.91 ID:yLtf5w/x
>>625
jQueryは便利だから使うんだよ。

jQuery使ったほうが便利なのに、使わなくても不便だけど頑張れる。
だから使わない。なんて考える人はおかしな人だよ。

627 :デフォルトの名無しさん:2016/05/10(火) 00:04:42.17 ID:yLtf5w/x
>>624
$(".box").click(function(){
 var boxId = this.id;
});

これでいけたよ

628 :デフォルトの名無しさん:2016/05/10(火) 08:52:13.41 ID:4ts0a3G7
>>625
クロスブラウザ的にはjQueryがなくて困るケースは減ったね
DOMを学習してクロスブラウザなコードを書いた事がある人にとっては今までの自分の資産(コード)があるし、jQueryはなくても困らないと思う
今までクロスブラウザに苦労してjQueryの便利さに触れた人がブラウザの対応度を調べる手間を惜しんで惰性で使ってるんじゃないかな

629 :デフォルトの名無しさん:2016/05/10(火) 10:27:37.59 ID:AYSgFkex
>>626
jQueryは確かに便利なとこもあるだろうが、
俺にとっては「標準でない」という時点でとても不便なんだけどな

630 :デフォルトの名無しさん:2016/05/10(火) 11:19:26.96 ID:F0daG/eG
>>629
標準でないものを全く使わずに、何万行もコード書くとか疲れないか?

631 :デフォルトの名無しさん:2016/05/10(火) 11:27:59.90 ID:idlWyZE5
1. jQueryクソ!バニラJS最高!
2. DOM操作面倒になってきた…
3. 簡単に書けるラッパー用意したぜ!
4. クソオレオレDOM APIの歴史が銀河にまた1ページ

632 :デフォルトの名無しさん:2016/05/10(火) 12:00:17.53 ID:4ts0a3G7
>>324-389で出た話題の焼き直しかな
DOMが面倒と思うのは結構な確率で思い込みだと思う
自分なりのコーディングの型が身につけば snippet で楽になる
querySelectorAllが出来てからは大分楽になった
iteratorが出来てからは更に楽だね

633 :デフォルトの名無しさん:2016/05/10(火) 12:08:57.36 ID:pM7kjGoW
Web制作板で見た流れだな
http://echo.2ch.net/test/read.cgi/hp/1456250334/839-960

634 :デフォルトの名無しさん:2016/05/10(火) 13:34:07.61 ID:IOgaEvdb
すんごい初心者的な質問かもしれないんだけど
jsonの形のデータを返すプログラムやらcgiやらがあるとして、
これをブラウザなりnode.jsなりが配列として受け取りたい場合は、レスポンス/返り値を受け取ってeval()が基本?

とりあえずブラウザでdocument.createElement('script')するとかjqueryのgetJSONとかは考えないものとして

635 :デフォルトの名無しさん:2016/05/10(火) 13:41:24.58 ID:Rtf28uts
>>634 JSON.parse

636 :デフォルトの名無しさん:2016/05/10(火) 13:44:05.16 ID:GuxwfwYt
>>634
JSON.parse

637 :デフォルトの名無しさん:2016/05/10(火) 13:45:46.76 ID:IOgaEvdb
>>635-636
言われたJSON.parseをMDNでみてきた、ありがとう
どうみても初心者丸出しでした本当にありがとうございました

638 :デフォルトの名無しさん:2016/05/10(火) 16:37:13.26 ID:a8SwGUA2
jQueryは壊滅的に見た目がダサい
記号多すぎ

639 :デフォルトの名無しさん:2016/05/10(火) 16:39:32.39 ID:z09te98I
>>637
「JSON JS」でググるくらいはしよう

640 :デフォルトの名無しさん:2016/05/10(火) 16:42:23.47 ID:JGlnd6eX
JavaScriptを書くとソースが長くなるのが欠点だわ
DOMにしてもセンスが無い

641 :デフォルトの名無しさん:2016/05/10(火) 17:57:38.15 ID:rBTKy2Ex
DOMは基本JSとは別物で言語に囚われない規格だよ

642 :デフォルトの名無しさん:2016/05/10(火) 20:07:10.97 ID:p4MwWBVW
質問です。
ラジオボタンが一つも選択されていない状態では送信ボタンを押せないか無効化させる方法ってありますか?

643 :デフォルトの名無しさん:2016/05/10(火) 20:29:07.07 ID:FqZqz1a/
>>640
Javaに比べると物凄く簡潔に感じる

644 :デフォルトの名無しさん:2016/05/10(火) 21:18:32.65 ID:zqmBWtQQ
>>642
JavaScript によるバリデートは抜け道があるのでサーバサイドでのチェックも忘れずに
1.JavaScript で <input type="submit"> を input.disable = true にする
2. <input type="radio"> を change イベントで監視して全てのラジオボタンが選択されたら input.disable = false にする

645 :デフォルトの名無しさん:2016/05/10(火) 23:08:08.13 ID:yLtf5w/x
>>632
> DOMが面倒と思うのは結構な確率で思い込みだと思う
いや事実。

比較表でも作ってみればいい。

50%以上、jQueryの方がコードが短くなる。
50%は大きいで?

646 :デフォルトの名無しさん:2016/05/10(火) 23:21:01.17 ID:KuwcBTwn
>>644
その方法で抜け道ってどんな?

647 :デフォルトの名無しさん:2016/05/10(火) 23:37:57.18 ID:uAV2Alwm
適切な設計とモジュール化を行っていけばjQueryがあってもなくても大差ない
それがうまくできてないんだろうね
いやできていないというよりはサボってjQueryで誤魔化しているというべきか
そしてこういうコードはスケーラビリティが低く変化に弱いと相場は決まっている

648 :デフォルトの名無しさん:2016/05/10(火) 23:40:05.80 ID:WbwZXmAZ
>>645
何を言ってんだか
jQueryみたいなライブラリで短くなるのは当たり前でしょ
むしろそうじゃなければ存在意義が全く無い
そしてコードが短くなることと面倒でなくなることは繋がっていない
例えば他人が書いたコードを読むのであればjQueryの方が「面倒」だろうよ

649 :デフォルトの名無しさん:2016/05/10(火) 23:48:31.48 ID:yLtf5w/x
>>648
読む量も減るから楽になるよ。


面倒に対するアプローチには二通りある。

一つは勉強するのが面倒だからと勉強を避ける。
一見楽なように見えるが、知識がないからもっと楽な道を選べずにひたすら
単純作業を繰り返すことになる。勉強する面倒さを避けたがために面倒になる。

もう一つは勉強する面倒さを受け入れることで、もっと効率のいい方法に到達する。
急がば回れの言葉通り。最初に勉強という面倒なことをやることで、
その後ずっと楽になる。

650 :デフォルトの名無しさん:2016/05/10(火) 23:57:03.18 ID:uAV2Alwm
なぜコード量が大幅に減るか
それは本来モジュール化すべき重複したコードが大量にあるからなんだな
例えば100箇所に同じようなコードがありjQueryでそれを削減したとしよう
しかしちゃんとしたプログラマは1箇所に処理を纏めて再利用して重複を減らすだろう
この場合jQueryで削減できるコードは先の場合の1/100でしかない
しっかりしたコードを書くほどjQueryの恩恵は小さくなるのだ

651 :デフォルトの名無しさん:2016/05/10(火) 23:58:28.27 ID:yLtf5w/x
誰かが「面倒」といったとき、勉強するのが面倒と言ってるのか、
その後の作業が面倒と言ってるのかを見極めないといけないね。

どんなことでも作業を楽にするには、勉強する面倒さを
乗り越えないといけない。勉強して知識と技術がつけば作業は楽になる。

自動車の運転しかり、パソコンに使い方しかり、数学の公式しかり
作業ではなくて、勉強するのが面倒と言っているやつは、
そこまでのやつってことだよ。

652 :デフォルトの名無しさん:2016/05/11(水) 00:00:25.17 ID:ye4EAN+q
>>650
そのしっかりしたコードが、jQueryを使った場合と
使わない場合で、倍のコード量になってくるんだよ。

これ以上は絞り込めないといったコードで比較した話なんだから。

653 :デフォルトの名無しさん:2016/05/11(水) 00:01:12.32 ID:ye4EAN+q
ato
jQueryで楽々削減するのと、
しっかりと書かないと減らせないのとでは
面倒さも違ってくるだろw

654 :デフォルトの名無しさん:2016/05/11(水) 00:43:36.75 ID:wiJHIT3v
>>652
短く書きたいのなら別にjQueryでなく様々なものがある
jQueryは互換性を保つという点が薄れてきた今となっては極めて中途半端な存在
ちょっとしたことなら、わざわざ何かを導入しなくとも昔より発展した標準APIを使えばいいし、
それ以上のことでDOM操作を頻繁にするなら仮想DOM系の方がパフォーマンス的にも良い
それ以上ならフレームワークを使う

いずれにしろjQueryのパターンは古臭く、今ちょっとした味付けが欲しい場合は
Observableパターンと標準APIを使ったほうが良い

655 :デフォルトの名無しさん:2016/05/11(水) 01:29:13.56 ID:ye4EAN+q
>>654
たかだかHTMLにちょっと動きをつければいい所に
AngularとかReactとか持ち出すのは過剰。

jQuery程度がちょうどいいんだよ。
標準APIが発展? 冗長なのは変わってないだろ。

jQueryを使えばDOM APIよりも短くなるのは明らか。
比較一覧で証明された。

短くシンプルに書くのが目的であって
道具を導入するのが目的ではない。

656 :デフォルトの名無しさん:2016/05/11(水) 01:30:48.00 ID:x+4ifnQN
短く書ける事が即作業能率に繋がるわけじゃないんだけどな

document.getElementById('hoge')
$('#hoge')

確かにDOMの方が3倍長いけど、コード補完を使うから入力速度は大して変わらんね

657 :デフォルトの名無しさん:2016/05/11(水) 01:41:26.30 ID:mC1n68eU
>>655
jQueryはプログラミングに詳しくない人が本体とプラグインを使って
コピペ+αでそれなりのものを作るためのもの。

少しコードが多くなるとデバッグも適切な設定をしないと困難だし、
短くシンプルに書くためのものなんてのは誤った危険な認識だよ。

そしてjQueryは実際はそれ自体が目的で使われてる。
便利だからではなく、便利と思って使ってきたから、また使うとなってるだけ。
その無意味なスパイラルから抜け出さないと何時までも停滞したままだよ。

658 :デフォルトの名無しさん:2016/05/11(水) 01:53:32.30 ID:mC1n68eU
確かにDOMを平に見て弄りまくる場合にはjQueryは適してると言えるが
そんなに弄りまくる場合にはVirtualDOMを使うのが最近の流儀でメリットも沢山あるし
できればそもそもそんなことはしないで各種モジュール化するというのがより良い解決策

そしてモジュール化するとなったら特にjQueryのような平に影響を与えるライブラリは邪魔になり
必然的に標準仕様と、時期が来ればいつでも外せる少量のポリフィルを使うことになり
それが嫌なら全てをまとめて抽象化してくれるフレームワークの出番になる

jQueryはDHTMLだとかそういう時代には合ってたが、今jQueryが生まれた背景事は殆ど解決し
より良い解決策がたくさんあるのにあえてその古くて悪いスタイルを推すことは無いだろう

659 :デフォルトの名無しさん:2016/05/11(水) 02:08:46.99 ID:z7XWs6Or
>>5を読んだら次からスルーしてね

660 :デフォルトの名無しさん:2016/05/11(水) 06:05:18.26 ID:qJ1gI9ow
こいつが当人なんだから言うこと聞くわけないじゃん

661 :デフォルトの名無しさん:2016/05/11(水) 06:05:43.37 ID:T3iqLJ21
javascriptは流行の移り変わりが激し過ぎて、現在の最善手が1年後の時代遅れになりそう
触る人全員が最新技術を追いかけられればいいけど、それが無理なら枯れていて情報量が多く、あんまりわからん人でも気合で押し切れるjQueryは有用に感じる

662 :デフォルトの名無しさん:2016/05/11(水) 06:48:45.94 ID:udOmff2f
jQueryで削減できるのは末端のコーディングコストでしかない
重要なポイントは設計のコストでありjQueryにはこのコストを削減する力はない
むしろ全体の工数を削られたことによって設計が疎かになる可能性の方が恐い

663 :デフォルトの名無しさん:2016/05/11(水) 07:06:15.34 ID:XhqmdNgU
jQueryの悪さってもっと別のところにあると思う
EWMに沿ってライブラリが標準と共闘して活躍するのが理想だけど
jQueryは完全に自分の世界を築いちゃって相容れないこと
まあこの先の進化で自ずとそうなっていくだろうけど今はまだデファクトとして認められないね

664 :デフォルトの名無しさん:2016/05/11(水) 07:15:59.11 ID:XhqmdNgU
>>661
ブラウザのアップデートが一月半毎なことを考えると、時代遅れになるのは3ヶ月くらいのスパンだと思う
とは言えここ1年はESのアップデートが中心で、WebAPIはマイナーな調整が殆ど
来年以降HoudiniとかEWMに沿う低レベルの仕様がまたどんどん出てくると思う

665 :デフォルトの名無しさん:2016/05/11(水) 08:16:21.66 ID:7o2M3lBg
IE11 しかサポートしなくていい人は気楽だのう。

666 :デフォルトの名無しさん:2016/05/11(水) 08:31:45.67 ID:47ZN8m01
IE11以上サポートなんて半端なことよほどじゃないとしないでしょ?
Edge以上か、IE9以上か、プログレッシブエンハンスメントにして機能で篩い分けるか
の3択で今行ってる

667 :デフォルトの名無しさん:2016/05/11(水) 09:08:23.44 ID:ye4EAN+q
>>657
> jQueryはプログラミングに詳しくない人が本体とプラグインを使って
> コピペ+αでそれなりのものを作るためのもの。

という勘違いをしている人が、jQueryを悪く言ってるんだよねw

668 :デフォルトの名無しさん:2016/05/11(水) 09:09:01.34 ID:ye4EAN+q
>>663

Angularの悪さってもっと別のところにあると思う
EWMに沿ってライブラリが標準と共闘して活躍するのが理想だけど
Angularは完全に自分の世界を築いちゃって相容れないこと

好きな言葉に置き換えればいいよw

669 :デフォルトの名無しさん:2016/05/11(水) 09:09:58.99 ID:ye4EAN+q
>>658
> 確かにDOMを平に見て弄りまくる場合にはjQueryは適してると言えるが
> そんなに弄りまくる場合にはVirtualDOMを使うのが最近の流儀でメリットも沢山あるし

手段と目的が逆になってるw

VirtualDOMをいじらなくていいような簡単な所を
わざわざ複雑にするなや

670 :デフォルトの名無しさん:2016/05/11(水) 09:47:54.59 ID:LV2XLOSJ
一般的な記述でjQueryを使用して書けばソースが約半分になるは事実だ
どうして屁理屈をこねて反論するのだろうか?
jQueryを使用しているとJavaScriptを本質的に理解していないと
自己解釈しているだけだろw

671 :デフォルトの名無しさん:2016/05/11(水) 10:17:41.47 ID:x+4ifnQN
Virtual DOMはDOMが遅いから生まれたのであって独自の世界になるのは当然
AngularJSはMVC設計を取り入れているからMVCをやりたい時に使う
「では、jQueryは何をしたいが為に使うのか」という話だよな
記述量が半分になるメリットだけではjQueryの世界に没入するデメリットを相殺しきれない

672 :デフォルトの名無しさん:2016/05/11(水) 11:00:32.08 ID:kvpM6w4K
>>644
1はなんとかできたけど
2がわからない…

673 :デフォルトの名無しさん:2016/05/11(水) 11:27:16.56 ID:x+4ifnQN
>>672
どこがわからないのかわからんけど、form.elements['inputName'] で各要素を参照できる

674 :デフォルトの名無しさん:2016/05/11(水) 15:35:23.12 ID:m6oW+Aes
ここでjqueryに執着している奴は他の言語をあまり知らないんだろうな。jqueryなんてjsやる時に使えば便利という程度だろ。
c++とかc#とかもやるといいよ。

675 :デフォルトの名無しさん:2016/05/11(水) 15:38:05.91 ID:S3kH2EJT
忙しい調理場で「ハサミで切ったほうが丁寧に切れますよ」とか言ってくるやつがいたら
「さっさといつも通り包丁で切れよ」って思うだろうな
もちろんjqueryが包丁な

676 :デフォルトの名無しさん:2016/05/11(水) 15:45:03.20 ID:LV2XLOSJ
もうやめようよ
馬鹿と何とかは使いようっていうしなw

677 :デフォルトの名無しさん:2016/05/11(水) 18:02:34.45 ID:716xjHj3
>>668
それは機能の寄せ集めである典型的なライブラリであるjQueryにこそ最も強く言えることであって、
AngularJSは別物だよ

678 :デフォルトの名無しさん:2016/05/11(水) 20:35:53.97 ID:xrNZw1On
>>671
Virtual DOMはテストがやりやすくなるし
標準の代わりとしてまだ分かる
jQueryはむしろテストがしにくくなる
ただの餓鬼の玩具

679 :デフォルトの名無しさん:2016/05/11(水) 20:42:34.87 ID:w9XqkPaB
お前らの価値観とかどうでもええわ

680 :デフォルトの名無しさん:2016/05/11(水) 22:00:50.15 ID:ye4EAN+q
>>671
> jQueryの世界に没入するデメリットを相殺しきれない

デメリットって勉強するのが面倒くさいって話?

それって、その人自体のデメリットだよね。
勉強が嫌いな人に仕事を任せるのはデメリットw

681 :デフォルトの名無しさん:2016/05/11(水) 22:06:23.24 ID:ye4EAN+q
>>678
同じ理屈で

Virtual DOMはテストがやりやすくなるし
標準の代わりとしてまだ分かる
DOM APIはむしろテストがしにくくなる
ただの餓鬼の玩具

といえるんだよw

DOM APIとjQueryならば、jQueryを使ったほうがいい。

682 :デフォルトの名無しさん:2016/05/11(水) 22:08:36.24 ID:S3kH2EJT
すぐに廃れるものは勉強めんどいのわかるが
jqueryは勉強しといて損はないだろ
つーか勉強ってほどでもない
JS知ってりゃ1日で慣れる

683 :デフォルトの名無しさん:2016/05/11(水) 22:08:53.06 ID:ye4EAN+q
>>677
> それは機能の寄せ集めである典型的なライブラリであるjQuery

何を言ってるんだ?

jQueryはDOM APIの置き換えであって、
お前が言ってるのは(野良)jQueryプラグインの話だろ?

jQueryはオブジェクト指向型のDOM APIを関数型のプログラミングが
できるように置き換えるライブラリだよ。
(※ブラウザ間の互換性を吸収するライブラリではない)

684 :デフォルトの名無しさん:2016/05/11(水) 23:12:52.71 ID:O2+YRvW5
scって>>レス番にマウスポインタ持っていくと、返信先のレスが表示されますよね?
あれってどういう仕組みでしょうか?
ツールチップではないみたいですが

685 :デフォルトの名無しさん:2016/05/11(水) 23:42:07.24 ID:IeznZ4jj
まぁ、DOM操作をするか、何かにバインドするか、毎回一定範囲ごともらうかは思想次第だからなぁ。
書こうと思えば、jQueryだけでSPA書けるだろうし、その時にDOM足したり消したり細かくするか、innerHTMLごとサーバから貰うかも思想だし。
俺はinnerHTMLを毎度やりとりしてた派だから、今のreactの流れは当然の結果に落ち着いたとも思うし、
逆にクライアントサイドで何もかも済ませて、restfulなapi呼び出ししかしない、その上でクライアントサイドの状態と表示が不一致になるのを避けたり、コンポーネントとして再定義するという意味ではvue.jsは好き。

angularは収集つかなくなってる感が凄く嫌だな。

686 :デフォルトの名無しさん:2016/05/12(木) 00:54:32.46 ID:8vh2YrlZ
>>682
適材適所が出来ない無能だからこそ
何かと理由を付けてキャパシティの低さをカバーするのよ

687 :デフォルトの名無しさん:2016/05/12(木) 01:36:10.90 ID:WDa8o6L5
jQueryの勉強がめんどいって誰も主張してなかったと思うけど、何かと理由をつけて反論したいのね

688 :デフォルトの名無しさん:2016/05/12(木) 01:59:28.76 ID:9Y0usIRW
jqueryをちょっと練習してます。

サイトを見たんですが、なぜクロージャで実行するのでしょうか?
function内だけを実行しても同じ挙動に見えます。

$(function(){
$("#text1").css('color','red');
});

$にfunctionを渡すとどうなるのでしょうか?

689 :デフォルトの名無しさん:2016/05/12(木) 02:36:00.78 ID:WDa8o6L5
>>688
下記コードとほぼ等価
document.addEventListener('DOMContentLoaded', function () {
$("#text1").css('color','red');
}.bind(this, jQuery), false);

690 :デフォルトの名無しさん:2016/05/12(木) 02:39:56.36 ID:Xc9f48N7
やっぱりjQueryを使わないと長くなるなw

691 :デフォルトの名無しさん:2016/05/12(木) 02:43:56.98 ID:Xc9f48N7
>>685
Reactは高品質な(準)標準UIコンポーネントが作られれば普及すると思うよ。

そういう世の中になったら、jQueryを嫌がるのと同じように
○○コンポーネントは使うな自作しろとか言うやつが出てきそうだけどw


で、UIコンポーネントが出来た後は、ウェブアプリをポトペタで作れるようになって、
そしてUIコンポーネント同士を連携させるのにjQueryがやっぱり便利じゃね?って
言われるようになる。

692 :デフォルトの名無しさん:2016/05/12(木) 08:01:45.83 ID:RFqkT9TF
>>691
標準コンポーネント要らなくない?reactなら。
ポトペタでコンポーネントを置いて、結局コンポーネント間の操作をjQueryでやるのはまず破綻すると思うが。
良きひとつの別解としてでもDOMから離れて行くと思うよ。
操作したいのはDOMではなく、コンポーネントだからね。
今までは、DOM≒コンポーネントだっただけで。

693 :デフォルトの名無しさん:2016/05/12(木) 08:12:03.13 ID:ffZfaRCN
jQuery以外を知らず井の中の蛙となってる奴に何言っても無駄。
皆が新設でこれだけ教えてあげようとしてるのにムキになるだけだしどうしようもないクズだね。

694 :デフォルトの名無しさん:2016/05/12(木) 09:11:36.25 ID:VZ0ffw6x
蛙に失礼だろ

695 :デフォルトの名無しさん:2016/05/12(木) 09:16:41.78 ID:6wLBo9DQ
とりあえず今からjs始めようとするのにjQueryを触るのはなしだってことだよね。

696 :デフォルトの名無しさん:2016/05/12(木) 09:29:20.27 ID:pPHDojvh
「JS」を始めようとするのには無し
でもWebデザイン中心の入門としては学習資産があるからね

697 :デフォルトの名無しさん:2016/05/12(木) 09:30:41.67 ID:Xc9f48N7
>>695
DOM APIを触らないのであればそのとおりだけど。
DOM APIを沢山触るのであれば、
それをjQueryに置き換えると遥かに効率が上がる。

698 :デフォルトの名無しさん:2016/05/12(木) 09:37:11.92 ID:cWhHAzov
そりゃJavaを始めるのに面倒だからScalaで書いて呼び出すみたいなもの
いつかは触らないといけないのなら最初からDOMを勉強した方がいい
この先月に1回未満くらいしかJSをに触れる必要が無いのなら選択肢としてあり得る

699 :デフォルトの名無しさん:2016/05/12(木) 09:52:19.65 ID:lQiQw1tJ
必要なら$(elem)[0]を参照すれば済む

700 :デフォルトの名無しさん:2016/05/12(木) 10:09:14.52 ID:cWhHAzov
id振ってりゃその名前で直にアクセスできるけどね

701 :デフォルトの名無しさん:2016/05/12(木) 10:15:36.21 ID:RFqkT9TF
ID振るとか正気かわからん。
ページで、一意にしなきゃならんのだぞ。
「コントロールの中に幾つかのコントロールがある」コントロールを幾つか置いたらもう考えるのが面倒くさいし、状態変数(サーバで持ってるかクライアントで持ってるかに関わらず)との乖離が酷くなっていくじゃん。

702 :デフォルトの名無しさん:2016/05/12(木) 10:30:08.78 ID:cWhHAzov
それこそjQueryで扱う状況じゃないな
別にjQueryは抽象的だとか相対的な関係を扱うのに長けてるわけでもなく、
ただ「短く書ける」程度のものなのだから、
標準DOM APIで困難でフレームワークを使うような必要性が有るときは
それはjQueryにだって不向きな場面であるのは自明

jQueryの様々な付加価値、AnimationとかFetchとかPromiseも時代遅れの仕様だし
最早document.querySelectorAllを$と短く書ける以上のシロモノじゃない
いかに中途半端で役に立たないシロモノか分かったね?

703 :デフォルトの名無しさん:2016/05/12(木) 10:33:36.37 ID:gnZrQsyk
>>701
jQueryだって平に見て何かをする以上のことはできない。
ShadowDOMとか使ってコンポーネント化したり高度なこととは折り合いがつかない。

704 :デフォルトの名無しさん:2016/05/12(木) 12:22:57.19 ID:8PwOpBF8
だから相手すんなっての
lodashの啓蒙()で延々と荒らされた状態から何も進歩してねえ

705 :デフォルトの名無しさん:2016/05/12(木) 12:49:57.46 ID:RFqkT9TF
>>703
だから、jQueryでID指定でどうのとか、DOMapiでとかそういう発想じゃなくて、
ちゃんとコンポーネントとして考えようねって話だよ。

706 :デフォルトの名無しさん:2016/05/12(木) 13:39:59.81 ID:zeyNygYO
enchant.js 用のマップエディタを、jQuery UI で作って、公開している人がいる

jQueryは、ちょっとしたアプリにはいい。
こんなのDOMでは、面倒くさくて作れない

707 :デフォルトの名無しさん:2016/05/12(木) 14:33:59.41 ID:QFbK3hrX
jQuery MobileとjQuery UIはjQueryとは別物
一緒に語るな

708 :デフォルトの名無しさん:2016/05/12(木) 16:19:45.56 ID:iX4T91tZ
SPAを作るのに、SPA用FWを使いたいのですが、JQUIも使いたいです
組み合わせて使うのは、可能でしょうか?また、一般的な方法でしょうか?

709 :デフォルトの名無しさん:2016/05/12(木) 16:46:03.41 ID:RFqkT9TF
>>708
SPA用フレームワークが何かによる

710 :デフォルトの名無しさん:2016/05/12(木) 16:56:38.45 ID:iX4T91tZ
>>709
迷っているところです
VuaやAngular2などがあるみたいですが、おすすめはありますか?

711 :デフォルトの名無しさん:2016/05/12(木) 16:59:58.81 ID:3OjnTRaH
>>708
spaって何よ?

712 :デフォルトの名無しさん:2016/05/12(木) 17:03:19.84 ID:iX4T91tZ
>>711
シングルページアプリケーション

713 :デフォルトの名無しさん:2016/05/12(木) 17:37:38.25 ID:RFqkT9TF
>>710
vue.js使ってるけど、今までで一番感動した。
今はjQuery一切使ってないよ。
viewとモデルに専念してくれるから、あんまりお作法とか無いし。

714 :デフォルトの名無しさん:2016/05/12(木) 17:46:16.47 ID:iX4T91tZ
>>713
Angular2は複雑みたいですね
vue.jsの方が覚えやすいですかね?

715 :デフォルトの名無しさん:2016/05/12(木) 17:49:42.18 ID:aiv+0stS
>>693
jQueryは三下のやるゴッコだから許してやれ

716 :デフォルトの名無しさん:2016/05/12(木) 18:23:11.34 ID:gjMSeNc+
>>714
ライブラリ(フレームワーク)の選び方

コミュニティの大きい方
rc版とか論外
vueもag2も無い

717 :デフォルトの名無しさん:2016/05/12(木) 18:42:57.19 ID:iX4T91tZ
>>716
バインド以外使いたい機能特にないんですが、vueじゃ駄目ですかね?
UIはJQUIで作る予定ですが

718 :デフォルトの名無しさん:2016/05/12(木) 19:53:00.09 ID:RFqkT9TF
>>714
覚えやすいよ。

>>716
もうstable何度も出てるよ。トップページのボタン見て思ったんだろうけど。
コミュニティは大きいに越したことは無いけど。

>>717
UIは何でjQuery UI使うの?
アニメーションとかの為なら、vueでも出来るよ。
それこそバインドしておけば勝手に。

719 :デフォルトの名無しさん:2016/05/12(木) 20:08:26.12 ID:BZDGS6so
非同期な関数A、B、Cがあったとして

Aを実行、callbackでエラーと結果を受け取る
  エラーなら終了
  Aの結果がまずけりゃBを実行、cal(ry
    エラーなら終了
    その後Cを実行
  Aの結果がまずくなけりゃそのままCを実行

なんて流れで書きたいときCを実行するコード2回書かなきゃいかんの
それとも超クールな書き方あるの

720 :デフォルトの名無しさん:2016/05/12(木) 20:09:48.05 ID:iX4T91tZ
>>718
タブとダイアログを使いんですが、自分で実装出来ますかね?

721 :デフォルトの名無しさん:2016/05/12(木) 20:58:00.22 ID:bBgG4/I/
idすら一意に管理できないようなのはエンジニアやめたほうがいい

722 :デフォルトの名無しさん:2016/05/12(木) 21:03:34.87 ID:RFqkT9TF
>>720
タブは瞬殺。
チェックボックスの状態と、タブページのdisplayをバインドするだけ。
チェックボックスはcssでタブ耳みたいにしておく。
(チェックボックス自体は見えなくして、label forにスタイル当てるととても楽)
ダイアログもほぼ瞬殺。ダイアログの中身はslotで書いとけばいい。
背景を暗くするためのdivと、その上に置くdivのdisplayを、ダイアログメッセージ!=""にバインドしとけば、
ダイアログメッセージに文字列入れるだけ。

723 :デフォルトの名無しさん:2016/05/12(木) 21:09:40.37 ID:8TSCgVOi
>>719
超クールに書けますよ。そうJQueryならね

724 :デフォルトの名無しさん:2016/05/12(木) 21:19:35.09 ID:BZDGS6so
>>723
いやマジで
ぜんっぜんわかんねえ
promiseも細かい分岐書こうとしたらなんかresolve地獄になった

725 :デフォルトの名無しさん:2016/05/12(木) 21:26:53.32 ID:hY0jzmnf
>>711
まだこんなのがいるんだな

726 :デフォルトの名無しさん:2016/05/12(木) 22:06:37.95 ID:5wVtNAV4
インスタント麺だろ
知ってるよ

727 :デフォルトの名無しさん:2016/05/12(木) 22:33:10.83 ID:RFqkT9TF
p=new Promise(function(res,rej){res()});

p.then(a).
.catch(b)
.then(c)
.then(/*全部終わった*/)
.catch(/*cで死んだ*/)

ではいかん理由があるのだろうか。

728 :デフォルトの名無しさん:2016/05/12(木) 22:34:03.31 ID:lH3ZGyQp
たらこがない

729 :デフォルトの名無しさん:2016/05/12(木) 22:34:57.59 ID:Xc9f48N7
>>705
> ちゃんとコンポーネントとして考えようねって話だよ。
いやコンポーネント作ったからってそれで完結するわけじゃなくて、
コンポーネントとコンポーネントを繋ぐものが必要だろ?
そこにjQueryを使うんだよ。

>>713
> vue.js使ってるけど、今までで一番感動した。
> 今はjQuery一切使ってないよ。
DOM APIは使ってるかい? 使ってないだろう?

そういうこと。 そのタイプのフレームワークを使うことでDOM APIを使わずに
ウェブアプリを作ることは出来る。むしろDOM APIを直接触ってはいけない。
jQueryを使ってないっていうのは、jQueryはDOM APIを置き換えるだけだから、
DOM APIを使わないならば、必然的にjQueryも使わないだけ。
そしてこのフレームワークを覚えるのはjQueryよりも大変で単純なウェブサイトでは
大掛かりすぎて使うほうがコストがかかる。


整理するとjQueryの代わりに(もっとコストがかかる)フレームワークを使ったら
jQueryもDOM APIも使わないでいいということ。
フレームワークがいらない場面ではjQueryを使うのが良い。DOM APIは出番なしw

730 :デフォルトの名無しさん:2016/05/12(木) 22:36:45.62 ID:Xc9f48N7
>>725
> まだこんなのがいるんだな
そりゃそうだろw

例えばWordPressのようなブログサイトをSPAで作るとかありえない。
用途で使うものは変わってくるんだよ。

ネイティブアプリのようなウェアプリを作るならば、フレームワーク(DOM APIは使わない)
ブログのようなウェブサイトを作るならば、jQuery(DOM APIは使わない)

731 :デフォルトの名無しさん:2016/05/12(木) 22:38:32.41 ID:Xc9f48N7
>>723
> 超クールに書けますよ。そうJQueryならね

言葉が足りない。

超クールに書けますよ。そうJQueryならね。
なぜなら、Promiseに近い仕様のDeferredを持っているから。
そしてjQuery 3.0からはDeferredはPromiseと互換性があるものになる。

732 :デフォルトの名無しさん:2016/05/12(木) 22:39:13.51 ID:HUbJz6nz
カルボナーラもないじゃないじゃないか

733 :デフォルトの名無しさん:2016/05/12(木) 22:39:52.59 ID:GBRI772U
ありえなくは無いだろ
モバイルサイトでは一時期流行ったし

734 :デフォルトの名無しさん:2016/05/12(木) 22:41:31.51 ID:46WAWDCU
>>729
気でも狂ってるのか、文盲なのか。
明示的にDOMを触るんじゃなくて、DOMのいじりはフレームワークに任せるんだよ。

お前もしかして、jQueryしか知らないんじゃないか?

735 :デフォルトの名無しさん:2016/05/12(木) 22:41:59.44 ID:Xc9f48N7
>>722
> タブは瞬殺。
瞬殺と言うのなら、そのコードを書いたほうが楽じゃないのか?w

ちなみにTwitter Bootstrapを使うって手もあるよ。
タブは瞬殺

<div id='ui-tab'>
 <ul class='nav nav-tabs'>
  <li class="active"><a href="#apple">Apple</a></li>
  <li><a href="#google">Google</a></li>
  <li><a href="#classmethod">Classmethod</a></li>
 </ul>

 <div class='tab-contents'>
  <div class="tab-content active">
   ... apple 文章 ...
  </div>
  <div class="tab-content">
   ... google 文章 ...
  </div>
  <div class="tab-content">
   ... classmethod 文章 ...
  </div>
 </div>
</div>

736 :デフォルトの名無しさん:2016/05/12(木) 22:42:27.84 ID:46WAWDCU
だいたいコンポーネントとコンポーネントを繋ぐものとかねえよ。
「コンポーネントとコンポーネントを内包した」コンポーネントでしかない。

737 :デフォルトの名無しさん:2016/05/12(木) 22:44:09.19 ID:Xc9f48N7
>>734
> 明示的にDOMを触るんじゃなくて、DOMのいじりはフレームワークに任せるんだよ。

明示的にDOMを触るんじゃなくて、DOMのいじりはjQueryに任せるんだよ。

だからこういうことだろ?

  フレームワーク VS jQuery

DOM APIは(直接)使わない。(どちらも内部で使うのは当たり前)

あとは作るものが、開発コストが高いフレームワークを
導入するレベルものかどうかで、フレームワーク か jQuery かを
選べば良い。

738 :デフォルトの名無しさん:2016/05/12(木) 22:48:09.87 ID:46WAWDCU
>>735
<input type=checkbox v-model="tab.state" v-for="tab in tabs" />
:
<div ..... v-for="tab in tabs" v-show="tab.state" >
{{tab.content}}
</div>
みたいな感じ。

739 :デフォルトの名無しさん:2016/05/12(木) 22:49:25.89 ID:46WAWDCU
>>737
そりゃ、明示的にDOMをいじってるんだよ。
vsじゃない。
ハサミとカッターナイフみたいなもん。
開発工数以外に、保守工数も考えて喋れよ…

740 :デフォルトの名無しさん:2016/05/12(木) 22:50:04.64 ID:Xc9f48N7
>>736
HTMLはそもそも文書を書くものなわけで。

例えば論文だと思えばいいよ。
第一章、第二章、第一節、第二節なんてがあるような。

そういう論文形式のウェブページをコンポーネントにするのがおかしい。
論文ページコンポーネントがあって、一章コンポーネントがあって
その中に一節コンポーネント、二節コンポーネントがあるとかやる気かねw

ネットはこのような論文やブログ形式のサイトが多いわけで
そういったページをSPAにしたりフレームワークを導入するのは
目的に対して使う道具が間違ってる。

そういうサイトにはフレームワークではなくjQueryが適している。

741 :デフォルトの名無しさん:2016/05/12(木) 22:50:33.86 ID:46WAWDCU
>>738
思いっきり間違えた。radioだな。

742 :デフォルトの名無しさん:2016/05/12(木) 22:51:14.28 ID:Xc9f48N7
>>739
> 開発工数以外に、保守工数も考えて喋れよ…

論文サイトの保守工数って何?
HTMLの修正がメインなんだけどw

743 :デフォルトの名無しさん:2016/05/12(木) 22:53:36.72 ID:3OjnTRaH
>>712
業界ではそう訳すのが普通なのか。

744 :デフォルトの名無しさん:2016/05/12(木) 22:54:07.93 ID:46WAWDCU
>>740
写真と、図のキャプションは、まとめて、「figure 1」だよな。
figureなんとかの塊と、文字と、グラフで出来たものが、節であり、節が集まり章になり、論文になるでしょ。
第二節コンポーネントとか筋悪すぎるだろ。さすがjQuery使いだとしか思えん。

節コンポーネント。
節コンポーネントの配列を持つものが、章コンポーネント。

お前アホだろ。

745 :デフォルトの名無しさん:2016/05/12(木) 22:55:09.86 ID:3OjnTRaH
>>719
cを関数で書けよ

746 :デフォルトの名無しさん:2016/05/12(木) 22:56:13.29 ID:3OjnTRaH
>>725
いるよ。何か?

747 :デフォルトの名無しさん:2016/05/12(木) 22:56:21.38 ID:46WAWDCU
>>742
htmlの修正というより、お前テンプレートエンジンすら使えないんじゃないのか?
一旦稼働したらそのへんはDBから取るだろ。常識的に考えて。

節コンポーネントとか出てくる時点で、手書きなんだろうな、その辺の処理がベタで。

748 :デフォルトの名無しさん:2016/05/12(木) 22:58:50.06 ID:Xc9f48N7
>>738
そんだけなわけないだろw ↓これでいいかい?

http://www.webopixel.net/javascript/1097.html
タブで切り替えるやつ。表示するデータは外部から持ってくるのを想定してタブ切り替え的なやつ。
<div id="app" v-cloak>
  <ul>
    <li v-for="tab in tabNav" @click="changeTab($index)">
      {{ tab }}
    </li>
  </ul>
  <div>{{ tabBody }}</div>
</div>
<script>
new Vue({
  el: '#app',
  data: {
    tabNav: ['JavaScript', 'PHP', 'HTML'],
    contents: [
      'JavaScriptのコンテンツ',
      'PHPのコンテンツ',
      'HTMLのコンテンツ'
    ],
    tabBody: ""
  },
  methods: {
    changeTab: function (index) {
      this.tabBody = this.contents[index];
    }
  }
});
</script>

749 :デフォルトの名無しさん:2016/05/12(木) 23:00:29.80 ID:Xc9f48N7
>>747
今保守工数の話だったよね?

保守するのはDBの中身?
DBから何を取るの?文書データ?
JavaScript関係ない話してるの?w

750 :デフォルトの名無しさん:2016/05/12(木) 23:03:22.74 ID:iX4T91tZ
>>743
学生プログラマだから業界はよく分からん

751 :デフォルトの名無しさん:2016/05/12(木) 23:05:07.78 ID:Xc9f48N7
>>744
はぁ? 俺は論文的なサイトにおいて、
コンポーネントはページの中の一部に入れるもので、
コンポーネントを内包している外側は、コンポーネントに
はならないって話をしてるんだが?

それなのに>>736
> だいたいコンポーネントとコンポーネントを繋ぐものとかねえよ。
> 「コンポーネントとコンポーネントを内包した」コンポーネントでしかない。
とかいい出したんだろw

俺の話に流れを戻すと、コンポーネントとコンポーネントを繋ぐものが必要になる。
それがjQuery。

752 :デフォルトの名無しさん:2016/05/12(木) 23:08:45.56 ID:46WAWDCU
>>748
お前がjQuery脳だとよくわかったわ。
なぜ、状態を持たないliの、さらにクリックのイベントでそんなことするのかいよいよ頭おかしい。
キーボード操作したいって要件増えたらどうよ。

>>751
外側触らないきゃいかんのは、外側含めてコンポーネントだろ。
俺ならサーバサイドでレンダリングするわ。


753 :デフォルトの名無しさん:2016/05/12(木) 23:09:13.47 ID:46WAWDCU
付き合いきれんわ。

754 :デフォルトの名無しさん:2016/05/12(木) 23:12:24.76 ID:iX4T91tZ
結局どうすれば…
とりあえずJQ使わずに頑張ってみます

755 :デフォルトの名無しさん:2016/05/12(木) 23:19:13.17 ID:Xc9f48N7
>>752
> なぜ、状態を持たないliの、さらにクリックのイベントでそんなことするのかいよいよ頭おかしい。
俺はググってコピペしただけですーw
ついでにjQuery版
<div class="tab">
  <ul>
    <li><a href="#js">JavaScript</a></li>
    <li><a href="#php">php</a></li>
    <li><a href="#html">html</a></li>
  </ul>
  <div id="js">
    JavaScriptのコンテンツ
  </div>
  <div id="php">
    PHPのコンテンツ
  </div>
  <div id="html">
    HTMLのコンテンツ
  </div>
</div>
<script>
$(function() {
 $('.tab').on('click', 'a', function(event) {
$(event.delegateTarget).find('div').hide();
$(($(this).attr('href'))).show()
})
})
</script>
<style>
.tab li { display: inline }
.tab div { display: none; border: 1px solid black;}
</style>

756 :デフォルトの名無しさん:2016/05/12(木) 23:20:20.56 ID:Xc9f48N7
>>752
> 俺ならサーバサイドでレンダリングするわ。

なにを? コンポーネントを?
それともコンポーネントじゃないものを
外側にするの?w

757 :デフォルトの名無しさん:2016/05/12(木) 23:21:16.10 ID:BZDGS6so
>>727
例が簡単すぎたかもしれないが

ていうかそれじゃ
Aが終わってからA結果NGならB、Bが終わってからCキックしなきゃいかんのに
BとCと非同期で並列に動いちゃわないか?

758 :デフォルトの名無しさん:2016/05/12(木) 23:49:27.30 ID:46WAWDCU
jQueryでもDOMapiでもなんでも良いが、それこそ論文やなんやの文書構造を、無意味な汎用タブで破壊してるんだけどな。
コンポーネントでも、外側でも、必要に応じて順番に書いたり更新すりゃいいっしょ。
ある要素のinnerHTMLを差し替える以外の動きをするDOMいじり自体が邪道だと何故思えないんだろう。
要素、の意味も伝わらんだろうけど。

>>757
catchが解決してから、次のthenだよ。

759 :デフォルトの名無しさん:2016/05/13(金) 00:04:02.10 ID:reYF/fvv
>>722
ダイアログ用のコンポーネントを用意するっ事ですよね?

760 :デフォルトの名無しさん:2016/05/13(金) 00:05:04.57 ID:9UaBp3bW
>>758
おえ、やっぱ俺の頭が悪いのか?!否定はできないが
'use strict';
const errorA = null, errorB = null, errorC = null, resultA = 0, resultB = 0, resultC = 0;
function mainScript( callback ){
  var p = new Promise(function(resolve, reject){
    sampleA(function( err, result ){
      if( err !== null ) return callback( err );
      if( result === 0 ) reject(); else resolve();
  }); });
  p.catch( function(){
      sampleB(function( err, result ){
        if( err !== null ) return callback( err, result );
      });
  }).then( function(){
      sampleC(function( err, result ){
        if( err !== null ) return callback( err, result );
      });
  })
}
function sampleA( callback ){
  setTimeout( function() {
    console.log('I\'m sampleA');
    return callback( errorA, resultA );
  }, 2000 / 1 );
}

761 :デフォルトの名無しさん:2016/05/13(金) 00:06:44.46 ID:9UaBp3bW
function sampleB( callback ){
  setTimeout( function() {
    console.log('I\'m sampleB');
    return callback( errorB, resultB );
  }, 2000 / 2 );
}
function sampleC( callback ){
  setTimeout( function() {
    console.log('I\'m sampleC');
    return callback( errorC, resultC );
  }, 2000 / 3 );
}

// execute
mainScript( function( err, result ){
  if( err ){
    console.log( err );
  }else {
    console.log( result );
  }
});

こんなん書いて実行させるとACBの順番になる
書き方が悪いのか頭が最低に悪いのかもうわけわからん

762 :デフォルトの名無しさん:2016/05/13(金) 00:43:14.48 ID:lm16bc2e
仕様を理解してないだけ
resolveやrejectを呼び出すまで始まらないのは
最初のPromiseコンストラクタにコールバック関数渡した時のみ
後のthen節やcatch節ではPromiseを返さないかぎり即座に解決され進む

763 :デフォルトの名無しさん:2016/05/13(金) 00:45:15.67 ID:lm16bc2e
あとそもそもおかしい部分があるな

764 :デフォルトの名無しさん:2016/05/13(金) 00:46:03.97 ID:9UaBp3bW
連投しまくってすまん今やっと意味がわかった
var A = new Promise();A.then(/*B*/).catch(/*C*/).then(/*D*/) って繋いだら
catch(/*C*/)にはthen(/*B*/)の中身のfunctionの返り値が、DにはCのが返されるんだな
Aの状態を変えてんじゃないんだな

だからCに行くにはAがreject投げてBを通してCに渡すかBがrejectされたpromise渡さなきゃいけないと
Promiseチェーンの繋ぎ目ではresolvedかrejectedなPromiseオブジェクトを必ずreturnしろと

765 :デフォルトの名無しさん:2016/05/13(金) 01:00:51.12 ID:lm16bc2e
まあ色々パターンは有る。
チェーン内で1つ1つプロミスを作って、外部関数はコールバックベースというのが1つ。
でもそれよりも良いのが、外部関数がプロミスを返すようにすること。
そうすると特にメイン部分のコードはこんなにシンプルになる。

function mainScript( callback ){
  return sampleA().catch( sampleB ).then( sampleC )
}

mainScript( ).then( function ( result ) {
  console.log( result );
}, function ( err ) {
  console.log( err );
});

766 :デフォルトの名無しさん:2016/05/13(金) 01:01:24.73 ID:9UaBp3bW
>>763-764
ああ、だいたい合ってたみたいでよかったが
>後のthen節やcatch節ではPromiseを返さないかぎり即座に解決され進む
これわかんないんだけど、p.then().then().catch()でpがrejectだった時
途中のthenはスルーして後続に渡してるってことか?

767 :デフォルトの名無しさん:2016/05/13(金) 01:01:24.85 ID:lm16bc2e
function sampleA() {
  return new Promise( function (_, reject) {
    setTimeout( function () {
      console.log('I\'m sampleA');
      reject();
    }, 2000 / 1 );
  });
}

function sampleB() {
  return new Promise( function (resolve) {
    setTimeout( function () {
      console.log('I\'m sampleB');
      resolve();
    }, 2000 / 1 );
  });
}

function sampleC() {
  return new Promise( function (resolve) {
    setTimeout( function () {
      console.log('I\'m sampleC');
      resolve();
    }, 2000 / 1 );
  });
}

768 :デフォルトの名無しさん:2016/05/13(金) 01:04:41.92 ID:lm16bc2e
>>766
今言葉で何をどう言ったらいいのか分からないが
コードを見て感じてくれ

769 :デフォルトの名無しさん:2016/05/13(金) 01:14:47.49 ID:72dbC0n+
>>766
横レスだけど恐らく
コンストラクタに渡したcallbackは渡される引数1,2を実行するまで進まないが
then,catchに渡したcallbackはそれの返り値がpromiseでない場合は
Promise.resolve(返り値)と同等になるってことだよ

自分で書いててもわかりづらいな!
Promiseの本でググると親切丁寧な解説サイトが出てくるからオススメ

770 :デフォルトの名無しさん:2016/05/13(金) 01:15:38.97 ID:UiJwdC85
■OS/ブラウザ
MacOSX/google chrome

■やりたいこと
chart.jsを使ってcsvからグラフを作りたい

■問題点
公式サイトの最初のサンプルコードがまず動かない

■エラー表示
Chart.bundle.js:9562 Uncaught TypeError: Cannot read property 'width' of undefined

■HTMLコード
http://codepad.org/hyd81TXN

■JavaScriptコード
http://codepad.org/fFyC72HP

chart.jsを使ってcsvのデータをグラフ化したいのですが、そもそも公式サイトのサンプルすら動きません。
何が悪いのでしょうか?HTMLには公式からDLしたChart.bundle.jsを読み込ませています。
一応全部公式サイトからソースをコピペしているのですが、上記のエラー表示が出てしまって
グラフが表示されません。

公式サイト以外のサイトを見たりしてサンプルコードをコピーしたり色々トライしてますが、
絶対にchart.jsのソースのどこかにエラーが出てしまって表示まで至りません。
しかしこういう躓き方をしている人が見られないので自分が悪いのだと思いますが、
書いてある通りにやっているので何が悪いのかすら分かりません。
どなたかご指摘頂けませんでしょうか。

一応、ここの公式のドキュメントのget startedを試しています
http://www.chartjs.org/docs/#getting-started-creating-a-chart

771 :デフォルトの名無しさん:2016/05/13(金) 01:18:12.17 ID:9UaBp3bW
>>766が舌足らずだったけど「途中のthen()が、後続の何かに、自分が受け取った最初のpをそのまま流してんのかね?」ってこと
>>765,768
mainScriptの後のthenに2つ関数渡してらっしゃるますます混乱したわクソがと思ってMDN見に行った
Promise.prototype.catch(onRejected)
Promise.prototype.then(onFulfilled, onRejected)
頭がどうにかなりそうなんで、ちょっと休んで来るわ・・・

772 :デフォルトの名無しさん:2016/05/13(金) 01:36:12.01 ID:lm16bc2e
.then(A).catch(B)

.then(A,B)
と書けるってだけだよ
細かな違いとして前者はAによる棄却をBで受け取れるが、後者は受け取れない
あとは全く同じ

773 :デフォルトの名無しさん:2016/05/13(金) 01:50:33.04 ID:9UaBp3bW
>>772
うん httpモジュールでres.on('end', ... )とかイベント拾ってたのをなぜか連想して
ああ全部そういうただの独自のオブジェクトなのか個別に覚えるしかないのかと気付いたら、気が抜けた
大量スレ汚しすまんかった&教えてくれてありがとう

774 :デフォルトの名無しさん:2016/05/13(金) 03:06:47.45 ID:ominwoZM
質問者でも回答者でもいいんだけど
最初の>719は満たされていない気が。
本当に必要なのはPromiseを途中で中止する方法かフラグ持ちまわし。

775 :デフォルトの名無しさん:2016/05/13(金) 03:19:23.68 ID:mJ20W9Oq
なんでよ
try{A}catch{B}finally{C}
をPromiseでやりたいってだけでしょ?
>>765みたいに
P(A).catch(B).then(C)
でいいじゃん

776 :デフォルトの名無しさん:2016/05/13(金) 03:30:35.00 ID:ominwoZM
「エラーなら終了」だからだ。

777 :デフォルトの名無しさん:2016/05/13(金) 06:57:32.80 ID:IgRnr+4Z
>>759
そう。
<div ..... v-show:"message=''">
{{message}}
</div>
で、
props:{message:""}
みたいなのを、v-dialogとかなんかにしといて、
親の方で
<v-dialog :message.sync="親画面でのメッセージ入れてある変数"></v-dialog>
にして片隅に置いておけばいいよ。
>>748
みたいに、なんでもappに置くと収集つかないというよりも、処理の中身として責任範囲がおかしくなる。
タブのコンテンツも、コンポーネントとして書いといたほうが便利だろうね。
そしたら、中身の部分が
<component :is={{tab.component}}></component>で済むし、中で自分の責任範囲でBL書いておける。

778 :デフォルトの名無しさん:2016/05/13(金) 07:11:50.75 ID:IgRnr+4Z
>>776
最後にちゃんとcatch書いてるでしょ。
プロミスのチェーンを抜けるなら、catchのなかで例外出せば、catchがrejectされるから次のcatchまで吹き飛ぶよ。
全部辞めたいときは何か決まったの投げて、catchでエラー内容がそれであれば問答無用でもう一度投げれば良いと思うが。

779 :デフォルトの名無しさん:2016/05/13(金) 07:29:31.44 ID:pDDJBshQ
>>774-776
http://azu.github.io/promises-book/#ch2-promise-and-array
で解決すると思われる

780 :デフォルトの名無しさん:2016/05/13(金) 07:51:53.74 ID:ominwoZM
だから最初にフラグ持ちまわしが必要と書いただろう。
例外の内容で判断しようとreject/resolveの引数だろうとフラグの持ちまわしだ。
>774以前には出ているように見えないがな。

781 :デフォルトの名無しさん:2016/05/13(金) 08:15:06.36 ID:a0P6k3ow
具体的にどういうフローを目指してるのかによるがallやraceを駆使すればフラグは不要。

782 :デフォルトの名無しさん:2016/05/13(金) 08:26:55.08 ID:RmWBCU2+
>>780
>>760をみる限り、値はグローバル変数出共有しているっぽいので、その設計に沿って回答したのだと思うが
const errorA = null, errorB = null, errorC = null, resultA = 0, resultB = 0, resultC = 0;

783 :デフォルトの名無しさん:2016/05/13(金) 08:45:01.29 ID:1hqv3t07
フラグ持ち回しはしない方がいい、Promiseらしさが壊れるから。
そういう必要が出てきたらCancellable Promiseみたいなサブクラスを使う。
もしくはPromiseに頼りきらずawait/asyncを使ってフロー制御をするのもいいと思う。
代わりにジェネリックを使うとこんなイメージ。

mainScript = spawn( function* () {
 var v = yield sampleA();
 if ( v == null ) yield sampleB();
 yield sampleC();
 return v;
});

function spawn(gfn) {
return function () {
var gen = gfn.apply(this, arguments);
return new Promise(function (resolve, reject) {
function step(v) {
var r = gen.next(v);
Promise.resolve(r.value).then(r.done ? resolve : step).catch(reject);
}
step();
});
}
}

784 :デフォルトの名無しさん:2016/05/13(金) 08:46:29.24 ID:1hqv3t07
なぜジェネリックが出てきたし、ジェネレータだ

785 :デフォルトの名無しさん:2016/05/13(金) 09:39:54.32 ID:SDu9DLl6
>>770分かる方どなたかいませんでしょうか

786 :デフォルトの名無しさん:2016/05/13(金) 10:12:49.22 ID:DzWKugDT
いますん

787 :デフォルトの名無しさん:2016/05/13(金) 10:38:02.63 ID:vTuC8mEU
公式が動かないようなライブラリはやめとけ
その時点で確認不足ということは内部も低クオリティ

788 :デフォルトの名無しさん:2016/05/13(金) 11:04:08.33 ID:Ww6Z8txE
reactの公式もコメントのデモが動かない

789 :デフォルトの名無しさん:2016/05/13(金) 13:48:10.37 ID:2trIbeTl
>>752
>俺ならサーバサイドでレンダリングするわ。

アホか!
帯域幅ってのがあるだろ!!
トラフィック増やしてどうするんだ!!!
サーバもお前一人で使ってる訳じゃねえんだよ

JSを早く動かすために、これだけブラウザが発達してきたのは、
出来るだけクライアントサイドで処理をさせるためだと思われる。

サーバでレンダリングとかテレホ全盛の考え方。
お前の頭はSSIで進化止まってる

790 :デフォルトの名無しさん:2016/05/13(金) 14:37:59.97 ID:Ta4noneZ
>>789
> サーバでレンダリングとかテレホ全盛の考え方。

そうでもない。

Twitterがページ表示時間を5分の1に高速化。どのようなテクニックを使ったのか?
http://www.publickey1.jp/blog/12/twitter51.html

あと、SEO対策とか。

791 :デフォルトの名無しさん:2016/05/13(金) 14:48:41.67 ID:2trIbeTl
>>790

興味深い。
JSが脚引っ張ってることは判った。
しかし、記事も書かれている通り、「これはある意味でHTMLとCGIで何でもやっていた昔に先祖返りしたような面」とも取れる。

792 :デフォルトの名無しさん:2016/05/13(金) 14:55:04.11 ID:Ta4noneZ
>>791
あとは、そもそもがスマホだとブラウザ劇重が普通みたいになってるのもある
とにかくファーストビューを最速で表示させないと、客が逃げる的な

793 :デフォルトの名無しさん:2016/05/13(金) 14:56:56.33 ID:4noKv6w/
jsの実行速度の遅さがネックなのかな?
どちらかとういとクライアントサイドの準備が終わったあとに
webAPIを叩いてレスポンスを待つというのが遅い原因な気がする
クライアント側のDBにキャッシュとして最新のwebAPIの結果を持ってれば解決しないのかな?

794 :デフォルトの名無しさん:2016/05/13(金) 15:04:14.74 ID:IgRnr+4Z
>>791
だから>>685で、当然の結果だと言ってるんだがなぁ。
vueserverやら色々サーバサイドレンダリングも進んでるんだけどね。

795 :デフォルトの名無しさん:2016/05/13(金) 15:06:22.55 ID:IgRnr+4Z
>>793
最新のキャッシュかどうかはどう判断しようか。
いよいよクラサバ構成でのマスタ配信という轍を踏んでると思うよ。

796 :デフォルトの名無しさん:2016/05/13(金) 15:09:46.63 ID:Ta4noneZ
>>793
遅い(と感じる)閾値は人それぞれだし原因もさまざまなんだが、
それでも閾値を決めて、それに達していなかったらいろんな手を打つ

サーバサイドレンダリングは、その手段の一つ

> クライアント側のDBにキャッシュとして最新のwebAPIの結果を持ってれば解決しないのかな?

もちろんそれも、手段の一つたり得る

797 :デフォルトの名無しさん:2016/05/13(金) 15:33:58.64 ID:mdx2tbNv
初心者なのですが、
教則本を読んで勉強中、唐突に
document.writeln が document.write に変わるところがありました。
writeln と write の違いが、調べても難しい説明が出てきて
よく分からないので、教えて頂けないでしょうか。

798 :デフォルトの名無しさん:2016/05/13(金) 15:42:20.64 ID:mdx2tbNv
更に調べてみたところ、
「document.writeln と document.write の区別はあまりありません。
厳密には writeln は改行を与えますが、実際の表示は空白が与えられるだけで改行しません。」
と書いてあるサイトを見つけましたが、
何で改行せずに空白が与えられるだけなのでしょうか?
理屈が知りたいです。

799 :デフォルトの名無しさん:2016/05/13(金) 15:45:31.39 ID:NtoS/Vlz
>>798
それはJavaScriptがどうのじゃなくてHTMLの表示上の仕様です。

800 :デフォルトの名無しさん:2016/05/13(金) 15:46:59.70 ID:mdx2tbNv
そうなんですね、何となく分かりました。
ありがとうございます。

801 :デフォルトの名無しさん:2016/05/13(金) 17:31:48.27 ID:IgRnr+4Z
>>798
そのサイトが、語弊があるんじゃないだろうか。
preタグの中でやってみれば、なるほどこういう意図かと理解できると思う。

802 :デフォルトの名無しさん:2016/05/13(金) 18:34:46.24 ID:BH4lK65P
JavaScript(JScript)をWindows上のWSHで実行するようなことを、
Linuxその他のプラットホームでやることは可能ですか?

ブラウザを使うことなく、純粋なスクリプトとして実行するためのインタプリタで、
WSHと互換性があるか、少しの修正で使えるものがあるといいんですけど。

Node.jsをそのまま試してみたけど、使えるのかどうかわかりませんでした。

803 :デフォルトの名無しさん:2016/05/13(金) 20:34:46.05 ID:OPyrjsLR
不可能

804 :デフォルトの名無しさん:2016/05/13(金) 20:52:51.01 ID:XJxcxuLX
nodejs使え

805 :デフォルトの名無しさん:2016/05/13(金) 21:03:08.20 ID:aGwZdMLQ
WSH使ってるくらいだからWSObject(もしくはその派生クラス)使ってるでしょ
あんなものnodejsに移植してる奴なんかいないから無理だって

言語仕様は同じだけど標準ライブラリが完全に異なると思って

806 :デフォルトの名無しさん:2016/05/13(金) 21:21:09.03 ID:XJxcxuLX
まだ誰も使ってるとは言ってない

807 :デフォルトの名無しさん:2016/05/13(金) 21:41:38.13 ID:na9JUjrP
fizzbuzzくらいなら動くんじゃね

808 :デフォルトの名無しさん:2016/05/14(土) 00:12:44.71 ID:8701OXOx
>>793
> jsの実行速度の遅さがネックなのかな?
フレームワーク使うからだろう。

jQuery程度なら軽いが、フレームワークを使いだすと重くなる。

809 :デフォルトの名無しさん:2016/05/14(土) 01:59:49.66 ID:QvhKyvW2
<input type="file" id="files" name="files[]" multiple />
で作ったボタンの上にマウスオーバーするだけで
content.js:1 Uncaught TypeError: Cannot read property 'startContainer' of null
というエラーが出まくるのですがこれって原因は何なのでしょうか・・・?

810 :デフォルトの名無しさん:2016/05/14(土) 03:26:06.47 ID:QvhKyvW2
もう一つ聞きたいのですが、

var boo = [69.61, 69.61, 71.26];

で定義した配列booと、

var foo = Array();
foo.push(69.61);
foo.push(69.61);
foo.push(71.26);

で定義した配列fooは、本質的に別物なのでしょうか?
とあるプログラム部分でbooだと特にエラーが起きないのですが、
fooを使うとエラーになってしまいます。
動的に値を配列に追加していくので、できればfooみたいなやり方で
やっていきたいのですが、型がbooと違うのか上手く動作させれず・・・
booの型で動的に値を埋め込んでいくことはできないのでしょうか?

811 :デフォルトの名無しさん:2016/05/14(土) 04:13:25.94 ID:Mj0ak4cN
あのね、どこでどういうエラーが起きたのかが重要なのよ。
勝手に早とちりしないで事実だけを書いてくれないと何も分からん。

812 :デフォルトの名無しさん:2016/05/14(土) 11:19:54.09 ID:V6UHwE5G
わかる人いたら、これ教えて
<SCRIPT type=text/JavaScript>
(function(e) {
e+='w.\x6dove\x54';
eval(e +"o(25206-17206,25206-17206)");
}('\x77\x69ndo'));
</SCRIPT>

813 :デフォルトの名無しさん:2016/05/14(土) 12:00:08.39 ID:ihhM7ekJ
evalをconsole.logにすりゃわかるんじゃね

814 :デフォルトの名無しさん:2016/05/14(土) 12:03:28.38 ID:pzg55Rfk
logを吐かせて、しっかり精査

815 :デフォルトの名無しさん:2016/05/14(土) 12:38:11.14 ID:pN030Nh6
>>812
Closure Compiler

816 :デフォルトの名無しさん:2016/05/14(土) 16:38:15.52 ID:HyfMh4Ah
普通の文字をわざわざ16進数表現にしたりバラバラににしたのを連結して
わかりにくくしてるが結局 window.moveTo してるだけだけどこれどっから
持ってきたの ?

817 :802:2016/05/14(土) 17:27:44.14 ID:tfv0WV0e
レス有難う。

やはりそのままでは無理なんですねぇ。
Node.jsでも、WSH依存の部分を修正すれば場合によってはいけるのかもしれないけど、
結局、全部書き換えることになりそうだし、
同じものをPythonで書きなおしたやつがとりあえず動いているので、
少しずつ試していこうと思います。

お騒がせしました。

818 :デフォルトの名無しさん:2016/05/14(土) 17:58:03.35 ID:ereeE+kF
書きなおすのとポリフィル作るのどちらが楽かな?
npmにWSHインターフェイスのバインディングありそうな気もするけどね

819 :デフォルトの名無しさん:2016/05/14(土) 18:10:48.59 ID:gWasBYdh
スマホ時代だから遅い重いのは致命的
ユーザーからしたら中身が何で作られてるかなんて関係ないからね
遅い重いという印象がすべて

820 :デフォルトの名無しさん:2016/05/14(土) 19:28:19.79 ID:zfuHSTBA
>>809
content.jsの該当行を確認
startContainerプロパティの上位オブジェクトがnull

>>810
両者は同じ
エラーは別の原因

821 :デフォルトの名無しさん:2016/05/14(土) 19:37:15.35 ID:Nq/XkyM+
>>816
htaワンクリウェアのmshta.exe系のhtmlから

822 :デフォルトの名無しさん:2016/05/14(土) 19:46:16.66 ID:LHgIiqHo
迷惑スクリプトと知っていながら素性を隠して質問する辺りが悪質だね

823 :デフォルトの名無しさん:2016/05/14(土) 19:50:55.68 ID:qmHdvbFz
素性なんてしらんでもみりゃ大体想像つくだろ
相手するやつが悪い

824 :デフォルトの名無しさん:2016/05/14(土) 20:00:56.62 ID:VvvSwEAG
どう見ても質問者の方が悪い

825 :デフォルトの名無しさん:2016/05/14(土) 20:01:42.92 ID:Mz7/xxxM
やーねゆとり脳全開で

826 :デフォルトの名無しさん:2016/05/14(土) 20:05:01.00 ID:YqHA7/Dn
泥棒と盗品みたいだ

827 :デフォルトの名無しさん:2016/05/14(土) 22:28:10.05 ID:tMHSdAr/
>>820
そもそもcontent.jsなんてソース上に存在しないのですが
これはどこにあるjsファイルなのでしょうか・・・?

828 :デフォルトの名無しさん:2016/05/15(日) 03:15:40.47 ID:Bj+M+4IS
>>824
ゆとり向けjQueryみたいだな

829 :デフォルトの名無しさん:2016/05/15(日) 09:46:31.39 ID:T9TBOpYO
>>827
貴方と同じ環境を再現出来ない私にはわからない
コンソールから該当コードをクリックしてジャンプすれば分かるのでは?
ブラウザの拡張機能が怪しい気はしますが、最低限の切り分けをしてから(こちらで再現できるだけの情報を集めてから)質問してくれ

830 :デフォルトの名無しさん:2016/05/15(日) 23:20:40.72 ID:/tOCUDfL
>>810
>var foo = Array();
var foo = [];

このように空配列リテラルを使う

Array()を、new 無しでも、コンパイルエラーにならないだろ。
function など他のオブジェクトでも、new 無しでエラーにならないから危険!

new有りなら、オブジェクトを作成して、new無しなら、primitiveになるとか、
ちょこまか意味を変えたりしていて、JSははまるよ。クソ言語w

リテラル表記があるものは、必ずリテラルを使うこと。
{}, [], 数値、文字列、ブール、function など

831 :デフォルトの名無しさん:2016/05/16(月) 04:34:07.48 ID:JUreB/WS
情弱に悪質な嘘を教えるとか最悪だな。

832 :デフォルトの名無しさん:2016/05/16(月) 10:15:18.62 ID:9paZkQVY
var宣言頭にまとめて書いてる人もfor文のループ変数だけはそこで宣言してるの多いけど
これなんか理由あるの?
どうせブロックスコープないんだしわざわざここでvar書いてまでやる必要ないと思うんだが

833 :デフォルトの名無しさん:2016/05/16(月) 10:19:46.50 ID:Pz1/eYkg
>>832
for (var i;;) は関数スコープだと思うが、なぜブロックスコープだと思った?

834 :デフォルトの名無しさん:2016/05/16(月) 10:23:35.60 ID:OMrrj/i+
ちょっと水かぶってくる

835 :デフォルトの名無しさん:2016/05/16(月) 10:39:19.24 ID:QOX8tKrr
うそつけよ
普通に巻き上げるだろ

836 :デフォルトの名無しさん:2016/05/16(月) 10:53:16.63 ID:NmJqda0z
>>835
誰も巻き上げの話はしてないと思うが、誰にいってるんだ?

837 :833:2016/05/16(月) 10:56:52.51 ID:Pz1/eYkg
あー、「ブロックスコープない」か
読み間違えてた、すまん

>>832
ブロックスコープはES6のlet文で定義できるので将来的にlet文に入れ替える事を見越して for(var i;;) と書く事はある

838 :833:2016/05/16(月) 10:58:33.27 ID:Pz1/eYkg
ちなみにブロックスコープ的に使わないのならforでなく、whileを使うな、俺は
var宣言は関数の始めに纏めるからforを使う理由がなくなる

839 :デフォルトの名無しさん:2016/05/16(月) 11:00:43.97 ID:5XiTKntP
このようにこんな時間はアスペしかいないので会話が成立しないのです

840 :デフォルトの名無しさん:2016/05/16(月) 11:24:39.21 ID:doSrVBRT
>>835はさすがにアホだと思った

841 :デフォルトの名無しさん:2016/05/16(月) 12:19:48.45 ID:W2dty7+B
間違いは誰にでもある
ただし、間違いを正さない人は信用を失う
間違いを横目に嘲笑する人も同じ

842 :デフォルトの名無しさん:2016/05/16(月) 12:25:50.69 ID:k9DH3bKO
真っ正面から笑えばいいわけですね
ハハハ

843 :デフォルトの名無しさん:2016/05/16(月) 12:46:25.09 ID:mni4SpUN
+ JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1457452716/

次スレはここでいいのかな

844 :デフォルトの名無しさん:2016/05/16(月) 17:28:20.34 ID:/Amsl+oX
http://echo.2ch.net/test/read.cgi/hp/1456250334/994 より

> どれも使うとこでは使ってるが
今回使わなかった理由になってないが

> JSで他のといっしょに変えるときに便利な場所で変えてる
そういうのはCSSで定義しておいてid,class,属性で入れ替えるのがベター
振る舞い(JS)の中でデザイン(CSS)を埋め込む設計は好ましくない

> localStorage関連は使えないと普通にエラー出るが?
getItemの仕様を読む限りでは例外を発生させる記述が見つからないが、どんな条件で例外が発生する?
https://triple-underscore.github.io/WebStorage-ja.html#dom-storage-getitem

845 :デフォルトの名無しさん:2016/05/16(月) 17:59:53.18 ID:OpsyH8jx
>>844
localStorageが無い環境の話をしてるんだと思うんだが
canvasのwidthをCSSとかあまりにも馬鹿げてる

846 :デフォルトの名無しさん:2016/05/16(月) 19:55:20.62 ID:WK3gL2Wm
はいローカルルール
Javascript はweb制作管理板へ


+ JavaScript の質問用スレッド vol.130 +
http://echo.2ch.net/test/read.cgi/hp/1463395557/

847 :デフォルトの名無しさん:2016/05/16(月) 22:36:06.05 ID:4gQeSxod
>>845
そういうのはtry-catchではなく
if (typeof localStorage === 'object')
で対応するものだと思うが

848 :デフォルトの名無しさん:2016/05/17(火) 09:04:33.01 ID:iJoQH+/I
あるサイトにログイン(ユーザ名、パス入力、ボタン押下)した後に、ログイン後のメニューボタンを押下するという処理を自動化したいのですが、可能でしょうか?

849 :デフォルトの名無しさん:2016/05/17(火) 09:11:31.07 ID:4p4kNHWE
可能だから頑張って

850 :デフォルトの名無しさん:2016/05/17(火) 09:33:40.05 ID:74/nDTTZ
>>848
メニューボタンの一個くらい自分で押せよ

851 :デフォルトの名無しさん:2016/05/17(火) 09:36:24.29 ID:iJoQH+/I
ある画面のロードを監視する方法がわかりません。

ボタン押したりするのはできるんですが。

852 :デフォルトの名無しさん:2016/05/17(火) 09:37:18.03 ID:iJoQH+/I
>>850
1000回とか繰り返すので勘弁してほしいです

853 :デフォルトの名無しさん:2016/05/17(火) 09:44:11.70 ID:74/nDTTZ
>>852
一秒に3回クリックすれば5分くらいで終わるだろ。手でクリックしろよ。

854 :デフォルトの名無しさん:2016/05/17(火) 13:32:19.05 ID:VlcJbzE+
>>167は null, '' しか考慮していない時点でダメ
"123hoge" を撥ねない時点で期待通りに動かない(自然数以外も代入されうる)

855 :デフォルトの名無しさん:2016/05/17(火) 13:58:39.65 ID:3b4WOCVF
>>847
それはそうだが>>844はエラーや例外が発生しないって言ってるから反論しただけ

856 :デフォルトの名無しさん:2016/05/17(火) 23:33:51.85 ID:tk+UiW/4
>>848
Ajaxで可能。
静的なら色々問題あり。

857 :デフォルトの名無しさん:2016/05/18(水) 01:38:27.01 ID:0cJyFiRr
>>851
ユーザースクリプトを探しているのかい?

858 :デフォルトの名無しさん:2016/05/18(水) 01:44:52.11 ID:LETtJAKk
メニューボタン1000回押すとかワロス

859 :デフォルトの名無しさん:2016/05/18(水) 06:29:07.76 ID:mIb5QxnS
そんなUIは嫌だな

860 :デフォルトの名無しさん:2016/05/18(水) 06:57:28.13 ID:7AJ9I4s1
Visual Studio Codeを使用しながら、正規表現を勉強しているところなのですが、
半角の\が、バックスラッシュになってしまって入力できません。
どうすればいいんでしょうか?

861 :860:2016/05/18(水) 07:14:44.20 ID:7AJ9I4s1
すみません、たぶんバックスラッシュでいけるっぽいですね……

862 :デフォルトの名無しさん:2016/05/18(水) 09:12:39.49 ID:a+LRsQV1
>>856
ありがとうございます。

試したらクロスドメインの問題をクリアしなければいけませんでした。
まあ、サーバー側に用意したらいけそう。
話つけるのがちょっと面倒。

863 :デフォルトの名無しさん:2016/05/18(水) 09:22:43.30 ID:a+LRsQV1
>>857
外部からサイトに対する1連の操作を自動にする方法を探しています。(クライアントから実行できるのをユーザースクリプトという?)

864 :デフォルトの名無しさん:2016/05/18(水) 11:00:49.04 ID:b7PveHVL
>>848,862
普通は「あるサイト」側で外部からログイン出来るようにAPIを用意する

865 :デフォルトの名無しさん:2016/05/18(水) 11:06:01.29 ID:l6XhguKG
当然工数は確保する前提でお願い

866 :デフォルトの名無しさん:2016/05/18(水) 12:28:09.51 ID:a+LRsQV1
>>864
あくまでテストなので外部に公開する機能は基本的に設けないでテスターが工夫する感じです

867 :デフォルトの名無しさん:2016/05/18(水) 12:33:48.44 ID:b7PveHVL
>>866
https://ics.media/entry/5759

868 :デフォルトの名無しさん:2016/05/18(水) 12:39:49.80 ID:a+LRsQV1
ありがとうございます。
ただ、javascriptとかクライアントサイドの技術を学びたいのでツールは使いたくありません。

ひたすらテスターとして現場に送り込まれて、手作業ばっかでまったく成長しないので。

869 :デフォルトの名無しさん:2016/05/18(水) 12:40:41.91 ID:T1RnKav0
ド低脳にSeleniumは高度すぎんよ

870 :デフォルトの名無しさん:2016/05/18(水) 12:42:36.58 ID:T1RnKav0
>>868
馬鹿じゃねーのか
ここは問題を解決する場であってお前の道楽に付き合うところじゃねえぞ
脳なしじゃなくてただの馬鹿だったな

871 :デフォルトの名無しさん:2016/05/18(水) 12:47:14.84 ID:a+LRsQV1
>>870
seleniumは使えるのでいいです。
テスターなんで開発環境とかないんで、jsvascriptがいいです。

872 :デフォルトの名無しさん:2016/05/18(水) 12:51:02.81 ID:Zje/v9g4
解答を聞いてばかりでも成長はしないと思いますがどうでしょう?

873 :デフォルトの名無しさん:2016/05/18(水) 12:57:26.01 ID:b7PveHVL
>>871
ブッマークレットなりコンソールでコードを叩くなりすればいいのでは?

874 :デフォルトの名無しさん:2016/05/18(水) 13:21:34.56 ID:LRw1LBCt
>>868
テスターなら、試験仕様通りに手でやってね。
試験仕様に、Seleniumでテストする、スクリプトでテストするって書いてあればそうすればいいけど。
こんな意識のテスターに金払ってると思うと寒気がしてくる。

良くて、そのコードが手作業と必ず一致すると保証する試験してもらうよ、って言われるんじゃねえの?

875 :デフォルトの名無しさん:2016/05/18(水) 13:32:22.46 ID:xnaxo8GZ
使うかどうかはプロジェクト次第として
WebUIのテスターならseleniumは常識的に使えて欲しい

876 :デフォルトの名無しさん:2016/05/18(水) 13:44:50.07 ID:t5tbrB4/
>>875
テストの内容にもよるが、selenium自体そんなに難しくないだろw
テストスクリプトも殆どパターン化されているし

877 :デフォルトの名無しさん:2016/05/18(水) 15:01:09.89 ID:a+LRsQV1
>>874
じゃあまずその手作業が正しかったかどうか証明する必要があるな。
動画でも撮るのか?

878 :デフォルトの名無しさん:2016/05/18(水) 15:20:32.99 ID:mAdSi+vM
はい
ただのアスペでしたね

879 :デフォルトの名無しさん:2016/05/18(水) 15:36:47.31 ID:LRw1LBCt
>>877
だから、方法をテスト仕様で縛って、
ステップ毎のエビデンス提出してもらうんでしょ。
本来の状態では保証されてる、ってかされてる様にエビデンス取るんだよね。
あなたが本来やるべき事が、即ち証明なの。
それを、方法を変えられたら品質保証出来ないから、その保証すべきだよねって話。

目の前にある事の消化も理解も出来てない状態で、横着しないで。

880 :デフォルトの名無しさん:2016/05/18(水) 15:38:15.47 ID:hllzSfm6
ほんとこれ>>874

881 :デフォルトの名無しさん:2016/05/18(水) 18:29:35.91 ID:a+LRsQV1
>>879
テスト仕様書俺が作るので

882 :デフォルトの名無しさん:2016/05/18(水) 18:34:11.73 ID:X9YKyKZO
無能が多すぎてうんざり

883 :デフォルトの名無しさん:2016/05/18(水) 18:46:00.68 ID:LRw1LBCt
>>881
であれば、仕様承認取れればいいんじゃないの?
俺ならツールの仕様とか、スクリプトの仕様とか出してもらうけど。

884 :デフォルトの名無しさん:2016/05/18(水) 19:22:13.20 ID:Q3cKTCnY
ゴミ相手すんのやめろ
少しでも脳味噌が残ってるならな
ゴミだけがゴミの相手しろ

885 :デフォルトの名無しさん:2016/05/18(水) 19:33:03.96 ID:a+LRsQV1
1年ぐらいテストしかしてない。
死にたい。

886 :デフォルトの名無しさん:2016/05/18(水) 23:04:57.22 ID:PaBg5Suu
>>885
どうぞどうぞ

887 :デフォルトの名無しさん:2016/05/19(木) 08:52:44.75 ID:F9dbx1t6
ヒントを元に調べる行動力がない時点でダメだな

888 :デフォルトの名無しさん:2016/05/19(木) 12:47:27.50 ID:kgA9a3Ct
こんな感じのセレクトボックス実装したいんだけど、おすすめのライブラリない?

+ JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net	YouTube動画>1本 ->画像>6枚

889 :デフォルトの名無しさん:2016/05/19(木) 13:40:32.96 ID:Gndv5tvj
コレくらい自作しろ

890 :デフォルトの名無しさん:2016/05/19(木) 14:33:31.92 ID:XceO64sZ
自作するとどうせスマホでは押しにくいとかなるから
こういったのはブラウザのデフォルトの挙動に頼るのがベスト

891 :デフォルトの名無しさん:2016/05/19(木) 17:47:12.09 ID:iQHXc9JV
letは非推奨なので使ってはいけないんですか?
varとconstだけ使えばいいってことですか?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#let

892 :デフォルトの名無しさん:2016/05/19(木) 18:33:51.98 ID:oGDIanH4
>>891
let ブロックおよびlet 式は非推奨です。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let
let文 let hage = 5;
let式 let (hage = 5) console.log(hage); ←非推奨
letブロック let (hage = 5) { console.log(hage); } ←非推奨

893 :デフォルトの名無しさん:2016/05/19(木) 18:43:50.85 ID:N4p5+HHg
同じキーワード使い回すのはやめろォ
C#のusingテメーもだ

894 :デフォルトの名無しさん:2016/05/19(木) 18:46:44.53 ID:LwVosxPn
>>890
もっともらしい意見

895 :デフォルトの名無しさん:2016/05/19(木) 19:35:45.59 ID:j7aj50YW
let it be.

896 :デフォルトの名無しさん:2016/05/19(木) 21:04:55.44 ID:d6QVDzJQ
これに関してはmozillaが悪い

897 :デフォルトの名無しさん:2016/05/20(金) 00:46:31.23 ID:hipHCKAv
全く悪くない。
mozillaがlet文含めて多種多様な新機能の実証実験を進めてくれたからこそ今があるんだ。
ただ単にその成功物がlet文で、失敗物がlet式だったってだけ。
これに関して悪いもクソもない。

898 :デフォルトの名無しさん:2016/05/20(金) 00:48:02.78 ID:H7cAs/1H
jQueryのセレクタはid以外を指定する場合、検索のコストがかかるから
できるだけキャッシュしたほうがいいってきいたんだけど、
どういうスタイルで書くのがいいの?
↓みたいな書き方でいいの?クロージャとかグチャグチャになってメモリリーク起きそうなんだけど

$(function() {
 //いろんなところで使う要素をキャッシュ
 var $link1 = $('.link1');
 var $list1 = $('ul');
 var $form1 = $('form');

 $link1.click(function() {
  showList()
});

function showList() {
  ・・・・
  $list1.show();
}

function postForm(data) {
  $form1.find('.names').val($list1.text());
  ・・・・
 }
});

899 :デフォルトの名無しさん:2016/05/20(金) 07:11:39.43 ID:Wd6dbEDs
頭おかしい。
余計な手間かけるようになるくらいならライブラリ使わなきゃいいだけ。

900 :デフォルトの名無しさん:2016/05/20(金) 08:43:27.72 ID:Q8wuf6+k
>>898
2回以上参照する値は変数にキャッシュする
イベントハンドラ関数も同様
それから、変数のスコープ範囲をよく考える
全ての場所から参照できるようにグローバル変数化するのはDOMツリーから参照するよりは速いが、賢い手段とはいえない
クロージャや引数を使ってスコープ範囲を狭くしろ
event.dataやFinction#bindを使いこなせ

901 :デフォルトの名無しさん:2016/05/20(金) 09:34:42.32 ID:b4YdUNc7
>>898
検索のコストが問題になってからやるべきこと。
HTMLがシンプルであれば、全要素が少ないから
たとえ全要素を捜査するようなものでもコストは低くなる。

キャッシュの前にやるべきことは、チェーンを使うことだ。
そしてイベントハンドラの中では$(this)を使うのは当然として、
$(this).find('・・・')を使えば、thisの中の要素のみを調べるから
これもid以外でも要素数が少ないから速くなる。

キャッシュ以前にそもそも検索自体を無くすことが第一。
その後で検索のコストが問題になるならば
キャッシュすることを考えろ。

902 :デフォルトの名無しさん:2016/05/20(金) 09:42:42.61 ID:gZ6OuKvF
あと、contextを付ける

903 :デフォルトの名無しさん:2016/05/20(金) 09:44:50.19 ID:0SZSpLq/
>>902
なんで?

904 :デフォルトの名無しさん:2016/05/20(金) 10:28:40.39 ID:+mY5/2X3
let a = 1;見たいのは良くてそれ以外のletを使うなってことですか気をつけます

905 :デフォルトの名無しさん:2016/05/20(金) 10:31:34.87 ID:+mY5/2X3
あと特定のオブジェクトにキーを送信できるinitKeyboardEvent()なんですが
https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent#initKeyboardEvent()
これも非推奨なんですよ
JavaScriptで非推奨ではない方法ってありませんか?

目的はテスト用にkeydownイベントハンドラを動かしたいからです。

906 :デフォルトの名無しさん:2016/05/20(金) 12:57:07.02 ID:lJQ06Hkz
>>898
ローカル関数内でvarしてたらキャッシュにならない。
グローバルでvarしないと。
ただし要素の内容が変更されたときに
必ず更新してあげないといかんね。

907 :デフォルトの名無しさん:2016/05/20(金) 13:25:36.56 ID:uAQMGuDV
いろんなところで使う固定値を定数化して広いスコープに置いて保守性高めるって、プログラミング全般でよくやると思うんだけど、JavaScript+jQueryにおいてはパフォーマンスの問題が起きるまではやるなってこと?
代わりにセレクタ文字列を定数化するにしても、$(selector)するたびに検索コストかかるんならjQueryオブジェクトの方を定数化(キャッシュ)しとけばいいじゃんってのは自然な考えだと思うけど。

908 :デフォルトの名無しさん:2016/05/20(金) 13:58:44.21 ID:WbkkTWqu
>>903
context 配下の要素が検索対象になるからだろう
jQuery('.hoge', element);

909 :デフォルトの名無しさん:2016/05/20(金) 14:20:12.83 ID:QEbnF3Vk
1か0でしか物を考えられない池沼の臭いがする

910 :デフォルトの名無しさん:2016/05/20(金) 14:29:40.19 ID:xL1EKSbm
>>909

すげーっ

それって、2進数じゃんww
むしろ、CPU的思考ができるってことかwwww

911 :デフォルトの名無しさん:2016/05/20(金) 14:46:10.42 ID:SdkEgw4M
>>907
その考え方でいいと思う
jQueryはメソッドチェーンで変数の数を減らせるが、メソッドチェーンは好みがありそうだな

912 :デフォルトの名無しさん:2016/05/20(金) 14:47:52.90 ID:SdkEgw4M
>>906
そんなことはない
スコープチェーン上に変数があればいい
>>898のはさすがにキャッシュになってないとは思うが

913 :デフォルトの名無しさん:2016/05/20(金) 18:42:24.79 ID:3WWxWns1
>>905
init系は全部非推奨。今はコンストラクタを使う。

914 :デフォルトの名無しさん:2016/05/20(金) 20:02:55.90 ID:ZmS5TVH1
>>905
非推奨を避けるなら仕様書を読まないと
https://w3c.github.io/uievents/#interface-keyboardevent
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent

915 :デフォルトの名無しさん:2016/05/20(金) 20:19:39.26 ID:qe62nTAD
>>905
このへん。
https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent
ただし、テストには向かんよ。
「なぜかイベントが発火しない」
「画面に見えているものと触ってるものが違うのでイベントが起こらないはず」
「イベントハンドラを殺してあること自体の試験」
って試験だけ手でやるくらいなら、テストフレームワーク使って。
一回、珍しいケースですが…って検出した(つもりになってる)報告受けて調べたら
「キーボードイベントの帳尻が合ってないからイベントを拾わなくなる」
だった事があって、こっちの工数無駄にした事とかかなり責めた。
そういうはっきりしない状態に陥ったら安全側に倒れて、イベント拾わなくなるのは仕様だしね。

916 :デフォルトの名無しさん:2016/05/20(金) 23:24:25.98 ID:b4YdUNc7
>>907
「早すぎる最適化は諸悪の根源である」という言葉を知らなければモグリだよ。
jQueryにかぎらず、プログラム全般において早すぎる最適化をしてはいけない。

それからこれは「固定値を定数化して保守性を高める」という話じゃない。
あんたが言ってるのは、マジックナンバー、つまり数値じゃ意味がわからないときに
限って定数化するって話だ。

もともとセレクタにはわかりやすいID または クラス名が使われている。
$('#search-form') というものを var serch_form = '#search_form'; $(search_form)としたって、
保守性は高くなってないし、var $serch_form = $('#search-form')としても保守性は変わらない。
どうせID名が変われば、変数名も変わる。

一つの関数内で同じjQueryオブジェクトを何度も使うならば・・・つまりこういうコード
function foo() {
  $('#search-form').on(・・・);
  $('#search-form').attr(・・・);
  $('#search-form').css(・・・);
}

短い名前を割り当てるのは理にかなっている。
function foo() {
  var $form = $('#search-form');
  $form.on(・・・);
  $form.attr(・・・);
  $form.css(・・・);
}

だけど広いスコープで短い名前を割り当てるのは保守性の面から見て良くない。
短いスコープの中でのみ通用する話。そしてこれは知っての通りメソッドチェーンを使うことで変数は不要になる。

(つづく)

917 :デフォルトの名無しさん:2016/05/20(金) 23:29:45.35 ID:b4YdUNc7
そして、

var $forms1 = $('.forms'); //・・・(1)
function foo() {
  var $forms2 = $('.forms'); //・・・(2)
}


この(1)と(2)は意味が違う。(1)は最初に実行した時の要素をずっと指し示めしているのに対して、
(2)は現在のDOMの状態から新たに検索する。

DOMは変化するもの(言い方を変えるとグローバル変数のようにどこで誰が変更するかわからない)と言う
前提に立てば、最新のDOMの状態を参照した方がいい。

もともと早すぎる最適化をするのは、悪い習慣であることに加え
最適化をするリスクを考えると、問題にならない限りやらないほうがいいし、
そもそもちゃんとしたjQueryの書き方をしていれば、jQueryオブジェクトを
キャッシュするなんてことが必要になることが少ない。

918 :デフォルトの名無しさん:2016/05/20(金) 23:33:28.30 ID:b4YdUNc7
訂正

> 最適化をするリスクを考えると、

リスクというより、jQueryオブジェクトをキャッシュするというのは
挙動を変えてしまう行為って言ったほうがいいかな。

919 :デフォルトの名無しさん:2016/05/20(金) 23:46:06.92 ID:b4YdUNc7
それにしても「早すぎる最適化は諸悪の根源である」っていう
言葉を知らんっていうのは本当に恥ずかしいことだよ。
それだけは強く言っておきたい。

もし反論したくなったら、何か書く前にこの言葉でググってからにしてくれ。

920 :デフォルトの名無しさん:2016/05/21(土) 00:11:02.85 ID:IZ4o6nB+
>>916
保守的なコードが最適化したコードと同じなだけで、主軸は保守性って書いてあるのになぜクヌースの言葉が出るのか?
保守性の悪いコードは往々にしてアルゴリズムにも難がある事が多いのでパフォーマンスも悪くなる場合があるってことでしょ

921 :デフォルトの名無しさん:2016/05/21(土) 00:23:02.83 ID:q2Zh6d9K
なぜでるのか?って「早すぎる最適化」の話をしているからだよ。
保守的かどうかは全く関係ない。
保守性の話がどうしてここで出てくるのか?

早すぎる最適化をすると、保守性が下がるという話なら
意味はわかるがね。

922 :デフォルトの名無しさん:2016/05/21(土) 00:24:56.22 ID:q2Zh6d9K
説明が分かりにくいか?

わかりやすく言おう。
変数に入れてキャッシュすることは
早くすること(最適化)にはつながるが、
保守性は下がる。

923 :デフォルトの名無しさん:2016/05/21(土) 00:35:02.60 ID:hclWowah
基本的にキャッシュって諸刃だからね
ブラウザキャッシュですら邪魔になることもあるし

924 :デフォルトの名無しさん:2016/05/21(土) 00:46:08.12 ID:TJV+wjVx
現実的には、一月かかって最適化しても、0.1秒も速くならないことが多い

925 :デフォルトの名無しさん:2016/05/21(土) 00:58:37.95 ID:tbwSFfzJ
なぜ変数に入れることが保守性が下がることになるのか、さっぱり伝わってこない
普通は人間の目で見てわかりやすいように変数を宣言する
パフォーマンスUPは二の次

926 :デフォルトの名無しさん:2016/05/21(土) 01:01:16.37 ID:rd5jwdZc
>>924
お前が無能なだけなんじゃね

927 :デフォルトの名無しさん:2016/05/21(土) 01:14:22.95 ID:tbwSFfzJ
変数を使わずに書いてみた
初見で読む気が失せるレベルである

for (var i = 0; i < document.getElementById('hoge').tBodies[0].rows.length; ++i) {
 for (var j = 0; j < document.getElementById('hoge').tBodies[0].rows[i].cells.length; ++j) {
  document.getElementById('hoge').tBodies[0].rows[i].cells[j].classList.add('foo');
  console.log(document.getElementById('hoge').tBodies[0].rows[i].cells[j].firstChild.data);
 }
}

928 :デフォルトの名無しさん:2016/05/21(土) 01:16:18.17 ID:tbwSFfzJ
× 変数を使わずに書いてみた
○ 変数を使わずに書いてみた

929 :デフォルトの名無しさん:2016/05/21(土) 01:17:11.33 ID:tbwSFfzJ
>>928で訂正文を間違えた

× 変数を使わずに書いてみた
○ 出来るだけ変数を使わずに書いてみた

930 :デフォルトの名無しさん:2016/05/21(土) 01:56:39.03 ID:NEdgpV5s
>>927
可読性が下がる上に、ループ上限数にカウンタはありえないんじゃないかな。
セレクタ使えば'hoge'の下の要素を全部、も書ける(#hoge > table :first-child > tr >td)んだし。
まあ俺なら'foo' を足しうるものに、中身無しの要素つけといて、その要素持ってるもの全部、って取る。

931 :デフォルトの名無しさん:2016/05/21(土) 02:14:55.63 ID:tbwSFfzJ
>>930
適切なサンプルでなかったかもしれんが、table to array とか、二次元構造のまま扱いたい場合がある
Array#forEach を使ってもいいが、for文を2段重ねてゴリゴリやるのが好きなんだよな
対象の実装が許すなら for-of を使いたいところだ
何にしても可読性の為に深部のDOMノードを変数に束縛する必要があると思う

932 :デフォルトの名無しさん:2016/05/21(土) 02:16:02.33 ID:hclWowah
>>925 >>927
キャッシュの話じゃなかったの?
ローカル変数は寿命が短いから保守性は問題にならないよ

933 :デフォルトの名無しさん:2016/05/21(土) 02:40:07.59 ID:tbwSFfzJ
>>932
>>927と下記コードを比較してどちらが可読性に優れているかという話

var cell = document.getElementById('hoge').tBodies[0].rows[i].cells[j];
cell.classList.add('foo');
console.log(cell);

934 :デフォルトの名無しさん:2016/05/21(土) 03:14:31.41 ID:RrD1FkH/
>>933
なんかちげーwww

935 :デフォルトの名無しさん:2016/05/21(土) 03:35:25.29 ID:t6RB8tdY
普通に作ればこんなところか

for (var i = 0, rows = document.getElementById('hoge').tBodies[0].rows, l = rows.length; i < l; ++i) {
 for (var j = 0, cells = rows[i].cells, m = cells.length, cell; j < m; ++j) {
  cell = cells[j];
  cell.classList.add('foo');
  console.log(cell.firstChild.data);
 }
}

936 :デフォルトの名無しさん:2016/05/21(土) 04:48:47.21 ID:q2Zh6d9K
>>927
> 変数を使わずに書いてみた
> 初見で読む気が失せるレベルである

えとさぁ、なんでいま関係ない話してるわけ?

前提忘れたの?ねぇ?わざと?

今はキャッシュの話をしていたよね?
"ローカル" 変数に入れることで見やすくすることは
キャッシュとは別の話だって言ったよね?

あんた馬鹿なの?

変数に入れることは見やすくなるが、それは見やすくするためにやることであって
キャッシュは関係ない。キャッシュを活かすためにはローカル変数じゃすぐに消えてなくなるから意味が殆ど無い。
jQueryのキャッシュをローカルで?ローカルでやるならばチェーンを使えばいいって言ったはずだ。
だからjQueryでローカルでキャッシュするなんて意味がない。

わかりやすくするためにローカル変数を使うのはありだって言ったが、
これは俺がすでに言ったこと。キャッシュのためではないとも言ったはずだ。

えとさ、何回同じことを言わせるわけ?w

937 :デフォルトの名無しさん:2016/05/21(土) 05:10:11.50 ID:q2Zh6d9K
ちなみにこれをjQueryで書いてみようか?

for (var i = 0; i < document.getElementById('hoge').tBodies[0].rows.length; ++i) {
 for (var j = 0; j < document.getElementById('hoge').tBodies[0].rows[i].cells.length; ++j) {
  document.getElementById('hoge').tBodies[0].rows[i].cells[j].classList.add('foo');
  console.log(document.getElementById('hoge').tBodies[0].rows[i].cells[j].firstChild.data);
 }
}

いきなりjQueryで正しく書くと違いすぎて読めないだろうからw 似たような形にある程度だけ書き直してみる。
そうそう、jQueryを正しく使えば、キャッシュなんていらないと言った。thisを使えとも言ったはずだ。
わかりやすくするための変数がいらないとは言ってないが、結局減るけどな。

$('#hoge').find('tbody').first().find('tr').each(function() {
$(this).find('td').each(function() {
 $(this).addClass('bar');
 console.log(this.firstChild.data);
 });
});

さらにjQuery化

$('#hoge tbody:first-child tr').each(function() {
$(this).find('td').each(function() {
 $(this).addClass('bar');
 console.log(this.firstChild.data);
 });
});

938 :デフォルトの名無しさん:2016/05/21(土) 05:10:34.91 ID:q2Zh6d9K
さらにjQuery化

$('#hoge tbody:first-child tr td').each(function() {
 $(this).addClass('bar');
 console.log(this.firstChild.data);
});

もう一つおまけに

$('#hoge tbody:first-child tr td').addClass('bar').each(function() {
 console.log(this.firstChild.data);
});


これをわざわざ変数に入れたくなるかい?w
キャッシュすることも不要だろw

939 :デフォルトの名無しさん:2016/05/21(土) 05:14:38.23 ID:q2Zh6d9K
あ、barのままだったw
クラスとしてfoo追加するコードを参考してとっておきながら、
新たなjQueryのコードをbarで書いてたから直し忘れた。

940 :デフォルトの名無しさん:2016/05/21(土) 05:23:11.23 ID:q2Zh6d9K
>>931
> 何にしても可読性の為に深部のDOMノードを変数に束縛する必要があると思う

話すり替えるな。いまキャッシュの話だったはずだ。
「早すぎる最適化は諸悪の根源である」って話をしているのに
なんで可読性の話にすり替える?

連想ゲームでもやってるのか?
キャッシュは変数に入れる → 変数に入れるならば、目的は全部同じ

キャッシュのためじゃないだろ。しかもそれはローカル変数ででいいだろ。
「説明用変数の導入」を俺は否定してないんだよ。

むやみにキャッシュのために、広いスコープの変数に入れておくのが
早すぎる最適化だって言ってる。普通はやってはいけない。
どうしても必要なときだけやる。

だから >>898 ができるだけキャッシュするとか言ってるから、
できるかぎりやらないが正しいと訂正してる。それが「早すぎる最適化」だからだ。
> jQueryのセレクタはid以外を指定する場合、検索のコストがかかるから
> できるだけキャッシュしたほうがいいってきいたんだけど、

早すぎる最適化じゃない使い方は最初から否定していない。

それはそれとして、jQueryではメソッドチェーンを使えば、
最適化じゃない「説明用変数」すらも無くせるから
ローカル変数であっても、いったん変数に入れておくことは殆ど無いと言ってる。

941 :デフォルトの名無しさん:2016/05/21(土) 07:46:43.16 ID:XRbWBdK9
>>922
速くするための最適化と
早い段階での最適化を近藤していませんか?

942 :デフォルトの名無しさん:2016/05/21(土) 07:49:03.87 ID:+h4mdsTD
>>916
>どうせID名が変われば、変数名も変わる。

うそだろ・・・?

仮に100箇所で $('#search_form')してたとして
'#search_form'→'#search_form1'に変えた時に
100箇所直さなくていいように
var $form = $('#search_form'); するんだろ・・・

普通の「固定値」なら100箇所じゃなくても2〜3箇所でも使ってるところがあった時点で
変数に入れるだろ

943 :デフォルトの名無しさん:2016/05/21(土) 08:11:20.66 ID:EoA45sOs
話がキャッシュとか最適化とか保守性とかごっちゃになってるけどさ
複数箇所で使われてる固定値のjQueryオブジェクトなら
広いスコープで変数に入れて(擬似)定数にしといたほうが保守性もいいしキャッシュも効いて一石二鳥だよね?何か問題ある?

でも、それってJSのクロージャの仕組みを考えるとメモリーリークとか危なくね?

ってことでしょ?
実際メモリーリークは起きるの?

944 :デフォルトの名無しさん:2016/05/21(土) 08:35:24.16 ID:FusMkK2d
フロントエンジニアって程度が低いらしいけどここまで酷いの?

945 :デフォルトの名無しさん:2016/05/21(土) 08:37:16.66 ID:86JuHo21
>>936
ローカル変数がキャッシュではないと思ってるのはお前だけ

(1) 関数A、関数Bで要素Cへ1回ずつ参照する
(2) 関数Aで要素Cに2回参照する

(1), (2) の参照コストの総計(2回)は変わらない
関数Aの中でローカル変数を使って要素Cへの参照回数を1回に抑えるのは意味がある

946 :デフォルトの名無しさん:2016/05/21(土) 10:26:05.39 ID:q2Zh6d9K
>>942
> var $form = $('#search_form'); するんだろ・・・

それをやっていいのは、ローカル変数だけだ。
広いスコープで$formとあっても、それがなにか区別付かない。
それは、"保守性を下げる"

今はキャッシュの話をしている。
ローカル変数だとキャッシュとしての効果は
ローカルだけにとどまる。

そしてjQueryを使えばメソッドチェーンが使えるので
ローカルで変数に入れる必要はない。

何度も言ったことだ

947 :デフォルトの名無しさん:2016/05/21(土) 10:27:55.15 ID:q2Zh6d9K
>>941
> 速くするための最適化と
> 早い段階での最適化を近藤していませんか?

速くする最適化でも
軽くする最適化でも
○○する最適化でも

どれも「最適化」だ。

これらの「最適化」を早いうちからするなって言うのが、
「早すぎる最適化は諸悪の根源である」という言葉だ。

948 :デフォルトの名無しさん:2016/05/21(土) 10:29:34.18 ID:q2Zh6d9K
>>945
> ローカル変数がキャッシュではないと思ってるのはお前だけ

ローカル変数がキャッシュではないと言ったことは
一度もない。

jQueryはメソッドチェーンを使えるから、
ローカル変数にキャッシュしないくてよいという話だ。

あとローカル変数ってわかってるか?
別の関数では共有できないぞw

949 :デフォルトの名無しさん:2016/05/21(土) 10:31:56.21 ID:q2Zh6d9K
あと、いまはjQueryオブジェクトの話をしている。
$(セレクタ)のコストがかかるから「いったん変数に入れておくキャッシュ」の話だ。
忘れるなよ? 別の話にすり替えるな。

950 :デフォルトの名無しさん:2016/05/21(土) 11:12:30.21 ID:hclWowah
キャッシュの結論としてはやらないほうがいいんだろうな
innerHTMLとかinputのvalueとかキャッシュしても
他の場所から実体を書き換えられたら整合性狂うからね
そこまでケアしてあげるとなると費用対効果が合わないと思う

951 :デフォルトの名無しさん:2016/05/21(土) 11:18:11.26 ID:q2Zh6d9K
>>950
> キャッシュの結論としてはやらないほうがいいんだろうな
その通り。

というとどっかの馬鹿が変数に入れるなということなのか!?とか言い出すんだよな(苦笑)
「変数に入れるとキャッシュの効果もありまぁす」じゃねーんだよw
楽な方法をとった結果、たまたまそうなる話なんかどうでもいい。

キャッシュを理由に変数に入れておくべきか?とか言ってるから
キャッシュを理由に変数に入れるなんてことは、
「入れるべきもの」ではなく逆に「入れないべきもの」であって
必要になってからやれという話だと言ってるのに。

952 :デフォルトの名無しさん:2016/05/21(土) 12:03:04.42 ID:oKW2aYRF
整合性がどうのこーのって、実装の問題だろ。
問題をゴチャゴチャにするなよ。
馬鹿大杉だろ。スレ読む気も起きんが。

953 :デフォルトの名無しさん:2016/05/21(土) 12:13:36.28 ID:rd5jwdZc
>>950-951
一切更新しない気なのか?

954 :デフォルトの名無しさん:2016/05/21(土) 12:43:50.40 ID:ATvI0r3K
誰か病院紹介してやれよ

955 :デフォルトの名無しさん:2016/05/21(土) 12:49:10.28 ID:HhzhPZLm
お前が行ってる所でいいんじゃないかな

956 :デフォルトの名無しさん:2016/05/21(土) 12:49:16.18 ID:q2Zh6d9K
>>953
キャッシュを更新しても無駄だぞw

だからキャッシュを使わない方がいい。

957 :デフォルトの名無しさん:2016/05/21(土) 12:51:52.14 ID:q2Zh6d9K
>>952
整合性を保つには、シンプルな実装が一番いい。
だから、必要もないのに余計なキャッシュなんか
するべきじゃないって話をしているんだよ。

958 :デフォルトの名無しさん:2016/05/21(土) 13:11:46.29 ID:3KjPC0qs
このスr流れが早すぎてなんかの質問をしたから確認に来たんだけど流れが早すぎてどこで質問したか何の質問したか忘れる

959 :デフォルトの名無しさん:2016/05/21(土) 13:26:02.02 ID:XOGjEe4x
>>948
> ローカル変数がキャッシュではないと言ったことは一度もない。
おまえが>>936で「"ローカル" 変数に入れることで見やすくすることはキャッシュとは別の話だって言ったよね?」といったことに対してキャッシュとして機能する事例(>>945)で反論しただけ
日本語が読めない人の相手は本当に疲れるな

960 :デフォルトの名無しさん:2016/05/21(土) 13:29:04.39 ID:XOGjEe4x
>>947
> これらの「最適化」を早いうちからするなって言うのが、
> 「早すぎる最適化は諸悪の根源である」という言葉だ。
その通りだが、逆に言えば最後に最適化してもいいので、それは最適化テクニックを否定する格言ではない

Charles Cook は「時期尚早な最適化」と称しているが、「しかし逆にシステムレベルのソフトウェアを設計するときは、性能問題を常に念頭に置くべきだ」ともいっている
jquery.jsやjQuery pluginはそれに近い立場にあるので常に最適化に気をつかうべきだろう

961 :デフォルトの名無しさん:2016/05/21(土) 13:51:27.17 ID:XRbWBdK9
プログラム全体の処理速度に大きく影響するレベルの本格的な最適化の話と、ちょっとしたローカル変数に値を代入する話をごちゃ混ぜにしているのがおかしいだろ。クヌース先生も呆れている。

962 :デフォルトの名無しさん:2016/05/21(土) 14:02:20.57 ID:XOGjEe4x
>>937-939
ドヤ顔で披露した割には最後のコードも問題があるな

> $('#hoge tbody:first-child tr td').addClass('bar').each(function() {
>  console.log(this.firstChild.data);
> });
子孫セレクタを使っているのでコストが重く、ネストされたtable要素でおかしくなる
addClass, each で二重走査してるのが無駄
forEach 系で実装可能なのは改めて教えてもらわずとも分かっている
繰り返し処理するのにわざわざ関数呼び出しするのが煩わしいだけ

>>940
説明用変数はキャッシュとしても機能するので同じ事
そもそも、俺は説明用の為だけに変数を定義することはしない
同じオブジェクトを2回以上参照するから変数を定義するだけだ
それはキャッシュでもあり、説明用変数でもある
人間は document.getElementById('hoge').tBodies[0].rows[i].cells[j]; のような長い名前を何度も見て同じものと即座に認識することは出来ない
これが1回だけ参照するなら変数にはしない
2回以上登場するから同じ名前を何度も読まなくて済むように、同じオブジェクトを何度も参照しなくてすむように変数を定義する

963 :デフォルトの名無しさん:2016/05/21(土) 14:16:15.05 ID:+6m5wOVw
IDコロコロするやつのレスなんて信憑性0

964 :デフォルトの名無しさん:2016/05/21(土) 14:16:40.41 ID:q2Zh6d9K
>>959
> おまえが>>936で「"ローカル" 変数に入れることで見やすくすることはキャッシュとは別の話だって
> 言ったよね?」といったことに対してキャッシュとして機能する事例(>>945)で反論しただけ

だから、それをするなって>>951で書いたんだよw

> というとどっかの馬鹿が変数に入れるなということなのか!?とか言い出すんだよな(苦笑)
> 「変数に入れるとキャッシュの効果もありまぁす」じゃねーんだよw
> 楽な方法をとった結果、たまたまそうなる話なんかどうでもいい。

やっぱりという感想しかねーよw


最初の>>898の話は「検索コストがかかるという理由で変数に入れたほうがいいですか?」だ。

スタート地点は「変数に入れない状態」その状態から初めて「検索コスト」だけを理由に
「変数に入れたほうがいいか」って質問だろ。
だからそれはやるなって俺は言ってるんだが、


お前の反論(?)は、(別の理由で)「変数に入れた状態」から初めて
「キャッシュの効果もありまぁす」じゃねーかw
全く議論になってないんだよ。

965 :デフォルトの名無しさん:2016/05/21(土) 14:18:39.39 ID:q2Zh6d9K
>>962
> 子孫セレクタを使っているのでコストが重く、ネストされたtable要素でおかしくなる

ネストされた〜は単に > を付け忘れただけ。

で、いきなりコストの話をすんな。
「早すぎる最適化は諸悪の根源」だ。

それで問題がある場合に限って、最適化すればいいだろ。
HTMLが十分にシンプルであれば、コストが重いといっても
この程度じゃ1回あたり10nsも差は出ないから。

966 :デフォルトの名無しさん:2016/05/21(土) 14:21:45.75 ID:q2Zh6d9K
>>960
> Charles Cook は「時期尚早な最適化」と称しているが、「しかし逆にシステムレベルのソフトウェアを設計するときは、性能問題を常に念頭に置くべきだ」ともいっている

念頭に置くのと、実際に行動するのは別の話。
この2つを区別できてないやつが多いんだよなw


念頭に置いて、問題なるんじゃね?って思って最初から最適化してしまうのが
「時期尚早な最適化」

念頭に置いた上で、問題が起きてから改善すればいい話だと俺は言ってる。

967 :デフォルトの名無しさん:2016/05/21(土) 14:40:58.65 ID:q2Zh6d9K
少し言葉が足りなかったら補足。

念頭に置いた上で、問題が起きてから改善すればいい話だと俺は言ってる。

ここで、念頭に置くというのは、問題が起きてから改善すればいいが
その改善がしづらくなるような設計にはしないということ。

あとから簡単に問題を改善できることならば、
あとから問題を改善すればいい話。

念頭に置くというのは、最初に改善してしまうのではなくて、
改善しにくい方向にはしないということ。

968 :デフォルトの名無しさん:2016/05/21(土) 15:33:15.09 ID:gfKVobxg
src属性の特定の数字を取得した後そのリンクを自動でクリックさせるuserjsを書きたいのですがどう記述して良いのかさっぱりわかりません。

969 :デフォルトの名無しさん:2016/05/21(土) 16:34:58.52 ID:FusMkK2d
じゃ諦めましょ

970 :デフォルトの名無しさん:2016/05/21(土) 16:35:02.87 ID:KBCgSbCY
>>968
取得はドム原理主義者得意の引っこ抜き。
発火タイミングはカーソルクリックや当たったら。
読み込み後発動発火。
スクロールで表示されたら発火(その場合、表示中の現在位置を取得が必要)

971 :デフォルトの名無しさん:2016/05/21(土) 16:39:21.48 ID:qqwYRUOU
>>968
どういう事?contentに探したいものを含むaタグに、clickイベントを発火させればいいのでは?

キャッシュ論が続いているから思うけど、なるほどnodeのスレでjs使いがバカにされる訳だな。
domアクセスを最低限にしたいからキャッシュさせるさせない、セレクタの結果を保持するってその発想自体気が触れてる。
だから、変数とpost内容の不一致とかわけわからん類の障害出すんだろ。
中身になるべきものを持っといて、全部jsで書け。初期コンテンツだけ置いとけ。readyでもいで差し替えろ。
そうすりゃ差分なんか自分が知ってるんだから、どう更新すべきか自明だろ。

972 :デフォルトの名無しさん:2016/05/21(土) 17:02:31.50 ID:q2Zh6d9K
> 中身になるべきものを持っといて、全部jsで書け。初期コンテンツだけ置いとけ。readyでもいで差し替えろ。
> そうすりゃ差分なんか自分が知ってるんだから、どう更新すべきか自明だろ。

その説明じゃ誰にも通じないだろうなw
全部jsで書けとか言ってるから、逆に面倒になってるだけだろう。

973 :デフォルトの名無しさん:2016/05/21(土) 18:57:20.03 ID:qpbh63BA
>>964
するな、はおまえの勝手な持論
DOMのキャッシュだけで「最適化が時期早々」の結論に持って行く流れがおかしい
必要なタイミングで最適化すれば問題はないのだから
そして、その時に様々な最適化の手法を知っているべきであって「早すぎる最適化」を理由に最適化テクニックを覚える機会を失うのは本末転倒
タイミングは重要だが、テクニックとしては知っておくべき

>>965
おまえは何かといえば「早すぎる最適化」しかいわないな
それはミスした時の言い訳に使われるものじゃないぞ
コストよりもセレクタが正しく機能しない事の方がに問題

974 :デフォルトの名無しさん:2016/05/21(土) 22:48:21.57 ID:q2Zh6d9K
>>973
> コストよりもセレクタが正しく機能しない事の方がに問題

だからそう言ってるだろ。

問題になってない検索コストのために最適化することで
セレクタが正しく機能しない(可能性がある)

正しく機能させるために追加で考えなくちゃいけなくなるので
早すぎる最適化は何も良いことがない。

975 :デフォルトの名無しさん:2016/05/21(土) 22:53:03.77 ID:q2Zh6d9K
>>973
> 必要なタイミングで最適化すれば問題はないのだから

だからそう言ってるだろ。

> jQueryのセレクタはid以外を指定する場合、検索のコストがかかるから
> できるだけキャッシュしたほうがいいってきいたんだけど、

とか言ってるから、それは必要なタイミングで最適化するべきことであって
通常は、できるだけキャッシュなんてことをする必要はない。と言ってる。

誰も変数に入れることが最適化のテクニックじゃないとか言ってない。
これを「最適化のテクニックなんだ。ほー。知らなかったー」とか思ってるのはお前だけ。

こっちも元レス人も最適化のテクニックだと知った上で、
元レスの人「できるだけやったほうが良い?」
俺「できるだけやらないほうが良い」

という会話をしてる。

お前は議論の内容から数歩遅れてるんだよw

976 :デフォルトの名無しさん:2016/05/22(日) 07:40:36.92 ID:LUJui5ls
初心者ですが、ためしにある.jsファイルとか
書いてみて、動作確認しようにも連携するファイルがまだできていないので、本当にできているのかいないのか、検討もつきません。
1つ目のファイルが動作確認で動くのかもわからないまま、他の連携ファイルを書くことは疑心暗鬼が増大しすぎて出来なくなってしまいます。
自分が書いたJavaScriptは動くのかを確認する方法がありましたら教えてください。

977 :NAS6 ◆n3AmnVhjwc :2016/05/22(日) 08:35:04.93 ID:KRZX8LQR
検証用のテストコードを作ればいいのに、なんでそうしないの?

978 :デフォルトの名無しさん:2016/05/22(日) 08:57:55.90 ID:JfPxy53K
>>974
> 問題になってない検索コストのために最適化することで
> セレクタが正しく機能しない(可能性がある)
おまえが>>938セレクタの問題点を何も理解してないことはわかったのでもういい

979 :デフォルトの名無しさん:2016/05/22(日) 11:41:58.58 ID:Tdpnvle1
>>974
> これを「最適化のテクニックなんだ。ほー。知らなかったー」とか思ってるのはお前だけ。
おまえは読解力を身に着けた方がいいんじゃね?

> 元レスの人「できるだけやったほうが良い?」
> 俺「できるだけやらないほうが良い」
アホか
「必要なタイミングで最適化した方がいい」が正だろ
やるかやらないかはその時に判断するもので「やらない」の結論を出すのは時期早々なんだよ
「早すぎる最適化」を持ち出してその結論なるんじゃ、おまえは「早すぎる最適化」の何を理解したんだ?といわれても仕方ないぞ

980 :デフォルトの名無しさん:2016/05/22(日) 11:42:40.25 ID:7nFY/y9y
そろそろ死ねよクソカス

981 :デフォルトの名無しさん:2016/05/22(日) 12:12:36.77 ID:+7XP2PmG
>>977
検証用テストコードの存在を知らなかったからです。
少しくぐってみます。ありがとう。

982 :デフォルトの名無しさん:2016/05/22(日) 12:32:37.42 ID:WwOYSBmy
>>979
はぁ?

お前日本語読解力ないなw

できる限りやったほうが良い。の問いにYESって答えたら
できるかぎりやってしまうだろw
だからNOだよ。やらないほうが良い。

で、お前は反論するの?
しないなら黙ってろよw

983 :デフォルトの名無しさん:2016/05/22(日) 12:34:37.15 ID:WwOYSBmy
> やるかやらないかはその時に判断するもので「やらない」の結論を出すのは時期早々なんだよ

結論出さなくても、どちらかを書かないといけないだろw

結論が出てない状態なら、最適化をやらない方を選べって言ってるんだよ。
早すぎる最適化は諸悪の根源だからだ。

984 :デフォルトの名無しさん:2016/05/22(日) 12:48:36.51 ID:XAOP4iva
無駄に長文はkenokabeを彷彿とさせるからヤメロ

985 :デフォルトの名無しさん:2016/05/22(日) 12:53:36.96 ID:CHy0uo/r
NG突っ込んどけ

986 :デフォルトの名無しさん:2016/05/22(日) 16:25:24.06 ID:5k8BO1OF
>>976-977
スタブのような、テストに都合のよい、返り値を返す関数を作る

関数から、10が返ってきたと想定する
a = 10;

ここで、テストでa、つまり10を使う

JSにも、JavaのJUnitみたいな、テスティング・フレームワークがあるのでは?

987 :デフォルトの名無しさん:2016/05/22(日) 16:43:20.80 ID:X0ga1YPw
「早すぎる最適化」は初めから全ての最適化を施すと保守性が著しく落ちるから何よりも先にプロトタイプを完成させた後にボトルネックとなるコードを探して最適化しましょう、という理論。
一般的には速度よりも厳密性、堅牢性、安全性、前方互換性、後方互換性あたりがより重要視されるからね。
ただし、これは保守性が下がらなければ最適化を施してもいいという事でもある。
代表的なのでは array.length を変数にキャッシュするテクニックがあるね。
ループ回数が10万回とか、著しく大きな回数参照される場合に大きな速度差として現れる。
>>945は参照回数の重要性を諭してくれているけど、ようするにローカル変数かグローバル変数かはどうでもよくて参照回数が多いところを最適化すべきなんだよね。
ボトルネックが初めから経験的についてわかっていれば、「早すぎる最適化」理論のタイミングを待たずして最適化を施すことも出来る。
結論としては>>898への答えは「経験的にボトルネックと分かる場所には即座について最適化しましょう。そうでなければ、プロトタイプを作ってからボトルネックを探しましょう。」

蛇足だけど、厳密性を上げることで結果的に速度的な最適化が施される場合もあって>>962のセレクタの指摘がそれ。
'#hoge>tbody:first-child>tr>td' を指定する事で>>927と等価になり、>>938では別の要素を拾ってしまう危険性がある。
厳密性を上げることで保守性が下がるわけでもなし、修正すべき箇所だと思うよ。

988 :デフォルトの名無しさん:2016/05/22(日) 17:36:54.53 ID:FTGg1fS8
一昨日から蛇足続きですけどそれは…

989 :デフォルトの名無しさん:2016/05/22(日) 17:45:35.33 ID:Y6WruITb
array.lengthを変数に入れるなんて言うのは最適化のテクニックなのか?
誰でもやるぞ。

990 :デフォルトの名無しさん:2016/05/22(日) 17:53:12.31 ID:tpad688i
すごーいつづきはぜひぶろぐかなんかひらいてかいたほうがみんなみられていいとおもうー();

991 :デフォルトの名無しさん:2016/05/22(日) 18:09:24.31 ID:WwOYSBmy
>>987

> 結論としては>>898への答えは「経験的にボトルネックと分かる場所には即座について最適化しましょう。
> そうでなければ、プロトタイプを作ってからボトルネックを探しましょう。」

何汎用的な話にしてるんだよw わざとらしいな。今はjQueryのセレクタの話だろ。

>>898の話は経験的にボトルネックと成りえない場所だから、
それを「できるだけキャッシュしたほうがいい」と言ってることに対して
経験的にボトルネックにならないから「できるだけしないほうがいい」と言ってるんだが。

992 :デフォルトの名無しさん:2016/05/22(日) 18:11:58.37 ID:WwOYSBmy
>>989
今はarray.lengthの話はしてない

993 :デフォルトの名無しさん:2016/05/22(日) 18:14:27.64 ID:BAs222Jl
うるせーから埋める

994 :デフォルトの名無しさん:2016/05/22(日) 18:15:11.70 ID:E7LBxgcJ


995 :デフォルトの名無しさん:2016/05/22(日) 18:15:40.12 ID:nPHdXwiF


996 :デフォルトの名無しさん:2016/05/22(日) 18:15:56.89 ID:0PCmMNra


997 :デフォルトの名無しさん:2016/05/22(日) 18:16:13.55 ID:5hn9uytB


998 :デフォルトの名無しさん:2016/05/22(日) 18:16:30.05 ID:2Z+XxbZ+


999 :デフォルトの名無しさん:2016/05/22(日) 18:16:46.61 ID:ax9WOfgG


1000 :デフォルトの名無しさん:2016/05/22(日) 18:17:03.03 ID:yL49bMPd


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 74日 17時間 18分 27秒

1002 :1002:Over 1000 Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/


gc
lud20190703231630ca
このスレへの固定リンク: http://5chb.net/r/tech/1457452716/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「+ JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net YouTube動画>1本 ->画像>6枚 」を見た人も見ています:
+ JavaScript の質問用スレッド vol.129 +
+ JavaScript の質問用スレッド vol.129 +
+ JavaScript の質問用スレッド vol.139 +
+ JavaScript の質問用スレッド vol.129 +
+ JavaScript の質問用スレッド vol.129 +
+ JavaScript の質問用スレッド vol.123 +
+ JavaScript の質問用スレッド vol.131 +
+ JavaScript の質問用スレッド vol.123 +
+ JavaScript の質問用スレッド vol.135 +
+ JavaScript の質問用スレッド vol.122 +
+ JavaScript の質問用スレッド vol.126 +
+ JavaScript の質問用スレッド vol.126 +
+ JavaScript の質問用スレッド vol.124 +
+ JavaScript の質問用スレッド vol.136 +
+ JavaScript の質問用スレッド vol.142 +
+ JavaScript の質問用スレッド vol.134 +
+ JavaScript の質問用スレッド vol.138 +
+ JavaScript の質問用スレッド vol.130 +
+ JavaScript の質問用スレッド vol.121 +
+ JavaScript の質問用スレッド vol.124 +
+ JavaScript の質問用スレッド vol.132 +
+ JavaScript の質問用スレッド vol.125 +
+ JavaScript の質問用スレッド vol.137 +
+ JavaScript の質問用スレッド vol.123 +
+ JavaScript の質問用スレッド vol.141 +
+ JavaScript の質問用スレッド vol.133 +
+ JavaScript の質問用スレッド vol.142 +
+ JavaScript の質問用スレッド vol.127 +
+ JavaScript の質問用スレッド vol.123 +
+ JavaScript の質問用スレッド vol.61 +
+ JavaScript の質問用スレッド vol.105 +->動画>1本
+ JavaScript の質問用スレッド vol.120 +
+ JavaScript の質問用スレッド vol.130 +
+ JavaScript の質問用スレッド vol.122 +
+ JavaScript の質問用スレッド vol.144 +
+ JavaScript の質問用スレッド vol.122 +
+ JavaScript の質問用スレッド vol.125 +
+ JavaScript の質問用スレッド vol.131 +
+ JavaScript の質問用スレッド vol.124 +
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
JavaScript の質問用スレッド vol.123
+JavaScript の質問用スレッド vol.42 +
JavaScript の質問用スレッド vol.125
+ JavaScript & jQuery 質問用スレッド vol.5 +
+ JavaScript & jQuery 質問用スレッド vol.8 + ->動画>8本->画像>7枚
+ JavaScript & jQuery 質問用スレッド vol.7 +
+ JavaScript(ECMAScript)質問用スレッド vol.123 +
+ JavaScript & jQuery 質問用スレッド vol.7 +
+ JavaScript & jQuery 質問用スレッド vol.6 +
JavaScript の質問用スレッド vol.126 (276)
+ jQuery 質問用スレッド vol.7 +
CANYON/キャニオン インプレ・質問用スレッド Part1
02:39:44 up 11 days, 3:43, 2 users, load average: 13.33, 11.80, 10.52

in 0.051883935928345 sec @0.051883935928345@0b7 on 012416