Name_Not_Found<>sage<>2014/06/21(土) 14:56:36.93 ID:???.net<> JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。
回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。 <>+ JavaScript の質問用スレッド vol.117 +
Name_Not_Found<>sage<>2014/06/21(土) 14:57:03.96 ID:???.net<> ■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ <>
Name_Not_Found<>sage<>2014/06/21(土) 14:57:41.90 ID:???.net<> ■前スレ
+ JavaScript の質問用スレッド vol.116 +
http://peace.2ch.net/test/read.cgi/hp/1399764134/
■過去スレ全集
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)
■テンプレ案
http://jsfiddle.net/fH4cC/31/show/
■関連スレ
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
【WHATWG】HTML5 Part6【W3C HTML WG】
http://toro.2ch.net/test/read.cgi/hp/1393153279/
Webサイト制作初心者用質問スレ part239
http://toro.2ch.net/test/read.cgi/hp/1393828207/
CSS初心者スレッド=12th=
http://toro.2ch.net/test/read.cgi/hp/1343429848/
Canvasについて語ろう
http://toro.2ch.net/test/read.cgi/hp/1305093769/ <>
Name_Not_Found<>sage<>2014/06/21(土) 14:58:09.07 ID:???.net<> ■各種仕様 ( http://fiddle.jshell.net/vSqKr/33/show/#Link も参照 )
◆ Standard ECMA-262
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://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
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
◆ MSDN Library
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) <>
Name_Not_Found<>sage<>2014/06/21(土) 15:01:26.88 ID:???.net<> 一部の人が、わーわーいっていますが、テンプレの修正は行いません。
今までの通り続けていきます。
なのでこのスレでライブラリ関連の質問はOKです。
lodashやjQueryの話題も問題ありません。
■諸注意
自治厨は嵐です。自分の好きな通りにスレを変えようとしているだけです。
ライブラリ系の質問は本スレッドで禁止されていません。一人で勝手に決めようとしてるだけです。
許可されたライブラリの話題を禁止しようとしたり荒らすなどの
行為が確認された場合は不要な争いを避ける為、スルーすることを推奨します。 <>
Name_Not_Found<>sage<>2014/06/21(土) 15:01:58.55 ID:???.net<> 以上テンプレ終了 <>
Name_Not_Found<>sage<>2014/06/21(土) 15:16:22.60 ID:???.net<> >>1
乙 <>
Name_Not_Found<>sage<>2014/06/21(土) 15:27:23.06 ID:???.net<> >>5
また、お前か <>
Name_Not_Found<>sage<>2014/06/21(土) 15:47:29.85 ID:???.net<> ライブラリ禁止する発言が自治房でライブラリ許可する発言は自治房じゃないという矛盾
荒らしの理論だな <>
Name_Not_Found<>sage<>2014/06/21(土) 15:50:11.07 ID:???.net<> ライブラリ禁止発言・・・迷惑
ライブラリ許可発言・・・している人は、禁止発言に対するレスとしてだけ。
ごく普通に、JavaScriptの話をしているのに、
それがライブラリだからって、JavaScriptではない自治の話を始めるんだ。
それが迷惑ということ。
ごく普通に、JavaScriptの話をしているのだから
ごく普通に、JavaScriptのレスをしようよ。
それだけのことじゃないか。 <>
Name_Not_Found<>sage<>2014/06/21(土) 15:54:13.20 ID:???.net<> vol115を読めば「ごく普通のライブラリの話」ではなかったことがわかるはずだが、荒らしに何を言っても通じないだろうな <>
Name_Not_Found<>sage<>2014/06/21(土) 15:56:27.88 ID:???.net<> 何も言っても通じないと思うなら諦めれば?
JavaScriptの話をしていることに間違いはないのだから
それで埋まったとしても、何も悪いことはないだろ?
それにくらべて、無関係な話でスレを埋めているのは誰だって話だよ。 <>
Name_Not_Found<>sage<>2014/06/21(土) 16:20:59.50 ID:???.net<> 今まで通りライブラリ関連のコアな質問や返答は別スレに誘導しておけばいいよ
禁止までする必要はない <>
Name_Not_Found<>sage<>2014/06/21(土) 21:06:06.21 ID:???.net<> テンプレに何の実効力もないと判明しているのに何故かテンプレに拘り続ける奴w
官僚主義の権化だな <>
Name_Not_Found<>sage<>2014/06/22(日) 01:07:34.85 ID:???.net<> テンプレは基本守らなくていいものだそうです <>
Name_Not_Found<>sage<>2014/06/22(日) 01:16:09.79 ID:???.net<> 守りたい人は守ってもいいんですよ <>
Name_Not_Found<>sage<>2014/06/22(日) 01:16:35.50 ID:???.net<> そもそも誰かがテンプレに勝手に書いただけなので関係ないです。
自由ですから。 <>
Name_Not_Found<>sage<>2014/06/22(日) 01:24:04.48 ID:???.net<> その通り
守ってもいいし守らなくてもいいです <>
Name_Not_Found<>sage<>2014/06/22(日) 01:25:52.02 ID:???.net<> 自治房は荒らしです
>>5は何の拘束力もありませんし、>>5こそが荒らしです <>
Name_Not_Found<>sage<>2014/06/28(土) 05:04:59.48 ID:???.net<> テンプレ変えられずにリベラル君涙目 <>
Name_Not_Found<>sage<>2014/06/30(月) 23:26:02.09 ID:???.net<> ここは荒らしがたてたスレなので放置推奨
次スレはプログラム板に移行予定 <>
Name_Not_Found<>sage<>2014/06/30(月) 23:39:27.18 ID:???.net<> 一人で行っとけよガキ
あるから使うだけ
以上 <>
Name_Not_Found<>sage<>2014/07/01(火) 01:02:09.97 ID:???.net<> このように暴言を吐いても許されるのがこのスレ
荒らしにとっては理想的な場だな <>
Name_Not_Found<>sage<>2014/07/01(火) 01:52:36.05 ID:???.net<> 自治厨がスレ立ててたぞ
ライブラリなどの質問を見たくない人はこっちへどうぞ
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/ <>
Name_Not_Found<><>2014/07/01(火) 01:53:16.21 ID:Pj2maee6.net<> 様々なハンドラの中でpreventDefaultやstopPropagationをしていて
そのせいでイベントシステム全体の見通しが悪くなっています
想定外の動作が、preventやstop〜が原因かもしれないけど
そのpreventやstop〜を取り除いた時に何が起きるか、もう覚えてないって感じです・・。
こういうのどうやってますか? <>
Name_Not_Found<>sage<>2014/07/01(火) 01:54:23.45 ID:???.net<> プログラム板の次スレ
荒らしを嫌う人はこちらにどうぞ
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/ <>
Name_Not_Found<>sage<>2014/07/01(火) 01:59:05.61 ID:???.net<> ここは幅広い質問をしても文句を言われないスレであって
荒らしが許容されるスレではありません
荒らしは思いっきり殴ります <>
Name_Not_Found<>sage<>2014/07/01(火) 01:59:39.26 ID:???.net<> 完全に>>27が荒らし化してるなw <>
Name_Not_Found<>sage<>2014/07/01(火) 02:03:56.95 ID:???.net<> 小競り合いは荒れを招くだけなので
幼稚なレッテル貼りを許しましょう
自治厨はすみやかに植民して下さいね <>
Name_Not_Found<>sage<>2014/07/01(火) 02:05:35.17 ID:???.net<> >>29
自治房は荒らしです
荒らすのは止めてください <>
Name_Not_Found<>sage<>2014/07/01(火) 02:12:24.35 ID:???.net<> 同種のイベント(たとえばmousedown)の中で一番最後に実行されるイベント
を設定するにはどうしたらいいですか?
ライブラリの影響は気にしません
自分のコードの中で一番最後に実行したい、ということです <>
Name_Not_Found<>sage<>2014/07/01(火) 02:21:07.43 ID:???.net<> >>31
・一番最後にイベントを設定する
・イベントバブルを利用して親やdocumentにイベントを設定する。
・イベントを一つだけ設定して、その中で独自のイベントを管理する。
とかかな。
jQueryは実際にイベントを割り当てるのは一つで
内部でイベント管理してたはずだから
そういうjQueryプラグインを作れるかもしれないね。 <>
Name_Not_Found<>sage<>2014/07/01(火) 02:22:16.60 ID:???.net<> >>31
あ、一番いいのは、そういう順番に依存するものを
作ってはダメといういうこと。
一番最後に実行されるイベントを二つ
設定したらどうなるんだ?とかあるわけだし。 <>
Name_Not_Found<>sage<>2014/07/01(火) 02:34:18.34 ID:???.net<> もう一つおすすめはしないけど、
addEventListener(やattachEvent)を
独自の関数に置き換えるって手もあるな。
やり方は自分で調べてね。 <>
Name_Not_Found<>sage<>2014/07/01(火) 04:14:43.10 ID:???.net<> >>31
ハンドラの中でsetTimeout使う
0秒で <>
31<>sage<>2014/07/01(火) 04:20:51.94 ID:???.net<> ありがとうございます
付ける順番と、DOMツリーに左右されるようなので、いろいろ検証したところ
$(document).on('mousedown',function(e){
console.log('nodelegate');
}).on('mousedown','body',function(e){
console.log('body');
}).on('mousedown','#test',function(e){
console.log('test');
});
とした時、非デレゲートのイベントが、最初に付けても最後に実行されると確認できましたので
これでやろうと思います
ありがとうございました <>
Name_Not_Found<><>2014/07/01(火) 06:02:46.54 ID:npMnctQS.net<> >>35
でもそれやったらpreventDefaultとか
きかないよね? <>
Name_Not_Found<>sage<>2014/07/01(火) 06:49:27.53 ID:???.net<> ハンドラの中でsetTimeout0を使うと
何故すべてのハンドラの最後尾が保証されるのです?
タイミング次第では? <>
Name_Not_Found<>sage<>2014/07/01(火) 07:17:50.84 ID:???.net<> preventDefaultした時に、
デフォルト動作と同じ操作、
すなわちフォーカス以外の部分をクリックした時にフォーカスを外す、
といったことを、最後尾のハンドラでするようにしたら、うまくいきました\(^o^)/
ありがとうこざいました <>
Name_Not_Found<>sage<>2014/07/01(火) 22:07:13.70 ID:???.net<> 以前、mousedownでstopPropagationしても、
そのマウスダウンから構成されるクリックを防ぐことは出来ない、という問題があり、
それに対してsetTimeoutで一定時間クリックを受け付けないようにする、という方法を提示しましたが、
マウスダウンハンドラの中でクリックを防ぐためのクリックハンドラを付ける、という方法を思いつきました
こっち方が自然かもしれません <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/02(水) 01:27:48.02 ID:???.net<> オライリーってくっそ役に立つな <>
Name_Not_Found<>sage<>2014/07/02(水) 07:29:37.35 ID:???.net<> >>36
この件ですが、windowで受けた方が後になりました
というかdocumentにデレゲートなしのmousedownを一時的に付けたりすることはわりとよくあるので
documentではアカンかったです
windowにmousedownを付けるのは普通の使い方をしている限りないので、いいかと思います <>
Name_Not_Found<>sage<>2014/07/02(水) 07:35:34.89 ID:???.net<> >>42
もしかして、絞込してない?
documentにイベントをつけるにしても、
無関係の要素のイベントを取らないように、
どこから発生したかを調べるもんだよ。
やり方は簡単。
$(document).on('click', '.class', function() { ・・・ })
こういうふうにするだけで、classがついてる要素だけ
イベントを処理できる。 <>
Name_Not_Found<>sage<>2014/07/02(水) 07:40:25.45 ID:???.net<> そんなことはもちろん知っていますよ
ど素人じゃないんですから・・。
でもありがとうございました <>
Name_Not_Found<>sage<>2014/07/02(水) 14:35:00.96 ID:???.net<> あごちゃんが社名を名指しして批判しているの見てショックを受けました
同業叩きは恥ずかしいですね <>
Name_Not_Found<>sage<>2014/07/02(水) 21:24:51.22 ID:???.net<> あなたもその人を名指しで批判してるじゃないですか
このスレでそんなことはしないで下さい <>
Name_Not_Found<>sage<>2014/07/02(水) 21:30:08.25 ID:???.net<> >>40
この件ですが、クリックを殺すためのクリックハンドラを付ける、という方法だと
何かのタイミングでそのハンドラが残ってしまい、
クリックが想定しないところで無効になってしまうようになったので、
時限方式に戻しました
時限方式はマシンの処理速度に依存するので
(とはいえ現実的に、mousedownとclickの間で200msもかかるマシンが現存するとも思えないのですが)
少し引っかかるのも事実です・・ <>
Name_Not_Found<>sage<>2014/07/02(水) 21:34:27.95 ID:???.net<> 「クリック殺し」に到達する前にstopPropagationされていたのかもしれません
こうなると、フラグで管理する方がいいのかも <>
Name_Not_Found<>sage<>2014/07/02(水) 21:55:29.32 ID:???.net<> マウスボタン少し長押ししたときってclick発生しないんだっけ <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/02(水) 22:34:39.81 ID:???.net<> まじで!? <>
Name_Not_Found<>sage<>2014/07/02(水) 23:51:17.69 ID:???.net<> var a = [1,2];
var b = 3;
aとbを足してcに[1,2,3]を代入する方法を方法を教えてください
やっぱり
c = a
c.push(b)しかないんですかね <>
Name_Not_Found<>sage<>2014/07/03(木) 00:12:56.38 ID:???.net<> >>51
何種類か方法があると思うけど、何が最適かは場合によると思う。連続で何回も配列の値を増やし続けなきゃいけないとか、単純に一回だけとか。 <>
Name_Not_Found<>sage<>2014/07/03(木) 00:49:16.68 ID:???.net<> >>49
するよ <>
Name_Not_Found<>sage<>2014/07/03(木) 00:50:41.86 ID:???.net<> >>51
c = a.concat(b); <>
Name_Not_Found<>sage<>2014/07/03(木) 02:13:23.65 ID:???.net<> >>51
それだとaの内容も変わっちゃうから>>54以外にない <>
Name_Not_Found<>sage<>2014/07/03(木) 08:32:49.28 ID:???.net<> condog <>
Name_Not_Found<>sage<>2014/07/03(木) 10:29:36.53 ID:???.net<> 引数の型が決まっている関数は毎回型チェックし、異なれば例外を投げるべきですか? <>
Name_Not_Found<>sage<>2014/07/03(木) 11:34:34.91 ID:???.net<> >>57
例外を投げるか型変換すべき <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/03(木) 17:21:42.45 ID:???.net<> intって使えたっけ? <>
59<>sage<>2014/07/03(木) 18:17:06.69 ID:???.net<> スレ間違えました <>
Name_Not_Found<>sage<>2014/07/03(木) 21:27:36.88 ID:???.net<> var a = "<hoge1hoge2>";
a.match(/<[^<>]+>/); // ["<hoge1hoge2>"]
返り値を"hoge1hoge2"にしたいのですがどうしたらいいですか
a.match(/<([^<>]+)>/)[1];としたらいけましたがマッチが一つだけのときこれは一般的でしょうか
あと<>以外は使わないからという理由で[^<>]+としてますけどこれも一般的な方法でしょうか <>
Name_Not_Found<>sage<>2014/07/03(木) 22:05:13.61 ID:???.net<> <([^<>^])>
にしたら顔に見える <>
Name_Not_Found<>sage<>2014/07/03(木) 22:45:32.62 ID:???.net<> letが使えるなら全てletにするべきですか? <>
Name_Not_Found<>sage<>2014/07/03(木) 22:54:42.99 ID:???.net<> >>63
古いブラウザの対応が要らないってことだよね?
ならletでいいんじゃないかな。
するべきとまでは言わないけど、letの方が好ましいし、
varを使う理由はないと思う。 <>
Name_Not_Found<>sage<>2014/07/04(金) 00:53:47.66 ID:???.net<> let it go〜 let it go〜 <>
Name_Not_Found<>sage<>2014/07/04(金) 05:10:53.80 ID:???.net<> >>61
例えば、http://aaa/bbb/ccc のaaaを取り出すには、
http://([^/]+)/ とする(エスケープを無視しています)
matchはオプション無しで、複数箇所に該当するの?
普通は、/パターン/g と、gオプションを付けると、
すべてにマッチするんだが <>
Name_Not_Found<>sage<>2014/07/04(金) 16:42:12.84 ID:???.net<> <div>
<p>a</p>
<p>b</p>
<p>c</p>
</div>
子要素がいくつあるかわからないjqueryでこんな感じで書いてるんですけど
$(document).on('click', 'div>p', function(e){
});
これを生のjavascriptでどういうふうに書くのか教えてください <>
Name_Not_Found<>sage<>2014/07/04(金) 16:50:02.33 ID:???.net<> ソース読め <>
Name_Not_Found<>sage<>2014/07/04(金) 17:43:43.23 ID:???.net<> var a = {a:1}
var b = {b:2}
aとbを結合して{a:1,b:2}にする方法を教えて下しあ <>
Name_Not_Found<>sage<>2014/07/04(金) 20:07:30.10 ID:???.net<> >>69
forで回して片方に一個ずつ追加、あるいはjqueryのextend <>
Name_Not_Found<>sage<>2014/07/04(金) 20:55:30.15 ID:???.net<> そんな地道な方法しかないのですかショック <>
Name_Not_Found<>sage<>2014/07/04(金) 21:05:18.30 ID:???.net<> 一行でかけるのに地道ってよくわからないが。
lodashを使ったら、一行で書ける。これより単純なものはないと思うけどね。
http://lodash.com/docs#merge
_.merge(names, ages);
// → { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] } <>
Name_Not_Found<><>2014/07/04(金) 21:57:08.49 ID:4REWN9O3.net<> $(".hoge") ← 複数あります
これにanimate()させたあと、全てのオブジェクトがアニメーションを終えてから
一度だけ実行される関数をコールバックさせるにはどうすればいいのでしょうか? <>
Name_Not_Found<>sage<>2014/07/04(金) 22:19:32.72 ID:???.net<> >>67
html
<div id="hoge">
<p>a</p>
<p>b</p>
<p>c</p>
</div>
javascript
var div = document.getElementById('hoge');
var nodes = div.childNodes;
var i=0,n;
for (;n=nodes[i++];) {
if (n.nodeName !== 'P') { continue; }
n.addEventListener('click',function(e){alert(e.clientY);},false);
} <>
Name_Not_Found<>sage<>2014/07/04(金) 22:28:11.42 ID:???.net<> >>73
複数ある$(".hoge")のすべてに、animate()の終わりに自分以外のanimate()が終了していたら
コールバック実行それ以外スルー、というフラグを立てる <>
Name_Not_Found<>sage<>2014/07/04(金) 22:44:39.74 ID:???.net<> >>75
それはダサいね。
最近はフラグ=バッドノウハウ と考えていいぐらいだと思うわ。
promise使えるんだからそれでできるじゃない?って
思ったらこんなの見つけた。
http://tsmd.hateblo.jp/entry/2013/01/18/173509
試してないけど、これでいいんじゃね? <>
Name_Not_Found<>sage<>2014/07/04(金) 22:47:29.36 ID:???.net<> >>74
そりゃだめだろw
$(document).on(イベント, セレクタ)の形をとってるんだから
addEventListernerはdocumentiに対して実行しなきゃ。
と問題の指摘はするけど、面倒だから俺は書く気無いけどね。
素直にjQuery使えと。 <>
Name_Not_Found<>sage<>2014/07/04(金) 23:15:32.17 ID:???.net<> >>67
document.addEventListener('click', function (event) {
var target = event.target, parentNode = target.parentNode;
if (target.tagName !== 'P' || !parentNode || parentNode.tagName !== 'DIV') {
return;
}
// 処理
}, false); <>
Name_Not_Found<>sage<>2014/07/04(金) 23:23:51.14 ID:???.net<> 意外と知られてないけど、jQueryで
$(document).on('click', 'div>p', function(e){
});
ってやったとき、div>p にマッチする要素だけじゃなくて、その子要素をクリックしてもハンドラが呼ばれる
ソースを読むと、targetがセレクタにマッチしてるかどうかだけではなくて、
targetの祖先要素がセレクタに引っ掛かるかも調べてる <>
Name_Not_Found<>sage<>2014/07/04(金) 23:35:12.72 ID:???.net<> >>79
つまり、
<a href="URL"><strong>ここ</strong>をクリック</a>
っていう場合の、「ここ」をクリックしてもリンクが
発動するのと同じことでしょ?
あたりまえだと思うのだけど。 <>
Name_Not_Found<>sage<>2014/07/04(金) 23:39:24.24 ID:???.net<> >>75
>>76
ありがとうございました。 <>
Name_Not_Found<>sage<>2014/07/04(金) 23:39:33.40 ID:???.net<> >>78がそうなってないって言いたいんだろ <>
Name_Not_Found<>sage<>2014/07/04(金) 23:41:06.06 ID:???.net<> 意外と知られてないって書いてあるから、
よく知られてるって言ってるんだよ。 <>
Name_Not_Found<>sage<>2014/07/04(金) 23:41:22.65 ID:???.net<> >>75
>>76
ありがとうございました。 <>
Name_Not_Found<>sage<>2014/07/04(金) 23:42:06.63 ID:???.net<> jQueryと同等のものを書こうとすると
大変だなぁってのがよく分かるね。 <>
78<>sage<>2014/07/04(金) 23:56:09.26 ID:???.net<> >>80
確かにそうだけど、>67では接触しないから端折った
parentNodeを遡ればいいから修正はそれほど難しくないかと <>
Name_Not_Found<>sage<>2014/07/05(土) 17:43:16.25 ID:???.net<> イベントハンドラを設定した要素を削除したときってイベントハンドラの情報はメモリに残ったままになりますか? <>
Name_Not_Found<>sage<>2014/07/05(土) 17:45:49.76 ID:???.net<> ブラウザにバグとかなければ大丈夫だと思うが、
そういう時でも安全に要素を削除できるというのが
jQueryのメリットの一つだし、特定のブラウザでは問題あるかもね。 <>
Name_Not_Found<>sage<>2014/07/05(土) 18:04:10.93 ID:???.net<> つまりイベントハンドラを削除してから要素を削除するべきですか? <>
Name_Not_Found<>sage<>2014/07/05(土) 18:44:26.85 ID:???.net<> >>74
そもそもこれは子要素全てにイベント定義してるから>>67のとずれてるよね <>
Name_Not_Found<>sage<>2014/07/05(土) 18:55:07.45 ID:???.net<> 仕事でやる場合javascriptをそのまま書くのとjqueryなどの総合ライブラリを使うのどっちが多いですか? <>
Name_Not_Found<>sage<>2014/07/05(土) 19:07:07.29 ID:???.net<> >>91
いろんな企業のサイト見て、jQuery使っているかどうか判断すればいい。 <>
Name_Not_Found<>sage<>2014/07/05(土) 19:09:42.01 ID:???.net<> jQuery使っている所が大半だろ。
そうじゃない所はjQueryでは力不足で
もっと大きなライブラリを使うような所 <>
Name_Not_Found<>sage<>2014/07/05(土) 20:22:35.36 ID:???.net<> >>89
jqueryを使ってないならそうする <>
Name_Not_Found<>sage<>2014/07/05(土) 20:23:22.09 ID:???.net<> >>91
jqueryはもはやJavaScriptの一部みたいなものなので使わないことはあり得ない <>
Name_Not_Found<>sage<>2014/07/05(土) 20:53:22.99 ID:???.net<> プログラマ業界ではjavascriptの仕事は多いですか? <>
Name_Not_Found<>sage<>2014/07/05(土) 21:10:38.47 ID:???.net<> >>89
removeChild してから removeEventListener でも良い
どちらにしても removeEventListener は実行する <>
Name_Not_Found<>sage<>2014/07/05(土) 22:57:42.42 ID:???.net<> >>96
いわゆるフロントエンドエンジニアになりたいならjsに精通してて1から書けたりメンテナンスができるような知識が必要。最近はそういう需要が増えていると思う。 <>
Name_Not_Found<>sage<>2014/07/06(日) 00:10:16.15 ID:???.net<> foo && ( bar = func(c) );
こんな形の式ってどういう処理になるんですか?
if条件になってるわけでも、結果を何かに代入してるわけでもないし、ビット演算かと思ったら違うみたいだし <>
Name_Not_Found<>sage<>2014/07/06(日) 00:25:17.72 ID:???.net<> 糞コードだねw
if (foo) {
bar = func(c);
}
これと一緒。 <>
Name_Not_Found<>sage<>2014/07/06(日) 00:29:46.73 ID:???.net<> >>100
あー、なるほど!処理順か!納得した納得できた
どこで見つけたコードかというとyoutubeのhtml5playerのjavascript文
読みにくくて仕方ないわ <>
Name_Not_Found<>sage<>2014/07/06(日) 00:32:08.09 ID:???.net<> 別にクソコードじゃないよ
そういう書き方をしたい場合もある <>
101<>sage<>2014/07/06(日) 00:34:54.55 ID:???.net<> >>100
お礼が欠けてました、ありがとうございます。いや助かった
評価の順番といわれるまで何のことだか全然わからなかった、よく考え付くもんだほんと <>
Name_Not_Found<>sage<>2014/07/06(日) 00:39:37.48 ID:???.net<> わざと読みにくくさせる
つまり暗号化させたい時w <>
Name_Not_Found<>sage<>2014/07/06(日) 00:46:51.19 ID:???.net<> Googleはショートコーディングの為に使うが、機械化してるので元々は難読なコードではない <>
Name_Not_Found<>sage<>2014/07/06(日) 01:07:16.87 ID:???.net<> 圧縮するとそういう風になるんだね <>
Name_Not_Found<>sage<>2014/07/06(日) 01:14:44.64 ID:???.net<> function hoge(a) {
console.log(a || 'ふが');
}
hoge('ほげ') // ほげ
hoge(); // ふが
みたいなやつも最初演算だと思ってわからなかった
とくに”ふが”の部分が0とかだったりすると
ますます何がわからないのかわからない状態に陥ってた <>
Name_Not_Found<>sage<>2014/07/06(日) 01:48:56.35 ID:???.net<> perl使いが>>99みたいな書き方するよね。 <>
Name_Not_Found<>sage<>2014/07/06(日) 01:58:34.44 ID:???.net<> Perlだったら
bar = func(c) if foo;
こう書けば良い。もっと綺麗に書ける。 <>
Name_Not_Found<>sage<>2014/07/06(日) 03:07:41.71 ID:???.net<> 複数のWebブラウザ(PCのほかにスマホ含む)でAjax的な動作をさせたい場合に
どのようなアプローチが効率的ですか?
とりあえず思いつく線だと
1.ECMAネイティブで記述する
最近はIE6みたいな俺実装ブラウザは減った気がする。実行速度的に有利?
2.Ajaxフレームワークを用いる
コーディングは楽になりそうだけど、フレームワーク内の見通しがよくない他
コードが増加しデバッグやの手間も増える気がする <>
Name_Not_Found<>sage<>2014/07/06(日) 03:24:21.87 ID:???.net<> PaaSでnode.js利用してSoket.IOを使う どや! <>
Name_Not_Found<>sage<>2014/07/06(日) 04:01:01.44 ID:???.net<> どうせjqueryは使うんだからjqueryでやるのがいいんじゃない <>
Name_Not_Found<>sage<>2014/07/06(日) 05:29:32.53 ID:???.net<> ネイティブで、そこそこの時間で書けるならそれが一番じゃねーの
事前にどこまでをサーバ側にさせるか良く考えればあんまり問題おきないし <>
Name_Not_Found<>sage<>2014/07/06(日) 07:36:21.22 ID:???.net<> >>110
> 1.ECMAネイティブで記述する
ECMAScript には XMLHttpRequest も ActiveXObject も存在しない
3. XMLHttpRequest, ActiveXObject を用いる
コーディング分岐はたいしたことはないのでこれで十分 <>
Name_Not_Found<>sage<>2014/07/06(日) 07:43:13.64 ID:???.net<> jquery使えば分岐もいらない <>
Name_Not_Found<>sage<>2014/07/06(日) 08:40:20.93 ID:???.net<> ネイティブJavaScriptで書いてる人は独自ライブラリを持っているだろうから、ライブラリ云々は問題じゃない
自分で使い慣れたものが一番いい
勉強する気があるなら両方書いてみるといい <>
Name_Not_Found<>sage<>2014/07/06(日) 11:08:28.54 ID:???.net<> 沢山の人々に使われ、それだけ鍛えられているjqueryを使わず
わざわざ自作ライブラリを使う意味がワカンネ <>
Name_Not_Found<>sage<>2014/07/06(日) 11:25:27.15 ID:???.net<> >>99
&& を「ならば」に読み替えるというのもあるな <>
110<>sage<>2014/07/06(日) 12:23:32.65 ID:???.net<> レスありがとうございます
過去に複数のWebブラウザに対応(ただしPC限定)したAjaxアプリ的なのを作ったことが
あるのを思い出して今確認してみました。結構古い物ですが当時の実装は・・・
Webブラウザの対応はFirefox3.0とIE8のIE6モードでXMLHttpRequestとaddEventListenerを
自作ライブラリで抽象化していました。開発時にはPC版のChromeとSafari、IE6でも期待した
動作をすることを確認していたはず・・・モバイル環境は未考慮でマウスUI前提です
現行のWebブラウザに対応する場合はXMLHttpRequestの処置は必要みたいですが
addEventListenerはそのまま書いて大丈夫そうですね
>>114
なるほど、そういうことなのですか。勉強になりました
> jQuery
こういうAjaxフレームワークって罠とかないのですかね?
Webブラウザの差違が完全に吸収されて、かつ動作が安定している(せめてWin32API程度には)ので
あれば使う価値があるかなと思います
中途半端に動くようなトラブルはフレームワーク内部にまで立ち入ったデバッグが必要になって苦労する
場合があるので勘弁願いたいです。昔、WinアプリでGUIフレームワークを使ったときに、この手のトラブルで
だいぶ苦労した記憶があるので、ネイティブで書いた方が最終的に楽なのではという気持ちはあります <>
Name_Not_Found<>sage<>2014/07/06(日) 13:54:58.91 ID:???.net<> > こういうAjaxフレームワークって罠とかないのですかね?
自分で作ったものには、罠があるよ。
なにせ全部のブラウザで試してないだろう?
特定のブラウザで動かないことは多いだろう。
それに自分で作ったものは、中途半端でトラブルで
ソースコード内部にまで立ち入ってデバッグしなければならない。
自分で作ってるから他の誰もデバッグしてくれないしな。
そしてネイティブで書くと、各ブラウザで発生するトラブルを
全部一人で解決していかなければならない。
そしてひとしきり解決して思うことは、
今自分はjQueryの劣化版を作ってるだけなんだってこと。 <>
Name_Not_Found<>sage<>2014/07/06(日) 14:33:08.08 ID:???.net<> jQuery妄信もそれはそれでどうかと思うがな <>
Name_Not_Found<>sage<>2014/07/06(日) 15:06:58.47 ID:???.net<> jqueryはデカイからな <>
Name_Not_Found<>sage<>2014/07/06(日) 15:19:14.76 ID:???.net<> jQueryを使おうが何を使おうがトラブルが起きた時に解決しなきゃいけないのは結局自分じゃね?w <>
Name_Not_Found<><>2014/07/06(日) 16:35:12.61 ID:obw+ibA0.net<> ランダムで数字を発生させて、その発生させた数字に従って、変数を処理したいと思っています。
(例えば、rndで0がでたとして「りんご」を表示したい)
下記のようにしたのですが、失敗しました。
どうすればいいですか?
var ans0 = "りんご"
var ans1 = "みかん"
var ans2 = "バナナ"
var rnd = Math.floor( Math.random() * 2 );
document.write(ans + rnd); <>
Name_Not_Found<>sage<>2014/07/06(日) 18:15:25.39 ID:???.net<> >>124
ans + rnd は、
変数 ans の値と変数 rnd の値に対し、 + 演算子による演算を行う、と解釈される
(「変数」と書いたがプロパティの場合もあり得る。が、ここでは本質的でないので説明は省く)
ここでは ans という名前の変数は宣言されていないのでエラーになる
ans という名前と、 rnd の値に対し、文字列の連結演算を行うわけではない
そのようにしたい場合は "ans" + rnd と書かなければならない
次に
document.write("ans" + rnd);
に変えたとしても、 "ans" + rnd の結果は、変数名ではなく、文字列と解釈されるので
"ans0" "ans1" 等々が単に文字列として出力されることになる
結果の文字列に「対応する」値を出力させたいなら、連想配列を利用する必要がある
var answers = {
ans0: "りんご",
ans1: "みかん"
ans2: "バナナ"
}
document.write( answers["ans" + rnd] ); <>
Name_Not_Found<>sage<>2014/07/06(日) 18:48:59.39 ID:???.net<> 普通に考えたらこうやるべきだけどな。
var answers = ["りんご", "みかん", "バナナ"];
document.write( answers[rnd] ); <>
Name_Not_Found<>sage<>2014/07/06(日) 21:03:09.71 ID:???.net<> >>125-126
ありがとうございます。
「document.write(ans0); 」と直接指定したときには、「りんご」と直接表示されたので、なんで出ないのか困っていました。
もう一つお聞きしたいのですが、「document.write (ans[rnd])」と書いてはなぜダメなのでしょうか? <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/06(日) 23:05:05.32 ID:???.net<> ソレ配列じゃん
変数と配列の違いでググれ <>
Name_Not_Found<>sage<>2014/07/06(日) 23:10:26.17 ID:???.net<> >>127
ans[rnd] は ans0 等ではなく ans[0] 等に評価される
これは ans という名前のオブジェクト変数/配列変数の 0 という名前/インデックスのメンバを表す
しかし ans という名前の変数は宣言されていないのでエラーになる
コードというのはなるべく簡単に表記できるように
( ans[0] を「ans という名前の…」などと書かなくとも済むように)
背景の仕組みは可能な限り省略され、
冗長な部分は可能な限り削ぎ落として
記される、記せるようになっているのが常だ
コードの表層ばかり見ていてはだめで、背景の仕組みをもっと理解する必要がある <>
Name_Not_Found<>sage<>2014/07/06(日) 23:11:56.99 ID:???.net<> jqueryのmouseleaveハンドラで要素を消しているのですが、
稀に何かのタイミングでその要素が残ることがあります
しかし条件が分からないのです
mouseleaveが発生しない条件って何でしょう? <>
Name_Not_Found<>sage<>2014/07/06(日) 23:58:18.66 ID:???.net<> mouseout系は、その一回のイベントを受け損ねたら
ずっと残り続けてしまうので、
脆弱だとは言えると思います
とはいえjqueryのmouseleaveはかなりの強固なので、
信用していたのですが・・ <>
Name_Not_Found<>sage<>2014/07/07(月) 00:22:39.44 ID:???.net<> >>98
遅レスですがここの質問がある程度わかりオライリーをある程度読めれば普通の会社くらいは行けますか? <>
Name_Not_Found<>sage<>2014/07/07(月) 00:49:28.97 ID:???.net<> バナナが絶対選ばれないのは誰も指摘しないのか <>
Name_Not_Found<>sage<>2014/07/07(月) 01:24:58.28 ID:???.net<> だってバナナだし <>
Name_Not_Found<>sage<>2014/07/07(月) 01:29:35.03 ID:???.net<> >>132
はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013
オブジェクト指向、DOMについて、
各100ページの説明があるので、おすすめ <>
Name_Not_Found<>sage<>2014/07/07(月) 01:41:34.69 ID:???.net<> >>135
それ前にこのスレに書かれて叩かれてた本やん
遠回しな叩きか? <>
Name_Not_Found<>sage<>2014/07/07(月) 04:09:42.11 ID:???.net<> >>132
何が普通でどういうレベルの募集に対応したいのか知らんが
設計済みならコーディングは一通り出来ます、って人が多いんじゃないかな、ライバルは
個人的には「自分、英語ダメなんでwww」っていうのが困る <>
Name_Not_Found<>sage<>2014/07/07(月) 05:23:01.23 ID:???.net<> プロになりたいならプロが作る程度のものを作れるようになればいい
どのくらいの知識があれば会社に入れるかとか、そんなこと考える必要ない <>
Name_Not_Found<>sage<>2014/07/07(月) 12:15:52.01 ID:???.net<> >>132
twitterでjavascriptのネタをつぶやいたり批判したりできるぐらいの実力が無いと大手は無理ですが
底辺の会社ならいけますね <>
Name_Not_Found<>sage<>2014/07/07(月) 15:33:04.81 ID:???.net<> ブール値の変数名はboolとbooleanどっちがいいですか? <>
Name_Not_Found<>sage<>2014/07/07(月) 19:01:54.42 ID:???.net<> 自分では何も考える気のない丸投げ質問ばかりだな <>
Name_Not_Found<>sage<>2014/07/07(月) 19:30:45.30 ID:???.net<> >>140
俺だったら値のタイプじゃなくて値を何に使うかで名前つけるけど <>
Name_Not_Found<>sage<>2014/07/07(月) 21:33:57.59 ID:???.net<> >>135
俺もこれ読む価値あると思う。
object、prototypeなどの概念については詳しい。
学習始めて2冊めくらいに読むにはいいんじゃないか。
そのぶんjquery等の即使える技術については言及が少ないが。 <>
Name_Not_Found<>sage<>2014/07/07(月) 22:43:17.20 ID:???.net<> >>135
またお前か? この本はだめだって過去スレでやっただろ
+ JavaScript の質問用スレッド vol.114 +
http://toro.2ch.net/test/read.cgi/hp/1394931594/743
743 :Name_Not_Found:2014/04/25(金) 13:36:40.15 ID:???
コードあるじゃん。レビューできるなw
http://www.shuwasystem.co.jp/products/7980html/3813.html
ダメなコード例、注意点として書いてあるだけかもしれないけど見ててもやっとした点。
全体的に、カンマ、forのセミコロンの後にスペースがない。時々ある(統一されてない)
関数は基本的にグローバル空間に定義(無名関数ほぼ無し)
クラスの作り方が入門書にしては詳しいが、Javaっぽくて、JavaScript風ではない。
=== が使われていない。
・chap2.txt いきなりconst。まあこれ以降使ってないみたいだから単なる説明か。
・chap4.txt 配列に for in 使ってる。
・chap5.txt 非標準のconstructor.nameがでてきてる。
・chap7.txt <body onload="init()"> とか書いてある。
以前の章にsortとかmapとか出てきてるのに、関数の引数に無名関数を直接渡すのがaddEventLisnerだけ。
・chap9.txt いきなりハンガリアン使い出したと思ったら、docCookiesはこれかhttps://developer.mozilla.org/ja/docs/DOM/document.cookie
PHPでてきてんだけど、なんで最終行でflush()わざわざ実行してんの?
いきなりInt8Array使ってんだけど?
・chap10.txt jQuery使ってるのはこれだけ(入門書ならまあいいが)
jQueryの処理の開始で普通に使う$(function() {})ではなく、$(window).load(function() {} )を使っている。
$("#msg").each(・・・)使うのが普通の所で、わざわざ$.each($("$msg"), ・・・)を使ってる。
感心できる点・・・無し
典型的な入門書。たぶんMDCみながら初心者向けっぽいのをピックアップしただけで筋道立てて教えていない。
ぐぐってサンプル見つけてまとめただけ。最新、または常識的なやり方を知らず作者の実経験レベルは低い。
というのが俺の印象。本気で勉強したいときに見る本ではなく良書にはなりえない。 <>
Name_Not_Found<>sage<>2014/07/07(月) 22:59:21.56 ID:???.net<> >>132
ある程度の範囲が曖昧すぎて回答できない
オライリー本も何の本か書いてないので答えられない
最近、出ている質問には全て答えられないとやってけないと思う
DOM, ECMAScript, XMLHttpRequest 等の代表的なAPIのマスターは必要条件
書籍は『JavaScript 第6版』を熟読
まず、書籍の内容が理解できる程度に習得してから徐々に慣らしていく
自分でイメージしたプログラムを他人のコードをコピペせずに作れるようになれば一人前
jQuery等のライブラリは使うだけじゃなく、jQueryコードがどのように動いているか、コードリーディングで把握できる力を身につける
ブラックボックス化したコード(読む力がないから読まない)に依存することほど危険な事はない <>
Name_Not_Found<>sage<>2014/07/07(月) 23:17:38.02 ID:???.net<> 仕事で必要になったときすぐ勉強して覚えられる人なら普通の会社でやってけるよ <>
Name_Not_Found<>sage<>2014/07/07(月) 23:29:56.87 ID:???.net<> >>143
著者さん宣伝ご苦労様です <>
Name_Not_Found<>sage<>2014/07/07(月) 23:37:11.13 ID:???.net<> >>135
本の紹介なんて望んでない展開なのに唐突でわろた <>
Name_Not_Found<>sage<>2014/07/08(火) 00:56:10.54 ID:???.net<> セッターメソッドの場合は型を変数名にするのは当然だと思いますが?
setHoge(str)
とするのなら
setHoge(bool)
とするのは自然なことです
したがってboolかbooleanかは妥当な疑問だと思いますが? <>
Name_Not_Found<>sage<>2014/07/08(火) 00:57:24.02 ID:???.net<> 文字列の変数名をstringでなくstrにするように
booleanもboolにするのがいいですね <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/08(火) 01:09:55.28 ID:???.net<> 俺はF(フラグ)で置き換える <>
Name_Not_Found<>sage<>2014/07/08(火) 01:11:32.39 ID:???.net<> boolだからといってフラグとは限らないんじゃね <>
Name_Not_Found<>sage<>2014/07/08(火) 01:41:17.56 ID:???.net<> booleanはTypeScriptの予約語だから念のため止めとけ <>
Name_Not_Found<>sage<>2014/07/08(火) 01:47:41.40 ID:???.net<> ありがとうございました <>
Name_Not_Found<>sage<>2014/07/08(火) 01:57:26.44 ID:???.net<> >最近、出ている質問には全て答えられないとやってけない
んなこたない
必要なのは知識ではなく問題を解決していく力 <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/08(火) 02:15:49.56 ID:???.net<> つまりコーティングよりデバックのほうが大事だと <>
Name_Not_Found<>sage<>2014/07/08(火) 04:27:00.32 ID:???.net<> だが使えるヤツかやってけるヤツかどうかと
それ以前に採用されるヤツかどうかは別問題 <>
Name_Not_Found<>sage<>2014/07/08(火) 10:54:15.99 ID:???.net<> 非同期処理が終わらない間は次の非同期処理を始められないようにするには
どうしたらいいですか? <>
Name_Not_Found<>sage<>2014/07/08(火) 10:57:31.75 ID:???.net<> 最初の非同期処理の結果が出るのをwhileでずっと待たせておけばいんじゃね <>
Name_Not_Found<>sage<>2014/07/08(火) 11:29:02.74 ID:???.net<> >>158
promise使うとか
>>159
javascriptはシングルスレッドだからあかん <>
Name_Not_Found<>sage<>2014/07/08(火) 11:45:28.49 ID:???.net<> 今のこれまでのIEでpromise動くん <>
Name_Not_Found<>sage<>2014/07/08(火) 13:58:51.72 ID:???.net<> >>158
非同期処理の最終Statementで次の非同期処理を呼び出すだけ
難しく考えすぎ <>
Name_Not_Found<>sage<>2014/07/08(火) 14:21:29.94 ID:???.net<> >>151
自分はis_hogehogeになることが多い気がする
何れにせよコメント以外でboolって書くことはほとんどないなあ <>
Name_Not_Found<><>2014/07/08(火) 14:46:10.65 ID:+dRy9zTHk<>サイト背景に表示している背景画像(横2000×縦1000、90KB)が、
段階的に表示されてしまい、困っています。
サイト上の画像はすべて、
可能な限り圧縮して、サイズを小さくしています。
□□□□□
□ A □
□□□□□
□ B □
□□□□□
□ C □
□□□□□
一番上のAの位置までは、瞬時に表示されるのですが、
jQueryの B「MegaMenu」、C「広告用スライドショー」を利用しており、
Bの位置、Cの位置で、0.2秒くらい止まってしまい、見苦しいです。
これを改善するには、どのような方法があるでしょうか?
参考になるサイトなどありましたら、教えていただけると助かります。<>
Name_Not_Found<>sage<>2014/07/08(火) 15:06:01.73 ID:???.net<> >>158
requestAnimationFrame(かsetTimeout)で処理が終わるかどうかを定期的にポーリングする
その際には状態遷移(いわゆるステートマシンの作成)をする必要はある
世の中非同期処理にはpromiseとか言ってるが、一定間隔のポーリングが一番簡単
ゲームはみんなそうやっているが、デメリットもあるので必ず適合するわけではない <>
Name_Not_Found<>sage<>2014/07/08(火) 19:06:03.40 ID:???.net<> >>149
String 型の汎用関数内なら変数名「string」は自然だが、「セッターメソッド→変数名string」は自然ではない
セッターメソッドは必ずしも汎用関数ではないからだ
例えば、String.prototype.trim はString型に対しての汎用関数だから変数名stringは自然だろう
同じ理屈で Boolean型の汎用関数なら変数名「boolean」は自然といえるが、true, false 以外に値のないBoolean型で汎用関数は想像し難い
それが Boolean.protype に存在するに足る関数で宣言された変数ならば、変数名「boolean」は相応しいだろう <>
Name_Not_Found<>sage<>2014/07/08(火) 21:05:18.87 ID:???.net<> >>165
> 世の中非同期処理にはpromiseとか言ってるが、一定間隔のポーリングが一番簡単
> ゲームはみんなそうやっているが、デメリットもあるので必ず適合するわけではない
ポーリングは効率が悪い。チェックする間隔を短くすれば負荷が高まるし、
間隔を長くすれば、遅延が起きる。
そこで効率よくしようという発想で改善されたのが非同期処理。
promiseはその非同期処理を簡単に書けるようにしたもの。
ポーリングがダメというのを出発点として、それに代わるいい方法をってことで
できたものなんだから、今更ポーリングにするのは時代を逆行してるよ。
ゲームではそうやっているというが、ゲームだけが例外。
ゲームは画面更新間隔(フレーム)というものが存在し、この1フレームは1秒間に
30回だったり60回だったりするんだが、1フレーム内でユーザーの入力を検出する。
つまり、画面の更新間隔と入力検出が同期取られてるわけ。これにより1フレームで
入力できるのは1回だけというふうに公平なゲームとして安定した動作がさせられる。
でもこれはゲーム特有の話で、普通のアプリには参考にならない。 <>
Name_Not_Found<>sage<>2014/07/09(水) 01:04:35.81 ID:???.net<> >>167
別にポーリングが万能とは思わないけど、どんなUIであろうと画面を1/60以上の頻度で更新する事は無理だ
(最近は240Hzのゲーミングモニターとかはあるが…)
だから、1/60秒単位でポーリングするからといってパフォーマンス的に問題がある事はない
通常の非同期処理と混ぜる事も出来るし、一つの方法論として考えてもらうだけでいいよ <>
Name_Not_Found<>sage<>2014/07/09(水) 01:57:31.84 ID:???.net<> promiseって初耳なんですけど
常識なんですか? <>
Name_Not_Found<>sage<>2014/07/09(水) 02:45:52.56 ID:???.net<> javascript promiseでぐぐって察してください <>
135<>sage<>2014/07/09(水) 04:57:47.63 ID:???.net<> このスレには、ろくにわかっていないクセに、
外人の本やライブラリを、神の如くあがめる香具師がいる
知識なんてネット上に無限にある
あるけど皆、東大に合格できないだろ?
大事なのは知識の多さではなく、本人の吸収率や上達である。
だから、個別教育が重要。
初心者は、日本人の簡単な本で勉強したらよい
難しい外人の本を読んでも、時間のムダで、吸収率が悪い
実際に漏れは、その本を読んで上達した。
やり方さえ覚えれば、知識はネットで調べればよい
知識なんて枝葉末節だし、すぐ変化するもの
それにプログラムはデバッグしながら、間違えながら作るもの
些細な知識よりも、大まかな手順を覚えること
試行錯誤しながら進むのが、人生 <>
Name_Not_Found<>sage<>2014/07/09(水) 05:02:24.16 ID:???.net<> 技術に日本人も外国人もないだろ
「日本人の簡単な本」って何だよ <>
135<>sage<>2014/07/09(水) 06:10:24.22 ID:???.net<> 外人の本は、書きなぐりみたいな雑な本が多い
文章が長いくせに、何を言っているかわからない。
図が無い。レイアウトが悪い。
カラーじゃなく、白黒だけの本
日本人の本の方が、レイアウトや構成、視認性がよく、
短時間で理解できる
またその本に何を書かないか、というのも重要。
特に重箱の隅をつつくような知識は、
載せても覚えられないし、吸収率も悪く、時間のムダ
実際に必要になった時に、調べたらすむ
資格の学校のTACみたいなのが、理にかなっている
必要最小限の知識と勉強時間で、
200時間の勉強で、ギリギリ60点で合格 <>
Name_Not_Found<>sage<>2014/07/09(水) 06:15:39.35 ID:???.net<> そうか?
ジャップ本はマニュアルをそのまま転載したような本が多い印象 <>
Name_Not_Found<>sage<>2014/07/09(水) 06:36:04.45 ID:???.net<> 国籍関わらず、人によるわ
特定の人を持ち上げようとするのに国籍持ち出してくるのはちょっと無理がある
// 個人的にはオライリー本は好かんが <>
Name_Not_Found<>sage<>2014/07/09(水) 07:22:14.69 ID:???.net<> プロミスっていうのはIEで使えないようですね <>
Name_Not_Found<>sage<>2014/07/09(水) 09:13:55.03 ID:???.net<> いくつかのボタンがあり、それを押すと処理が走ります
その処理の中にはそこそこ重いものものあります
重い処理の途中にボタンをクリックされ、更に他の処理が走り出すと
整合性がおかしくなる可能性があります
このような場合、どうやるのがセオリーでしょうか?
ボタンを押した時にキューを積んで、それを順次する処理するなどでしょうか? <>
Name_Not_Found<>sage<>2014/07/09(水) 09:48:20.58 ID:???.net<> 複数の行で構成された巨大なデータをajaxでサーバに送信する場合、
ブラウザが途中で落とされる可能性もあると思います
するとデータが不整合を起こすはずです
サーバ側で、データを全て受信してから書き込む、みたいな処理にしないといけないのでしょうか? <>
Name_Not_Found<>sage<>2014/07/09(水) 09:57:02.77 ID:???.net<> javascript特有の問題なの? <>
Name_Not_Found<>sage<>2014/07/09(水) 10:13:43.27 ID:???.net<> 具体的にどうしてるかって話だろ
何が言いたいんだカスが <>
Name_Not_Found<>sage<>2014/07/09(水) 10:16:35.64 ID:???.net<> JavaScriptの話以外が気にくわない奴はプログラム板のこっちに行っとけ
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/ <>
Name_Not_Found<>sage<>2014/07/09(水) 10:42:31.63 ID:???.net<> GoogleのDart言語がECMAの標準規格になる
http://jp.techcrunch.com/2014/07/09/20140708googles-dart-language-is-now-an-official-ecma-standard/
JavaScriptはどうなるんです? <>
Name_Not_Found<>sage<>2014/07/09(水) 11:01:00.46 ID:???.net<> IEはどうするんです? <>
Name_Not_Found<>sage<>2014/07/09(水) 13:29:07.29 ID:???.net<> >>178
明らかにサーバサイドの問題だから該当言語のスレに行くべし <>
Name_Not_Found<>sage<>2014/07/09(水) 13:44:51.20 ID:???.net<> ajaxはサーバサイドじゃねーから。
サーバにアクセスする部分はサーバクライアント両方の要素があるのは当然のことだ <>
Name_Not_Found<>sage<>2014/07/09(水) 13:50:33.86 ID:???.net<> >>177
処理の間ボタンをdisabledやreturn falseにしておけば? <>
Name_Not_Found<>sage<>2014/07/09(水) 19:20:42.88 ID:???.net<> >>185
フィイル出力はサーバサイドの処理 <>
Name_Not_Found<>sage<>2014/07/09(水) 19:47:26.35 ID:???.net<> そもそも、TCP/IPはエラー補正機能が付いているけど、どういう原理でデータ損失が起きる事を想定してるの?
サーバ側からすればAjaxだろうが、form送信だろうが変わらないけど、Ajax特有の問題がどうやって発生するの? <>
Name_Not_Found<>sage<>2014/07/09(水) 21:34:56.41 ID:???.net<> >>178
その辺はWebサーバがうまいことやってくれんかね <>
Name_Not_Found<>sage<>2014/07/09(水) 21:56:15.09 ID:???.net<> 複数のオブジェクトのデータを送る時、
何も考えずにループで送り、サーバ側も順次それをサーバに書き込んでいくと
クライアントサイドのロジックにデータの保全性が依存してしまう
それを避けるためにどうしてるかという問題
TCP/IPの話なんぞしてない
ど素人は寝とけ <>
Name_Not_Found<>sage<>2014/07/09(水) 22:16:08.71 ID:???.net<> どこから、「複数のオブジェクトのデータを送る」って話になったんだ?
一つの巨大なデータの話だろ。 <>
Name_Not_Found<>sage<>2014/07/09(水) 22:26:47.64 ID:???.net<> ブラウザが途中で落とされた時とかいう話をしてるけどさ、
これってネットワークが途中で切れたりした時にも当てはまるんだよ。
だからAjaxの話とか関係なく、いままではどうしていたの?って話。
一般的なシステムの場合、データが全て届いてから処理が開始される。
もしストリーミングで受信するタイプの場合、
つまり、データが全て届かなくても処理するタイプの場合ね。
そういうものは、トランザクション処理でも仕込んでおいて、
データが完了しなければ、処理をなかったことにすればいい。 <>
Name_Not_Found<>sage<>2014/07/09(水) 22:56:40.94 ID:???.net<> 分かり切った一般論を抜かし出す奴なんなんだよ
具体的にどうしてるのかって話
書いたことないなら黙っとけ <>
Name_Not_Found<>sage<>2014/07/09(水) 22:59:28.82 ID:???.net<> >>193
お前のレスになんか意味があるのか?
分かりきった話なのに、其の質問をしているんだから、
そいつには、わかってないんだろう?
その答えが、分かりきったものになるのは当たり前の話だ。
なぜ分かりきった一般論を書いてはダメなのだ? <>
Name_Not_Found<>sage<>2014/07/09(水) 23:00:08.73 ID:???.net<> >>191
お前がアスペなだけ
一つのデータなら整合性は問題にならないんだから
こんな疑問が出るわけもない <>
Name_Not_Found<>sage<>2014/07/09(水) 23:01:21.23 ID:???.net<> >>194
お前書いたことあんの?
ないならお前には聞いてないから黙っとけ
お前が出る幕じゃないんだよ <>
Name_Not_Found<>sage<>2014/07/09(水) 23:11:26.57 ID:???.net<> >>196
あるから、黙る必要はないなw <>
Name_Not_Found<>sage<>2014/07/09(水) 23:12:40.98 ID:???.net<> >>195
> 一つのデータなら整合性は問題にならないんだから
なる場合もある。無知は黙ってろ <>
Name_Not_Found<>sage<>2014/07/09(水) 23:20:38.82 ID:???.net<> 複数行のデータとかループして送るとか言ってるから、
行単位でPOSTするつもりなんだろwwwwwwww <>
Name_Not_Found<>sage<>2014/07/09(水) 23:27:51.70 ID:???.net<> > 177 名前:Name_Not_Found[sage] 投稿日:2014/07/09(水) 09:48:20.58 ID:???
> 複数の行で構成された巨大なデータをajaxでサーバに送信する場合、
元々の質問者はループなんて言ってないな。
ループって言い出したのはこいつか
> 189 名前:Name_Not_Found[sage] 投稿日:2014/07/09(水) 21:56:15.09 ID:???
> 複数のオブジェクトのデータを送る時、
> 何も考えずにループで送り、サーバ側も順次それをサーバに書き込んでいくと
まったく、なんで複数のオブジェクトとかいう話を
しだいているんだろうこいつ。馬鹿じゃんw <>
Name_Not_Found<>sage<>2014/07/10(木) 06:29:20.51 ID:???.net<> なんでsleepがなかったりと、基本的にノンブロッキングな仕様なんでしょうか?
ブラウザに組み込むために必要な仕様なんでしょうか? <>
Name_Not_Found<>sage<>2014/07/10(木) 08:41:51.69 ID:???.net<> 必要ないからです <>
Name_Not_Found<>sage<>2014/07/10(木) 08:47:21.53 ID:???.net<> 複数データを送る話とは思えないが、仮にそうだとしても不整合が起きるのはファイルをロックせずに多重書き込みする場合
明らかにサーバの問題だろう <>
Name_Not_Found<>sage<>2014/07/10(木) 08:53:12.25 ID:???.net<> プログラム板の次スレ
荒らしを嫌う人はこちらにどうぞ
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/ <>
Name_Not_Found<>sage<>2014/07/10(木) 09:54:59.85 ID:???.net<> >>203
ファイルてw
そんなレベルの話は誰もしてねーよ <>
Name_Not_Found<>sage<>2014/07/10(木) 09:57:03.41 ID:???.net<> 通信が途絶したらちゃんと失敗するように、
複数のオブジェクトをひとつにまとめてPOSTすればいいだけでした
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/10(木) 10:29:31.96 ID:???.net<> iOSはピンチでスムーズに拡大縮小できますが
PCのブラウザであのレベルの拡大縮小処理って出来ませんか? <>
Name_Not_Found<>sage<>2014/07/10(木) 13:44:51.04 ID:???.net<> >>206
しっかりと切り分けしてから質問してくれ
いろいろ酷すぎる <>
Name_Not_Found<>sage<>2014/07/10(木) 13:59:12.19 ID:???.net<> なんだよ >>200 で正解じゃないか >>200 がバカすぎwwwwwwwwwwwwww <>
Name_Not_Found<>sage<>2014/07/10(木) 14:09:32.63 ID:???.net<> この場合、責められるべきは曖昧な質問をした質問者だろう
当たっていたのは結果論にすぎない
で、やはりというべきか、JavaScriptは関係なかったな <>
Name_Not_Found<>sage<>2014/07/10(木) 14:30:40.27 ID:???.net<> >>200がおバカなのは質問の意図を当てられなかったからじゃなくて可能性を完全否定しちゃってることだね
>>178の質問からすれば>>199は当然考慮すべき事だろ
そしてAjaxによるデータ送信に関連する注意点だからJavaScriptが関係無いわけじゃないね <>
Name_Not_Found<>sage<>2014/07/10(木) 14:30:59.17 ID:???.net<> データをまとめるのはJavaScriptなので関係ありますが?
恥をかいたからといって変な突っかかり方する人の回答は必要ありません <>
Name_Not_Found<>sage<>2014/07/10(木) 14:33:56.37 ID:???.net<> スクロールが終端まで行ったことを検出するにはどうやればいいですか? <>
Name_Not_Found<>sage<>2014/07/10(木) 14:57:20.42 ID:???.net<> >>213
scrollTopとボックスの高さを足して
中身の高さと比較するとか <>
Name_Not_Found<>sage<>2014/07/10(木) 16:00:24.02 ID:???.net<> 出来ました
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/10(木) 18:56:36.95 ID:???.net<> >>212
今後は曖昧に質問せずに必要な情報を全部出してね <>
Name_Not_Found<>sage<>2014/07/10(木) 19:18:36.54 ID:???.net<> >>216
曖昧とは思いませんが <>
Name_Not_Found<>sage<>2014/07/10(木) 19:38:06.57 ID:???.net<> バカには無理 <>
Name_Not_Found<>sage<>2014/07/10(木) 19:41:52.20 ID:???.net<> 馬鹿には回答は無理ってことですね
分かります <>
Name_Not_Found<>sage<>2014/07/10(木) 19:45:06.69 ID:???.net<> わかってないな <>
Name_Not_Found<>sage<>2014/07/10(木) 19:48:40.43 ID:???.net<> くやしいのうw <>
Name_Not_Found<>sage<>2014/07/10(木) 19:50:26.05 ID:???.net<> www <>
Name_Not_Found<>sage<>2014/07/10(木) 20:08:31.89 ID:???.net<> >>217
必要な情報を後出しせずに初めから全て出してね <>
Name_Not_Found<>sage<>2014/07/10(木) 20:08:55.53 ID:???.net<> ID無しはやはり荒れるのでこちらを使用するのがおすすめです。
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/ <>
Name_Not_Found<>sage<>2014/07/10(木) 20:12:10.01 ID:???.net<> ローカルルールがなければそれが一番だよなあ
というか、ここもID強制してくれ >運営 <>
Name_Not_Found<>sage<>2014/07/10(木) 22:47:08.92 ID:???.net<> >>224
宣伝するためだけに戻ってきたのか?w
お前はもうそっちに行ってしまって、
あれるかもしれないここは、見てないと思いっていたが。 <>
Name_Not_Found<>sage<>2014/07/10(木) 23:00:06.88 ID:???.net<> >>224
向こうでもweb板でやれって言われてんじゃねーか <>
Name_Not_Found<>sage<>2014/07/11(金) 01:11:54.19 ID:???.net<> そもそもIDの有無なんて荒れの抑制に本質的な意味はないからな
プログラマーらしからぬ非論理的な思考 <>
Name_Not_Found<>sage<>2014/07/11(金) 03:37:20.68 ID:???.net<> >>207
Win8, IE10で、
Ctrl + で拡大、Ctrl - で縮小できる <>
Name_Not_Found<>sage<>2014/07/11(金) 04:41:02.87 ID:???.net<> 例えばオセロゲームをhtml5のcanvasで作ろうとします
(1)1ターンごとにcanvas全部真っ白後にマスから何から全部再描画
(2)1ターンごとに該当マスだけ消して描画
処理の重さとかはまず置いといてどちらがカッコイイですか <>
Name_Not_Found<>sage<>2014/07/11(金) 04:49:29.12 ID:???.net<> 1だと毎回余計な処理を見せられてうざい <>
Name_Not_Found<>sage<>2014/07/11(金) 04:56:23.98 ID:???.net<> >>228
あるだろ <>
Name_Not_Found<>sage<>2014/07/11(金) 05:18:34.76 ID:???.net<> 描画処理を見せたくないならダブルバッファリングすればいいかな <>
Name_Not_Found<>sage<>2014/07/11(金) 05:31:26.86 ID:???.net<> パーティクル的なアニメーションだと
(1)全て再描画
無難、メンテしやすい
(2)処理の分だけ再描画
canvas一枚でやると描画の重なるとこが面倒
(3)1ドット毎に最小のcanvas要素を用意
(1)、(2)の中間
canvas要素は方形なので要素同士の重複部分が無駄
大きくわけてこれくらいか <>
Name_Not_Found<>sage<>2014/07/11(金) 05:40:12.10 ID:???.net<> まあフレーム毎の処理なら再描画+レイヤー要素の一択だと思うけど <>
Name_Not_Found<>sage<>2014/07/11(金) 08:37:25.05 ID:???.net<> jsってc++のバックサーフェスみたいなのあります? <>
Name_Not_Found<>sage<>2014/07/11(金) 10:25:13.43 ID:???.net<> (new Hoge()).method()
みたいな書き方していいですか? <>
Name_Not_Found<>sage<>2014/07/11(金) 12:18:03.35 ID:???.net<> new Date().getTime()
とかよくやるし良いんじゃね <>
Name_Not_Found<>sage<>2014/07/11(金) 12:34:06.04 ID:???.net<> いつも思うが、コード出して質問しろよ
常時いつも必ず良い書き方なんてあるわけないだろ <>
Name_Not_Found<>sage<>2014/07/11(金) 14:09:04.94 ID:???.net<> >>1
>出来るだけサンプルコード
だぞ
>出来るだけ
しかも
>サンプルコード
本気コードじゃないからな
初心者だとコードそのまま出すことはできても
端折ってサンプル考えられるわけがない
簡単なものは”出来るだけ”を心がけて出してるはず <>
Name_Not_Found<>sage<>2014/07/11(金) 14:18:39.08 ID:???.net<> >>240
2行目を読んでから反論しろよ
ケースバイケースという言葉を知らんのか <>
Name_Not_Found<>sage<>2014/07/11(金) 15:06:01.86 ID:???.net<> 2行目てどこの2行目だよ
(6)の2行目のことなら
>問題の事象が再現されること
で、>確認してください
って書いてあるじゃん
>問題の事象が再現されること
ようにサンプルコードを掲示してくださいって意味じゃないぞ <>
Name_Not_Found<>sage<>2014/07/11(金) 15:09:16.72 ID:???.net<> そして>常時いつも必ず良い書き方なんてあるわけないだろ
のことならそれこそ(6)だが <>
Name_Not_Found<>sage<>2014/07/11(金) 15:18:40.66 ID:???.net<> >>238
カッコはいらないのですか? <>
Name_Not_Found<>sage<>2014/07/11(金) 15:25:46.42 ID:???.net<> 試せば分かる事聞くな <>
Name_Not_Found<>sage<>2014/07/11(金) 15:27:53.06 ID:???.net<> お前が試して答えろって意味ですが? <>
Name_Not_Found<>sage<>2014/07/11(金) 15:29:30.42 ID:???.net<> 分かった試してくるから3時間待ってろ <>
Name_Not_Found<>sage<>2014/07/11(金) 15:30:14.91 ID:???.net<> カッコつけた方が一般的ですかって意味だろたぶん <>
Name_Not_Found<>sage<>2014/07/11(金) 15:30:30.56 ID:???.net<> 試したところ問題ないようですが
何故カッコがいらないのか良く分かりません
new演算子は.演算子よりも優先されるのかなぁ? <>
Name_Not_Found<>sage<>2014/07/11(金) 15:40:03.19 ID:???.net<> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
これによるとnew演算子とメンバ演算子の優先順位は同じでした
なので、先に書かれたnewが最初に実行されるんですね
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/11(金) 15:49:27.94 ID:???.net<> 間に関数呼び出しの()があるけど、これの優先順位はメンバやnewより順位低くね?
new Date.getTime() だとエラーになるから (new Date).getTime() としなきゃならないしここらへんどうなってんの <>
Name_Not_Found<>sage<>2014/07/11(金) 15:55:39.51 ID:???.net<> newに()を付けない書き方なんて許されてるの?
はじめて見たよ <>
Name_Not_Found<>sage<>2014/07/11(金) 16:06:16.81 ID:???.net<> >>252
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new
> new constructor[([arguments])]
()は関数呼び出しではなくnew演算子の一部で省略可能 <>
Name_Not_Found<>sage<>2014/07/11(金) 16:08:55.60 ID:???.net<> そうなんだ
それなら()がない時だけエラーになるのは何か変な感じするね <>
Name_Not_Found<>sage<>2014/07/11(金) 18:05:13.90 ID:???.net<> 別に構文エラーじゃないでしょ <>
Name_Not_Found<>sage<>2014/07/11(金) 21:43:41.68 ID:???.net<> >>254
new演算子の対象が違う <>
Name_Not_Found<>sage<>2014/07/11(金) 22:05:20.29 ID:???.net<> なんで対象が変わるんだ? <>
Name_Not_Found<>sage<>2014/07/11(金) 22:20:51.55 ID:???.net<> new Date() と new Date は同じもの返すけど、その右に . とか [] つけたとき
new Date()の場合は、new Date()の結果に . か [] が結合するけど、
new Dateの場合は、Dateだけが . か [] に結合しちゃうね? <>
Name_Not_Found<>sage<>2014/07/11(金) 23:07:23.93 ID:???.net<> >>257
() が省略されたから
>254とエラーコンソールを読めばわかる <>
Name_Not_Found<>sage<>2014/07/11(金) 23:42:03.70 ID:???.net<> >>258
そのりくつはおかしい
new演算子とメンバ演算子の優先順位は同じなんだから、
素直に実行されるならnewされてからメソッドが呼び出されるはず <>
Name_Not_Found<>sage<>2014/07/12(土) 00:16:07.12 ID:???.net<> >>259-259
new Date.getTime() と new Date().getTime()だと前者でエラーになるのは何でなんだよ <>
Name_Not_Found<>sage<>2014/07/12(土) 00:28:22.30 ID:???.net<> ()演算子が入らない場合はメンバ演算子が優先される
としか思えないな <>
Name_Not_Found<>sage<>2014/07/12(土) 00:29:02.77 ID:???.net<> >>260
実際にIE/Firefox/GoogleChromeで試すと >>258 の挙動だから何故?って話 <>
Name_Not_Found<>sage<>2014/07/12(土) 00:30:26.13 ID:???.net<> メンバ演算子の方が強いから <>
Name_Not_Found<>sage<>2014/07/12(土) 00:46:50.35 ID:???.net<> メンバ演算子は右から左
new演算子は左から右
「右から左」と「左から右」が戦ったら「右から左」が勝つってことじゃないの? <>
Name_Not_Found<>sage<>2014/07/12(土) 00:51:30.95 ID:???.net<> 優先順位決定のアルゴリズムをJavaScriptで書いてもらえませんか? <>
Name_Not_Found<>sage<>2014/07/12(土) 01:27:04.64 ID:???.net<> >>260
new 演算子の対象は MemberExpression であって、優先順位は全く関係ない
優先順位で考える前に Syntax で考えるべき
http://es5.github.io/#A.3 <>
Name_Not_Found<>sage<>2014/07/12(土) 01:27:32.70 ID:???.net<> この辺が原因かな?
11.2 Left-Hand-Side Expressions
MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
NewExpression :
MemberExpression
new NewExpression
Arguments付きのnewはメンバ演算子と同等だけど、Arguments無しのnewは弱い感じ <>
Name_Not_Found<>sage<>2014/07/12(土) 01:37:13.40 ID:???.net<> そもそも、new Identifier Arguments のように考えるのがおかしい
初めから NewExpression に含まれているのだから
前提となる Syntax を勝手に解釈するから矛盾が生まれる <>
Name_Not_Found<>sage<>2014/07/12(土) 02:12:06.69 ID:???.net<> Left-Hand-Sideって何て訳すの?左手側? <>
Name_Not_Found<>sage<>2014/07/12(土) 02:15:46.00 ID:???.net<> 左辺 <>
Name_Not_Found<>sage<>2014/07/12(土) 02:27:08.59 ID:???.net<> left-sideでいいじゃん
handいらねー <>
Name_Not_Found<>sage<>2014/07/12(土) 02:33:06.34 ID:???.net<> 左方向って意味もあるんじゃないかな
new new Hoge なら右から左方向に計算しないとnewをnewすることになってしまう <>
Name_Not_Found<>sage<>2014/07/12(土) 05:44:25.66 ID:???.net<> >>268の文法が全てだけど
演算子の優先順位 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
を見ると一目瞭然だよ
new より . [] の方が優先される (結合される方向も違う)
それを念頭におけば↓って解釈出来て>>258と同じになる
new Hoge.hoge[0]() → new ((Hoge.hoge)[0])()
new Hoge().hoge → (new Hoge()).hoge
new Hoge.hoge → new (Hoge.hoge) <>
Name_Not_Found<>sage<>2014/07/12(土) 05:58:38.21 ID:???.net<> >>274
そのMDNの表じゃ、引数つきのnewと引数無しのnewの優先度の違いが説明できないよね? <>
Name_Not_Found<>sage<>2014/07/12(土) 06:11:59.82 ID:???.net<> 単純にnewより.が優先されるなら、
new Hoge().hoge → (new Hoge()).hoge じゃなくて、
new Hoge().hoge → new (Hoge().hoge) こうなるべきだよね?でもそうならない <>
Name_Not_Found<>sage<>2014/07/12(土) 06:29:58.21 ID:???.net<> >>276
書いてて気付いたが、new は new Hoge と new Hoge() の2つの書き方(文法)が
あるってだけの問題な気がしてきた
>>276
まず . の右と左に分けると new と () の問題になって new が優先されて
new は () までが構文だから (new Hoge()).hoge じゃないのかな?
緊急地震速報で起こされてから寝れない… <>
Name_Not_Found<>sage<>2014/07/12(土) 08:13:33.88 ID:???.net<> >>274
その表ではメンバ演算子とnew演算子は同じ優先順位1じゃん <>
Name_Not_Found<>sage<>2014/07/12(土) 08:16:05.91 ID:???.net<> >>276
() が付いているから
Hoge()より new Hoge のほうが優先されるのでは <>
Name_Not_Found<>sage<>2014/07/12(土) 08:22:17.53 ID:???.net<> 同じ優先順位の左結合性と右結合性が衝突した場合、
右結合性が優先されるんだろう
左右どっちかを優先させないと決定できないから、
ドキュメントのどこかに書いてあるはず
はい論破 <>
Name_Not_Found<>sage<>2014/07/12(土) 08:38:18.85 ID:???.net<> 難しく考えなくても、>>268の構文規則だけで>>258の挙動になることは十分説明できてるんだよ
あえて優先順位をつけるなら
newには引数付きのコンストラクタをとるものと引数無しのコンストラクタをとるものの2種類存在する
引数付きの場合の優先順位は>>274の表のとおり1番目になる
引数無しの場合の優先順位は>>274の表における2番目になる
こんな感じ <>
Name_Not_Found<>sage<>2014/07/12(土) 09:32:28.59 ID:???.net<> その構文規則が「日本語でOK」なレベルだろ
何を書いてるのか分からん <>
Name_Not_Found<>sage<>2014/07/12(土) 10:22:16.31 ID:???.net<> >>282
優先順位が
()有りのnew > メンバ演算子 > ()無しのnew
って事 <>
Name_Not_Found<>sage<>2014/07/12(土) 10:22:30.04 ID:???.net<> >>282
>>267で仕様書リンクが出てるからそちらを読むべき
読み方がわからないなら RFC 2234 を読む
http://www.t-net.ne.jp/~cyfis/rfc/format/rfc2234_ja.html
というか、「分からなくて当然」という態度で構えるなよ <>
Name_Not_Found<>sage<>2014/07/12(土) 10:26:45.28 ID:???.net<> ニュアンスでわかるだろ <>
Name_Not_Found<>sage<>2014/07/12(土) 10:45:09.69 ID:???.net<> つまり優先度以前に構文解析で「new Hoge()」「.hoge」に分割されるって事か
分かってみれば凄いシンプルだった <>
Name_Not_Found<>sage<>2014/07/12(土) 10:50:25.93 ID:???.net<> JavaScriptを書くのにアブンフを分からないといけないのですか? <>
Name_Not_Found<>sage<>2014/07/12(土) 11:01:47.29 ID:???.net<> 曲がりなりにも「JavaScript を自ら学ぶ人のための質問スレ」なんだから参考URLを呼んでから判断しようぜ
>>267を読んでない人が多すぎる <>
Name_Not_Found<>sage<>2014/07/12(土) 11:13:25.51 ID:???.net<> >>287
そのぐらい自分で判断しろよ
ABNFを学ばなければECMAScriptを理解できない理屈もわからんのか <>
Name_Not_Found<>sage<>2014/07/12(土) 11:38:23.99 ID:???.net<> >>289
じゃあその理屈を説明してみろよ
アンブフなんて聞いたこともないが普通にJS使ってるしプゲラ <>
Name_Not_Found<>sage<>2014/07/12(土) 11:55:24.55 ID:???.net<> >>267だって読んでないだろ
newの対象はNewExpressionにも成り得る <>
Name_Not_Found<>sage<>2014/07/12(土) 12:21:52.70 ID:???.net<> 暗部をしらないだと? <>
Name_Not_Found<>sage<>2014/07/12(土) 13:24:26.59 ID:???.net<> >>288
そうなんだよね
それに最近は自分でゴリゴリ書く人よりもjQuery等のライブラリの質問が多くなった
純粋にJavaScriptのスキルアップや勉強をする人が減ったのかな
それとも今はjQueryを使うのが一般的なのかな(古い人間でゴメン <>
Name_Not_Found<>sage<>2014/07/12(土) 13:38:51.00 ID:???.net<> >>293
JavaScriptは普通に勉強するでしょ?
勉強しなくなったのはブラウザ標準のDOM APIの方。
これはJavaScriptの範囲ではない。
DOM APIを勉強することを、JavaScriptの勉強だと
思ってるのならそれは間違っている。
DOMよりもjQueryの方が優れているのはあきらなかので
(ブラウザ間の互換性の話じゃなくて、機能的に優れている)
今の人は、JavaScript + jQueryを勉強している。 <>
Name_Not_Found<>sage<>2014/07/12(土) 13:45:51.05 ID:???.net<> 都合とかは関係なく好みの問題だがjqueryは好きになれない <>
Name_Not_Found<>sage<>2014/07/12(土) 13:47:03.99 ID:???.net<> >>295
好みの問題は置いといて、好きになれない理由を
技術的な観点から聞かせて欲しい。 <>
Name_Not_Found<>sage<>2014/07/12(土) 13:48:40.26 ID:???.net<> >>296
クライアント側に動かしてもらうコードは、可能な限り極限まで少なく小さくあるべき、という考え <>
Name_Not_Found<>sage<>2014/07/12(土) 13:51:24.88 ID:???.net<> >>297
つまり、開発速度よりも、実行速度を気にしてるってこと? <>
Name_Not_Found<>sage<>2014/07/12(土) 14:01:31.07 ID:???.net<> そんなこと言ってられるのは大したもの作ってないから <>
Name_Not_Found<>sage<>2014/07/12(土) 14:08:48.54 ID:???.net<> この的外れ感 <>
Name_Not_Found<>sage<>2014/07/12(土) 14:10:12.03 ID:???.net<> >>299
「たいしたもの」とか曖昧な言い方じゃなくて具体的な
分岐点を示さないとたんなる思い込みでしか無いからなぁ。
ファイルサイズ=実行速度でもないし、gzipでの転送速度33.6KBだったけど、
これ1画像よりも小さいサイズだったりするし、
ネットワーク転送速度も速くなって、パソコンの処理速度も速くなってるんだよね。
こっちはどんどん性能があがってるけど、人間の開発速度は上がらないからね。
はるか昔は1クロックでも少なく、1バイトのメモリでも小さくって
そういうことを気にしていた時代があったけど、
どんどん時代が進むために、意味がなくなってるのは明らかだよ。
可能な限りとか極限までとかいうのは、危険な思想だな。
可能な限り、極限まで、自分で書くコードを小さくすることを考えれば
”トレードオフ"という答えにしかならないはずなんだが。
jQueryを使う使わないとかそういう話ではなく、
トレードオフを無視する考え方は間違いだよ。 <>
Name_Not_Found<>sage<>2014/07/12(土) 14:11:31.10 ID:???.net<> 薄っぺらな文章を長々と書くなボケ <>
Name_Not_Found<>sage<>2014/07/12(土) 14:12:22.12 ID:???.net<> 文句ばっかw
そういうつぶやきがしたかったらTwitterでやってろよw <>
Name_Not_Found<>sage<>2014/07/12(土) 14:18:02.52 ID:???.net<> オブジェクトあるいはarrayが空かどうかを調べるには
lodashの_.isEmptyを使うのがベストですか? <>
Name_Not_Found<>sage<>2014/07/12(土) 14:20:20.81 ID:???.net<> >>304
空の定義にもよる。変数がArrayであることが保証されているのであれば
.lengthを使うほうがいいだろう。
だけど変数がArrayとは限らずオブジェクトや空文字などが入る場合があるのなら
_.isEmptyを使用した方がいい。 <>
Name_Not_Found<>sage<>2014/07/12(土) 14:21:12.24 ID:???.net<> >>292
まめぶ汁推しの人だろ。 <>
Name_Not_Found<>sage<>2014/07/12(土) 14:29:41.81 ID:???.net<> arrayならわざわざ「オブジェクトあるいはarray」とは書きません
ではisEmptyを使います
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/12(土) 15:04:09.41 ID:???.net<> オブジェクトって書いてあるのを見逃してたよ
すまんすまん。 <>
Name_Not_Found<>sage<>2014/07/12(土) 15:08:50.24 ID:???.net<> 問題は new Hoge[10] が Hoge を10個作る訳じゃないことだな
みんな一度はオブジェクトを複数作る方法を調べた事があるはず <>
Name_Not_Found<>sage<>2014/07/12(土) 16:03:35.48 ID:???.net<> >>290
ABNFを読めなければSyntaxを読めないだろうが
ABNFは仕様書では一般的に使われている書式で仕様書を読むなら必須
> アンブフなんて聞いたこともないが普通にJS使ってるしプゲラ
ABNFを理解できなくても何となく使えれば良いなら不要だろうよ
文法を理解しなくても時間をかければ、トライアンドエラーで解決できるだろうからな(理解せずとも使えればいいというタイプ)
だが、上の質問者のように文法を理解できなくて「なぜ?どうして?」と一生他人に音部に抱っこするつもりなら初めから理解しておけ <>
Name_Not_Found<>sage<>2014/07/12(土) 16:15:42.93 ID:???.net<> 日本語の文法も大事 <>
Name_Not_Found<>sage<>2014/07/12(土) 16:39:38.38 ID:???.net<> 日本語の仕様書を読みたいのでアンブフの場所を教えてください <>
Name_Not_Found<>sage<>2014/07/12(土) 16:50:46.86 ID:???.net<> 勉強といっても、それが問題になる場面その頻度を考えるのが大事だと思うんだよ
開発効率も勉強効率も一緒 <>
Name_Not_Found<>sage<>2014/07/12(土) 17:36:45.25 ID:???.net<> フガフフってなんですか? <>
Name_Not_Found<>sage<>2014/07/12(土) 19:59:25.96 ID:???.net<> 来週もまた見てくださいね? <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/12(土) 21:02:44.73 ID:???.net<> 初めて聞いたわ <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/12(土) 21:46:21.98 ID:???.net<> jQuery(〜)は〜の中身を判断してそれぞれの処理を行うってことですか? <>
Name_Not_Found<>sage<>2014/07/12(土) 23:46:33.80 ID:???.net<> バッカスナウア記法って酒神のバッカスから来てるんです? <>
Name_Not_Found<>sage<>2014/07/13(日) 00:32:57.34 ID:???.net<> ABNFについて簡潔に説明して下さい <>
Name_Not_Found<>sage<>2014/07/13(日) 01:40:54.98 ID:???.net<> ってかこれ役に立つの? <>
Name_Not_Found<>sage<>2014/07/13(日) 01:52:52.84 ID:???.net<> 酒バッカスなう <>
Name_Not_Found<>sage<>2014/07/13(日) 01:57:44.19 ID:???.net<> >>320
そう思うよな
JavaScriptと関係なさ過ぎww <>
Name_Not_Found<>sage<>2014/07/13(日) 02:16:47.47 ID:???.net<> オブジェクトにコールバック関数を渡せるようにしたら便利ですが
コールバック関数を受け取って自分をbindして実行するメソッドは標準ではないのでしょうか? <>
Name_Not_Found<>sage<>2014/07/13(日) 02:22:58.94 ID:???.net<> >>320
プログラミング言語は一般的に以下の処理がされる
字句解析 → var hoge = 1.0; を var|hoge|=|1.0|= に分割する 正規表現が使われる
構文解析 → new Hoge[1] → new|Hoge|[|1|] が正しい構文か判定する BNF(ABNF)が使われる
意味解析 → オブジェクトに足し算するような意味的に正しくないものをエラーにする
中間コード生成 → 機械語生成など
これから分かる事は、JSONやHTMLを自前で解析するには正規表現では基本的に無理だという事
よく初心者はやりがちだが、ムリクリやれない事もないがスマートに実装するには
BNF(ABNF)の知識とライブラリなどが必要 <>
Name_Not_Found<>sage<>2014/07/13(日) 02:58:07.97 ID:???.net<> なんか凝り固まってるのがいるが、ここお前の演説会場じゃねーから
ブログでやってろ <>
Name_Not_Found<>sage<>2014/07/13(日) 03:04:58.88 ID:???.net<> 技術的話題だから問題ない <>
Name_Not_Found<>sage<>2014/07/13(日) 03:46:56.56 ID:???.net<> このスレで論破wとかしたいなら必須の知識だな
じゃないと>>280とかみたいに恥ずかしいことになる <>
Name_Not_Found<>sage<>2014/07/13(日) 03:57:09.60 ID:???.net<> いや全然恥ずかしくないが?
実際にドキュメントに書いてあったじゃん
はい論破 <>
Name_Not_Found<>sage<>2014/07/13(日) 04:29:11.30 ID:???.net<> >>328
まだ理解できてないじゃんwww恥ずかしいのうwww <>
Name_Not_Found<>sage<>2014/07/13(日) 04:47:19.21 ID:???.net<> JSもアブンフで定義されてるんですよね
ってことはアブンフを使ったら新しい言語を作れるってことですか? <>
Name_Not_Found<>sage<>2014/07/13(日) 04:51:30.38 ID:???.net<> ネタか? <>
Name_Not_Found<>sage<>2014/07/13(日) 05:09:52.19 ID:???.net<> >>323
具体的に <>
Name_Not_Found<>sage<>2014/07/13(日) 05:10:40.27 ID:???.net<> >>331
ネタじゃねーよカス <>
Name_Not_Found<>sage<>2014/07/13(日) 05:12:03.56 ID:???.net<> >>332
十分具体的だと思います <>
Name_Not_Found<>sage<>2014/07/13(日) 05:13:01.02 ID:???.net<> 新しい言語つくるときにANBFで言語仕様を定義しとけば
構文解析部を完全自力で作る必要はなくなるな
パーサージェネレータでぐぐれ <>
Name_Not_Found<>sage<>2014/07/13(日) 05:23:37.13 ID:???.net<> ありがとうございました <>
Name_Not_Found<>sage<>2014/07/13(日) 05:59:18.55 ID:???.net<> >>334
オブジェクトにコールバックて
どういうシーンを想定してんのかなあと <>
Name_Not_Found<>sage<>2014/07/13(日) 08:41:11.90 ID:???.net<> ABNF理解できなくて見当違いの談義に花を咲かせた連中がいるというのに、「JavaScriptを書くのにアブンフを分からないといけないのですか?」と質問する精神がわからん <>
Name_Not_Found<>sage<>2014/07/13(日) 08:56:38.61 ID:???.net<> >>337
そもそも、[[Call]] を持ってなkれば call 出来ないし、callback とはいわないよなあ
タイミングがわからん <>
Name_Not_Found<>sage<>2014/07/13(日) 09:00:28.31 ID:???.net<> >>338
知らないことは判断のしようがねーだろ
プログラマーとは思えないほど非論理的だな <>
Name_Not_Found<>sage<>2014/07/13(日) 09:01:13.75 ID:???.net<> >>339
日本語でOK <>
Name_Not_Found<>sage<>2014/07/13(日) 09:04:55.73 ID:???.net<> >>340
知らないから無知を晒したんだろ
>>267で知る手段を持ちながらも理解できなかった
今はABNFという理解する手段を知ったんだから、覚えれば良いだけだろ
覚える手段がありながら「覚える必要がありますか?」とか頓珍漢な事聞いてるんじゃねえって話 <>
Name_Not_Found<>sage<>2014/07/13(日) 09:09:23.51 ID:???.net<> >>341
関数でなければ関数呼び出しできないからコールバックとはいわない
タイミングはいつ? <>
Name_Not_Found<>sage<>2014/07/13(日) 09:16:43.99 ID:???.net<> まさか単にFunction.prototype.call()がしたいわけじゃないよね? <>
Name_Not_Found<>sage<>2014/07/13(日) 09:37:07.99 ID:???.net<> こういうやつのことじゃね? まあこれはイベントだけだけど
var obj = {
handleEvent: function () {
console.log('click');
}
};
elem.addEventListener('click', obj); <>
Name_Not_Found<>sage<>2014/07/13(日) 09:37:39.73 ID:???.net<> >>334
全然具体的じゃないです <>
Name_Not_Found<>sage<>2014/07/13(日) 10:08:10.80 ID:???.net<> コールバックはコールバックだよ
そんな基本的なことまで言わせんな <>
Name_Not_Found<>sage<>2014/07/13(日) 10:18:25.86 ID:???.net<> >>347
そんなことは聞いてない <>
Name_Not_Found<>sage<>2014/07/13(日) 10:20:11.38 ID:???.net<> >>342
いやそれ見ても何が言いたいか分からんし。
とりあえずABNFってのがあるんだなってことだけは分かったけど
お前の言ってることがどの程度的を射ているのかはまだ分からん <>
Name_Not_Found<>sage<>2014/07/13(日) 10:21:26.96 ID:???.net<> >>348
アスペは黙ってじっとしとけ <>
Name_Not_Found<>sage<>2014/07/13(日) 10:26:29.49 ID:???.net<> new Hogeと
new Hoge()の違いなんて、現実的には問題になることはない
そのどうでもいい問題に対して「これ読めや」って言ってクソ長いドキュメント持ってくる奴は
知識はあるのかもしれないが頭は悪い
なんでどうでもいい問題のためにクソ長いドキュメント読まないといけないんだよ <>
Name_Not_Found<>sage<>2014/07/13(日) 10:28:32.68 ID:???.net<> ちゃんと読めばいい部分のリンクを張ってるのに
何いってんだこいつ <>
Name_Not_Found<>sage<>2014/07/13(日) 10:28:47.36 ID:???.net<> どうでもいいと思ってるのに、
なぜわざわざ話に加わろうとするんだ <>
Name_Not_Found<>sage<>2014/07/13(日) 10:30:48.37 ID:???.net<> >>349
ログは全て読んでる?
ABNFの日本語仕様書リンクも貼られていて、それを読んでABNFを理解すれば読めるはずだけど
無知を自覚しておきながら「知らないことは判断のしようがねーだろ」はないと思うよ
「どうやって学べばいいかわからない」とか「ここまで読んだが、この文章が分からない」ならまだわかるけどね
ここはJavaScript を自ら学ぶ人のための質問スレッドだからね <>
Name_Not_Found<>sage<>2014/07/13(日) 10:33:17.99 ID:???.net<> 質問者は「どうでもいい」と思ってないから質問するわけだが <>
Name_Not_Found<>sage<>2014/07/13(日) 10:36:47.61 ID:???.net<> >>350
アスペ質問者は黙っとけ <>
Name_Not_Found<>sage<>2014/07/13(日) 10:41:53.10 ID:???.net<> >>347
この人は誰にいってるんだろ?
>>346に対してかと思ったけど、コールバックの概念説明は「具体的な説明」ではないし… <>
Name_Not_Found<>sage<>2014/07/13(日) 10:45:57.65 ID:???.net<> こんなのが()でくくらなくても書けるようにあんな構文規則にしてあるんだなあとちょっと感心した
new abc.def.ghi().jkl.mno.pqr.stu()
演算子の優先順位表だけじゃ説明できないから
原典の理解は大切だなと再認識したよ <>
Name_Not_Found<>sage<>2014/07/13(日) 11:29:12.52 ID:???.net<> 「ABNFの日本語仕様書リンクも貼られていてって」
それがくそ長いっての
なんかナチュラルに馬鹿っぽいな <>
Name_Not_Found<>sage<>2014/07/13(日) 11:29:56.55 ID:???.net<> >>358
本当に分かったならちょっと説明してみてくれ <>
Name_Not_Found<>sage<>2014/07/13(日) 11:31:27.67 ID:???.net<> 「ドキュメントを貼る」以外の方法で説明できる奴が一人もいないのは何故なんだ
抽象化能力ゼロなの? <>
Name_Not_Found<>sage<>2014/07/13(日) 11:37:36.84 ID:???.net<> >>357
お前だよカス <>
Name_Not_Found<>sage<>2014/07/13(日) 11:39:45.34 ID:???.net<> イイゾイイゾwww
理解できないクヤシサが伝わってきてとてもとても気持ちいいですwww <>
Name_Not_Found<>sage<>2014/07/13(日) 11:43:09.95 ID:???.net<> >>362
>>357から参加したんだけど、あなたは予知能力者なの? <>
Name_Not_Found<>sage<>2014/07/13(日) 11:43:55.22 ID:???.net<> ()でくくらなくていい・くくらなきゃいけないのはそれぞれこういうケースだ
興味があればこれ読めば規則が書いてあるよ、……とこれだけで終わっても別に良い
ところでこの構文規則、必然性や必要性ってあるの?
「なぜこうなってるか」が全然見えない <>
Name_Not_Found<>sage<>2014/07/13(日) 11:49:19.96 ID:???.net<> >>359-360
こういうことか
「どうでもいい質問だが、俺様が気になるので理解してやる
ただし、俺様は長文を理解できない
初心者でもわかるように三行で説明しろ」
諦めろ <>
Name_Not_Found<>sage<>2014/07/13(日) 11:52:14.55 ID:???.net<> やっぱ説明できないのか
知識は簡単に集められるけど抽象化するのは高度な知性が必要だからなプゲラ <>
Name_Not_Found<>sage<>2014/07/13(日) 11:57:03.39 ID:???.net<> >>365
もしこの捻った構文規則が無かったら
>>358の new abc.def.ghi().jkl.mno.pqr.stu() みたいに書くと
newが取るコンストラクタは abc か、abc.def.ghi().jkl.mno.pqr.stu()全体か、どっちにしかならないんだよね
でも直感的には abc.def.ghi がコンストラクタであって欲しいよね? <>
Name_Not_Found<>sage<>2014/07/13(日) 11:58:10.73 ID:???.net<> 知ってるが、おまえの態度が気に入らない(AA略 <>
Name_Not_Found<>sage<>2014/07/13(日) 12:01:48.08 ID:???.net<> 理解できない人は文脈自由文法とか勉強してきてくださいよ
ある程度その辺の経験つんでると>>268のリンク先を見るまでもなく
>>268の抜き出した部分を見ただけでなんとなく直感的に理由に気づける
実際そのとおりなのか確かめるには>>268のリンク先きっちり読まないといけないと思うけど
メンドクサイし、実際にブラウザで試してみると得られた直感的なイメージどおり動いてくれるんで
自分的にはそれでいいです <>
Name_Not_Found<>sage<>2014/07/13(日) 12:09:00.12 ID:TENJgKA8.net<> コロコロID変わる身だけどID出しておく
>>368
どうあって欲しいかは、個人的意見でいうと、むしろ対象abcか全体かのどちらかかなあ
直感的には無名関数の書き方が頭にチラつく
その三者のいずれであるかは、仕様策定者(orグループ)の好みの問題なのか
歴史的経緯があるのか、それとも実用的な理由があるのか(こうじゃないとパーサの動き的に困るとか、開発効率に関わるとか)
どれなのか、ってところがわからない
※なぜこれが知りたいかというと、類似問題に当たったときに考える・調べる・理由を探す材料になったり説明しやすくなったりするから。多言語でも応用可能かもしれないし <>
Name_Not_Found<>sage<>2014/07/13(日) 12:20:49.91 ID:???.net<> >>371
オブジェクトをネームスペース的に使ったりすることを考えるとabcだけっていうのは有り得ないなあ
newしてメソッド送信っていうパターンはけっこう使うんで全部っていうのもちょっと嫌 <>
Name_Not_Found<><>2014/07/13(日) 12:24:28.35 ID:rk5ihVbk.net<> >>371
真面目な質問のようなので id を出しておく(私もコロコロ変わるが)
もし、new Hoge.foo(); で new 演算子の対象が Hoge になるなら、new演算子の対象を foo にする為に new Hoge をローカル変数に格納しなければならない
new Hoge().foo() とすれば Hogeを対象に出来るのだから、選択肢を増やす意味では new Hoge.foo(); は foo が対象であるべきといえる <>
Name_Not_Found<>sage<>2014/07/13(日) 12:28:49.70 ID:???.net<> 選択肢増やす事のどこが良い事なんだ
どっちが先に演算されるかややこしくなるだろ
わざわざ変数に収納しなくても必要なら()で優先順位決めれば良い <>
Name_Not_Found<>sage<>2014/07/13(日) 12:31:34.90 ID:???.net<> いつも new (Hoge.foo()) としろと?w
勘弁してくれw <>
Name_Not_Found<>sage<>2014/07/13(日) 12:35:39.38 ID:???.net<> BNFとか文脈自由文法とか、
JavaScriptで一般的なコーディングをする限り、ほとんど知る機会もないと思うんですが、
どこで学んだのですか?
情報処理系の大学とかならありそうですが <>
Name_Not_Found<>sage<>2014/07/13(日) 12:36:57.40 ID:???.net<> new Hoge().foo() の方は (new Hoge()).foo() としなきゃいけないルールでもよかったかもね
でも new Hoge().foo() が可能なルールにしたのは作者の趣味かな <>
Name_Not_Found<>sage<>2014/07/13(日) 12:38:43.22 ID:???.net<> >>375
どこに括弧入れてるんだ。馬鹿なの? <>
Name_Not_Found<>sage<>2014/07/13(日) 12:42:13.91 ID:???.net<> web+db pressの総集編を検索したらBNFについての記事がいくつかあるようなので
勉強してみます
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/13(日) 12:55:06.84 ID:???.net<> 文脈自由文法を知らなくてもコーディングはできるけど、
文脈自由文法と正規文法の違いとか理解できてると
苦労してゴミみたいなアルゴリズムのコード捻り出す事が減って良いと思いますよ。
もっと早く勉強しとけばよかったと後悔してます。 <>
Name_Not_Found<><>2014/07/13(日) 15:40:05.59 ID:XqnVuZUd.net<> Drag&Drop APIでD&Dしたファイルの名前を取得することはできるけど
パスを取得することはセキュリティ上できないというのをどこかで読みました。
D&Dしたファイルからパスを取得しA要素を生成して
<a href="ファイルのローカルパス">リンク</a>
のようにすることはできないのでしょうか? <>
Name_Not_Found<>sage<>2014/07/13(日) 15:56:58.42 ID:???.net<> >>381
それができるってことはその要素を生成すると同時にローカルパスをパスをサーバ側へ通知することもできるってことだからなあ
ファイルのパスの途中に自分の名前とか入ってる間抜けがいるだろ?
恥ずかしいじゃん <>
Name_Not_Found<>sage<>2014/07/13(日) 16:22:52.32 ID:???.net<> firefoxでwindow.heightでウインドウの大きさを取得して
キャンバスの大きさを設定したのですが左と上が画像のようにズレてしまいます
原因分かりますか?
http://www.dotup.org/uploda/www.dotup.org5187136.png <>
Name_Not_Found<>sage<>2014/07/13(日) 17:12:16.04 ID:???.net<> webdbpressとwikipediaでABNFを理解しました
分かってみれば、正規表現などよりも単純なものですね
そしてあらためて>>267のサイトを見たのですが、
この表記は、ABNFと微妙に違うような?
=の代わりにコロンが使われているし、
コロンが場合によっては複数だったりして、何か知らない規則が混ざってる感じです
どういうことでしょう? <>
Name_Not_Found<>sage<>2014/07/13(日) 17:17:47.73 ID:???.net<> デスクトップ画面をアピールしたい割合が強い <>
Name_Not_Found<>sage<>2014/07/13(日) 17:19:05.00 ID:???.net<> >>383
bodyにもスタイルはあるんだぜ
せっかくインストールしたFierbugで確認してみよう <>
Name_Not_Found<>sage<>2014/07/13(日) 17:27:11.15 ID:???.net<> >>384
そのドキュメントの文法の記述方法は5章で解説されてる <>
382<>sage<>2014/07/13(日) 20:09:38.70 ID:???.net<> >>386
marginを0にしたらピタっと合いました
実は前作ってたゲームもマップチップが合わなくて挫折しまいました
たぶんこれが原因ですね
ありがとうございます! <>
Name_Not_Found<>sage<>2014/07/13(日) 22:37:58.76 ID:???.net<> var frameid = 0;
var request_url = "";
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if (frameid === 0) {
frameid = details.frameId;
}
request_url = details.url;
if (frameid === details.frameId) {
// 判定用にrequestBodyの再構築
var size = details.requestBody.raw[0].bytes.byteLength;
var dataview = new DataView(details.requestBody.raw[0].bytes);
var request = "";
for (var i = 0; i < size; i++) {
var code = dataview.getInt8(i);
if (code < 0) code += 0x100;
request += String.fromCharCode(code);
} <>
Name_Not_Found<>sage<>2014/07/13(日) 22:38:46.88 ID:???.net<> // debug
console.log(request.length+":"+request);
// treasure_indexの場合Ajaxで再送信
if (request.match(/raidboss.treasure_index/)) {
console.log("----treasure start----");
console.log("----send treasure packet----");
var xhr = new XMLHttpRequest();
xhr.open('POST', request_url, true);
xhr.onreadystatechange = function(e){
if (xhr.readyState==4 && xhr.status==200) {
checkTresurePacket(xhr.responseText);
}
};
xhr.setRequestHeader("Content-type","application/x-amf");
xhr.send(new Uint8Array(details.requestBody.raw[0].bytes));
}
}
},
{urls: ["http://*.alteil.net/gateway/"]},
["requestBody"]
); <>
Name_Not_Found<>sage<>2014/07/13(日) 22:39:31.12 ID:???.net<> function checkTresurePacket(text) {
var button3=0,button2=0,button1=0;
// 順序を取得
text.match(/button3.(.)/);
button3 = RegExp.$1.charCodeAt(0);
text.match(/button2.(.)/);
button2 = RegExp.$1.charCodeAt(0);
text.match(/button1.(.)/);
button1 = RegExp.$1.charCodeAt(0);
// 順序を配列に格納
var order = [button1, button2, button3];
// debug
// console.log(list);
// 特殊な順序
if (order[0] == 3 && order[1] == 1 && order[2] == 2) {
order = [2, 3, 1];
} else if (order[0] == 2 && order[1] == 3 && order[2] == 1) {
order = [3, 1, 2];
}
// 可視化
var viewer = [];
viewer[order[0]] = "赤";
viewer[order[1]] = "青";
viewer[order[2]] = "緑";
alert(viewer.join(""));
}
このコードの解説をお願いします。background.jsというファイルの中身です。 <>
Name_Not_Found<>sage<>2014/07/13(日) 23:22:49.30 ID:???.net<> ゲームでチートしたいなら必死こいて勉強しな <>
Name_Not_Found<>sage<>2014/07/13(日) 23:37:06.51 ID:???.net<> 上にサイト貼ってあるんだからそこ使えよ <>
Name_Not_Found<>sage<>2014/07/14(月) 00:05:48.18 ID:???.net<> >>393
どうやって手をつけていいか分かりません
なのでとりあえずスレにあったコードを理解しようと・・・
>>393
難しそうなのでスルーしてしまってました
http://jsbin.com/jereloni/1/edit
これで合っているのでしょうか? <>
Name_Not_Found<>sage<>2014/07/14(月) 00:45:24.10 ID:???.net<> これってchromeの拡張機能じゃね <>
Name_Not_Found<>sage<>2014/07/14(月) 01:10:53.58 ID:???.net<> PCをサスペンドから復帰させた時に時々chromeの動作が変になります
リロードすれば直ります
これはどうしようもないですよね? <>
Name_Not_Found<>sage<>2014/07/14(月) 01:14:13.00 ID:???.net<> >>395
その通りです
他にも方法があるけどChromeの拡張機能が簡単なのでそれにしたそうです
readmeの一部です
■使い方
1. Google Chromeで「chrome://extensions/」へアクセス
2. デベロッパーモードのチェックボックスを入れる
3. パッケージ化されていない拡張機能を読み込む
4. 同梱のdtf_boxを指定する
以上で導入完了です。 <>
Name_Not_Found<>sage<>2014/07/14(月) 01:35:39.60 ID:???.net<> order配列に、ボタン1-3の順序を入れる
// 特殊な順序
order配列が、[3, 1, 2]なら[2, 3, 1]へ、
逆に、[2, 3, 1]なら[3, 1, 2]へと交換している
つまり、[3, 1, 2]←→[2, 3, 1]の入れ替え
// 可視化
viewer配列に、order配列に設定された、
ボタンの順序に従って、赤青緑を設定している
例えば、order配列が、[3, 1, 2]なら
viewer[3]=赤、[1]=青、[2]=緑
つまり、viewer[1-3]は青緑赤の順に並ぶ
order配列が、[2, 3, 1]なら
viewer[2]=赤、[3]=青、[1]=緑
つまり、viewer[1-3]は緑赤青の順に並ぶ <>
Name_Not_Found<>sage<>2014/07/14(月) 02:14:53.17 ID:???.net<> JavaScriptの勉強法についての質問があります
大抵のwebアプリはjavascriptで書かれているので、ソースコードはいくらでも転がっています
それで例えばgooglemapのような高度なアプリのソースを見て、参考にすることは可能ですか?
それともブラウザからでは何らかのセキュリティなどが掛けられていて参考にしても意味が無かったりしますか? <>
Name_Not_Found<>sage<>2014/07/14(月) 03:30:12.42 ID:???.net<> >>399
無理です。
正確に言うのならば時間を無駄に消費するだけです。
なぜならgooglemapのような高度なアプリは
速度を極限まで上げるために、コードを縮小化しているからです。
つまり、わかりやすい変数名・関数名が、単なるa, b ,c という短い名前に
置き換えることで転送速度を上げてます。
また、作るときは作りやすさのために複数のファイルで作ります。
この作りやすいファイル構成というのもJavaScriptの勉強の一つです。
が同じく転送速度を上げるために一つないし、少数のファイルに結合しています。
つまり高度なアプリのJavaScriptコードのほとんどは、ソースそのものであることはまずなく、
人間が読んで勉強になるものにはなっていません。
ソースを見たいなら、有名なオープンソースのコードを見ればいいです。
そんなにgithubにいくらでも転がっています。 <>
Name_Not_Found<>sage<>2014/07/14(月) 09:03:33.73 ID:???.net<> コードの綺麗さは参考になるけどプロジェクトがデカすぎてどこで何やってるかは分からんな俺は <>
Name_Not_Found<>sage<>2014/07/14(月) 10:18:08.84 ID:???.net<> >>399
Minified されたコードは Online JavaScript beautifier で整形できるので人間が読めないわけではありません。
http://jsbeautifier.org/
ただ、コード量が膨大なので全てを読み解くのに恐ろしく時間がかかります。
読みたい部分だけ目星をつけて読むのなら良いと思いますが、全体的に読むなら Google が提供しているJavaScriptライブラリを読むほうが時間効率的に良いと思います。 <>
Name_Not_Found<>sage<>2014/07/14(月) 10:58:53.51 ID:???.net<> >>387
ありがとうございました
266-267で書かれていることがだいたい理解できました <>
Name_Not_Found<>sage<>2014/07/14(月) 11:22:00.74 ID:???.net<> new hoge.hoge.hoge.Hoge()
という式があった時、
hoge.hoge.hoge.Hoge
が先にMemberExpressionとして評価されると思いますが、
MemberExpressionの定義の中に、
hoge.hoge.hoge.Hogeのように再帰したMemberExpressionを定義する部分がないように思います
なぜこれで再帰的に評価されるのでしょうか? <>
Name_Not_Found<>sage<>2014/07/14(月) 11:40:16.39 ID:???.net<> 論破君が論破のために必死で勉強してるのか
しかし目が節穴だな <>
Name_Not_Found<>sage<>2014/07/14(月) 11:40:17.49 ID:???.net<> MemberExpression . IdentifierName
この定義が再帰的に適用されるのが分かってないと思われ <>
Name_Not_Found<>sage<>2014/07/14(月) 11:44:26.98 ID:???.net<> >>404
下記が再帰的に参照している。
MemberExpression
MemberExpression . IdentifierName
最近、荒れがちなので質問時には id を出してもらえると有難い。 <>
Name_Not_Found<>sage<>2014/07/14(月) 12:55:33.07 ID:???.net<> 1 + 2 + 3 + 4 + 5が定義されてないって言ってるような物だな <>
Name_Not_Found<>sage<>2014/07/14(月) 12:55:47.42 ID:???.net<> あっ、そうか
MemberExpressionにMemberExpressionが書いてるんだから、それが再帰ですよね
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/14(月) 13:41:39.33 ID:???.net<> JavaScriptで初めてオブジェクト指向を学びたいのですが全体の構造というか使われ方が掴めません
よくある10行や20行のパーソンやらアニマルやらを使ったオブジェクト指向の概念の説明ではなく
実際に計算機のような簡単なもので全体的に完成したコードの例が一つ欲しいのですが、いいものはありませんか? <>
Name_Not_Found<>sage<>2014/07/14(月) 13:50:45.72 ID:???.net<> オブジェクト指向はセンス
更に言うならJavaScriptのobj指向はプロトタイプベースといってちょっと特殊
(普通はクラスベース)
C++のオブジェクト指向から学ぶべし <>
Name_Not_Found<>sage<>2014/07/14(月) 14:24:46.14 ID:???.net<> オブジェクト指向が普及しだしてから、システムの重大障害とかセキュリティーホールとか、
大量発生するようになった。
共通化とかカプセル化とかフレームワークとか進めた結果、
業務アプリの設計者や実装者が、
どういう動作をするかよく理解しないまま利用しているケースが多い。
いざ不具合が発生した時に、全体がわかる人がいないから、
何がどうなっていてどこを直す必要があるのか解析できる人がほとんどいない。
シンプルに効率よく構築できるはずが、
問題がより複雑になって、維持管理にコストがかさんでいるのが現状。
10年後に主流であり続けられるかと言ったらかなり微妙だね。
言語を学ぶのではなく、アルゴリズムを徹底的に身に着けるほうが、役に立つよ。
あえて言語を学ぶとしたら英語一択。 <>
Name_Not_Found<>sage<>2014/07/14(月) 14:34:28.24 ID:???.net<> オブジェクト指向が問題を複雑にしたんじゃなくて
オブジェクト指向によって複雑な問題に対処できるようになっただけ
もしオブジェクト指向を使わずにその複雑な問題に対処しようとしたら
もっと問題が出るよ <>
Name_Not_Found<>sage<>2014/07/14(月) 15:08:38.42 ID:???.net<> ・文字列末に<br>がひとつだけあれば削除する
・文末の<br>がふたつ以上なら削除しない
これをreplaceでするにはどうしたらいいですか?
文末の<br>をひとつ削除する、なら簡単にできますが
ふたつ以上なら削除しない、が難しいです <>
Name_Not_Found<>sage<>2014/07/14(月) 15:14:33.45 ID:???.net<> >>414
ちょっと正規表現考えたけど
第二引数を関数にしてごにょごにょしたくなってきた <>
Name_Not_Found<>sage<>2014/07/14(月) 15:16:33.07 ID:???.net<> 正規表現だけでは難しいので
str.replace(/(<br>)*$/g,function(s){
return s.length > 4 ? s:'';
})
とやったら出来ました
もっといい方法はあるでしょうか <>
Name_Not_Found<>sage<>2014/07/14(月) 15:16:58.48 ID:???.net<> >>415
まさにごにょごにょしましたw <>
Name_Not_Found<>sage<>2014/07/14(月) 15:17:01.02 ID:???.net<> >>415
普通に
.replace(/([^(<br>)]?)<br>/, '$1') で良くね? <>
Name_Not_Found<>sage<>2014/07/14(月) 15:17:44.67 ID:???.net<> 後者の<br>の後ろの$が抜けてた <>
Name_Not_Found<>sage<>2014/07/14(月) 15:19:49.04 ID:???.net<> 試したらダメじゃーんwwすまんな <>
Name_Not_Found<>sage<>2014/07/14(月) 15:37:40.14 ID:???.net<> javascriptの正規表現には否定的後読みの機能はなかったはず
それに他の人がソースを触ったりすることを考えると>>416で最善 <>
Name_Not_Found<>sage<>2014/07/14(月) 16:45:28.95 ID:???.net<> >>414
str.replace(/((<br>)|(<br><br>))($)/g,"$3$4")
でできる気がする <>
Name_Not_Found<><>2014/07/14(月) 17:07:39.15 ID:wP/G5P5l.net<> >>414,415
str.replace(/(<br><br>)$|<br>$/g, '$1') <>
Name_Not_Found<>sage<>2014/07/14(月) 17:31:41.23 ID:???.net<> たしかにそれで出来ますね
<br><br>をあえて置換するという発想がすごいです
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/14(月) 20:51:25.60 ID:???.net<> >>402
> Minified されたコードは Online JavaScript beautifier で整形できるので人間が読めないわけではありません。
実際にやってみればわかるけど、読めないよ。
あれは変数名は元に戻さないからね。
改行とインデントと整えるツール <>
Name_Not_Found<><>2014/07/14(月) 21:29:29.40 ID:mCHQ5sC2.net<> >>425
分かっています。
機械的処理では元の変数名には戻せませんが、読めない事はありません。
実際に読んだことがありますよ。 <>
Name_Not_Found<>sage<>2014/07/14(月) 22:16:56.61 ID:???.net<> A(){
B();
}
B(){
C();
}
か
A(){
B();
C();
}
ならどっちがいいですか <>
Name_Not_Found<>sage<>2014/07/14(月) 23:46:22.43 ID:???.net<> どれもだめ <>
Name_Not_Found<>sage<>2014/07/15(火) 01:17:44.12 ID:???.net<> >>425
ロジック読むのに、変数名なんて関係ないよ。
実際、20年ぐらい前のプログラムの変数名や関数名は
普通に「A01B002」とかコードで書くのが普通だったし、
苦も無くロジックを組めたし、読めた。 <>
Name_Not_Found<>sage<>2014/07/15(火) 01:54:30.31 ID:???.net<> 読める自慢されても^^; <>
Name_Not_Found<>sage<>2014/07/15(火) 03:16:56.73 ID:???.net<> js は型を宣言しないので、名前が意味不明になると余計につらいだろう <>
Name_Not_Found<>sage<>2014/07/15(火) 03:20:15.78 ID:???.net<> 変数名の長さもパフォーマンスに影響するからな
読めるソースを書いて後はグーグルさんに最適化してもらえばええ <>
Name_Not_Found<>sage<>2014/07/15(火) 03:25:46.45 ID:???.net<> 変数名の長さがパフォーマンスにどのくらいどういうかたちで影響するんですか <>
Name_Not_Found<>sage<>2014/07/15(火) 03:46:22.87 ID:???.net<> マイクロ秒単位の話だから気にする必要はない
ただ最適化の手法としてのお話 <>
Name_Not_Found<>sage<>2014/07/15(火) 04:23:14.46 ID:???.net<> 2つ質問なんですが
質問1 thisをオブジェクト内で使ったらthis.プロパティで普通に呼び出せたのに
thisを関数内で使ってローカル変数を呼び出しても
function a(){
var tes=5;
alert(this.tes);
tes++;
}
//外部から2回呼び出す
6にならないどころか5すら出てこないのですがなぜですか?
質問2 グローバル変数を使わずに外部から2回関数を呼び出しても
その値を保持(C++のスタティック変数のように)するにはどうすればいいでしょうか? <>
Name_Not_Found<>sage<>2014/07/15(火) 04:33:26.65 ID:???.net<> function a(){} の外でvar tesしようと思わないのか <>
Name_Not_Found<>sage<>2014/07/15(火) 05:44:00.75 ID:???.net<> 配列とスカラーの両方を取る場合の引数名は何にしてますか?
idとidの配列の両方を取るような場合です <>
Name_Not_Found<>sage<>2014/07/15(火) 05:57:35.65 ID:???.net<> 変数の意味が重要
a + b で、aがリンゴの数、クラスの生徒数など、
意味がわからないと、ソースコードは理解できない
ソースコードがすごく少ない、数行のテトリスを見たが、
変数の意味がわからない
7で割る理由だけが、タイルの形が7種類あるためと、
そこしかわからない <>
Name_Not_Found<>sage<>2014/07/15(火) 08:39:49.84 ID:???.net<> lodashを使い
array同士で一致するものがあるかを調べる時は
_.intersection(a,b).length > 0
とするしかないですか?
もっといいやり方あれば教えて下さい <>
Name_Not_Found<>sage<>2014/07/15(火) 10:15:15.49 ID:???.net<> >>399で勉強のためにソース読みたいって言ってるとこから始まってるのに
変数名がデタラメになってるソースでも読めるよ!読めるよ!読めるよ!とかバカすぎ <>
Name_Not_Found<>sage<>2014/07/15(火) 10:56:05.49 ID:???.net<> 該当Webアプリがどういうコードで実装されているか勉強するためにコードリーディングするので変数名は何でもいい
読みにくいだけで読めないわけじゃない <>
Name_Not_Found<>sage<>2014/07/15(火) 11:06:43.40 ID:???.net<> 変数名がデタラメで勉強にならないのは「変数名の命名規則を学ぶ時」ぐらいか <>
Name_Not_Found<>sage<>2014/07/15(火) 11:06:54.59 ID:???.net<> 議論するだけ無駄
こいつは論破することが目的だから
論破されることなんて絶対許さない <>
Name_Not_Found<>sage<>2014/07/15(火) 11:16:45.66 ID:???.net<> デコンパイル後のソースとかも同じ
必要があったから読んだ経験あるけど時間の無駄感はんぱなかったわ
やはり何事も効率が良いほうがいい <>
Name_Not_Found<>sage<>2014/07/15(火) 11:44:42.67 ID:???.net<> minifiedされたコードリーディングは、そこにどれだけ時間と情熱をかけられるかに依る
その判断は人それぞれなので、この場合は質問者自身にしか判断できない
この手の問題で質問者と自分を同一視して「無駄」と評する人がいるけど、質問者の可能性を自分と同一と見るのは傲慢だと思うな
「コードを読むのに時間がかかる」問題点は共通認識なのだから、後は質問者に判断してもらえばいい <>
Name_Not_Found<>sage<>2014/07/15(火) 11:53:18.15 ID:???.net<> サーバから送られてくるデータの形式とか分からないから
たとえミニファイされてなくても難易度がS級レベルなのはまちがいない
はい論破 <>
Name_Not_Found<>sage<>2014/07/15(火) 11:57:10.65 ID:???.net<> 特定のコードの意味が知りたいのならminifiedを解読して調べるが
何か勉強するのに適当なコードが欲しいっていう相手に勧めるとかありえんだろ? <>
Name_Not_Found<>sage<>2014/07/15(火) 12:00:24.29 ID:???.net<> >>411
プラットフォームを選ばずブラウザですぐにテストできるのでJavaScriptでオブジェクト指向を始めたいです
「クラス」などの単語無しの解説サイトが少ないこともあり、type=text/javascriptから始まる
オブジェクト指向スクリプティングのお手本の様なコードが見たいのですが
やはり「クラス」なしで解説している参考書を探すべきでしょうか <>
Name_Not_Found<>sage<>2014/07/15(火) 12:01:40.73 ID:???.net<> >>447
特定のコードの意味が知るのも勉強だと思うが <>
Name_Not_Found<><>2014/07/15(火) 12:16:10.55 ID:TjyUZnkiR<>質問させていただきます。
下記のコードは綺麗なコードでしょうか?
また綺麗なコードに書き換えるためにアドバイスがありましたらご教授ください。
var wH=window.innerHeight;
window.onload=function(){
setTimeout(function(){
mojiokosi();
},5000);
}
function mojiokosi(){
var mojisuu=new Array;
var naiyou=new Array;
var name=document.getElementById('moji');
var nameC=name.childNodes;
var yousonokazu=0;
name.style.visibility='visible';
for(var m=0;m<nameC.length;m++){
naiyou.push(nameC[m].innerHTML);
mojisuu.push(naiyou[m].length);
nameC[m].innerHTML='<br />';
}
henka(naiyou,mojisuu,yousonokazu,nameC);
}<>
Name_Not_Found<><>2014/07/15(火) 12:17:24.62 ID:TjyUZnkiR<>function henka(nakami,kazu,yousosuu,nameChild){
var i=kazu[yousosuu];
nameChild[yousosuu].style.visibility='visible';
var timer=setInterval(function(){
nameChild[yousosuu].innerHTML='';
for(var v=0;v<i;v++){
result1=String((~~(Math.random()*12)+4).toString(16));
result2=String((~~(Math.random()*16)).toString(16));
unicode=unescape('%u28'+result1+result2);
nameChild[yousosuu].innerHTML+=unicode;
}
},50);
setTimeout(function(){
nameChild[yousosuu].innerHTML=nakami[yousosuu];
clearInterval(timer);
yousosuu++;
if(yousosuu<nameChild.length){
henka(nakami,kazu,yousosuu,nameChild);
}
},1000);
}<>
Name_Not_Found<><>2014/07/15(火) 12:17:51.90 ID:TjyUZnkiR<>ーーーーーhtmlーーーーー
<div id="moji" class="moji">
<p>年数 	 文字文字文字文字</p>
<p>年数 	 文字2文字2文字2文字2文字2</p>
<p>年数 	 文字3文字3文字3文字3</p>
<p><br />文字4文字4文字4文字4文字4</p>
</div><>
Name_Not_Found<><>2014/07/15(火) 12:22:05.93 ID:TjyUZnkiR<>>>451
5行目コピペミス nameChild[yousosuu].innerHTML='””;<>
Name_Not_Found<>sage<>2014/07/15(火) 12:33:04.05 ID:???.net<> >>446
もはやどの意見に対しての論破なのかもわからん <>
Name_Not_Found<>sage<>2014/07/15(火) 12:40:02.23 ID:???.net<> googlemapの解析の難易度から言えば
ミニファイによる難読性などは
もはや本質的ではないといえる
はい論破 <>
Name_Not_Found<>sage<>2014/07/15(火) 12:49:27.46 ID:???.net<> 論破いいたいだけやろ <>
Name_Not_Found<>sage<>2014/07/15(火) 12:50:38.39 ID:???.net<> 複雑で大規模なコードであればあるほど変数名ないと読みづらいだろ <>
Name_Not_Found<>sage<>2014/07/15(火) 13:20:47.83 ID:???.net<> 難易度10000が難易度10500になる程度 <>
Name_Not_Found<>sage<>2014/07/15(火) 13:38:15.67 ID:???.net<> よくJavaScriptはソースが隠せないから怖くて仕事で使えないみたいな話しがあるが、
Javaは逆コンパイル出来る事を考えれば、難読化したJavaScriptの方が型情報が無い分
ソースを隠せてると言える <>
Name_Not_Found<>sage<>2014/07/15(火) 15:31:34.23 ID:???.net<> 読みにくいだけやろ <>
Name_Not_Found<>sage<>2014/07/15(火) 16:57:00.94 ID:???.net<> ソースコードなんて難読化しようが圧縮化仕様がクライアントに渡る時点で全部漏れてるんだよ
そんなところに気を使うなら人様にミられてもいいコードを書けばいい
他人に見られると困るようなコードを書きたいならjavascriptは触るな <>
Name_Not_Found<>sage<>2014/07/15(火) 16:59:00.57 ID:???.net<> そのコードについて一番詳しいのは自分
という状態を保っておけばパクラーが出てきても問題ない <>
Name_Not_Found<>sage<>2014/07/15(火) 17:08:39.89 ID:???.net<> >>461
触るなとうのはJavaも含まれているのか?
JavaScriptよりもJavaの方が分かり易いソースを得る可能性は高いと思ってるけど <>
Name_Not_Found<>sage<>2014/07/15(火) 17:20:06.88 ID:???.net<> onblurハンドラがセットされている要素をblur()をしたら、
onblurハンドラは、blur()以後のコードよりも先に実行されますか?
場合によってはblur()以後のコードの方が先に実行されることがあり得ますか? <>
410<>sage<>2014/07/15(火) 19:09:13.66 ID:???.net<> >>448
クラスなしのオブジェクト指向を理解したところで何になるわけ?
それオブジェクト指向じゃないし
言い方きついがJSでオブジェクト指向を理解するのはお前じゃ無理といっておく <>
Name_Not_Found<>sage<>2014/07/15(火) 19:57:42.71 ID:???.net<> オブジェクト指向自体がオワコンだから、覚える必要なよ。
関数型言語が復権する。 <>
Name_Not_Found<>sage<>2014/07/15(火) 20:53:39.00 ID:???.net<> >>465
JavaScriptのオブジェクト指向にはクラスそのものは無いと読んだことがあります
もしそうなら「クラス」あるいは「クラスのようなもの」というイメージで理解してしまうと
JavaScriptでしかできないような書き方を否定してしまうようで、なんとなく避けたいです <>
Name_Not_Found<>sage<>2014/07/15(火) 22:05:45.82 ID:???.net<> >>466
復権も何も、関数型言語が覇権を握った事なんてあったっけ? <>
Name_Not_Found<>sage<>2014/07/15(火) 23:29:47.55 ID:???.net<> いいや無い <>
Name_Not_Found<><>2014/07/15(火) 23:40:01.62 ID:GCy+oIyF.net<> >>399はどこに消えたのか <>
Name_Not_Found<>sage<>2014/07/16(水) 01:02:14.67 ID:???.net<> Cを関数型言語だと誤解してる人は少なからずいる。 <>
Name_Not_Found<>sage<>2014/07/16(水) 01:42:52.64 ID:???.net<> >>467
実際クラスベースっぽい書き方とprototypeベースっぽい書き方って大して変わらんよ
継承の仕方が違うだけで
どっちの書き方から覚えようともJavaScriptのオブジェクト指向がわかれば普通に両方書けるようになる <>
Name_Not_Found<>sage<>2014/07/16(水) 05:27:56.13 ID:???.net<> >>466
関数型パラダイムとオブジェクト指向は
対立するものではなく共存するもの
両方知る必要がある <>
Name_Not_Found<>sage<>2014/07/16(水) 05:53:14.00 ID:???.net<> オブジェクト指向はオワコンになったんじゃなくて常識になったんだよ <>
Name_Not_Found<>sage<>2014/07/16(水) 08:11:07.39 ID:???.net<> JavaScriptはプロトタイプを使って結果的にオブジェクト指向言語と同じことを実現しているだけなので
「オブジェクト指向を覚える」という目的には適していない <>
Name_Not_Found<>sage<>2014/07/16(水) 13:33:19.06 ID:???.net<> JavaScriptはPythonとかと全く同じオブジェクト指向言語とも言える
本来はclassとかのキーワードを導入して実装の詳細は隠すもんだが
JavaScriptはそれが剥き出しになってる(prototypeがそれ)
動的言語のクラスシステムがどう実装されているか勉強にはなったが
おかげでオレオレクラスシステムが氾濫するはめにもなった <>
Name_Not_Found<>sage<>2014/07/16(水) 14:38:19.49 ID:???.net<> document.getElementByIdでDOM要素を変数に代入したあと
そのDOM要素をremoveしても、
変数の中にはDOM要素が入っています
もしDOM要素を持っている変数がある場合は、それも削除しないと
メモリは完全に解放されない、ということでしょうか? <>
Name_Not_Found<>sage<>2014/07/16(水) 14:48:38.04 ID:???.net<> はい <>
Name_Not_Found<>sage<>2014/07/16(水) 15:06:37.45 ID:???.net<> ありがとうございました <>
Name_Not_Found<>sage<>2014/07/17(木) 03:26:35.12 ID:???.net<> function func(a){
this.a=a;
}
なぜこれで保存?できるんですか? <>
Name_Not_Found<>sage<>2014/07/17(木) 03:29:06.44 ID:???.net<> new A();とすると、
Aと同名のコンストラクタ関数 Aが呼ばれるので、
その中に、そのクラスに特有の処理を書けばよい
function A(){
thisを使って、プロパティ・メソッドを作る
}
次に、Aのプロトタイプに、親クラスPを、newして設定する
これで、Aがnewされる時には同時に、Pの部分もnewされて、
Pクラスのコンストラクタ関数 Pが呼ばれる
A.prototype = new P();
A1{P1}, A2{P2}
オブジェクトA1の中にP1があり、A2の中にP2があるイメージ
つまり、オブジェクト指向のクラスは、
JSではコンストラクタ関数のこと
そんなに本格的なことを勉強したいのなら、
この本を読むのが速い
はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013
オブジェクト指向、DOMについて、
各100ページの説明がある <>
Name_Not_Found<>sage<>2014/07/17(木) 03:43:43.73 ID:???.net<> またかw <>
Name_Not_Found<>sage<>2014/07/17(木) 06:32:26.22 ID:???.net<> >>481
もはやネガティブキャンペーン <>
Name_Not_Found<>sage<>2014/07/17(木) 10:40:13.63 ID:???.net<> >>480
varなくても宣言できちゃうから、と返せば良いのだろうか <>
Name_Not_Found<>sage<>2014/07/17(木) 11:04:52.47 ID:???.net<> >>481
> これで、Aがnewされる時には同時に、Pの部分もnewされて、
> Pクラスのコンストラクタ関数 Pが呼ばれる
> A.prototype = new P();
>
> A1{P1}, A2{P2}
> オブジェクトA1の中にP1があり、A2の中にP2があるイメージ
間違ってます
もういっかい勉強しなおしましょう <>
Name_Not_Found<><>2014/07/17(木) 12:00:14.92 ID:YSAhzT6pZ<>すみません、ご質問ですがソート機能でプルダウンで選択した項目に
selected指定をしたいのですが、どなたか方法がわかる方、
ご教示頂けないでしょうか?
<select name="Select" id="Select">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select><>
Name_Not_Found<>sage<>2014/07/17(木) 15:50:33.45 ID:???.net<> イベントハンドラの中で
一連のイベント処理が終わってから実行される処理をセットしたい場合
どうやればいいですか?
たとえばclickハンドラの中で、その処理をセット
その後もイベントバブリングし、デフォルト処理もされる
その後、clickハンドラの中でセットした処理が実行される
という感じです <>
Name_Not_Found<>sage<>2014/07/17(木) 15:53:47.09 ID:???.net<> setTimeoutでウェイトを持たせれば出来るとは思いますが
それだと処理速度依存になるので、
もっとスマートなやり方はできないかと <>
Name_Not_Found<>sage<>2014/07/17(木) 16:10:44.22 ID:???.net<> setTimeoutで0を指定しても、イベント処理が終わった後に実行されました(chromeにて)
望ましい動作ですが、
これはJSにおけるデフォルトの動作なのでしょうか?
つまり、「イベント処理がすべて終わるまではタイマ割り込みは発生しない」ものなのでしょうか? <>
Name_Not_Found<>sage<>2014/07/17(木) 16:27:30.42 ID:???.net<> http://jsbin.com/vifuzoru/1/edit
chrome/firefox/IEそれぞれの最新版では検証しても、
setTimeout0はイベント処理の後に実行されました。
関数の途中で割り込みが発生することはありませんが、
イベント処理全体もそのような形でガードされているのでしょうか・・? <>
Name_Not_Found<><>2014/07/17(木) 17:08:34.33 ID:U4NDgl4I.net<> >>487
前も同じ質問しませんでしたか?
イベントハンドラ関数内で処理リストを持っておき、自前で管理して下さい。
>>490
保証されません <>
Name_Not_Found<>sage<>2014/07/17(木) 18:12:50.41 ID:???.net<> ありがとうございます
根拠は何でしょうか?
イベントキューにスタックが積まれて、
イベントループが順次処理する、
settimeoutはイベントキューの最後に追加する、
というような記事は見つかるのですが、
あるイベントが呼び出すイベントハンドラの系が、
イベントキューに単一タスクとして登録されるのか、そうでないのか
という情報が今のところ見つからなくて困ってます
根拠をご存知でしたら教えてください <>
Name_Not_Found<>sage<>2014/07/17(木) 18:18:12.07 ID:???.net<> ん?
タイマーの方は構わず発火しちゃうんじゃないか? <>
Name_Not_Found<>sage<>2014/07/17(木) 18:36:39.51 ID:???.net<> タイマーもイベントキューで実行されるようです
イベントキューに例えばクリックイベントが登録されるとすると、
そのイベントの処理が実行されている間は
イベントキューに何が積まれようがそもそも見られてもいないのでは
とも思うのです <>
Name_Not_Found<>sage<>2014/07/17(木) 18:57:49.09 ID:???.net<> 俺もそんな気がしたけど仕様ざっと見てもそこらへん書いてなかったし、
保証されてないのかな <>
Name_Not_Found<>sage<>2014/07/17(木) 20:32:03.00 ID:???.net<> イベントキューの中ではタイマーもクリックもイベントという意味で同列で
FIFOでたんたんと実行されていく、と考えたら、
イベントハンドラの中でセットしたタイマーイベントがそのイベントが終わった後に実行されるのは
原理的に必定だと言えるのでは。
またハンドラ内でタイマー以外のイベントをtriggerした時にも、
あくまでイベントキューに積まれるだけで、実行はそのイベントが終わった後になるはず <>
Name_Not_Found<>sage<>2014/07/17(木) 20:37:26.54 ID:???.net<> いま問題にしているのは、バブリングしていくときにバブリングフェイズ全体が一つのタスクなのか個々のハンドラ実行が一つのタスクなのかってことだろ <>
Name_Not_Found<>sage<>2014/07/17(木) 20:45:10.72 ID:???.net<> その疑問を呈したのは自分ですが、
イベントキューというものの構造を考えると必然的にひとつのタスクになると思います
キューに積まれているのは各ハンドラへの呼び出しではなく、
クリックイベントだと思われますので。
現にイベントフェーズの中で遅い処理を書いても、
ハンドラ中で設定したsetTimeoutは必ずその後に実行されます <>
Name_Not_Found<><>2014/07/17(木) 22:06:36.69 ID:kl3tLgIH.net<> >>492
仕様に書かれていないからです。
最後に実行したいなら自前で順序を制御するのが最も確実であると思います。 <>
Name_Not_Found<>sage<>2014/07/17(木) 22:07:04.94 ID:???.net<> >>484
ということは実質外部変数と同じってことですか? <>
Name_Not_Found<>sage<>2014/07/18(金) 00:49:52.76 ID:???.net<> 【環境】IE9・IE10・Firefox・Chrome
【何をしたのか】ファイルをPOSTした
【エラーメッセージ】特になし
【期待する結果】画面遷移をせずに選択したファイルをPOST送信したい
【サンプルコード】
こちらでの質問でよいのか判断がつきかねるのですが
type=fileで選択した画像をPOSTしたいと考えておりますが
var image = $("#registerd [name=image]").val();
としてもimageには何も入っておりません。
その他のtype=textなどは取得できてPOST出来ております。
選択された画像を取得するにはどのようにすれば良いのでしょうか?
識者の方たちのアドバイスいただけると助かります。 <>
Name_Not_Found<>sage<>2014/07/18(金) 00:56:37.79 ID:???.net<> >>501
残念ながらjQueryでは選択したファイル内容を取得できない。
取得するにはFile APIを使用する必要がある。
ただしFile APIはIE10から対応だから
IE9では動かない。
画面遷移をせずにファイルをPOSTするだけなら
iframeを使ってできる。これなら古いブラウザでもOK <>
496<>sage<>2014/07/18(金) 00:59:14.60 ID:???.net<> なお、ここらへんを意識せずにやってくれるライブラリがある。
検証したわけじゃないからオススメは言えないが
「ファイル アップロード JavaScript ライブラリ」あたりで
検索すると沢山出てくるよ。
良さそうなのがあったら教えてくれw <>
Name_Not_Found<>sage<>2014/07/18(金) 01:03:37.68 ID:???.net<> jQuery初心者で勉強中の者です。
ttp://calie.jp/beashow/index.htmlのサイトのような
画像を読み込んだら自動でエフェクトが動く動きを実現するには
jquery.inview.jsとjquery.easing.1.3.js
が必要だということはわかったのですが、どのように記述すれば実現できるのかがわかりません。
画像をよみこんでフェードインさせる方法を詳しい方ご教授いただけないでしょうか <>
Name_Not_Found<>sage<>2014/07/18(金) 01:08:36.86 ID:???.net<> idがabcのtrタグ内にある、nameが_defで終わるnameをリストしたい。
一番スマートな方法は?
<tr id="abc">
<td><input name="fas_def" /></td>
<td><input name="sec_def" /></td>
<td><input name="thr" /></td>
<td><input name="fou_def" /></td>
<td><input name="fif" /></td>
<td><input name="six_def" /></td>
</tr> <>
Name_Not_Found<>sage<>2014/07/18(金) 01:16:23.51 ID:???.net<> >>505
一行で書いてみた。動かしてないけどこんな感じかな。
var names = $.map($('#abc [name$="_def"]'), function(e) { return e.attr('name') }); <>
Name_Not_Found<>sage<>2014/07/18(金) 01:32:45.00 ID:???.net<> >>504
普通にDOM使えばライブラリなんかいらないだろうに
jQueryならanimate使うとか <>
Name_Not_Found<>sage<>2014/07/18(金) 01:38:12.35 ID:???.net<> 少し間違った。こうだった
var names = $.map($('#abc [name$="_def"]'), function(e) { return e.name })
ブラウザがarrow functionをサポートしてれば更に短くこう書ける。
var names = $.map($('#abc [name$="_def"]'), e => e.name)
; <>
Name_Not_Found<>sage<>2014/07/18(金) 03:41:13.90 ID:???.net<> もしイベントが並行に実行されるのなら、
関数Aの実行中にもう一つ、
同じ関数Aが実行される可能性があるので、
すべての関数を再入可能にしなければならないし、
すべてのグローバル変数を、ロックしなければならない
つまり、マルチスレッド・プログラミング
もしそんなに難しいなら、
誰もプログラミング出来ないはずだから、
そんなことはあり得ない
そもそもJSで、ロックやマルチスレッド・
プログラミングについて、書いている本があるのか?
>>504
jQueryの質問は、jQueryのスレへ書き込んで <>
Name_Not_Found<>sage<>2014/07/18(金) 04:30:43.13 ID:???.net<> JSで画像をブラウザの表示領域内に表示されるまで読み込ませない、という処理は可能でしょうか? <>
Name_Not_Found<>sage<>2014/07/18(金) 05:26:04.52 ID:???.net<> このスレはjqueryの話題も排除しません <>
Name_Not_Found<>sage<>2014/07/18(金) 06:23:25.86 ID:???.net<> >>499
ありがとうございました
JSのイベント周辺について書かれている仕様書とは何でしょうか?
http://www.ecma-international.org/ecma-262/5.1/
これを見てもイベントについてはなぜか書かれていないようです <>
Name_Not_Found<>sage<>2014/07/18(金) 07:14:14.75 ID:???.net<> http://javascript.info/tutorial/events-and-timing-depth#javascript-is-single-threaded
これにかなり詳しく書いてありました
必ずイベントキューに登録された順に実行されるわけではなく、
DOM mutation eventと
DOMイベントの中からトリガーされたDOMイベントは
キューに入れられずにシンクロナスに実行されるとのこと <>
Name_Not_Found<>sage<>2014/07/18(金) 09:50:33.23 ID:???.net<> >>510
可能だし、最近よく見る
jqueryのプラグインにありそう <>
Name_Not_Found<>sage<>2014/07/18(金) 11:18:21.56 ID:???.net<> >>510
http://codezine.jp/article/detail/7623 <>
Name_Not_Found<><>2014/07/18(金) 13:19:03.61 ID:O3bHHC6+.net<> >>512
>>4にリンクがあります。
http://www.w3.org/TR/DOM-Level-3-Events/
その他、DOM Events 周りの仕様も参考に。
http://www.w3.org/TR/#tr_DOM_events
>>513
そこはs公式ではないので必ず原文の仕様書と照らし合わせて情報の正誤を確認して下さい。 <>
Name_Not_Found<>sage<>2014/07/18(金) 15:00:50.77 ID:???.net<> >>514,509
やはりJavaScript無効環境に対応するにはHTMLにnoscriptを入れないとだめなようですね
今から大量のimgタグにそれをするのは大変なので諦めます ありがとうございました <>
Name_Not_Found<>sage<>2014/07/18(金) 19:31:05.14 ID:???.net<> JavaScript/jQueryのコツ〜円滑な協業と連携でWebサイト作りを成功させる!〜
(番組ID:lv186185614)
2014/07/18(金) 開場:19:27 開演:19:30 <>
Name_Not_Found<>sage<>2014/07/18(金) 19:38:39.40 ID:???.net<> >>516
DOMの方に書かれているんですね
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/18(金) 21:01:54.42 ID:???.net<> jQuery初心者で勉強中の者です。
ttp://calie.jp/beashow/index.htmlのサイトのような
画像を読み込んだら自動で画像がフェードインしエフェクトが動く動きを実現するには
jquery.inview.jsとjquery.easing.1.3.js
が必要だということはわかったのですが、どのように記述すれば実現できるのかがわかりません。
スクロールしてその画像がみえてきたときに画像をよみこんでフェードインさせた画像を左右上下にエフェクトをかけて表示させる方法を詳しい方ご教授いただけないでしょうか <>
Name_Not_Found<>sage<>2014/07/19(土) 05:06:07.86 ID:???.net<> jQueryの質問は、jQuery専門スレへ書き込んで
jQuery ライブラリ 総合質問所 vol.4
ttp://peace.2ch.net/test/read.cgi/hp/1400313626/l50 <>
Name_Not_Found<>sage<>2014/07/19(土) 05:06:58.12 ID:???.net<> >>521
断る <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/19(土) 06:12:40.45 ID:???.net<> 荒らしには反応するだけ無駄ですよ <>
Name_Not_Found<><>2014/07/19(土) 10:21:37.50 ID:fvQeztGH.net<> >>521
誘導するならライブラリ総合スレだろう
jQueryスレは荒らしが立てたスレだ
JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/ <>
Name_Not_Found<>sage<>2014/07/19(土) 11:06:05.20 ID:???.net<> 誘導厨はプログラム板へどうぞ <>
Name_Not_Found<>sage<>2014/07/19(土) 12:02:31.31 ID:???.net<> これにタイムアウトを組み込むことは無理でしょうか?
検索するとajaxでは見るのですが単純なpostではみかけませんでした。
$("form#sample").submit(function(){
var mail = $("#sample [name=mail]").val();
$.post(
'foobar',
{
'mail': mail
},
function(data)
{
if( data == 'success')
{
alert('OK');
}
else
{
alert('NG');
}
}
);
});
使用している部分が多いのでajaxに変更することなく、
これにタイムアウトがつけれればと考えています。 <>
Name_Not_Found<>sage<>2014/07/19(土) 12:12:59.80 ID:???.net<> JavaScript を自ら学ぶ人の質問はなかなか見ないな <>
Name_Not_Found<>sage<>2014/07/19(土) 15:59:36.01 ID:???.net<> FormDataっていうのもあるのか。
でもこれHTML5の内容だな。
やっぱり古いブラウザではJavaScriptで
ファイルの送信ってきついの? <>
Name_Not_Found<>sage<>2014/07/19(土) 16:09:29.55 ID:???.net<> >>528
> FormDataっていうのもあるのか。
HTML5 は関係あるのか?
XMLHttpRequest Level 2 の FormData の事ではないのか?
http://www.w3.org/TR/XMLHttpRequest2/#interface-formdata <>
Name_Not_Found<>sage<>2014/07/19(土) 16:20:18.18 ID:???.net<> XMLHttpRequest Level 2 ってHTML5の一部でしょ? <>
Name_Not_Found<>sage<>2014/07/19(土) 16:23:07.48 ID:???.net<> XMLHttpRequestはデータの送信だけだから
ローカルのファイルを読み込むには
別の技術が必要になるのでは? <>
Name_Not_Found<>sage<>2014/07/19(土) 16:45:02.49 ID:???.net<> >>530
違う <>
Name_Not_Found<>sage<>2014/07/19(土) 22:14:24.45 ID:???.net<> >>526
一旦サブミットイベントにフラグでreturn falseして、タイムアウトの関数でフラグを変えもう一回サブミットをよぶ。これはフラグで通すとか。 <>
Name_Not_Found<>sage<>2014/07/20(日) 03:01:13.89 ID:???.net<> >>492 >>499
setTimeout の task source は timer task source と呼ばれるものが
仕様に定義されている
www.w3.org/TR/html5/webappapis.html
したがってevent loop の task source とは別なので queue も別になるだろう
>>490
その eventの propagate が終了するまでは同期的に実行される筈
DOM仕様のアルゴリズムでも非同期には処理していないし
例えば dispatchEvent は同期的に実行される
>>531
送信だけって、リクエスト送ればレスポンス受信できるじゃないか?
ローカルファイルは FileAPI <>
Name_Not_Found<>sage<>2014/07/20(日) 06:58:01.87 ID:???.net<> 同期的と非同期的の意味が分からなくなってきました
関数発行後すぐに実行されるのが同期的、
発行してから実行されるまでタイムラグがあるのが非同期的
と思っていたのですが違いますか? <>
Name_Not_Found<>sage<>2014/07/20(日) 07:15:53.56 ID:???.net<> >>535
違います。
同期は関数を実行して処理が追わらないと
関数から処理が戻らないものです。
その関数の処理が10秒かかる重い処理であれば
10秒の間、その他の処理は一切できなくなります。
だから非同期を使うんですね。
タイムラグが有るかどうかは関係ありません。 <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/20(日) 07:48:22.97 ID:???.net<> リクエストを送っている間jsが止まるのが同期
innerHTMLとnodeValueの値が違うのですが2つは同じじゃないんですか? <>
Name_Not_Found<>sage<>2014/07/20(日) 08:12:37.83 ID:???.net<> >>536
すると非同期関数は、実行中に処理が戻ってくることがあるのですか?
遅延実行されるだけで、実行中はブロックされると思ってました <>
Name_Not_Found<><>2014/07/20(日) 08:46:45.00 ID:xYE3uywO.net<> >>537
innerHTMLはHTMLパーサが正規化した後のHTML
nodeValueはノード毎の固有値(nodeTypeによって値が異なる)
DOMとHTML5の仕様書を読もう <>
Name_Not_Found<>sage<>2014/07/20(日) 08:55:10.25 ID:???.net<> シングルスレッドで動いているJSが
ノンブロッキング処理できるのは何故ですか? <>
Name_Not_Found<>sage<>2014/07/20(日) 10:34:54.37 ID:???.net<> innerHTMLだったりjqueryのhtmlだったりって非推奨なのですか?
documentに大量ノードがあって、あからさまにid=hogeのテキストだけ更新、みたいな場合なら
やらないほうがいいというのはわかるのですが
何が何でも部分的にappendやらremoveやらをちまちま更新した方が良いのでしょうか? <>
Name_Not_Found<>sage<>2014/07/20(日) 13:14:51.60 ID:???.net<> 普通に使っていい <>
Name_Not_Found<>sage<>2014/07/20(日) 13:32:33.21 ID:???.net<> >>540
シングルスレッドで動くのは、JavaScriptの実行環境で動く
あなたが作ったスクリプトであって、
JavaScript実行環境自体はマルチスレッドだからです。 <>
Name_Not_Found<>sage<>2014/07/20(日) 13:33:12.48 ID:???.net<> >>538
最後の行の認識で合ってる
10秒かかる関数なら同期だろうと非同期だろうと10秒ブロックされるのは一緒
その時点で実行される(同期)かされない(非同期)かってだけ
WebWorkerを使わない限りはシングルスレッド <>
Name_Not_Found<>sage<>2014/07/20(日) 13:58:46.80 ID:???.net<> jqueryで
プラグインで追加されたメソッドの一覧を知る方法ありますか? <>
Name_Not_Found<><>2014/07/20(日) 14:04:19.55 ID:6iUelLMD.net<> >>541
innerHTMLの問題点がわかっているなら使ってもいい <>
Name_Not_Found<>sage<>2014/07/20(日) 14:09:19.64 ID:???.net<> innerHTMLの問題点なら、jQueryのparseHTMLメソッドで解決できるよ。
だから今更遅いappendやremoveなんかを使う理由がない。 <>
Name_Not_Found<>sage<>2014/07/20(日) 14:17:34.28 ID:???.net<> innerHTMLの問題点って出力にそのまま使ったりしちゃ(攻撃者のコードが入るかもしれないから)ダメよってことであってる? <>
Name_Not_Found<>sage<>2014/07/20(日) 14:41:01.92 ID:???.net<> >>544
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/20(日) 14:42:25.62 ID:???.net<> >>543
それは違うのでは?
仕様書にJavaScriptはマルチスレッドでなくてはいけないとか書かれてるんですか? <>
Name_Not_Found<>sage<>2014/07/20(日) 14:48:03.21 ID:???.net<> >>550
仕様書には特に何も書かれているだろう。
何も書かれていないということは自由だ。
だからマルチスレッドにしてもよい。
マルチスレッドじゃなくても実装できるなら
別に構わないが。 <>
Name_Not_Found<>sage<>2014/07/20(日) 15:10:30.34 ID:???.net<> 同期か非同期かって具体的にどんな場面で気にするのかわからん <>
Name_Not_Found<>sage<>2014/07/20(日) 15:16:22.12 ID:???.net<> パフォーマンスを無視できるのならブロッキングI/Oが自然
つまりパフォーマンスを気にする時にノンブロッキングI/Oが使われる
はい論破 <>
Name_Not_Found<>sage<>2014/07/20(日) 15:44:21.75 ID:???.net<> ユーザー定義メゾットの対義語って何ですか? <>
Name_Not_Found<>sage<>2014/07/20(日) 15:45:59.38 ID:???.net<> 組み込み関数以外でお願いします <>
Name_Not_Found<>sage<>2014/07/20(日) 15:56:12.51 ID:???.net<> >>553
何を論破してるのかわからんが、単なるパフォーマンスではないぞ
>>552
一般に、処理の中で
すぐにやらなくてもいい(画像の描画など)
すぐにやれない(他の処理の結果に依存するものなど)
終了時が予測できない(サーバのレスポンス待ちなど)
部分は非同期、すなわち後回しにする
GUI フロントエンドの場合は利用者を待たせないことが主な目的になる <>
Name_Not_Found<>sage<>2014/07/20(日) 16:15:33.39 ID:???.net<> >>554
組み込みメソッド <>
Name_Not_Found<>sage<>2014/07/20(日) 16:16:53.24 ID:???.net<> >>556
言ってること同じやんけ
論破され夫 <>
Name_Not_Found<>sage<>2014/07/20(日) 16:45:20.82 ID:???.net<> >>556
その処理の中で、サーバ側じゃなくてクライアント側でやる必要のある例ってどんなのがある?
画像の描画については同期・非同期を気にするパターンがそもそも思いつかなかった <>
Name_Not_Found<>sage<>2014/07/20(日) 17:03:23.47 ID:???.net<> >>553
自前の重い処理があった場合は非同期にしてもパフォーマンスは向上しない
はい論破 <>
Name_Not_Found<>sage<>2014/07/20(日) 17:04:29.73 ID:???.net<> >>560
そんな1+1=2みたいなこと言われても言葉に困るわ <>
Name_Not_Found<>sage<>2014/07/20(日) 17:24:14.76 ID:???.net<> そもそも同期/非同期っていう言葉がわかりにいんだよな
同期と言う言葉には調和やコントロールのイメージ、
非同期と言う言葉には不調和やアンコントロールのイメージがあるから。
しかし実態は逆で、同期的操作は時に不調和をもたらす
だからブロッキング/ノンブロッキングの方が適切だと思う <>
Name_Not_Found<>sage<>2014/07/20(日) 18:36:02.27 ID:???.net<> でもまあ、ブロックと言われても、
レゴ?って思うのが普通だろうな。 <>
Name_Not_Found<>sage<>2014/07/20(日) 18:53:07.62 ID:???.net<> 総合スレから飛んできました。現在、selectのidごとに関数を呼び出していますが、もっと
簡略化してどのオプションから選択されたかに変えることはできるでしょうか?
$(function(){
$("#f1").each(function(){
var pos;
function call_list(){省略}
$(this).each(function(){call_list();});
$("#sel1").change(function(){
pos = $("#sel1 option:selected").val();
call_list();
});
$("#sel2").change(function(){
pos = $("#sel2 option:selected").val();
call_list();
});
});
});
</script>
</head>
<body>
<form id="f1">
<select id="sel1">
</select>
<select id="sel2">
</select>
<select id="sel3">
</select>
</form>
</body> <>
Name_Not_Found<>sage<>2014/07/20(日) 18:54:07.86 ID:???.net<> 省略部分
$.ajax({
url:"ajax_call.php" ,type:"post",data:{"send":pos}
}).done(function(ret){
//alert(ret);
$("#sel2").children().remove();
$("#sel3").children().remove();
var i;
var sels = new Array("#sel1","#sel2","#sel3");
var pack = ret.split(":");
for( var i=0 ; i < pack.length; i++){
var sep = pack[i].split("@");
for(j=0;j< sep.length -1;j++){
var option = $("<option>");
var opt = option.html(sep[j]);
option.val(sep[j]);
var sel = opt.appendTo(option);
sel.appendTo(sels[i]);
}
}
}).fail(function(){
alert("error"); <>
Name_Not_Found<>sage<>2014/07/20(日) 18:55:51.31 ID:???.net<> >>564-559のリファクタリング後
$(function(){
function threeSelectFrom(element) {
function refresh(pos) {
$.post("ajax_call.php", {send: pos}, function(ret) {
$(".sel2, .sel3").empty();
$.each(ret.split(":"), function(i, item) {
var values = item.split("@");
values.pop();
var options = $.map(values, function(value) {
return $("<option>").html(value).val(value);
});
$(".sel"+(i+1)).append(options);
})
}).fail(function() {
alert("error");
}
}
$(".sel1, .sel2").change(function() {
var pos = $(this).find("option:selected").val();
refresh(pos);
});
refresh();
}
$("#f1").each(function() {
threeSelectFrom(this);
});
}); <>
Name_Not_Found<>sage<>2014/07/20(日) 19:07:31.27 ID:???.net<> idを持たせずに
どのオプションから選択されたかを判定したいってこと?
別に、id持たせたらいいじゃん
何があかんねん <>
Name_Not_Found<>sage<>2014/07/20(日) 19:21:09.73 ID:???.net<> > 何があかんねん
そりゃ再利用しづらいからだろ?
同じものが2つ以上でたら使えない。 <>
Name_Not_Found<>sage<>2014/07/20(日) 19:25:13.48 ID:???.net<> 最近はIDを使うことって少なくなったな。
classやnameあたりで十分だよ。 <>
Name_Not_Found<>sage<>2014/07/20(日) 19:42:22.66 ID:???.net<> >>559
>画像の描画
クライアントのブラウザ側が非同期にやってくれるので
クライアントのスクリプト側が気にする必要は普通無い
> クライアント側でやる必要のある例
一般論だが
API にイベントハンドラが用意されていない種類の処理で
非同期にやる必要があるもの、または、自前の重い処理は、
クライアントのスクリプト側で非同期処理を書くことになるだろう
(重い処理は Worker 利用するか、細分化して setInterval や requestAnimationFrame など) <>
Name_Not_Found<>sage<>2014/07/20(日) 20:08:41.58 ID:???.net<> JavaScriptで同期処理されるのって、
alertとconfirmぐらいなんだよな。
ブラウザ開発の初期に初期にこういう設計にしたの
凄いと思うわ。そのおかげでGUIとかアニメーションに
時間がかかるようなものでも、自然と非同期にプログラミング
するようになった。 <>
Name_Not_Found<>sage<>2014/07/20(日) 20:50:26.07 ID:???.net<> リフロー <>
Name_Not_Found<><>2014/07/20(日) 23:40:33.20 ID:OP/8zzrX.net<> >>548
XSSも問題点の一つだが、既存のDOMノードの参照が失われる問題の方が影響範囲が大きい
当然ながら>>547は解決法にはなっていない <>
Name_Not_Found<><>2014/07/20(日) 23:41:12.74 ID:OP/8zzrX.net<> >>548
XSSも問題点の一つだが、既存のDOMノードの参照が失われる問題の方が影響範囲が大きい
当然ながら>>547は解決法にはなっていない <>
Name_Not_Found<>sage<>2014/07/21(月) 00:33:16.67 ID:???.net<> 詳しく <>
Name_Not_Found<>sage<>2014/07/21(月) 00:37:31.30 ID:???.net<> javascriptを使ったゲームが、FireFoxとGoogleChromeでは見られるのですが、IE11では読み込み画面から進みません
IEのセキュリティのレベルのカスタマイズでスプリクトの項目は全て有効にしたのですが無理です
どうやったらIEで見られるようにできますか <>
Name_Not_Found<>sage<>2014/07/21(月) 03:10:22.56 ID:???.net<> 確かに判定するためにDOMのidを使うのは無駄に消費するから駄目だな
data-idを使うべし
class使えって意見は意味わかんね
コマンド実行に一意性のあるidがいるのは当たり前 <>
Name_Not_Found<>sage<>2014/07/21(月) 04:57:07.63 ID:???.net<> >>573
kwsk <>
Name_Not_Found<>sage<>2014/07/21(月) 05:27:04.98 ID:???.net<> 全部書き換えるから要素のポインタを持ってる時とかに問題になりやすいって意味じゃないの <>
Name_Not_Found<>sage<>2014/07/21(月) 05:38:08.41 ID:???.net<> 要素にイベントハンドラ付けてたときとか <>
Name_Not_Found<>sage<>2014/07/21(月) 07:10:14.73 ID:???.net<> まとめると、XSSに十分気をつけていればinnerHTML使っても全く問題ないと <>
Name_Not_Found<>sage<>2014/07/21(月) 07:23:56.60 ID:???.net<> NO <>
Name_Not_Found<>sage<>2014/07/21(月) 07:36:01.48 ID:???.net<> innerHTMLのリスクとデメリットを分かっていたら問題ないでFA <>
Name_Not_Found<><>2014/07/21(月) 08:23:02.22 ID:zKuuycwC.net<> >>578
>>579-574の指摘通り
過去何度も話題にあがっていたはず <>
Name_Not_Found<>sage<>2014/07/21(月) 08:45:36.22 ID:???.net<> 既存のDOMの参照がなくなる・・・ってそれただの把握できてないアホ
どうせ前にDOMが壊れるって騒いでたやつだ <>
Name_Not_Found<>sage<>2014/07/21(月) 08:53:45.95 ID:???.net<> 把握できてるからこそだと思うが・・・ <>
Name_Not_Found<>sage<>2014/07/21(月) 08:53:56.01 ID:???.net<> 想定していたものじゃなくなるって意味だろ
アクロバティックな解釈して頓珍漢な批判をする馬鹿が最近多いな <>
Name_Not_Found<>sage<>2014/07/21(月) 12:27:20.97 ID:???.net<> >>573
> XSSも問題点の一つだが、既存のDOMノードの参照が失われる問題の方が影響範囲が大きい
それは、ノードを入れ替える以上
何を使おうが絶対発生する。
そこでjQueryがでてくる。jQueryを使っていれば、
これは問題にならない。(適切に処理してくれる。 <>
Name_Not_Found<>sage<>2014/07/21(月) 12:37:36.14 ID:???.net<> どのレスをみても「何故」がみえてこないな
サンプルコードを書いてみてくれんか <>
Name_Not_Found<>sage<>2014/07/21(月) 13:47:25.22 ID:???.net<> 分からないなら多分問題ないよ
ある程度複雑な処理をしてないと問題出ないから <>
Name_Not_Found<>sage<>2014/07/21(月) 13:51:53.66 ID:???.net<> その複雑な処理が何かって話なんだが、
結局、問題が出るコードはだせないんだね。
ここまででみんな気づいたと思うけど、
問題は全くありません。 <>
Name_Not_Found<>sage<>2014/07/21(月) 14:20:02.85 ID:???.net<> 経験のある技術者には分かることだから
いちいち例を出すのが面倒なだけだろ
まぁ、思いたいように思えばいいんじゃね <>
Name_Not_Found<>sage<>2014/07/21(月) 14:29:13.27 ID:???.net<> コードひとつ書けないこの人はたぶん次はこれを見ろよと英文サイトを出してくる
でも内容的には的外れで突っ込まれて逃げる <>
Name_Not_Found<>sage<>2014/07/21(月) 14:44:55.39 ID:???.net<> 俺は経験ある技術者だけど、
DOMの参照がどうたらいう問題は
今まで起きてないよ。 <>
Name_Not_Found<>sage<>2014/07/21(月) 14:47:30.52 ID:???.net<> 起きたか起きてないかじゃなくて
理解できるかできないか。
経験ある技術者は理解できる。 <>
Name_Not_Found<>sage<>2014/07/21(月) 16:01:51.68 ID:???.net<> ん? 理解した上で起きないって言ってるんだけど。
ガベージコレクタって知ってる? <>
Name_Not_Found<>sage<>2014/07/21(月) 16:08:05.88 ID:???.net<> いやそんな話してないしw
分かってねーじゃん。 <>
Name_Not_Found<>sage<>2014/07/21(月) 16:34:08.68 ID:???.net<> JSで、新しいウインドウを開き、
データを文字にしたものをそこに出力する
をしたいです
どうしたらいいですか? <>
Name_Not_Found<>sage<>2014/07/21(月) 16:52:25.47 ID:???.net<> >>598
意味が分からんがエスパーするとwindow.opener <>
Name_Not_Found<>sage<>2014/07/21(月) 18:04:50.19 ID:???.net<> ありがとうございます <>
Name_Not_Found<>sage<>2014/07/21(月) 18:35:12.08 ID:???.net<> >>597
じゃあ、おまえが何の話してるか言えよ。
わかってるんだろ?
それを言わないから、問題が起きたんだーっていっても
何の話だと思う?何の話かは言わねぇwww。ってなってるから
誰もおまえの言うことを信じてないんだぞ <>
Name_Not_Found<>sage<>2014/07/21(月) 18:36:56.68 ID:???.net<> >>599
逆じゃね?
>>598
window.openしたら、openしたwindowを返すから、
そのwindowに書き込めばいい。 <>
Name_Not_Found<>sage<>2014/07/21(月) 19:10:38.48 ID:???.net<> >>601
だから分からないならいいんじゃねって言ってるだろ
分からないことは責めてないから。
頓珍漢な絡み方をしてくることを責めている <>
Name_Not_Found<>sage<>2014/07/21(月) 19:11:41.41 ID:???.net<> よくwindow.openって書かれますが、
windowいらなくないですか?
何でwindow書くのですか? <>
Name_Not_Found<>sage<>2014/07/21(月) 19:16:06.71 ID:???.net<> 参照していたものが失われる可能性がある
↓
ガベージコレクタが回収するから問題ない
なんだこれ <>
Name_Not_Found<>sage<>2014/07/21(月) 19:16:58.13 ID:???.net<> 「参照先」に訂正するわ <>
Name_Not_Found<>sage<>2014/07/21(月) 19:22:54.31 ID:???.net<> >>604
openでは汎用過ぎて、なんのopenなのか
わからないから。
コードというのは意図をわかりやすくするのが重要で、
コンピュータにとって問題ないからって省略した方がいいとは限らないんだよ。
コードを読むのは人間なんだから。 <>
Name_Not_Found<>sage<>2014/07/21(月) 19:44:19.45 ID:???.net<> MS-Windowsじゃなくてもwindowってつかえるの? <>
Name_Not_Found<><>2014/07/21(月) 20:43:40.17 ID:8atMqUtx.net<> >>588
innerHTML の本質は「上書き」であって「書き換え」ではない
書き換える必要のないDOMノードまで強制的に上書きするのがinnerHTMLの欠点であり、細心の注意を払う必要がある
http://jsfiddle.net/Pc87X/
上記URLは明確に干渉するコードだが、仮にコーディング時に function runInnerHtml が存在しなかったとしても innerHTML は使わないほうが良い
そうすれば将来的に #Test を参照するコードを書いても問題は発生しないからだ
後々の事も考慮して出来るだけDOMの書き換え対象を小さくする方が安全なコードとなる
> jQueryを使っていれば、これは問題にならない。(適切に処理してくれる。
jQuery は DOM 書き換えにおいて innerHTML 系の処理に頼っており、この手の最小限の書き換えは不得手とする分野だと思うのだが…
例えば、テキストノードの値だけ変更する操作は jQuery には出来ないと思う
もし、jQueryで解決する方法があるのなら是非伺いたい <>
Name_Not_Found<>sage<>2014/07/21(月) 20:56:42.91 ID:???.net<> jQueryって要素の操作は得意だけど
nodeの操作はあんまりだね <>
Name_Not_Found<>sage<>2014/07/21(月) 21:06:58.36 ID:???.net<> また頓珍漢な反論が出てきそうなので釘をさしておこう
jQuery の .text() は textContent の代替であってテキストノード値の書き換えではない
http://api.jquery.com/text/ <>
Name_Not_Found<>sage<>2014/07/21(月) 21:07:01.30 ID:???.net<> あんまりっていうか全然じゃね <>
Name_Not_Found<>sage<>2014/07/21(月) 21:17:38.07 ID:???.net<> nodeTypeを数字で判定すると、
その数字が何だったのか後から見た時に分からないです
nodeTypeを定数として持ってるオブジェクトはないんですか? <>
Name_Not_Found<>sage<>2014/07/21(月) 21:22:18.80 ID:???.net<> >>613
Node.ATTRIBUTE_NODE とか、DOM Interface オブジェクトを利用しては?
なかったら自前で作る <>
608<>sage<>2014/07/21(月) 21:23:32.94 ID:???.net<> ああ、というか Node 使わなくても全てのノードで参照できるな <>
608<>sage<>2014/07/21(月) 21:29:20.45 ID:???.net<> IE8- をサポートするなら自前で作る必要があるか <>
Name_Not_Found<>sage<>2014/07/21(月) 21:30:49.30 ID:???.net<> >>609
初学者なりに見てみたんだけど確かに注意すべき問題だけど
addEventListenerが結果を保持するところとinnerHTMLが持ってくるところが違うから起きる現象に見える
// addEventListenerで追加しないで onClickで仕込むと>>609のいう問題な動作は起きないところからそう見た
上書きか書き換えか、とか、壊れる、とかいうと予想外の期待されない動作みたいなニュアンスがあるけど
実際は「まー当然こうなるよね」というふうな動作に見えるのだけど、そうではないのかな? <>
Name_Not_Found<><>2014/07/21(月) 21:58:13.30 ID:8atMqUtx.net<> >>617
確かにイベントが解除される問題は <strong id="Test" onclick="changeBackgroundColor(event);"> で回避できる
しかし、その場合も #Test の要素ノードをクロージャでキャッシュしていた場合は参照が切れる
重要なのは参照が切れてしまう事であってイベントの問題が回避できれば解決するわけではない
(他にも参照を利用したコードはあるだろう)
同様の問題は textContent にもある
テキストノードをキャッシュしていたら textContent で上書きすれば参照が切れる
Text#data で値を書き換えれば、参照は切れないので問題は発生しない
テキストノードの間に要素を挟んでテキストノードを分割するなら新しいテキストノードを作成すべきだが、既存のテキストノードを流用できるなら流用した上で値の書き換えにとどめたほうが良い
> 実際は「まー当然こうなるよね」というふうな動作に見えるのだけど、そうではないのかな?
「当然の事象」を理解した上で問題点の少ないコードを模索するのが良いプログラマだと思う <>
Name_Not_Found<>sage<>2014/07/21(月) 23:07:40.21 ID:???.net<> >>609
> innerHTML の本質は「上書き」であって「書き換え」ではない
> 書き換える必要のないDOMノードまで強制的に上書きするのが
は? 当たり前じゃん。 当たり前じゃん。
欠点でも何でもねーよ。
HTMLの中身を入れ替えるんだから変わるに決まってるじゃん。
びっくりした。あまりにも馬鹿すぎて。 <>
Name_Not_Found<>sage<>2014/07/21(月) 23:10:35.26 ID:???.net<> 当たり前の事を分かって無い奴がどんだけいるんだろうな <>
Name_Not_Found<>sage<>2014/07/21(月) 23:10:46.07 ID:???.net<> 単なる$.html()でイベントが消える・・・というか
入れ替えるhtmlにイベント書いてないから当たり前なんだが、
それが嫌なら、$.clone()使えばいいだけ。
http://js.studio-kingdom.com/jquery/manipulation/clone
[withDataAndEvents] boolean値で、マッチしている要素に付随している
イベントハンドラもコピーするかどうかを決定します。 jQuery1.4からは保持しているdataも同様にコピーの対象になります。
(初期値はfalseでしたが、jQuery1.5でtrueになり、jQuery1.5.1で再度falseにもどされました。)
[deepWithDataAndEvents] boolean値で、マッチしている要素の全ての子要素に対しても、
付随しているイベントハンドラとDataをコピーするかどうかを決定します。 この初期値は1つ目の引数と同じになります。 <>
Name_Not_Found<>sage<>2014/07/21(月) 23:16:22.25 ID:???.net<> >>618
onClickの話は別に解決策を提示したわけではないよ
それで、あらためて>>539をみてなるほどと思いかけたけど、となると
消えたように見えるリスナーはどこにいっちゃったのか、消滅したわけじゃなさそう
それと、innerHTMLとかinnerTextって書くの楽だし
jQueryをはじめいろんなところで使われまくってるから
使わないじゃなくて、問題点を理解して使っていくうえで賢いやり方とかあるかな?
今って参照を保持したり動的にイベント制御したりがどのくらい頻繁に出てくるのか知らないけど
> 「当然の事象」を理解した上で〜〜
いや、言葉の使い方の話 <>
Name_Not_Found<>sage<>2014/07/21(月) 23:25:01.84 ID:???.net<> innerHTMLもhtmlも、「HTML文字列」から
新しいHTMLを生成するもので、イベントハンドラが
HTML文字列に書いてないから、イベントハンドラがないの当たり前だろ。
そういう風に動的に追加される要素にイベントハンドラを付けたいなら
個々に追加する(面倒な方法)か、親要素にイベントハンドラ設定するのが常識。
たとえば $(document).on('click', セレクタ, function() {・・・}) みたいに。
> 消えたように見えるリスナーはどこにいっちゃったのか、消滅したわけじゃなさそう
だから消滅するって。ガベージコレクションって書いただろ。
どこからも参照されなくなれば消える。 <>
Name_Not_Found<>sage<>2014/07/21(月) 23:25:54.10 ID:???.net<> innerHTMLやjQueryのhtml()には欠点があるのではなく
注意点があるだけの話。いやはや馬鹿だった馬鹿だったw <>
Name_Not_Found<><>2014/07/22(火) 00:08:55.56 ID:HZZvAY0t.net<> >>621
そのまま使えばいいのになぜ clone() するんだよ
>>618を全く読んでないな <>
Name_Not_Found<>sage<>2014/07/22(火) 00:37:31.52 ID:???.net<> 当たり前の事実を目にして、改善するか、何もしないか、の違いだな <>
Name_Not_Found<>sage<>2014/07/22(火) 01:24:41.34 ID:???.net<> やる必要がないことをやらないのは大事だ
やる必要をなくすことも大事だ <>
Name_Not_Found<>sage<>2014/07/22(火) 01:25:33.54 ID:???.net<> まる一日使って613でようやく飲み込むとか本当に馬鹿だな <>
Name_Not_Found<>sage<>2014/07/22(火) 03:18:02.49 ID:???.net<> >>608
別にwindowってWindows固有の用語じゃないしな…
例えばLinuxやUnixの世界にはX Window Systemってのがあるし <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/22(火) 05:44:24.97 ID:???.net<> jsってgcあるんですね <>
Name_Not_Found<>sage<>2014/07/22(火) 06:45:16.91 ID:???.net<> >>627
理解した上でその判断なら君は本物の馬鹿だ <>
Name_Not_Found<>sage<>2014/07/22(火) 06:52:21.28 ID:???.net<> 今年工業高校卒業予定なんですが愛知でインターンシップみたいなのって無いですか <>
Name_Not_Found<>sage<>2014/07/22(火) 07:33:06.29 ID:???.net<> >>627
参照を切らなければ、参照を保持している事を記憶する必要がない
やる必要をなくすことは大切だな <>
Name_Not_Found<><>2014/07/22(火) 08:14:24.14 ID:FatvFhxq.net<> >>622
> 消えたように見えるリスナーはどこにいっちゃったのか
addEventListener に Listener は登録されているので消えているわけではないが、documentとの参照は切れる
もう一度、document にノードを appendChild すればイベントが発火するはず
> それと、innerHTMLとかinnerTextって書くの楽だし
innerText は IE の独自拡張で標準化されていない
使うなら textContent だ
> jQueryをはじめいろんなところで使われまくってるから
最も賢い方法は参照を切らない事だ
jQuery を使うなら olugin を書く必要がある
http://jsfiddle.net/Pc87X/1/
> 問題点を理解して使っていくうえで賢いやり方とかあるかな?
innerHTML を使うなら問題を回避できないので、以下に早く不具合を発見するか、が重要
いくつか考えられるが、今は時間がないので後で後述す <>
Name_Not_Found<>sage<>2014/07/22(火) 12:48:11.42 ID:???.net<> >>634
> addEventListener に Listener は登録されているので消えているわけではないが、documentとの参照は切れる
> もう一度、document にノードを appendChild すればイベントが発火するはず
ノードとそのノードのイベントハンドラが消えるタイミングを勘違いしてるよ。
まずイベントハンドラが消えるタイミングはノードが消えた時。
ここまではいいよね?
じゃあノードが消えるのはいつかというと、documentから消した時じゃない。
documentから消して、さらにJavaScripのどこからも参照がない時。
DOMからremoveChildしたりinnerHTMLで消して、かつ
JavaScriptのどこからも参照されなくなった時にイベントハンドラは削除される。
JavaScriptのどこからも参照がなくなった時だから、
これをJavaScript内で検知するのは不可能。
> innerHTML を使うなら問題を回避できないので、
だからなんの問題? <>
Name_Not_Found<>sage<>2014/07/22(火) 13:17:05.97 ID:???.net<> ということで、>>634をjQueryとhtml()メソッドを使って、
イベントが解除されないという証拠です。
http://jsfiddle.net/Pc87X/2/
テキスト以外の部分も書き換える可能性があるから
全く同じじゃないが、今の本題はhtml()でメソッドが
解除されるかどうかだから。
ついでにここにもコピペしとく
(function () {
function changeBackgroundColor () {
this.style.backgroundColor = this.style.backgroundColor ? '' : 'orange';
}
function runInnerHtml () {
var str = $('body').html();
str = str.replace('テスト', 'JavaScript');
$('body').html(str);
}
$('#Test').on('click', changeBackgroundColor);
$('#ClickMe').on('click', runInnerHtml);
}()); <>
Name_Not_Found<>sage<>2014/07/22(火) 13:53:36.04 ID:???.net<> >>636はhtml()使ってもイベントハンドラが消えないという証拠として書いたもので
しかもなるべくオリジナルに近い形にしたので俺的には気に入らないコードだった。
普通に書いたらこうかな。ってことでついでにちゃんと書いたよ。
http://jsfiddle.net/Pc87X/4/
短いので、ここにもコピペしておく。
$(function () {
$('#Test').on('click', function () {
this.style.backgroundColor = this.style.backgroundColor ? '' : 'orange';
});
$('#ClickMe').on('click', function () {
$('*').contents().filter(function() {
return this.nodeType === 3;
}).each(function() {
this.textContent = this.textContent.replace('テスト', 'JavaScript');
});
});
}); <>
Name_Not_Found<>sage<>2014/07/22(火) 13:55:12.82 ID:???.net<> あ、今気づいたが、getElementById('SampleText')で
対象を絞り込んでたのねw
まあ適当に補完しといてくれ。 <>
Name_Not_Found<>sage<>2014/07/22(火) 14:27:47.80 ID:???.net<> いやー、悪い悪い >>636は自分で書いててて
なんで動くんだって思ったんだw
間違えてたな。うん。動かない。
訂正した奴はこっち。もちろんhtml()は使ってるから安心してな。
やってることは>>623で説明したとおり
http://jsfiddle.net/Pc87X/5/
(function () {
function changeBackgroundColor () {
this.style.backgroundColor = this.style.backgroundColor ? '' : 'orange';
}
function runInnerHtml () {
var str = $('#SampleText').html();
str = str.replace('テスト', 'JavaScript');
$('#SampleText').html(str);
}
$(document).on('click', '#Test', changeBackgroundColor);
$(document).on('click', '#ClickMe', runInnerHtml);
}()); <>
Name_Not_Found<>sage<>2014/07/22(火) 14:34:41.88 ID:???.net<> >>639
html()でイベントが消えないのは分かったが
そのコードだと $('#SampleText')[0].innerHTML = str; でも動いちゃうけどな? <>
Name_Not_Found<>sage<>2014/07/22(火) 14:52:09.04 ID:???.net<> 対象のノードの子にあたるノードに対して、スクリプト側で動的にイベントハンドラを設定したり参照を持ったりしていると
innerHTMLを使用したときに、子ノードに設定したイベントハンドラや持ってる参照が消えてしまいますよ
二行でええやん <>
Name_Not_Found<>sage<>2014/07/22(火) 18:30:26.67 ID:???.net<> >>641
っていうか、少し考えればわかることなんだが。
中身を入れ替えてるわけだから、当然新しいものになるわけで、
古い方に割り当てたイベントハンドラは、新しいものにはついてない。
これは別にinnerHTMLのバグでも問題でも何でもなく常識的な動き。
だから新しくイベントハンドラを割り当てるか、親要素にイベントハンドラを
割り当てるかすればいいだけ。
これはinnerHTMLを使うときは、これを見逃さないでねってだけで
innerHTMLを使っちゃいけない理由でもなんでもないよ。
っていうのは、最初っからみんな言ってる話なんだよ。
使っちゃいけない理由はないって。 <>
Name_Not_Found<>sage<>2014/07/22(火) 18:32:14.15 ID:???.net<> >>640
何か問題あんの? html()は内部でinnerHTMLを
使ってるんだからあたりまえだと思うが。 <>
Name_Not_Found<>sage<>2014/07/22(火) 18:43:45.17 ID:???.net<> ボックスからスクロールバーのサイズを引いたwidthを取得したいのですが
どうやればいいでしょうか? <>
Name_Not_Found<><>2014/07/22(火) 18:48:00.29 ID:7RqdhX7u.net<> >>634
> documentから消して、さらにJavaScripのどこからも参照がない時。
この点では私とあなたで意見の相違はないと思うのだが…
>>639
バブリングで上位ノード監視の手法は知っているし、後述する予定だったが、参照が切れることに変わりはないはず
ようはイベントがはがれる事だけが問題ではないのだが
帰宅中なので詳細は後程 <>
Name_Not_Found<>sage<>2014/07/22(火) 18:57:15.54 ID:???.net<> > 参照が切れることに変わりはないはず
参照が切れる切れるうざくね?
なんでそんなものに執着してるのか。
中身を新しいものに入れ替えてるんだから
別物になっただけだよ。全然難しい話じゃない。
そういう動きになるってだけでそれで問題ないなら、なにも問題ないだろ。
少し盲点になるかもねーってだけの話でしか無い。
古いものを無くしたいのなら(だからinnerHTML使ってるわけで)
むしろ消えてなくなった方がいい場合も多い。
たとえば、<select>要素の<option>をinnerHTMLで入れ替えるのに
ほとんどの場合なんの問題もねーよな?
あんたは、中身を少し書き換えることしか頭にないから参照参照とうざいけど
中身を完全に入れ替えて全く違うものにした時、前のデータが残っているほうが不自然だろ。 <>
Name_Not_Found<>sage<>2014/07/22(火) 18:58:32.50 ID:???.net<> へんなやつと絡むから話がこじれるんだよ・・
分からなきゃ分からないでいい、で終わる話
何を言っても納得しないし意味ないよ <>
Name_Not_Found<>sage<>2014/07/22(火) 19:10:38.87 ID:???.net<> これ単なる初心者の質問でしかないから。
すごく丁寧に解説すると
【質問】
element.innerHTML = element.innerHTML.replace(テキスト修正);
って書いたら、element.innerHTMLの中に設定していた
イベントハンドラが動かなくなりました。どうしてですか?
【回答】
element.innerHTML の中身を新しいHTMLに入れ替えたのだから
当然中身は新しくHTML(DOM)になります。
たとえば
element.innerHTML の中に '<a href="hoge">link</a>'; があって
element.innerHTML ='<button>button</button>'; を実行したら
aが消えてなくなるのは当たり前だし、aに設定していたイベントハンドラ
などもなくなるのは当たり前です。
中身をちょっとだけ変えた、element.innerHTML ='<a href="hoge">link2</a>'; を
実行したとき、それを元のaと同じとみなすべきかはわかりません。
よってイベントハンドラを引き継ぐべきかどうかもわかりません。
代入したものは新しいHTMLなのですから、そこに書いているもの以外は初期状態です。 <>
Name_Not_Found<>sage<>2014/07/22(火) 19:12:34.07 ID:???.net<> innerHTMLの中身を別物に入れ替えてるんだから
参照は切れるべきでしょ。むしろ残す方がおかしい。 <>
Name_Not_Found<>sage<>2014/07/22(火) 19:15:31.40 ID:???.net<> 常識を持ち出すならObject型が参照なのは常識
addEventListener 以外にも参照を保持するメソッドが定義されている事は十分に想像できるはずだがな
プリミディブ型のように文字列でゴリゴリ処理する方が不自然だって事が感覚としてわからないなら、その程度の実力って事なんだろうな <>
Name_Not_Found<>sage<>2014/07/22(火) 19:19:18.12 ID:???.net<> >>649
参照を切らなくて済むなら切らないほうが良いに決まってるでしょ <>
Name_Not_Found<>sage<>2014/07/22(火) 19:21:02.02 ID:???.net<> 今日になっていきなり当然だろ当然だろ連呼しだしたやつも怪しいもんだな <>
Name_Not_Found<>sage<>2014/07/22(火) 19:23:13.00 ID:???.net<> innerHTMLを使わなければ参照が切れない状況ならinnerHTMLを使わないほうが良い
常識で考えればすぐ分かるはずだがな <>
Name_Not_Found<>sage<>2014/07/22(火) 19:27:35.02 ID:???.net<> むしろ逆に考えて
子ノードを持っているノードについて操作したい場面はどのくらいあるのか?
このとき子ノードに対して何かしているケースはどのくらいの割合か?
たいしたことしてない俺の経験上ではいずれもほとんど無かったがお前らどうよ <>
Name_Not_Found<>sage<>2014/07/22(火) 19:33:34.99 ID:???.net<> >>651
> 参照を切らなくて済むなら切らないほうが良いに決まってるでしょ
中身が別物になってるんだから、同じものを指すべきじゃない。
>>652
いや、やっとこの馬鹿が言ってる「問題」が判明したからだよ。
中身を違うものに入れ替えてるのに、前の情報を保持したい?
そんなアホなことを言ってるとは思わなかったよ。 <>
Name_Not_Found<>sage<>2014/07/22(火) 19:36:00.89 ID:???.net<> >>653
> innerHTMLを使わなければ参照が切れない状況ならinnerHTMLを使わないほうが良い
考える順番がおかしい。
最初に考えるべきなのは、中身を新しいものに入れ替えたいのか、
中身は同じで、その属性を変えたいだけなのか。
これを最初に考えるべきでしょうが。
そしてやりたい事にあった命令を使うだけの話。 <>
Name_Not_Found<>sage<>2014/07/22(火) 19:36:47.11 ID:???.net<> >>639
"この文章をクリックすると TEXT_NODE 値を置換する。" が大嘘すぎる
tagNameや属性値も置換対象に入ってる
TEXT_NODE のみを置換対象にすべき <>
Name_Not_Found<>sage<>2014/07/22(火) 19:38:31.86 ID:???.net<> >>643
html()はイベントとか切れないように色々工夫してるんだが?
問題点分かって無い奴はレスすんな <>
Name_Not_Found<>sage<>2014/07/22(火) 19:39:19.74 ID:???.net<> >>655
> 中身を違うものに入れ替えてるのに、前の情報を保持したい?
おまえのいう「中身」を違うものに入れ替える必要がない事は http://jsfiddle.net/Pc87X/1/ で証明されているわけだが、おまえの目は節穴なのか? <>
Name_Not_Found<>sage<>2014/07/22(火) 19:40:45.89 ID:???.net<> だらだら書いてるわりに実質ちょっと言い換えただけのありがたい説明文はいらねーよ <>
Name_Not_Found<>sage<>2014/07/22(火) 19:42:05.36 ID:???.net<> 他の質問が流れるからモンスター質問者に関わるのも考え物 <>
Name_Not_Found<>sage<>2014/07/22(火) 19:46:10.89 ID:???.net<> >>650
> プリミディブ型のように文字列でゴリゴリ処理する方が不自然だって事が感覚としてわからないなら、その程度の実力って事なんだろうな
これは文字列かどうかの問題じゃない。
innerHTMLに新しい文字列を代入するというのは、新しい文字列から生成したオブジェクトに入れ替えてるのと同じ。
obj = new Object;
obj.prop = 1;
obj = new Object;
console.log(obj.prop); // 1と表示されないじゃないか!
って言ってるのと同じ。
innerHTMLを新しいオブジェクトに入れ替えたのだから、その子オブジェクトも入れ替わる。
document.createElementを使った方法であっても、新しく作った要素に入れ替えたのなら、
古い要素のイベントハンドラは消える。
あと、HTMLを扱うときは、文字列で扱ったほうが速い。なぜなら単なる文字列は
メモリ内で終わる作業だから、重いDOMツリーの更新は必要ないし、
ブラウザの機能としてHTMLのパースは、もっともよく使う部分で、一番最適化されているから。
そういうこともわからない程度の実力かい? <>
Name_Not_Found<>sage<>2014/07/22(火) 19:47:57.57 ID:???.net<> >>659
innerHTMLは、中身を入れ替える命令。
中身を入れ替えたくないのなら、innerHTMLを使うのが馬鹿だし、
中身を入れ替えたいなら、innerHTMLを使うのが良い。
そんな使い分けもできないの?
君は、最初にやりたい事をはっきりさせてから、
プログラムしようね。目的に合わない命令を使って
わーわー騒ぐんじゃない。 <>
Name_Not_Found<>sage<>2014/07/22(火) 19:48:42.82 ID:???.net<> >>658
> html()はイベントとか切れないように色々工夫してるんだが?
してません。 <>
Name_Not_Found<>sage<>2014/07/22(火) 19:51:09.40 ID:???.net<> >>664
それは俺も思った
工夫しているのは .on() だよな <>
Name_Not_Found<>sage<>2014/07/22(火) 19:51:10.42 ID:???.net<> スレが質問こなさそうな状況だからいうが
質問と真っ当な回答を抜き出して検索性インデックス性をなんとか作り出してナレッジベース化したら役に立つだろうか <>
Name_Not_Found<>sage<>2014/07/22(火) 19:59:55.81 ID:???.net<> >>662
> あと、HTMLを扱うときは、文字列で扱ったほうが速い。なぜなら単なる文字列は
> メモリ内で終わる作業だから、重いDOMツリーの更新は必要ないし、
> ブラウザの機能としてHTMLのパースは、もっともよく使う部分で、一番最適化されているから。
そうなんだよね。俺も十数年ぐらい前は、たとえばテーブルを作るのに、
tableをcreateElementして、trをcreateElementして、tdをcreateElementして
appendChildを繰り返して・・・ってDOM操作で何行もかけて作っていた
時もあったけど、今は遅いし面倒なだけなので文字列で生成している。
innerHTML = '<table><tr><th>header</th><td>data</td></tr></table>';
これをDOM操作で作っても重いし面倒なだけ。何一つメリットがない。
さらに言えば、文字列の連結も一が多くなると見難くなるから、
少し複雑なのはlodashのtemplate機能を使ってるよ。 <>
Name_Not_Found<>sage<>2014/07/22(火) 20:02:13.92 ID:???.net<> >>664-659
両方している <>
Name_Not_Found<>sage<>2014/07/22(火) 20:07:14.83 ID:???.net<> html()がやってるのは、中身を入れ替えた時に消える古いオブジェクトに対して
ブラウザの不具合によるメモリリークな問題に対応する処理で、
イベントハンドラは普通に切れる。 <>
Name_Not_Found<>sage<>2014/07/22(火) 20:55:18.88 ID:???.net<> >>663
> 中身を入れ替えたくないのなら、innerHTMLを使うのが馬鹿だし、
>>655で「中身が別物になってるんだから、同じものを指すべきじゃない。」と発言しているのはなぜ?
別物にする必要がないでしょ? <>
Name_Not_Found<><>2014/07/22(火) 21:01:54.70 ID:9sE25qaT.net<> 参照が切れると動かない事例として jQuery.data() がある
参照が切れないコードなら問題はない
http://jsfiddle.net/Pc87X/7/
jQuery の .html() を使用すると参照が切れて、jQuery.data() が期待通りに動作しなくなる
http://jsfiddle.net/Pc87X/9/
>>618で説明したノードのキャッシュも原理的には同じ問題だ
>>639
少なくとも、http://jsfiddle.net/Pc87X/1/ や http://jsfiddle.net/Pc87X/7/ では参照を切る必要がなかった
>>655の言葉を借りるなら「中身を入れ替える必要がない」というのだろうか
だから、この場合は「innerHTML や .html() を使うべきではない」といえる <>
Name_Not_Found<>sage<>2014/07/22(火) 21:06:04.69 ID:???.net<> >>670
まあ大抵はIDに対してイベントハンドラ付加したりしてるから、直感的にはそう思っても仕方ない
けどイベントハンドラの設定も参照の作成もIDが必須になっているわけではない
なので内部構造としてノード・ツリー構造があるわけで、IDは表面上の操作と内部の位置とを橋渡ししているに過ぎない
こういう状況の中で、.innerHTMLで要素の中身を入れ替えたり操作したりするとき、
入れ替える前と後で、中身が持っている子要素が同じであるかどうかを保証するわけにはいかない
だからイベントハンドラは消失するし参照も切れる、それが当然の動作になってしまう
(付加したイベントハンドラは理論上すぐ消えるはずだけど、個人的になぜかそうとは限らないように思う)
…と、自分はこういうふうに理解してるけど、間違いあるかな <>
Name_Not_Found<>sage<>2014/07/22(火) 21:06:34.55 ID:???.net<> >>670
> 別物にする必要がないでしょ?
なんで決め付けるの?
別物にしたいときは、別物。そうでない時は、そうでない。
別物にしたいときは、イベントが残っていたら大問題。
html()、innerHTMLを使うかどうかは、
どっちが目的かで変わるわけで、
なんで最初の目的を限定してから使えないって話するの?
意味がわからない。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:07:42.94 ID:???.net<> >>661
> jQuery の .html() を使用すると参照が切れて、jQuery.data() が期待通りに動作しなくなる
だからさ、それは「問題」じゃないんだって、
html()の仕様として、要素を丸ごと入れ替えるものだから
data()は消えるのが仕様として正しい。
なんで、目的にあってないものを使ってるくせに
それが問題だっていうのさ。馬鹿じゃん? <>
665<><>2014/07/22(火) 21:08:01.79 ID:9sE25qaT.net<> 蛇足だが、http://jsfiddle.net/Pc87X/5/ はテキストノード値の置換ではない(>>657の指摘通り)
私が http://jsfiddle.net/Pc87X/ で挙げた悪例をそのまま流用していると思われるが、良い実装ではないので http://jsfiddle.net/Pc87X/9/ では正規表現でテキストノード部分を置換するようにしている
そもそも、innerHTML はテキストノード値の置換に向いていないし、他のAPIを使うべきとは思うのだが、jQuery には適切なAPIが存在しないな <>
665<><>2014/07/22(火) 21:10:49.61 ID:9sE25qaT.net<> >>674
> なんで、目的にあってないものを使ってるくせにそれが問題だっていうのさ。
>>639が問題ないと主張するから反論しているだけなのだが…
文句は>>639にいってくれ <>
Name_Not_Found<>sage<>2014/07/22(火) 21:10:56.93 ID:???.net<> innerHTMLは要素オブジェクトをまるごと入れ替えるという
仕様なのだから、その要素に結びついたデータは消えるのが正しい動き。
それは正しいまともな仕様なので、バグではない。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:12:06.97 ID:???.net<> >>676
>>639は問題ないでしょ?
あんた、dataも一緒でなければならないという
条件を最初に提示したかい? <>
Name_Not_Found<>sage<>2014/07/22(火) 21:14:43.20 ID:???.net<> innerHTMLやjQueryのhtml()もそれ自体に問題があるわけではなく、
要素を入れ替えるという仕様なんだからそれに付随するデータも消える。
この仕様で問題があるかどうかは要件によって変わるので、
一概に問題があると決め付けることは出来ない。
いい加減に理解しようぜ。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:14:50.96 ID:???.net<> $obj.innerHTML += 'test';
とかしたとき、イベントハンドラが失効したり参照が切れたりするのは
JavaScriptのコード打っていると面倒に思うことがあるのは確かだろうけど
仕様作る側やブラウザの実装やる側に立って考えると
これを失効しないように参照が切れないように作るのってすごく大変そう <>
Name_Not_Found<>sage<>2014/07/22(火) 21:16:49.74 ID:???.net<> > 参照が切れる切れるうざくね?
> なんでそんなものに執着してるのか。
これが発端だろ
参照が切れる問題点が全く分かっていない奴に説明してるだけだろ <>
Name_Not_Found<>sage<>2014/07/22(火) 21:18:21.25 ID:???.net<> >>680
大変じゃなくて不可能
innerHTMLはHTMLを代入する命令なのだから
HTMLとして表現できるもの以外には対応できない。
そういう仕様。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:18:39.25 ID:???.net<> >>677
バグとは誰も言ってない
仕様なのは皆分かってる <>
Name_Not_Found<>sage<>2014/07/22(火) 21:19:30.39 ID:???.net<> >>681
だから参照が切れるのは問題点じゃないんだって言ってるだろ。
第一、参照が切れてるんじゃない。
全く別のオブジェクトに入れ替えてるんだから、
そもそも参照が最初っから存在しないんだよ。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:20:51.16 ID:???.net<> >>683
”正しい”仕様な。
どうも正しい仕様なのに、
それが問題であるかのように
言ってる奴がいる。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:22:06.20 ID:???.net<> > 全く別のオブジェクトに入れ替えてるんだから、
> そもそも参照が最初っから存在しないんだよ。
これは酷い <>
Name_Not_Found<>sage<>2014/07/22(火) 21:22:25.81 ID:???.net<> innerHTMLは、新しいHTMLオブジェクトに入れ替えたい時に
使うもので、新しいHTMLオブジェクトに入れ替えるのだから
イベントハンドラもdataも初期化された状態になってほしいね。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:23:31.75 ID:???.net<> >>685
じゃあ、eval 使えば? <>
Name_Not_Found<>sage<>2014/07/22(火) 21:26:31.52 ID:???.net<> >>686
?
ひどくないんだが?
element.innerHTML に代入するということは、
新しい要素オブジェクトをcreateElementして、
elementの子供を新しい要素に入れ替えることと
全く同じだよ。
擬似命令で書くなれば
element.innerHTMLObject = document.createElement('a');
みたいなもの。
document.createElement('a')した結果に
イベントハンドラがついているかい?
最初っからついてないだろ。
innerHTMLが内部で、文字列から新しい要素オブジェクト郡を作成して
それに入れ替えてるだけってのが、わかってない。 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:26:42.30 ID:???.net<> >>685
正しさの判断基準はどこにあるんだよ
逆に「間違った仕様」があるのか? <>
Name_Not_Found<>sage<>2014/07/22(火) 21:28:24.10 ID:???.net<> 'a' が顔文字にみえる <>
Name_Not_Found<>sage<>2014/07/22(火) 21:30:41.87 ID:???.net<> >>690
正しい仕様っていうのは、
innerHTMLを取得した時にそれはHTML表現を取得するものであって
DOM要素をシリアライズしたものではないということ
つまりHTMLで表現でされているものだけが取得され
HTMLでない情報は存在しない。
だって、その名の通り inner "HTML" なのだから。
そこにHTMLで定義してない情報まで
シリアライズされるべきだと思ってるのが「間違った仕様」 <>
Name_Not_Found<>sage<>2014/07/22(火) 21:43:07.57 ID:???.net<> >>644
Element.clientWidth,
Element.clientHeight
かな <>
Name_Not_Found<>sage<>2014/07/22(火) 21:45:18.24 ID:???.net<> >>693
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/22(火) 21:45:36.76 ID:???.net<> それは正しい仕様ではなくただの「仕様」、間違った仕様ではなく「間違った認識」である
>>689
長文書いてるところすまんけど
> そもそも参照が最初っから存在しないんだよ。
こんなこと書いてるから「お前参照とか使ったことないだろ」って突っ込まれたんじゃないのかい
参照を作る→参照先が消滅(&別の新しい要素が生まれる)→作った参照が失われる
この流れを話してるのに「参照が最初っから存在しない」は無いわ、と <>
Name_Not_Found<>sage<>2014/07/22(火) 21:48:29.30 ID:???.net<> 意地になってるだけの奴に何言っても無駄だろ <>
Name_Not_Found<>sage<>2014/07/22(火) 21:56:12.59 ID:???.net<> GCの原理が理解出来てないんだろうなあ <>
Name_Not_Found<>sage<>2014/07/22(火) 22:10:16.02 ID:???.net<> text-overflow: ellipsis;
で省略されているかされていないかを判定するにはどうしたらいいでしょうか?
出来ないなら、自前で同じことをするしかないと思いますが・・ <>
Name_Not_Found<>sage<>2014/07/22(火) 22:10:26.74 ID:???.net<> >>695
innerHTMLに代入する値はただの文字列で、
代入した後に内部で処理されるまで
オブジェクトの参照は存在しませんが?
元々の参照とは全くの別なんだ?
それをわかっていて代入してるんだが?
innderHTMLに代入するということは
別のオブジェクトを作ろうとしてるんだよ。
イベントハンドラとかdataとかリセットされるべきじゃないか。 <>
Name_Not_Found<>sage<>2014/07/22(火) 22:11:29.02 ID:???.net<> ほんと何言っても無駄だな <>
Name_Not_Found<>sage<>2014/07/22(火) 22:18:46.53 ID:???.net<> >>698
> 出来ないなら、自前で同じことをするしかない
なんで? <>
Name_Not_Found<><>2014/07/22(火) 22:18:47.08 ID:9sE25qaT.net<> >>622
遅くなってすまなかった
> 問題点を理解して使っていくうえで賢いやり方とかあるかな?
最も確実なのは「全てのノードを置換しなければ実現できない状況でのみ innerHTML を使う」になる
http://jsfiddle.net/Pc87X/1/ や http://jsfiddle.net/Pc87X/7/ のようにノードを置換しなくて良いケースでは innerHTML は使わない、ということだ
これなら innerHTML を使わなくても全てのノードを置換しなければいけないのだから問題はない
addEventListener の参照エラーのみに対応するならバブルするイベントは document で定義し、バブルしないイベントは useCapture を利用して document で定義すれば回避できる
ちなみに、jQueryでは useCaptuer を使えないのでバブルしないイベントには対応できない
また、http://jsfiddle.net/Pc87X/9/ のように jQuery.data() に対応できない等、完全な対策にはなっていない
---
ただし、「innerHTML が楽だ」という人は大抵、「ノードを置換しなくて良いケース」や「部分的な置換でよいケース」でもらくだからという理由で全体を置換しようとすることが多い
正直、お勧めはしないが、その場合は下記対策が考えられる
1. チームで参照を保持しているノード情報を共有する
2. 参照が切れてはいけないノードでinnerHTMLを使用した際に例外を投げる仕組みを作る(問題の早期発見)
1. はまあ、当然だな
2. は例えば、下記URLのようにする
http://jsfiddle.net/Pc87X/10/
欠点としては要素ノードの参照にしか対応できていない事か
また、addEventListener のように参照を保持するタイプのメソッドは全てユーザ定義関数でwrapする必要があるので少し手間はかかる
---
ところで、jQuery.data() のように全DOMノードにオブジェクトを格納できる DOM 仕様があって廃案になったと記憶しているのだが、該当仕様をどうしても思い出せない
どなたかご存知の方がいたら教えて頂けないだろうか?
廃案後、代替仕様が出来たかも気になっている
全ノードに js-refered フラグを付けられれば、http://jsfiddle.net/Pc87X/10/ でテキストノードの参照エラーにも対応できるのだが… <>
Name_Not_Found<>sage<>2014/07/22(火) 22:23:20.40 ID:???.net<> >>701
出来ないからじゃん
何言ってんの? <>
Name_Not_Found<>sage<>2014/07/22(火) 22:42:16.21 ID:???.net<> そもそも「省略されているかされていないかを判定する」必要性がわからん <>
Name_Not_Found<>sage<>2014/07/22(火) 22:47:26.77 ID:???.net<> 勝手に分からなけりゃいいだろ
馬鹿じゃねえの <>
696<><>2014/07/22(火) 22:48:40.48 ID:9sE25qaT.net<> 探していたのは DOM Level 3 の Node#setUserData だった
http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-setUserData
MDN では Element#dataset か WeakMap で代替することを推奨していた
https://developer.mozilla.org/ja/docs/Web/API/Node.setUserData
> ところで、jQuery.data() のように全DOMノードにオブジェクトを格納できる DOM 仕様
jQuery.data() は要素ノード限定なので Node#setUserData の代替にはならない事に気づいた <>
Name_Not_Found<><>2014/07/22(火) 22:59:10.78 ID:9sE25qaT.net<> >>698
スクロールバーがあるなら scrollWidth と clientWitdh を比較してみては?
スクロールバーがないなら、Range オブジェクトで判定できる可能性がある
https://developer.mozilla.org/ja/docs/Web/API/document.createRange <>
Name_Not_Found<>sage<>2014/07/22(火) 23:07:48.84 ID:???.net<> >>702
ありがとう、むしろ手間をかけさせて申し訳ない
> 全ノードに js-refered フラグを付けられれば
まさにこういう類のことを考えてたんだけど
やっぱり地道な対応しかないか… <>
Name_Not_Found<>sage<>2014/07/22(火) 23:15:31.79 ID:???.net<> >>707
なるほどrangeですか・・
たしかになんとかなるかもしれません
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/22(火) 23:17:10.44 ID:???.net<> まだやってんの? いま来た人用にわかりやすい例え思いついたわw
innerHTMLには根本的な問題がある
代入演算子=には根本的な問題がある
innerHTMLに代入したら古い値が消えることだ
代入演算子=で代入したら古い値が消えることだ
前の値を残しておきたいときはDOM操作をしなければならない
前の値を残しておきたいときは足し算をしなければいけない
だからinnerHTMLを使ってはならない
だから代入演算子を使ってはならない
★普通の人が考えること
前の値が要らない時はinnerHTMLでいいんじゃねーの?
前の値が要らない時は代入演算子でいいんじゃねーの?
そもそも前の値を捨てて新しい値を入れる時にinnerHTMLを使うんじゃねーの?
そもそも前の値を捨てて新しい値を入れる時に代入演算子を使うんじゃねーの? <>
Name_Not_Found<>sage<>2014/07/22(火) 23:19:36.41 ID:???.net<> >>702
> ただし、「innerHTML が楽だ」という人は大抵、「ノードを置換しなくて良いケース」や
> 「部分的な置換でよいケース」でもらくだからという理由で全体を置換しようとすることが多い
その前提がおかしいんだろ。
なんで置換ありきなんだ?
innerHTMLを使う時に一番多いのは、文字列で新しくHTMLを
生成するときだろ。置換なんかしねぇよ。 <>
sage<>sage<>2014/07/22(火) 23:28:21.56 ID:???.net<> タブレットでスクロール可能なエリアでスワイプすると、横スクロールするだけでスワイプの動作が取得できません。
どのようなコードを記載すべきでしょうか。下記のようなコードを記載しました。
<html>
<head>
<title>My Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('#scrollswipe').bind('swipe', function(){
alert("swipe");
});
});
</script>
</head>
<body>
<div id="scrollswipe" style="width:200px; height:200px; overflow:scroll;">
<h1>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</h1>
<h1>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</h1>
<h1>cccccccccccccccccccccccccccccccccccccccccccc</h1>
<h1>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</h1>
<h1>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</h1>
</div>
</body>
</html> <>
Name_Not_Found<>sage<>2014/07/22(火) 23:32:37.19 ID:???.net<> >>712
これ使ってる。自力実装は死ぬと思うよ。
http://cubiq.org/iscroll-5
もしくは、jQuery Mobileだね。
俺が試したリリース初期頃は端末が遅いのと
ライブラリが重いので使うのやめたけど。 <>
Name_Not_Found<>sage<>2014/07/22(火) 23:33:03.36 ID:???.net<> ってjQuery Mobile使ってるのかw
すまんすまん。 <>
696<><>2014/07/22(火) 23:50:55.84 ID:9sE25qaT.net<> >>708
状況によっては Element.prototype.insertAdjacentHTML を使う事が解決法になるかもしれない
新しいノードを挿入する分には参照の問題はないので設計を工夫すれば何とかなる場面はあると思う
http://domparsing.spec.whatwg.org/#insertadjacenthtml%28%29
(ノード生成にしか使わない人には innerHTML ではなく、insertAdjacentHTML を推奨しておく) <>
Name_Not_Found<>sage<>2014/07/23(水) 00:02:58.31 ID:???.net<> >>636
これは innerHTML の最も酷いパターンだな
$('body').html(str); には驚いた <>
Name_Not_Found<>sage<>2014/07/23(水) 00:34:43.12 ID:???.net<> >>639も使わなくていい場面でinnerHTMLを使ってるので五十歩百歩
ノードを置換しなくてもいいのにinnerHTMLを使ってる時点で使い方がなってない <>
Name_Not_Found<>sage<>2014/07/23(水) 00:36:51.87 ID:???.net<> innerHTML使って無いジャン <>
Name_Not_Found<>sage<>2014/07/23(水) 02:48:39.39 ID:???.net<> 1 delete objA;
2 new objB;
結局、innerHTMLは、古いオブジェクトを削除して、
新しいオブジェクトを作っただけかね? <>
Name_Not_Found<>sage<>2014/07/23(水) 07:19:36.35 ID:???.net<> xmlHttpRequestでphpを指定した時そのphpはどこで実行されるんですか?
サーバー側かクライアント側にphpごと来るのか <>
Name_Not_Found<>sage<>2014/07/23(水) 07:44:57.12 ID:???.net<> >>718
.html() は内部的に innerHTML を利用しているから innerHTML を使用しているのと同義 <>
Name_Not_Found<>sage<>2014/07/23(水) 07:47:18.56 ID:???.net<> >>720
http://itpro.nikkeibp.co.jp/article/COLUMN/20060215/229453/ <>
Name_Not_Found<>sage<>2014/07/23(水) 07:59:42.30 ID:???.net<> >>719
innerHTML はシリアライズも行う
また、後付で標準化されたので仕様が曖昧で実装依存な処理もそれなりにある
http://domparsing.spec.whatwg.org/#innerhtml
http://msdn.microsoft.com/en-us/library/ie/ms533897.aspx <>
Name_Not_Found<>sage<>2014/07/23(水) 10:33:14.23 ID:???.net<> >>720
サーバに決まってるじゃん
phpってのはサーバで実行されてHTMLやXMLを出力するもので
サーバの外に出てくることはない <>
Name_Not_Found<>sage<>2014/07/23(水) 11:02:24.43 ID:???.net<> >>698
この件ですが、コンテナdivのscrollWidthには省略される前の数値が入るので
これで判定できると分かりました
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/23(水) 12:26:23.02 ID:???.net<> >>723
シリアライズが何を言っているのかわからないが、
innerHTMLはDOMオブジェクトをシリアライズするのではない。
HTML要素とDOMオブジェクトの違いがわかってない人が多いんだよな。
これ理解するのに、jQueryのdata()メソッドの挙動を勉強するのがいい。
たとえばこんなHTMLがあるとする。
<span id="id" data-value="123">test</span>
これを $('#id').data('value') で参照すると123が返ってくる。
そのあと $('#id').data('value', 456) を実行し、参照したら456が返ってくる。
当たり前の動作に見えるが、ここで$('#id').attr('data-value')を参照すると、返ってくるのは123。
つまり、dataはDOMオブジェクトの値をかえるが、HTML要素は書き換えないということ。
DOMオブジェクトの状態とHTMLは全くの別もの。DOMオブジェクトをシリアライズしたものがHTMLなのではない。
HTML要素を書き換えるとDOMオブジェクトに反映されるが、DOMオブジェクトを書き換えても
HTML要素には反映されない。それがDOMオブジェクトに割り当てるイベントハンドラなど。
jQueryのattr()メソッド(DOMでいえばsetAttribute)は "HTML要素を書き換える" メソッド
on(DOMで言えばaddEventListener)はDOMオブジェクトにイベントハンドラを設定するメソッド
それぞれのメソッドで、影響をあたえるものが、HTML要素だったり、DOMオブジェクトだったりする。
innerHTMLが行うのは、HTML要素の取得と設定で、DOMオブジェクト操作用ではない。 <>
Name_Not_Found<><>2014/07/23(水) 12:35:38.57 ID:aSy94xteS<>初歩的な質問で申し訳ないですが、どうもうまくいかないので教えてください
var jikan= new Date();
var hh = jikan.getHours();
var mm = jikan.getMinutes();
var ss = jikan.getSeconds();
例えばこれでhhに10、mmに25と入ったときに変数に入ってる数字と文字列(:)を連結させて、
10:25
というふうに書くにはどうすればいいですか?<>
Name_Not_Found<>sage<>2014/07/23(水) 12:36:30.54 ID:???.net<> >>726
JQueryのdataはDOMと関係無く値を収納してるんだが?
お前が一番違い分かって無いだろ…何長々と馬鹿な事言ってるんだ <>
Name_Not_Found<>sage<>2014/07/23(水) 12:38:55.92 ID:???.net<> そもそも例えに何の前提もなく$(id)を使うのは <>
Name_Not_Found<>sage<>2014/07/23(水) 12:40:35.15 ID:???.net<> >>728
えらいえらい。よく気づいたね。
じゃあ、DOMの話だけでするならば、
フォームのvalueが全く同じ挙動をする。
ページが表示されてからinputの内容を入力した時、
valueプロパティ、つまりDOMオブジェクトの値は最新の値だが、
value属性はページが表示された時のまま。
DOMオブジェクトの内容と、属性は関係してそうで関係していない。
jQueryのdataはこの動作を参考にして作られていると考えれば良い。 <>
Name_Not_Found<>sage<>2014/07/23(水) 12:41:44.18 ID:???.net<> 実装依存は困るよな…
っていうかHTMLもCSSもJavaScriptも全ブラウザ全部仕様通り全部動作完全に一緒だったらと思うと <>
Name_Not_Found<>sage<>2014/07/23(水) 12:43:35.34 ID:???.net<> >>731
それはネットスケープが悪いんだよ。JavaScriptを初めて搭載したブラウザ。
標準化しないで勝手に言語を作った。
まずいきなり実装しないで、標準団体を設立して標準化するべきだった。 <>
Name_Not_Found<>sage<>2014/07/23(水) 13:11:41.52 ID:???.net<> >>732
今更何を…
むしろマイクロソフトに言うべきだろ <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/23(水) 14:16:35.87 ID:???.net<> msは話しにならん <>
Name_Not_Found<>sage<>2014/07/23(水) 14:48:27.81 ID:???.net<> var tes=$("div");
上はDOMオブジェクトであってますか? <>
Name_Not_Found<>sage<>2014/07/23(水) 14:59:44.93 ID:???.net<> あってません <>
Name_Not_Found<>sage<>2014/07/23(水) 19:07:59.95 ID:???.net<> >>726
innerHTML は WhiteSpace のノーマライズとか tagName, attributeName の大文字化or小文字化を実装依存で処理してるんだが
この人は何を言ってるのかわからないのになぜ自信満々なんだ
仕様書にも " running the HTML fragment serialization algorithm" とあるが、 読んでいる様子が全くない <>
Name_Not_Found<>sage<>2014/07/23(水) 19:58:16.27 ID:???.net<> 自分が変なこと言って指摘されても「よくきづいたね」と初めから指摘される事がわかっていた装いをする図々しさがあるぐらいだからな
未知の分野を勉強する事を忘れ、自分の知識をひけらかすのが目的化してるんだろう
少なくとも、このスレではお呼びではない <>
Name_Not_Found<>sage<>2014/07/23(水) 20:11:21.19 ID:???.net<> 2chで情報を得るには知ったかぶりすればいいと聞いた事がある <>
Name_Not_Found<>sage<>2014/07/23(水) 20:17:08.71 ID:???.net<> innerHTML の実装間での違いって主にどんなものがありますか? <>
Name_Not_Found<>sage<>2014/07/23(水) 20:23:25.99 ID:???.net<> >>739
知ってる <>
Name_Not_Found<>sage<>2014/07/23(水) 20:27:48.22 ID:???.net<> 質問して満足する答えが得られなければ、自分の都合が良いように解釈して先の自分の発言が正しいと主張する人もいるんだよな.. <>
Name_Not_Found<>sage<>2014/07/23(水) 20:32:50.94 ID:???.net<> >>739
ばらすな <>
Name_Not_Found<>sage<>2014/07/23(水) 20:57:44.90 ID:???.net<> >>743
「実は答えを引き出すために知ったかぶってたんだぜ」というポーズはいいから <>
Name_Not_Found<>sage<>2014/07/23(水) 21:02:16.24 ID:???.net<> いずれにせよ好意的に接されることはないのであった <>
Name_Not_Found<>sage<>2014/07/23(水) 23:09:17.44 ID:???.net<> ファイルのアップロードをしたいのですが対象ブラウザーにIE9があります。
FormData()はIE10からなので画面遷移させずにアップデートを行う場合はiframeなんかを利用するしかないでしょうか? <>
Name_Not_Found<>sage<>2014/07/24(木) 00:29:02.77 ID:???.net<> 送信URLが204 No Contentを返せば画面遷移しないで済むけど。 <>
Name_Not_Found<>sage<>2014/07/24(木) 09:15:23.57 ID:???.net<> あるjqueryオブジェクトがactiveElementかどうか調べる
一番いい方法は何ですか? <>
Name_Not_Found<>sage<>2014/07/24(木) 09:23:49.14 ID:???.net<> $('#test').get(0) === document.activeElement
以上にいい方法ありますか? <>
Name_Not_Found<>sage<>2014/07/24(木) 10:02:21.77 ID:???.net<> >>748の件ですが、
$('#test').filter(':focus').length
みたいなやり方がjquery流だと気付きました <>
Name_Not_Found<>sage<>2014/07/24(木) 10:48:12.26 ID:???.net<> 複数のfilterをかける時は
filter('hoge','poge')
みたいに出来たらいいと思います <>
Name_Not_Found<>sage<>2014/07/24(木) 11:08:50.86 ID:???.net<> 「activeElementかつ指定のクラス」を指定するには
$hoge.filter(':focus').filter('.hoge')
としないといけないのでしょうか?
なんかださい気がします <>
Name_Not_Found<>sage<>2014/07/24(木) 11:43:59.85 ID:???.net<> いろいろ調べたところ
マルチセレクタでORができる
属性セレクタはANDができる
しかし属性以外のセレクタではANDができない
ようです
これはいけてませんなぁ <>
Name_Not_Found<>sage<>2014/07/24(木) 12:59:11.06 ID:???.net<> アプリ全体をひとつのオブジェクト(たとえばhogeという名の)に入れて、
サブコンポーネントには、
hoge.subcomponent
みたいな形でアクセスするようにしています。
ある変数がトップレベルに属するのか、ローカル変数なのかが
一目で分かりやすくなるというメリットがありますが、
変数のパスが深くなるというデメリットもあります
こういうの、どうやってますか? <>
Name_Not_Found<>sage<>2014/07/24(木) 13:05:13.86 ID:???.net<> >>754
requirejsを使って
define(['foo', 'bar', 'baz'], function(Foo, Bar, Baz) {・・・});
ってやってます。
サブコンポーネントはFoo, Bar, Bazに入ってきます。
組み込み以外のトップレベルの変数は使わないし、みなローカル変数です。
変数のパスも長くなりません。 <>
Name_Not_Found<>sage<>2014/07/24(木) 13:22:02.09 ID:???.net<> >>754
prototype でオブジェクト単位で機能を小分けしてる <>
749<>sage<>2014/07/24(木) 13:39:00.60 ID:???.net<> 小分けにしたオブジェクトを最終的に一つのオブジェクトにする、という意味ね
初めから一つに集約する必要は全くない <>
Name_Not_Found<>sage<>2014/07/24(木) 19:32:38.37 ID:???.net<> ありがとうございました <>
Name_Not_Found<><>2014/07/25(金) 13:34:33.05 ID:BCUnK0zf.net<> textareaの内容をクリップボードにコピーする方法ですが、chromeや他のブラウザでも簡単に出来る方法はありませんか?
ググっていくつかの方法を試したけどうまくできませんでした。
できれば簡単な方法が分かる方いましたらよろしくお願いします。 <>
Name_Not_Found<>sage<>2014/07/25(金) 13:53:01.94 ID:???.net<> ググって見つけたのなら、それが一番簡単な方法だ。
それぐらいも出来ない人だと、もう無理だな。
力不足と諦めた方がいい。仕事なら首になるレベル <>
Name_Not_Found<>sage<>2014/07/25(金) 13:57:12.43 ID:???.net<> >>759
Clipboard API が勧告されるまで待つべき
http://www.w3.org/TR/clipboard-apis/ <>
Name_Not_Found<>sage<>2014/07/25(金) 14:07:48.50 ID:???.net<> .clipboardDataオブジェクトで普通にできるけど?はい論破 <>
Name_Not_Found<>sage<>2014/07/25(金) 14:10:02.67 ID:???.net<> 論破ってどういう時に使う言葉だっけ?
うるせばーか。みたいな意味? <>
Name_Not_Found<>sage<>2014/07/25(金) 14:13:56.24 ID:???.net<> 現行の Flash Player はユーザイベント無しではシステムクリップボードにアクセスできない
http://help.adobe.com/ja_JP/as3/dev/WS2F6A31B9-1AE6-4b23-9C12-57A33F4F0516.html <>
Name_Not_Found<>sage<>2014/07/25(金) 14:15:58.33 ID:???.net<> >>762
Google Chrome では "ReferenceError: clipboardData is not defined" だけど、ちゃんと試した? <>
Name_Not_Found<>sage<>2014/07/25(金) 14:21:02.75 ID:???.net<> だから、後ろに論破(うるせばーか)って
つけてるんだろ? <>
Name_Not_Found<>sage<>2014/07/25(金) 14:27:05.77 ID:???.net<> ドヤ顔で横入りして「お前らの議論に終止符を打ってやったぞ!」と思い込む事
誰も議論してないのにな <>
Name_Not_Found<>sage<>2014/07/25(金) 14:31:17.06 ID:???.net<> とドヤ顔で語る>>767だった <>
Name_Not_Found<>sage<>2014/07/25(金) 14:31:24.92 ID:???.net<> chromeの場合はwindow直下にはないよ
イベントオブジェクトのプロパティとしてある。はい論破 <>
Name_Not_Found<>sage<>2014/07/25(金) 14:35:23.50 ID:???.net<> IE の場合、規定のセキュリティレベル(中高)ではクリップボードアクセス時に [ダイアログを表示する] なんだが、その仕様は問題ないのかね
クリップボードに勝手にアクセスされたら危険すぎるし、やろうとも思わんが <>
Name_Not_Found<>sage<>2014/07/25(金) 14:37:13.31 ID:???.net<> 「論破」って議論中に使われる言葉だと思ってたよ <>
Name_Not_Found<>sage<>2014/07/25(金) 14:40:57.34 ID:???.net<> イベント時だけアクセスできるようにしたのは、セキュリティー的なことかな
そうしないと知らない間にクリップボードを抜かれて送信されていた、なんてことが起きかねないから <>
Name_Not_Found<>sage<>2014/07/25(金) 14:41:11.80 ID:???.net<> 画面いっぱいのiframeとjavascriptを仕込んでおいて
ユーザのクリップボードからパスワード等の情報を抜き取るお手軽フィッシングサイトが作れるようになるな <>
Name_Not_Found<>sage<>2014/07/25(金) 14:41:12.99 ID:???.net<> 例えるなら教師と生徒で会話している時に、通りすがりの生徒がいきなり話しかけてきて「〜だよ。はい論破!」といってるようなもの <>
Name_Not_Found<>sage<>2014/07/25(金) 14:42:27.42 ID:???.net<> 全然たとえてられてねーだろ
生徒と生徒が議論してるところに先生があらわれて助言したの方が正しい <>
Name_Not_Found<>sage<>2014/07/25(金) 14:45:17.17 ID:???.net<> >>775
生徒でも先生でもいいんだが、議論に参加してない奴がいきなり横入りして「論破!」はないな
「はい、論破!(俺かっけー!)」ってとこだろ <>
Name_Not_Found<>sage<>2014/07/25(金) 14:47:44.70 ID:???.net<> というか、>>762の時点では誰も議論してないぞ <>
Name_Not_Found<>sage<>2014/07/25(金) 15:03:31.34 ID:???.net<> てか別につっこむところじゃねーし。
技術的話題だけに集中しろ <>
Name_Not_Found<>sage<>2014/07/25(金) 15:13:23.44 ID:???.net<> 日本語が不自由な人だったな <>
Name_Not_Found<>sage<>2014/07/25(金) 15:21:59.50 ID:???.net<> ふっふっふ、俺の論破が大ブーム <>
Name_Not_Found<>sage<>2014/07/25(金) 15:22:34.30 ID:???.net<> 逃げたか <>
Name_Not_Found<>sage<>2014/07/25(金) 15:26:01.57 ID:???.net<> そもそも、clipboardData は>>761の事じゃないか
日本語だけでなく英語も不自由なのか <>
Name_Not_Found<>sage<>2014/07/25(金) 15:27:49.95 ID:???.net<> 論破って言うのいけないと思います!
みたいなガキくさい奴が出てきたのは夏休みだからか
お前らは宿題しとけ <>
Name_Not_Found<>sage<>2014/07/25(金) 15:34:10.12 ID:???.net<> 今度は話を逸らしてきたか <>
Name_Not_Found<>sage<>2014/07/25(金) 15:34:12.28 ID:???.net<> chromeでjavascriptからクリップボードにコピーできるサイトがありますよね
IE限定だと思ってたんですがchromeでやる方法どうやるのか教えて下しあ <>
Name_Not_Found<>sage<>2014/07/25(金) 15:36:45.24 ID:???.net<> クリップボード chrome JavaScriptで
検索したら見つかったよ。1分で出来た。
俺の能力の高さがよく分かるね。論破かな。 <>
Name_Not_Found<>sage<>2014/07/25(金) 15:37:59.45 ID:???.net<> じゃあ書き込めよカス
吹かしてんじゃねーぞ <>
Name_Not_Found<>sage<>2014/07/25(金) 15:39:32.43 ID:???.net<> ふかしイモを論破にしてやったが食べる? <>
Name_Not_Found<><>2014/07/25(金) 15:49:47.36 ID:BCUnK0zf.net<> var namae = "井上";
var text1 = "4569田中7849井上0384斉藤";
namaeはその都度変わるとして、namaeに「井上」があったときにtextから「7849井上」を削除したいのですが、
replaceに正規表現と変数namaeを使って削除することはできませんか?
if(text1.match(namae)){
text1 = text1.replace(/ [0-9][0-9][0-9][0-9] namae /,"");
} <>
Name_Not_Found<>sage<>2014/07/25(金) 16:05:14.19 ID:???.net<> できます <>
Name_Not_Found<>sage<>2014/07/25(金) 17:36:06.40 ID:???.net<> text1.replace(new RegExp("[0-9]+" + namae), "") <>
Name_Not_Found<>sage<>2014/07/25(金) 17:38:45.37 ID:???.net<> 正規表現をクォーテーション・ダブルクォーテーションで囲まないのはいまだに違和感 <>
Name_Not_Found<>sage<>2014/07/25(金) 17:42:33.48 ID:???.net<> >>791
namae === '\\d' だったらどうしよう? <>
Name_Not_Found<>sage<>2014/07/25(金) 17:50:49.86 ID:???.net<> そんなnamae持ってきたやつを殴れ <>
Name_Not_Found<>sage<>2014/07/25(金) 18:45:24.94 ID:???.net<> エスケープすればいい、という解に繋がって欲しかったんだけどなあ <>
Name_Not_Found<>sage<>2014/07/25(金) 19:12:55.45 ID:???.net<> >>789
やりたいことは何となくわかるが、text1のフォーマットをcsvやjsonにした方がスマートな気がする <>
Name_Not_Found<>sage<>2014/07/26(土) 00:50:03.94 ID:???.net<> varで変数名を並べるときは
代入ありのものは先と後どっちに書くんですか? <>
Name_Not_Found<>sage<>2014/07/26(土) 01:07:31.23 ID:???.net<> >>797
先に宣言
必要な箇所で代入
つうかこの作法クソすぎるわ <>
Name_Not_Found<>sage<>2014/07/26(土) 13:56:06.70 ID:???.net<> >>798
それ守る必要あんのか?
理屈はわかるが、守る価値が
殆ど無いないルールだろ? <>
Name_Not_Found<>sage<>2014/07/26(土) 15:39:23.24 ID:???.net<> あるよ
宣言と定義では、宣言の方が基本的だから。
基本的なものを先に書くのは当たり前
はい論破 <>
Name_Not_Found<>sage<>2014/07/26(土) 19:40:05.50 ID:???.net<> >>799
一人で書くなら必要ない
複数で書くならDartなりなんなりトランスレータ上でやれ
つまり <>
Name_Not_Found<>sage<>2014/07/26(土) 22:14:00.92 ID:???.net<> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>こんにちは</title>
</head>
<body>
<img id="gazo" name="irasuto" onclick="changeIMG()" src="c:\1\1.jpg" width="100" height="100" border="0" alt="">
<script type="text/javascript">
<!--
var img=new Array(3);
img[1].src="c:\1\1.jpg";
img[2].src="c:\1\2.jpg";
function changeIMG(){
document.irasuto.src="c:\1\2.jpg";
}
//-->
</script>
</body>
</html> <>
794<>sage<>2014/07/26(土) 22:15:17.55 ID:???.net<> このスクリプトなんですがクリックしても、画像が表示されません。
枠だけ表示されます、何故でしょう?相対パスにしても無駄でした。
インターネット上の適当なjpg画像を2つ見つけて設定すると
出来たのですがローカル環境だとこうなります、何故でしょう? <>
Name_Not_Found<>sage<>2014/07/26(土) 22:24:14.64 ID:???.net<> (触るのが怖い) <>
794<>sage<>2014/07/26(土) 22:25:36.82 ID:???.net<> すいませんファイル指定間違えました
file///ってやったらできました… <>
Name_Not_Found<>sage<>2014/07/26(土) 22:35:27.48 ID:???.net<> >>800
それは違う
JavaScriptはvarの巻き上げがあるから宣言を先頭に書いておくと見た目と挙動が一致するからそうする
はい論破 <>
Name_Not_Found<>sage<>2014/07/26(土) 23:49:14.60 ID:???.net<> でたよロンパバカ
略してロンパカ <>
Name_Not_Found<>sage<>2014/07/27(日) 00:16:46.17 ID:???.net<> 今日のロンパールームはここですか? <>
Name_Not_Found<>sage<>2014/07/27(日) 00:26:23.24 ID:???.net<> 熊のぬいぐるみと取り替えちゃおうね <>
Name_Not_Found<>sage<>2014/07/27(日) 09:07:06.37 ID:???.net<> 相変わらず、1行質問者は立て逃げで礼儀知らずだな <>
Name_Not_Found<>sage<>2014/07/27(日) 14:39:00.53 ID:???.net<> documentツリーとオブジェクトツリーの2つがあるのですか?
っていうか名前はこれで合ってるのかも分からない・・・ <>
Name_Not_Found<>sage<>2014/07/27(日) 14:39:36.95 ID:???.net<> 質問文が変ですみません <>
Name_Not_Found<>sage<>2014/07/27(日) 14:49:19.45 ID:???.net<> >>806
> JavaScriptはvarの巻き上げがあるから宣言を先頭に書いておくと見た目と挙動が一致するからそうする
でもさ、varで宣言したとこより、上で使うことって無いだろ?
何が困るのさ? <>
Name_Not_Found<>sage<>2014/07/27(日) 17:39:04.60 ID:???.net<> >>811-805
documentツリーはともかく、オブジェクトツリーの 意味が分かりません。
それが出てきた文章を読めば文脈で見て解釈出来るかもしれませんが。
変だと分かっているなら、もう少し質問文を具体的にするとか、工夫して下さい。 <>
Name_Not_Found<>sage<>2014/07/27(日) 18:14:43.29 ID:???.net<> varを付けるか付けないか無駄に悩むくらいなら
使うぶんは最初に全部宣言しておいた方がいいってこと
jshintを使えばそれもたやすい
はい論破 <>
Name_Not_Found<>sage<>2014/07/27(日) 18:30:36.24 ID:???.net<> >>811
あるのはDOMツリー
DOMとはdocument object model
いろいろ混ざってる <>
Name_Not_Found<>sage<>2014/07/27(日) 20:04:26.95 ID:???.net<> 宣言無しでも使えるって仕様は馬鹿のリトマス試験紙なのでやめて頂きたかった <>
Name_Not_Found<>sage<>2014/07/28(月) 00:58:22.00 ID:???.net<> グラフィックボードって計算が桁違いに速いですよね
それをJavaScriptから使うことってできないんですか? <>
Name_Not_Found<>sage<>2014/07/28(月) 01:07:59.89 ID:???.net<> 特に領域の当たり判定などをやって欲しいと思います
そういうの得意ですよね? <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/28(月) 01:32:31.71 ID:???.net<> html5のcanvasの3d?みたいな奴がVRAMに直接アクセス出来たはず <>
Name_Not_Found<>sage<>2014/07/28(月) 01:42:02.94 ID:???.net<> コリジョンディテクションはオクルージョンクエリでやってやれないことはないが <>
Please Click Ad !!アドセン.スクリックお願いします<>sage<>2014/07/28(月) 01:57:53.07 ID:???.net<> 呪文かよw <>
Name_Not_Found<>sage<>2014/07/28(月) 02:15:16.27 ID:???.net<> ウィンガーディアムレビオーサでクルーシオってことか? <>
Name_Not_Found<>sage<>2014/07/28(月) 02:31:48.13 ID:???.net<> >>820
なにそれこわい <>
Name_Not_Found<>sage<>2014/07/28(月) 04:06:36.41 ID:???.net<> varは絶対に付けろ
付けない場合は、global変数になる
付けると、local変数
"use strict";
厳格モードも書いておけ <>
Name_Not_Found<>sage<>2014/07/28(月) 10:18:36.27 ID:???.net<> みんなuse strictってつけます? <>
Name_Not_Found<>sage<>2014/07/28(月) 10:47:35.88 ID:???.net<> 曖昧なコードがあぶり出されるから付けてる <>
Name_Not_Found<>sage<>2014/07/28(月) 10:52:05.20 ID:???.net<> つけてない
柔軟性が損なわれる
将来的にはstrictをつけてるかつけてないかにかかわらず
strictで動くコードを書けっていう風潮になると思うけど <>
Name_Not_Found<>sage<>2014/07/28(月) 10:54:06.45 ID:???.net<> 柔軟性ってなんだよ
糞コードをいい風に言ってるだけだろ <>
Name_Not_Found<>sage<>2014/07/28(月) 10:59:24.22 ID:???.net<> 頭かたいよ君
理解した上で書いてるコードなら問題ないだろ <>
Name_Not_Found<>sage<>2014/07/28(月) 11:07:20.79 ID:???.net<> マウスボタンを押しながらマウスを動かすこと全般をドラッグといいます
OSで言うと、複数のアイコンを選択するための動作もドラッグです
一方、オブジェクトを掴んで動かす動作もドラッグと言われていると思います
一番目の広義のドラッグと、二番目の狭義のドラッグに同じメソッド名を付けると整合性が崩れます
そこで狭義のドラッグを別の名前で呼ぼうと思います
狭義のドラッグを指す言葉は何でしょうか? <>
Name_Not_Found<>sage<>2014/07/28(月) 11:09:35.15 ID:???.net<> http://peace.2ch.net/test/read.cgi/tech/1390230345/ <>
Name_Not_Found<>sage<>2014/07/28(月) 11:18:34.30 ID:???.net<> >>813
ケアレスミスが絶対無いと言えるなら何も困らない
あった時に変なバグに悩まされるだけだ
>>830
理解してるとか関係無い
ケアレスミスを早期に発見出来るようにする為のものだから付ける必要がある
お前が書いたコードはバグだらけなのは容易に想像が付く <>
Name_Not_Found<>sage<>2014/07/28(月) 11:20:56.42 ID:???.net<> これだからstrict信仰者は・・・
html perl どこの世界いっても似たような主張繰り返すんだなw <>
Name_Not_Found<>sage<>2014/07/28(月) 11:40:21.23 ID:???.net<> "use strict" で封印される有用な機能がないから strict mode を使う <>
Name_Not_Found<>sage<>2014/07/28(月) 11:50:13.09 ID:???.net<> だよな
使わない理由がない
気を付けていればjshint使わなくてもいいとか言ってた奴と同一人物か? <>
Name_Not_Found<>sage<>2014/07/28(月) 12:04:20.83 ID:???.net<> ケアレスミス早期発見ってのも使う理由にもなってないな
そんなのはIDEに任せればいいわけで <>
Name_Not_Found<>sage<>2014/07/28(月) 12:10:09.23 ID:???.net<> 意味不明w
strict mode使ったこともなさそう <>
Name_Not_Found<>sage<>2014/07/28(月) 12:11:53.47 ID:???.net<> 意味不明w
IDE使ったこともなさそう <>
Name_Not_Found<>sage<>2014/07/28(月) 12:12:42.25 ID:???.net<> IDEの文法チェックとstrict modeを同列に語るのは狂人だけ <>
Name_Not_Found<>sage<>2014/07/28(月) 12:13:12.30 ID:???.net<> 本当にIDE使ったことないんだな <>
Name_Not_Found<>sage<>2014/07/28(月) 12:14:54.20 ID:???.net<> いやあるが?
JSにIDEは重すぎる
使うのは馬鹿だけ <>
Name_Not_Found<>sage<>2014/07/28(月) 12:15:05.79 ID:???.net<> >>840はデバッガを知らないらしい <>
Name_Not_Found<>sage<>2014/07/28(月) 12:15:44.90 ID:???.net<> >>842
そんな見苦しい言い訳しないでごめんなさいって言っとけばいいんですよ <>
Name_Not_Found<>sage<>2014/07/28(月) 12:16:48.13 ID:???.net<> お前を叩いても何も出ないからほっとくね
好きにすればいいよ <>
Name_Not_Found<>sage<>2014/07/28(月) 12:17:34.74 ID:???.net<> wwwww <>
Name_Not_Found<><>2014/07/28(月) 12:19:50.38 ID:670lqxip.net<> >>835
Strict信仰は麻疹みたいなものだから… <>
Name_Not_Found<>sage<>2014/07/28(月) 12:20:02.56 ID:???.net<> 絡んだら損しかしないレベルの奴が増えてきたのは夏休みだからなのかな <>
Name_Not_Found<>sage<>2014/07/28(月) 12:24:14.09 ID:???.net<> 捨て台詞吐くぐらいなら最初から絡まなければいいのに <>
Name_Not_Found<>sage<>2014/07/28(月) 12:31:33.49 ID:???.net<> という捨て台詞w <>
Name_Not_Found<>sage<>2014/07/28(月) 12:32:22.71 ID:???.net<> 結局好きにすればいいといいつつほっとけないわけですね <>
Name_Not_Found<>sage<>2014/07/28(月) 12:36:22.26 ID:???.net<> strict mode はコーディング規約の一つ <>
Name_Not_Found<>sage<>2014/07/28(月) 14:18:11.34 ID:???.net<> strictモードで損なわれる柔軟性の溢れるコードを提出してください <>
Name_Not_Found<>sage<>2014/07/28(月) 14:33:15.00 ID:???.net<> 悔しいのう <>
Name_Not_Found<>sage<>2014/07/28(月) 14:47:16.93 ID:???.net<> &&や||は
===や<や>よりも優先順位は低いのでしょうか?
そうじゃないと複数の条件を並べる時にいちいちカッコで囲まないといけなくなりますよね? <>
Name_Not_Found<>sage<>2014/07/28(月) 14:49:20.07 ID:???.net<> 絡んでも損しかしないやつが
自分を批判する人間が一人だと思い込んでてワロタ
おかしなことしか言ってないんだからお前に対してのリアクションは
突っ込まれる or スルーされる
しかねーよタコ <>
Name_Not_Found<>sage<>2014/07/28(月) 14:55:49.79 ID:???.net<> IDEも知らん低能必死杉 <>
Name_Not_Found<>sage<>2014/07/28(月) 14:56:58.98 ID:???.net<> こいつの方がIDE使ってなさそう
万能の何かと思ってんじゃねーの
寒いやつやで <>
Name_Not_Found<>sage<>2014/07/28(月) 14:58:03.86 ID:???.net<> strict mode使う理由はケアレスミス防ぐため!
使わないやつはバグだらけ!(ドヤァ <>
Name_Not_Found<>sage<>2014/07/28(月) 15:04:30.33 ID:???.net<> sublime text2で
「最後に編集した場所」にキャレットを移動するプラグインありませんか? <>
Name_Not_Found<>sage<>2014/07/28(月) 15:06:29.42 ID:???.net<> 853の件ですが、
undo→redo
とやればそういうことが出来ました <>
Name_Not_Found<><>2014/07/28(月) 15:22:55.18 ID:670lqxip.net<> >>855
演算子は優先順位があるよ
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence <>
Name_Not_Found<>sage<>2014/07/28(月) 15:31:23.66 ID:???.net<> 論理演算子の中でも論理NOTだけは
比較演算子などよりも優先なんですね
ありがとうございました <>
Name_Not_Found<>sage<>2014/07/28(月) 15:44:42.47 ID:???.net<> カッコは演算子の優先順位に依らずに書いておいて損はないね
&とか<<混ざると絶対カッコを付ける
いちいち優先順位気にしたくないし <>
Name_Not_Found<>sage<>2014/07/28(月) 15:57:04.18 ID:???.net<> ちなみに最近のgccは if (hoge & bits) と書くと
おまえ&&をミスってんじゃねーの?ププッといわれる
その時は if ((hoge & bits)) と書けばいいけど、ビット演算を強調する意味でJavaScriptでも常にそうしている <>
Name_Not_Found<>sage<>2014/07/28(月) 15:59:22.14 ID:???.net<> ( ゚,_・・゚)ブブブッ <>
Name_Not_Found<>sage<>2014/07/28(月) 17:00:28.58 ID:???.net<> chromeで、
オブジェクトをドラッグしながらマウスを高速に動かした時の動きが妙にガクガクだったので
他のタブを閉じたらもとに戻りました
何のサイトが影響していたのかは分かりませんが、
他のタブの影響を小さくする方法はありませんか? <>
Name_Not_Found<>sage<>2014/07/28(月) 17:06:58.89 ID:???.net<> 要は負荷かけすぎなんだよ <>
Name_Not_Found<>sage<>2014/07/28(月) 17:16:54.22 ID:???.net<> 負荷かけられすぎなんですが? <>
Name_Not_Found<>sage<>2014/07/28(月) 17:17:58.10 ID:???.net<> 厳密な比較演算子(===、!==)がらみで型の話なんですが
null は NULL型 としていいのでしょか?
typeof null が 'object' を返してくるのでいまいち自身がないのですが <>
Name_Not_Found<>sage<>2014/07/28(月) 17:24:08.15 ID:???.net<> new Null()ってできないから型じゃないんじゃないかな?はい論破 <>
Name_Not_Found<>sage<>2014/07/28(月) 17:24:45.22 ID:???.net<> 無効なobjectを示す値だからobject型でいいじゃん。
なんだNULL型って。 <>
Name_Not_Found<>sage<>2014/07/28(月) 17:26:58.92 ID:???.net<> >>870
nullはNull型の認識で正しい
typeof演算子の動作は仕様バグ(ES6で修正予定)
http://d.hatena.ne.jp/think49/20120114/1326554107 <>
Name_Not_Found<>sage<>2014/07/28(月) 17:33:27.19 ID:???.net<> じゃあES6ではnew Null()ってできんの? <>
Name_Not_Found<>sage<>2014/07/28(月) 17:48:27.81 ID:???.net<> typeof undefinedは"undefined"が返ってくるんだからundefined型
new undefinedは出来ないからnewは関係無い <>
Name_Not_Found<>sage<>2014/07/28(月) 17:53:16.46 ID:???.net<> newできる型とできない型の違いはなんですか? <>
Name_Not_Found<>sage<>2014/07/28(月) 18:26:56.05 ID:???.net<> http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.11
4.3.12 Null type
type whose sole value is the null value
4.3.10 Undefined type
type whose sole value is the undefined value <>
Name_Not_Found<>sage<>2014/07/28(月) 18:28:50.93 ID:???.net<> 次スレのテンプレは http://jsfiddle.net/fH4cC/31/show/ にある奴で合ってますか。 <>
863<>sage<>2014/07/28(月) 18:45:01.49 ID:???.net<> ありがとうございました
勉強になりました <>
Name_Not_Found<>sage<>2014/07/28(月) 18:48:14.89 ID:???.net<> >>877
型なのは分かりましたが何でnewできないんですか? <>
Name_Not_Found<>sage<>2014/07/28(月) 18:57:38.40 ID:???.net<> >>880
コンストラクタが組み込みで用意されてないからじゃなかろか? <>
Name_Not_Found<>sage<>2014/07/28(月) 19:05:43.51 ID:???.net<> なるほど
でもコンストラクタがないのになんで生成できるのか・・?
ソースコードを読まないと分からないかもですね <>
Name_Not_Found<>sage<>2014/07/28(月) 19:14:02.56 ID:???.net<> プリミティブだからじゃないかね
ほんでTypeとConstructorが同じになることは、絶対ではないと <>
Name_Not_Found<>sage<>2014/07/28(月) 19:29:36.83 ID:???.net<> プリミティブ型
http://javascript-term.e1blue.net/js/continuation/21
・オブジェクトではない
・プロトタイプも、コンストラクタも保持しない
JSの基底に近い部分まで掘り下げると、オブジェクトも消え去ってしまうのかな
なんか気持ちわるいので、すべてがオブジェクトであって欲しいですが・・ <>
Name_Not_Found<>sage<>2014/07/28(月) 19:54:06.17 ID:???.net<> そもそも複数個の null インスタンスが必要になることは無い <>
Name_Not_Found<>sage<>2014/07/28(月) 19:57:17.98 ID:???.net<> シングルトンな型はあるので
インスタンスがひとつでも別におかしくはないのでは <>
Name_Not_Found<>sage<>2014/07/28(月) 22:38:49.32 ID:???.net<> jqureyで質問なのですが、
古いjqureyでしか動かないjsを使うため古いのを読み込ましていいのでしょうか?
新旧jqurey読み込むのはちょっと嫌なので
解決法探しているのですが <>
Name_Not_Found<>sage<>2014/07/28(月) 22:39:50.96 ID:???.net<> そもそも、コンストラクタと型をなぜ同列で語るのだろう?
その内、「new HtmlDocument 出来ないのはなぜですか」とか「 HtmlDocument型は存在しないんですか 」とか、質問が来そう <>
Name_Not_Found<>sage<>2014/07/28(月) 22:45:03.24 ID:???.net<> >>887
>古いjqureyでしか動かないjs
を新しいのにフィットするように直す選択肢はないのん? <>
Name_Not_Found<>sage<>2014/07/28(月) 23:10:16.69 ID:???.net<> noConflictってやつ使えばいいんじゃないの? <>
Name_Not_Found<>sage<>2014/07/28(月) 23:12:03.89 ID:???.net<> >>888
意味不明
コンストラクタと型が密接な関係にあることなんて常識だろ <>
Name_Not_Found<>sage<>2014/07/29(火) 00:31:42.09 ID:???.net<> HTMLDocumentはDocumentに統合されてコンストラクタが実装されたのでnewできる <>
Name_Not_Found<><>2014/07/29(火) 01:04:03.27 ID:fdUg0cKL.net<> >>891
コンストラクタと関係するのは [[Class]] であって型ではない。
[[Class]] は型と混同されやすいが両者は全くの別物。
new 演算子で生成されるのは Object 型であって他の型が生成されることはない。
Object.prototype.toString を型の判定メソッドと誤認する人がいるが、これも [[Class]] の判定メソッドであって型の判定としては使えない。
>>892
HTMLDocument はコンストラクタではない。
明示的にインスタンスを生成する際は createHTMLDocument を使用する必要がある。
new HTMLDocument; // TypeError: Illegal constructor <>
Name_Not_Found<>sage<>2014/07/29(火) 01:37:08.36 ID:???.net<> ところで「jqurey」ってなに?
中国製? <>
Name_Not_Found<>sage<>2014/07/29(火) 02:37:08.89 ID:???.net<> >>893
HTMLDocument インタフェースは廃止されているが、互換性のために Windows インタフェースのプロパティとして残っている
HTMLDocument プロパティは Document を返すことになっているので、この標準仕様を実装した環境なら new HTMLDocument() が実行できることになる <>
Name_Not_Found<>sage<>2014/07/29(火) 03:22:37.48 ID:???.net<> 型とクラスが別概念なのは言語を問わずですか? <>
Name_Not_Found<>sage<>2014/07/29(火) 04:10:17.80 ID:???.net<> 実用的な言語ではクラスと型が示すものが完全一致してるのは少ないんじゃない?
プリミティブ型とかクラスと無関係なものが大抵用意されてるし <>
Name_Not_Found<>sage<>2014/07/29(火) 08:28:03.75 ID:???.net<> オブジェクトはnew 演算子で作れるけど
html要素はcleateelementで作るから違うものだろうな <>
Name_Not_Found<>sage<>2014/07/29(火) 13:18:01.93 ID:???.net<> >>865
MISRA-C 2004(C90) ルール5.3では、
if文・繰り返し文の制御式、条件演算子の条件式には、
ブール式しか書けない
ただし、typedefしたものは使える
typedef enum {false, true} bool_t;
C99では、stdbool.hでブール型を定義している
>>884
クラスやオブジェクトは大きすぎて、
ちょっとした用途のために、使うのはムダ。
だから多くの言語に、プリミティブ型がある <>
Name_Not_Found<>sage<>2014/07/29(火) 14:53:42.49 ID:???.net<> 時代と共にプログラミングは富豪的になっていくから
プリミティブ型はそのうち消えるのでは? <>
Name_Not_Found<><>2014/07/29(火) 16:30:28.81 ID:712JLdCU.net<> スレ違いだったら申し訳ない
phantomjsで取得したリアルタイムデータを
データベースに格納したいんだけど、DB接続は可能?
もし出来ない場合、テキストで吐き出して結果を
他のスクリプトで処理しようと思うんだけど、もっと良い方法あるだろうか? <>
Name_Not_Found<>sage<>2014/07/29(火) 16:49:39.09 ID:???.net<> 知らないから分からないが
child_processで操作できるんじゃね <>
Name_Not_Found<>sage<>2014/07/29(火) 17:06:11.22 ID:???.net<> >>902
なるほど
使えそうだ、ありがとう <>
Name_Not_Found<>sage<>2014/07/29(火) 18:50:14.96 ID:???.net<> >>900
プリミティブ型そのものは残ると思うけど、
(特にC/C++やDなどはそれを扱えないと困るだろうし)
最近の言語はその違いを隠して内部実装に閉じ込める傾向を感じる
数値リテラルに対して直接メソッド呼べるとか、
必要時には自動的にボックス化(数値オブジェクトなどに詰める)とかね <>
Name_Not_Found<>sage<>2014/07/30(水) 02:24:36.61 ID:???.net<> ほとんどの場合ライブラリあるからnpm searchしよーな <>
Name_Not_Found<>sage<>2014/07/30(水) 11:39:39.90 ID:???.net<> cometとSaver-Sent Eventは同じですか? <>
Name_Not_Found<>sage<>2014/07/30(水) 13:17:03.36 ID:???.net<> contenteditableな領域で
キャレットが文末にあるかどうかを調べるにはどうしたらいいですか? <>
Name_Not_Found<>sage<>2014/07/30(水) 19:48:23.26 ID:???.net<> angularjsの雑談質問スレはどこですか? <>
Name_Not_Found<>sage<>2014/07/30(水) 23:10:31.82 ID:???.net<> ここに書けばいいですよ
答える人がいるか分かりませんが <>
Name_Not_Found<>sage<>2014/07/30(水) 23:38:22.45 ID:???.net<> JavaScript ライブラリ総合質問所 vol.4
ttp://peace.2ch.net/test/read.cgi/hp/1400834117/l50 <>
Name_Not_Found<>sage<>2014/07/31(木) 00:23:26.37 ID:???.net<> angularjsはライブラリじゃないんですよね <>
Name_Not_Found<>sage<>2014/07/31(木) 00:43:55.26 ID:???.net<> アングリーjsってjsにむかついてるってこと? <>
Name_Not_Found<>sage<>2014/07/31(木) 01:52:35.44 ID:???.net<> >AngularJSはライブラリじゃないんですよね
????フレームワークとでも言いたいのかな???? <>
Name_Not_Found<>sage<>2014/07/31(木) 10:18:14.89 ID:???.net<> ↑ <>
Name_Not_Found<>sage<>2014/07/31(木) 10:29:51.15 ID:???.net<> >????フレームワークとでも言いたいのかな????
????ライブラリはフレームワークとでも言いたいのかな???? <>
Name_Not_Found<>sage<>2014/07/31(木) 10:38:28.51 ID:???.net<> ザンギュラ <>
Name_Not_Found<>sage<>2014/07/31(木) 10:49:18.14 ID:???.net<> ちょっとスレチな気もしますが
オンラインゲームってどうやってつくってるんでしょうかね
まさかWebSocketやXMLHttpRequest使ってるわけないだろうし <>
Name_Not_Found<>sage<>2014/07/31(木) 10:56:33.14 ID:???.net<> 独自プロトコル使う
TCP/IPの勉強して下さい <>
Name_Not_Found<>sage<>2014/07/31(木) 10:58:40.77 ID:???.net<> 意外とただのhttp使ってるところ多い <>
Name_Not_Found<>sage<>2014/07/31(木) 11:00:13.77 ID:???.net<> オンラインゲームって広すぎるだろ
専用クライアントが必要な大規模なやつから
webブラウザで出来るようなやつまで <>
Name_Not_Found<>sage<>2014/07/31(木) 12:01:50.00 ID:???.net<> Flash使ってるのも多いよ
本格的なゲームになればなるほどHTML+CSS+JSでは厳しいし <>
Name_Not_Found<>sage<>2014/07/31(木) 13:09:21.42 ID:???.net<> オンゲはスマホが多いからFLASHはどうかと思いますが <>
Name_Not_Found<>sage<>2014/07/31(木) 13:23:04.33 ID:???.net<> WebSocketでも作れないことないんじゃね
node.js使えば鯖も可能だろうし <>
Name_Not_Found<>sage<>2014/07/31(木) 13:48:18.55 ID:???.net<> FLASHはただのプラットフォーム
サーバとどういう通信をするかとは全く別問題 <>
Name_Not_Found<>sage<>2014/07/31(木) 13:48:39.54 ID:???.net<> >>922
スマホのオンゲしか知らんのかい
…まあ、スマホ以外だと専用クライアントとかが強いのであって
flashのオンゲで売れてるのが一部なのは確かだが <>
Name_Not_Found<>sage<>2014/07/31(木) 13:53:40.52 ID:???.net<> スマホの話かよ・・
リアルタイムじゃない奴多いし
ダンジョン行く前にjsonでデータ取得して、終わった時に結果をPUTとかいうゲーム多いよな <>
Name_Not_Found<>sage<>2014/07/31(木) 13:53:44.39 ID:???.net<> jqueryで、要素が、指定した要素、あるいは指定した要素の子孫要素
かをしらべるにはどうしたらいいですか? <>
Name_Not_Found<>sage<>2014/07/31(木) 14:00:43.15 ID:???.net<> 子孫かはhasで調べられるようですが
自身を含む「以下」的なことを一発で知りたいです <>
Name_Not_Found<>sage<>2014/07/31(木) 14:02:20.08 ID:???.net<> 自分で作れ <>
Name_Not_Found<>sage<>2014/07/31(木) 14:10:08.32 ID:???.net<> 標準で出来ないということですか?
それなら&&で調べるのでいいのですが、標準でなんとかできそうな気がしたので <>
Name_Not_Found<>sage<>2014/07/31(木) 14:11:18.44 ID:???.net<> 女が入れば簡単につくれるだろ <>
Name_Not_Found<>sage<>2014/07/31(木) 14:12:03.15 ID:???.net<> 下ネタはやめて下さい <>
Name_Not_Found<>sage<>2014/07/31(木) 15:36:49.80 ID:???.net<> 親要素はparentsで探せばいいんでね? <>
Name_Not_Found<>sage<>2014/07/31(木) 15:37:32.68 ID:???.net<> あと、昔ながらというか
jQueryのhoverの中でもやってるけど
再帰ループで親要素をたどっていくとか <>
Name_Not_Found<>sage<>2014/07/31(木) 15:50:08.66 ID:???.net<> 面倒な方法は>>928や>>930自身でやれるって答えてるだろ <>
Name_Not_Found<>sage<>2014/07/31(木) 15:55:48.62 ID:???.net<> ありがとうございます
aはb要素
あるいは
aはbの子孫
言い換えると
aはb要素
あるいは
aのparents()にb要素がある
つまり
a.parent().add(a).is(b)
って感じに出来ました <>
Name_Not_Found<>sage<>2014/07/31(木) 19:30:42.13 ID:???.net<> ul
li
li
li
クリックしたliが何番目か取得する方法をおしえt <>
Name_Not_Found<>sage<>2014/07/31(木) 19:36:34.30 ID:???.net<> nextSiblingで <>
Name_Not_Found<>sage<>2014/07/31(木) 20:53:14.93 ID:???.net<> $('ul li').each(function(index){
$(this).on('click',function(){ alert(index); });
});
でいつも済ませてしまっているけど
順番は保証されないんだっけ? <>
Name_Not_Found<>sage<>2014/08/01(金) 00:32:03.81 ID:???.net<> >>939
なぜ? <>
Name_Not_Found<>sage<>2014/08/01(金) 12:31:55.24 ID:???.net<> あやふやですんません
getElementsByTagname使ってた頃
順序は担保されないって何かで読んだのをうろ覚えてるだけでして <>
Name_Not_Found<>sage<>2014/08/01(金) 14:13:47.79 ID:???.net<> >>939
1.3.2からは保証されている
http://blog.jquery.com/2009/02/20/jquery-1-3-2-released/ <>
Name_Not_Found<>sage<>2014/08/01(金) 14:35:19.78 ID:???.net<> その前にliひとつひとつにonするってアカンだろ
ハンドラ側で切りわけるのが普通 <>
Name_Not_Found<>sage<>2014/08/01(金) 14:40:19.89 ID:???.net<> >>943
その場合、indexはどこに入るん? <>
Name_Not_Found<>sage<>2014/08/01(金) 16:06:32.50 ID:???.net<> ハンドラ側で調べるんじゃないの <>
Name_Not_Found<>sage<>2014/08/01(金) 16:32:14.83 ID:???.net<> >>939
リストが増えたり減ったりしなければ問題ないですよ
でも増えた時にそれじゃあしらべられないですよね <>
Name_Not_Found<>sage<>2014/08/01(金) 16:49:42.69 ID:???.net<> ハンドラでliを全部とってきて
thisが何番目か調べるのか
なるほど <>
Name_Not_Found<>sage<>2014/08/01(金) 17:31:22.21 ID:???.net<> ulにonしてthisを調べるとulのthisが返ってくるのですが
ulのthisからonしたliのindexを調べるにはどうしたらよいですか <>
Name_Not_Found<>sage<>2014/08/01(金) 17:33:40.88 ID:???.net<> >>948
event.targetで <>
Name_Not_Found<>sage<>2014/08/01(金) 17:43:49.88 ID:???.net<> liにonすればいいじゃない <>
Name_Not_Found<>sage<>2014/08/01(金) 17:48:51.36 ID:???.net<> なんかイベントの基本的な部分が分かってない感
本を一冊読んで基本を勉強した方がいいよ <>
Name_Not_Found<>sage<>2014/08/01(金) 19:06:01.15 ID:???.net<> $('ul').on('click', 'li', function (e) {
alert($(this).prevAll().length + 1);
e.stopPropagation();
}); <>
Name_Not_Found<>sage<>2014/08/01(金) 19:11:22.33 ID:???.net<> >>949
ありがとうございました <>
Name_Not_Found<>sage<>2014/08/02(土) 01:28:33.88 ID:???.net<> JQueryなどの話は以下へ
JavaScript ライブラリ総合質問所 vol.4
ttp://peace.2ch.net/test/read.cgi/hp/1400834117/l50
そいつはライブラリの話をして、このスレを荒らすヤツかも。
答えたり相手にしたらアカン。無視すること <>
Name_Not_Found<>sage<>2014/08/02(土) 01:56:23.61 ID:???.net<> 大元の質問はJQueryのQの字も無いじゃん(Jはあっても良い派) <>
Name_Not_Found<>sage<>2014/08/02(土) 04:22:44.48 ID:???.net<> 季節外れの自治厨荒らしワロス
お前はプログラム板から帰ってくんな <>
Name_Not_Found<>sage<>2014/08/02(土) 16:00:18.93 ID:???.net<> たまに見る、言葉で絞り込む機能が付いたpopoverを作りたいんですが
どうやればいいですか? <>
Name_Not_Found<>sage<>2014/08/02(土) 18:22:15.56 ID:???.net<> ローカルストレージの内容を他のファイルに保存するにはどうしたらいいでしょうか?
テキスト化して他のウインドウに出力→それをコピペしてテキストファイルで保存
とやっていたのですが、データが巨大になり、文字列選択にものすごく時間がかかるようになりました
時間がかかりすぎて警告ダイアログが出るくらいです
もっと直接的にファイル保存できたらええんですが・・ <>
Name_Not_Found<>sage<>2014/08/02(土) 18:26:58.05 ID:???.net<> その文字列をペーストしたらテキストエディタすら激重になりました
データの中に改行がまったくないのでそうなるのかもしれません・・
便宜改行を入れたらいいのかも <>
sage<><>2014/08/02(土) 18:39:13.11 ID:PBndeSfg.net<> >>958
Blobは? <>
Name_Not_Found<>sage<>2014/08/02(土) 19:33:44.21 ID:???.net<> いっぺんサーバに送って
ファイルにしてoctetstreamで返すのはいかんの? <>
Name_Not_Found<>sage<>2014/08/02(土) 19:39:22.25 ID:???.net<> dataurlでなんとかならん? <>
Name_Not_Found<>sage<>2014/08/02(土) 21:24:03.44 ID:???.net<> >>958
レイアウト/選択領域の算出/グリフの描画
にコストがかかってるのも原因だろうから
表示はされないように出力させたらどうかな
<div style="height:0;overflow:hidden;"><div>テキスト出力</div></div>
データの保存はテキストでなくてもいい(でない方がいい)の? <>
Name_Not_Found<>sage<>2014/08/02(土) 22:47:41.67 ID:???.net<> overflow: hidden; と
display: none; ではどっちが望ましいのか <>
Name_Not_Found<>sage<>2014/08/02(土) 22:50:46.48 ID:???.net<> >>964
用途も機能も全く違う2つを比較する意味があるのか <>
Name_Not_Found<>sage<>2014/08/02(土) 22:51:56.90 ID:???.net<> コピペしてるっつってんだからdisplay:noneじゃだめだろう <>
Name_Not_Found<>sage<>2014/08/02(土) 22:58:55.87 ID:???.net<> ローカルだけでなんとかしたいならクリップボードを直接なんとかして描画しない方向で済ますか
自PC内でweb鯖動かせるとか(通信コストはかかるけど)別途鯖持ってるとかなら、>>961で良くね
postでデータ送りつけて、返しでファイル出してくれるようにすれば鯖側でいちいちファイル化する必要ないし <>
Name_Not_Found<>sage<>2014/08/02(土) 23:00:36.59 ID:???.net<> そういやoverflow: hiddenが機能しないIEっていくつまでだっけ。 <>
Name_Not_Found<>sage<>2014/08/03(日) 09:22:53.54 ID:???.net<> IE5ぐらいじゃねーの? <>
Name_Not_Found<>sage<>2014/08/03(日) 12:20:33.81 ID:???.net<> >>957
どういうのですかサンプル見せてください <>
Name_Not_Found<>sage<>2014/08/03(日) 13:33:01.82 ID:???.net<> >>970
そういわれてみると適当なものがありません
リアルタイム検索の結果がpopoverになってるだけでした <>
Name_Not_Found<>sage<>2014/08/03(日) 14:20:37.01 ID:???.net<> >>971
何のことをpopoverと呼んでるのかわからん
検索窓の下にダラっと出る奴のことなら
サジェストでおググりください <>
Name_Not_Found<>sage<>2014/08/03(日) 14:53:34.50 ID:???.net<> float解除につかうやつだろ
visibility使え <>
Name_Not_Found<>sage<>2014/08/03(日) 15:20:32.23 ID:???.net<> popover jqueryなどでおググリいただければ分かりますが? <>
Name_Not_Found<>sage<>2014/08/03(日) 15:23:01.64 ID:???.net<> pop over ssl <>
Name_Not_Found<>sage<>2014/08/03(日) 16:21:15.96 ID:???.net<> フレームワーク総合スレってありませんか? <>
Name_Not_Found<>sage<>2014/08/03(日) 17:48:07.67 ID:???.net<> まずフレームワークの定義から始めないと(使命感) <>
Name_Not_Found<>sage<>2014/08/03(日) 18:23:03.87 ID:???.net<> jsではフレームワークなんてほとんど使われてないからここでいい <>
Name_Not_Found<>sage<>2014/08/03(日) 18:47:30.62 ID:???.net<> あちこちに分散させても意味ないしな。
>969
で質問って何よ? <>
Name_Not_Found<>sage<>2014/08/03(日) 20:59:22.29 ID:???.net<> angularjsの質問です <>
Name_Not_Found<>sage<>2014/08/03(日) 21:00:00.74 ID:???.net<> angularjs 1.2と1.3の違いをまとめた記事をさがしてます <>
Name_Not_Found<>sage<>2014/08/03(日) 21:49:51.77 ID:???.net<> アングラーjsっての見たけど
フレームワークなのにbootstrapで作られてるw
アングラーjsのサイトならアングラーjsで作れよプゲラ <>
Name_Not_Found<>sage<>2014/08/03(日) 22:02:17.01 ID:???.net<> >>982
angular.min.js読み込んでるよ。
angularも使ってる。
そもそもangularはウェブアプリを作るためのフレームワークで
ウェブサイトを作るフレームワークじゃないよ。
Bootstrapは主にCSSを使ったフレームワークで
独自のデザインが必要ないサイトでささっと
それっぽい画面を作るのに利用する。
適用範囲が違うんだが。 <>
Name_Not_Found<>sage<>2014/08/03(日) 22:17:57.86 ID:???.net<> アングラーjsとbootstrapを共用してもいいってことか
ありがとうございました <>
Name_Not_Found<>sage<>2014/08/03(日) 23:39:09.77 ID:oWYwpIB6+<>JavaScriptの仕組みについて質問なのですが、
一般的なhtmlのタグ指定(<script src="">)でjsファイルを読み込む場合、
通信はブラウザ⇔jsファイル、サーバ⇔jsファイルのどちらで発生するのでしょうか?<>
Name_Not_Found<>sage<>2014/08/04(月) 06:43:50.48 ID:???.net<> anglerfishがなんだって? <>
Name_Not_Found<>sage<>2014/08/04(月) 07:51:11.26 ID:???.net<> アングリーバードなら間に合ってるよ <>
Name_Not_Found<>sage<>2014/08/04(月) 17:17:03.75 ID:???.net<> どういう場合にFW使おうってなるの?
たとえばイベントハンドラを集中的に管理できて、
開発時はイベントをすべてロギングできるとかしたらいいと思うけど
フレムーワークでそういうことできるの? <>
Name_Not_Found<>sage<>2014/08/04(月) 19:23:25.95 ID:???.net<> バカにはフレームワークはもったいない <>
Name_Not_Found<>sage<>2014/08/04(月) 19:25:23.41 ID:???.net<> 馬鹿乙 <>
Name_Not_Found<>sage<>2014/08/04(月) 23:09:46.32 ID:???.net<> jqueryにsetClassがないのは何故ですか?
setしたい時は直接classNameプロパティに書くしかないのでしょうか?
バランスが悪いと思います <>
Name_Not_Found<>sage<>2014/08/04(月) 23:11:28.66 ID:???.net<> classは複数の値を入れられるんだから
addClass、removeClass、toggleClassだろ。
常識で考えろよw <>
Name_Not_Found<>sage<>2014/08/04(月) 23:14:03.50 ID:???.net<> いやそんなことは分かってますが?
しかしsetしたい時もあるのです <>
Name_Not_Found<>sage<>2014/08/04(月) 23:14:27.42 ID:???.net<> そうそう、クラスで思い出したけど、
こう書くやつ多いんだよな
if (条件) {
$(セレクタ).addClass('hoge');
} else {
$(セレクタ).removeClass('hoge');
}
この一行で済むのに。
$(セレクタ).toggleClass('hoge', 条件);
ちゃんとjQueryの使い方調べろって思う。 <>
Name_Not_Found<>sage<>2014/08/04(月) 23:17:02.46 ID:???.net<> >>993
> しかしsetしたい時もあるのです
あるかないかじゃなくて、
そうしたいと思ってはダメという話。
これはJavaScriptとCSSの役割の境界を超えることになる。
JavaScriptで操作するclassは操作していいが、
それ以外はどんな値が入っているか、または入っていないかを
意識してはいけない。
classは原則としてデザイナがーデザインを適用する時に
自由に使っていいものだからだ。
JavaScriptで、未知のものを上書きするようなことは
してはいけないんだよ。 <>
Name_Not_Found<>sage<>2014/08/04(月) 23:20:18.52 ID:???.net<> 何を言っているのか分かりませんね
classの付け替えで見た目を変えるのは普通のことですが <>
Name_Not_Found<>sage<>2014/08/04(月) 23:21:47.97 ID:???.net<> >>996
えとね。デザイナーが、class="my-class"とか書いていることがあるの。
それをJavaScriptがclass="js-class"みたいに勝手に書き換えたらいけないの。
デザイナーがせっかく書いたmy-classを壊すようなことはしてはダメ。 <>
Name_Not_Found<>sage<>2014/08/04(月) 23:25:01.26 ID:???.net<> それは教科書に書いてあったのですかね?
実際には普通にするんですよ
駄目といわれてもw <>
Name_Not_Found<>sage<>2014/08/04(月) 23:26:16.07 ID:???.net<> >>998
うん。多分書くと思ったw
my-classを消したいのなら、消せばいいだけの話。
だけどclass="my-class"とは限らない。
class="foo my-class" かもしれないし、
class="foo bar my-class" かもしれない。
プログラムとデザインを分離することを考えると、
my-classを消したいのなら、my-classだけ気にするればいい。
つまり、foo barはそのまま手を付けない。
これがプログラムとデザインの境界線。
だからfoo、barを消すようなsetClassなんてのは使ったらいけないんだよ。
使う必要がないから、jQueryには存在しない。
JavaScriptに関与しない部分は手を付けないのだから、
必要なのは、addClass、removeClassだけでよい。 <>
Name_Not_Found<>sage<>2014/08/04(月) 23:26:24.10 ID:???.net<> >>991
attr() <>
Name_Not_Found<>sage<>2014/08/04(月) 23:27:57.35 ID:???.net<> ※ >>999のレスの内容は、>>998を見ずに予測して
書いたので、前半部分意味が多少おかしいです。けど気にすんなwww <>
Name_Not_Found<>sage<>2014/08/04(月) 23:30:29.01 ID:???.net<> あ、既にクラスが書いてあった場合を考慮するということですね
それはそうですね
setは行儀が良くないと思います
ありがとうございました <>
Name_Not_Found<>sage<>2014/08/04(月) 23:32:53.29 ID:???.net<> 二つの状態遷移があったとして
classAとclassBを入れ替えるのではなく
classAは付けたままで、classBだけをトグルにすべきということですね <>
Name_Not_Found<>sage<>2014/08/04(月) 23:49:43.41 ID:???.net<> 何やってんだこれ <>
Name_Not_Found<>sage<>2014/08/04(月) 23:50:55.72 ID:???.net<> 何が <>
Name_Not_Found<>sage<>2014/08/04(月) 23:59:24.44 ID:???.net<> 次スレはやく <>
Name_Not_Found<>sage<>2014/08/05(火) 00:30:20.09 ID:???.net<> 1000ならsetClassが追加される <>
Name_Not_Found<>sage<>2014/08/05(火) 00:45:03.78 ID:0mWQRYSl.net<> + JavaScript の質問用スレッド vol.118 +
http://peace.2ch.net/test/read.cgi/hp/1407166949/
ほいよ <>
1001<><>Over 1000 Thread.net<> このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 <>