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

このエントリーをはてなブックマークに追加
1Name_Not_Found
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

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

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
2Name_Not_Found:2013/09/06(金) 19:14:32.95 ID:???
■前スレ
+ JavaScript の質問用スレッド vol.107 +
http://toro.2ch.net/test/read.cgi/hp/1374309725/

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

■テンプレ案
http://jsfiddle.net/fH4cC/21/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/
WSH(・∀・)スレッド! Part 5
http://toro.2ch.net/test/read.cgi/tech/1350201791/
【WHATWG】HTML5 Part4【W3C HTML WG】
http://toro.2ch.net/test/read.cgi/hp/1329529892/
Webサイト制作初心者用質問スレ part236
http://toro.2ch.net/test/read.cgi/hp/1329529892/
CSS初心者スレッド=12th=
http://toro.2ch.net/test/read.cgi/hp/1343429848/
Canvasについて語ろう
http://toro.2ch.net/test/read.cgi/hp/1305093769/
3Name_Not_Found:2013/09/06(金) 19:15:54.85 ID:???
■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
  DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
  グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
  「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか
4Name_Not_Found:2013/09/06(金) 19:16:55.28 ID:???
■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
  DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
  グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
  「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか
5Name_Not_Found:2013/09/06(金) 19:27:24.16 ID:???
JAVASCRIPT
6Name_Not_Found:2013/09/07(土) 00:30:39.94 ID:???
<tr>
 <td class="a" rowspan=2></td><td class="b"></td><td class="c"></td>
</tr>
<tr>
 <td class="a" ></td><td class="b"></td><td class="c"></td>
</tr>

<tr>
 <td class="a" rowspan=2></td><td class="b"></td><td class="c"></td>
</tr>
<tr>
 <td class="a" ></td><td class="b"></td><td class="c"></td>
</tr>

<tr>
 <td class="a" rowspan=2></td><td class="b"></td><td class="c"></td>
</tr>
<tr>
 <td class="a" ></td><td class="b"></td><td class="c"></td>
</tr>


こんな風に、最初の<td>だけ2行がつながっている<tr>の繰り返しのテーブルをjQueryでループで見ていきたいのです。

$('tr').each(function() {
 $(this).....
}

ここで、$(this)はどんな感じに各tdを参照すればいいのでしょうか?
各<td>にはクラスはつけてますが、$(this).find('.a')だと何故か[0]をつけないと、<td class="a">にアクセスできません。

加えて、偶数行はどうやって上の行の<td class="a">にアクセスすればいいのでしょうか
7Name_Not_Found:2013/09/07(土) 08:26:01.73 ID:???
class="a"なものは複数ある可能性があるから、常に並びで返されるんで、
たとえ1個であっても並びの先頭の1個を取る必要があるんでしょ。
そしてrowspan=2にするのなら、偶数行はclass="a"のセルは書いてはいけないんじゃ
ないのかな。テーブル表示して正しい構造になってるか確認してるの?
8Name_Not_Found:2013/09/07(土) 08:51:59.10 ID:???
■各種仕様 ( http://fiddle.jshell.net/vSqKr/33/show/#Link も参照 )
◆ Standard ECMA-262
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (ECMAScript 3 和訳)
http://es5.github.io/ (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.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://notifications.spec.whatwg.org/ (Notifications 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)
9Name_Not_Found:2013/09/07(土) 10:33:25.28 ID:???
>>7
そのとおりです。
偶数行は<td class="a">はありません。

この場合、$('tr').eachを書く場合、偶数行はどのように上の行の<td class="a">にアクセスするのでしょうか?
closestは子孫じゃないととれないようですし・・・・
10Name_Not_Found:2013/09/07(土) 11:05:11.58 ID:???
流れぶった切って申し訳ないけど、俺、最近ダメだわ。
10代の頃はSEXした後もその余韻で家帰ってもシコッてた頃が懐かしい。
20代後半から来るとは聞いてたけど。ホントなんだねぇ。

大学生の頃はイベントサークル所属して狂ったようにナンパして
あの手この手でHすることばっかり考えて結果はあんまり伴ってなかったのに

今は若い子と知り合ってもそういう気になれないし
不思議と今の方が若い頃より女に不自由しない。
10代の頃の自分が今の自分を見るとビックリするだろうね。
もっと若くて勢いのある時にそうなってほしかったよ。

因みに今日も仕事でこんな時間。。。やっぱストレスなんですかね?
年は今年31で仕事は商社勤務です。医者に相談した方がいいんでしょうかね?
どういうとこに相談すればいいんでしょうかね?
ホントに性欲が無さ過ぎで悲しくなってくる。
11Name_Not_Found:2013/09/07(土) 16:07:36.93 ID:???
>>9
遠回りのようだけど、行列が見た目と合致する二次元配列を作っておいて、
それを走査する方がいいのでは。
12Name_Not_Found:2013/09/07(土) 17:49:02.27 ID:???
>>1
13Name_Not_Found:2013/09/08(日) 03:11:48.71 ID:???
JavaScriptをIDEで開発したい場合、何が一番いいですか?
14Name_Not_Found:2013/09/08(日) 05:05:01.88 ID:???
バトルにおいては各言語の調査やアピールも必要でしょ
喧嘩スレじゃないんだぞ
いい意味のバトルだ
15Name_Not_Found:2013/09/08(日) 06:41:28.82 ID:???
aptana studioを入れてみましたが
今書いてるソースのアウトラインが表示されない
JSは自由度が高すぎるのでパースが難しいのかなぁ
16Name_Not_Found:2013/09/08(日) 10:23:33.17 ID:???
>>13
著名人が使ってるのはwebStorm
ザコや無料厨が使ってるのはeclipseやaptanaとかテキストエディタ
17Name_Not_Found:2013/09/08(日) 10:56:05.36 ID:???
ありがとうございました
18Name_Not_Found:2013/09/08(日) 14:59:29.78 ID:???
さぶらいむてきすとがいいよ
19Name_Not_Found:2013/09/08(日) 15:03:11.60 ID:???
sublime text、ctrl+Rで関数リストが出るんですね
これは素敵だ
20Name_Not_Found:2013/09/08(日) 15:10:08.86 ID:???
やってみたら夥しい数のconsoleが出てきた
21Name_Not_Found:2013/09/08(日) 15:20:44.59 ID:???
JSHintのパッケージも入れてみたら便利になりました
エディタなのに統合環境的に使えていいですね
22Name_Not_Found:2013/09/08(日) 16:14:09.64 ID:???
【環境】Win7, FireFox17
【何をしたのか】
クラス内の関数を再起呼び出したい
【エラーメッセージ】
【期待する結果】
【サンプルコード】

function Class() { }

Class.prototype.funcA=function() {
// 他の処理
funcB(5); // これはできない?
}

Class.prototype.funcB=function(x) {
// 他の処理
// ここで自分自身のfuncBを呼び出したい
funcB(x); // これも無理?
}

onload=function() {
var c=new Class();
c.funcA();
23Name_Not_Found:2013/09/08(日) 16:19:59.56 ID:???
this. つけよう
24Name_Not_Found:2013/09/08(日) 17:04:32.03 ID:???
>>23
ありがとうございます!
thisなんて初歩的すぎる見落としでした!
バッチリ動きました!
25Name_Not_Found:2013/09/08(日) 17:34:42.54 ID:???
selfじゃだめなの?
26Name_Not_Found:2013/09/08(日) 18:56:15.87 ID:???
self派?that派?ES6派?あなたはどっち派?
27Name_Not_Found:2013/09/08(日) 19:48:06.34 ID:???
WEBエディタでサブライムっぽくて凄そうなの見つけた
http://d.hatena.ne.jp/tsugehara/20130419/1366380767
28Name_Not_Found:2013/09/08(日) 20:10:01.59 ID:???
エディタを作る素材って感じだな
でもゲームライブリ+TypeScript用オレオレエディタみたいなのが
気軽に作れるって、使う人が使えばいい開発環境になるかもな
29Name_Not_Found:2013/09/09(月) 00:25:56.68 ID:???
空のJSON判定ってどうすりゃいいですか?
 var json1 = undefined;
 var json2 = null;
 var json3 = {};
のjson3が、{}であることを判定したいのですが。

json1,json2なら、未定義やnull時は
 if(!json1){...};
で判定できるんですが、json3の場合はどう書けばいいのか解りません。
 if(json3 === {}){...};
はfalseになってしまいました。
30Name_Not_Found:2013/09/09(月) 00:26:06.22 ID:???
400万行まで編集できるってマジ!?
それなら普通のエディタも作れるじゃん
31Name_Not_Found:2013/09/09(月) 00:29:39.22 ID:???
>>29
Object.keys(json3).length
32Name_Not_Found:2013/09/09(月) 00:47:03.24 ID:???
>>31
ありがとうございます!
33Name_Not_Found:2013/09/09(月) 05:53:16.59 ID:???
それだと ECMAScript5 では不十分だけどね。
34Name_Not_Found:2013/09/09(月) 07:01:26.08 ID:???
Web技術はみなLiving Standard
バージョンとかそもそも無い
35Name_Not_Found:2013/09/09(月) 09:56:05.40 ID:???
http://phpspot.org/blog/archives/2013/09/faviconfavicojs.html
JavaScriptからfaviconを加工して表示されるのはなぜですか?
この仕組みを教えて下さい
36Name_Not_Found:2013/09/09(月) 12:37:47.63 ID:???
見てないけどbase64にしてイジってんじゃないの
37Name_Not_Found:2013/09/09(月) 13:50:03.48 ID:???
何故ってどういうこと?
疑問点があるんならハッキリ言ったらいいし
全体の流れを知りたいのならソース見ればいいじゃん
そのくらいのこともしない奴に教えられることなんて無いね
38Name_Not_Found:2013/09/09(月) 14:04:26.93 ID:???

疑問点書いてあるのにそれすらわからないってアホだな
39Name_Not_Found:2013/09/09(月) 14:07:15.81 ID:???
×そのくらいのこともしない奴に教えられることなんて無いね
○私の知識ではソースコード見ても分からないので、教えることは出来ない
40Name_Not_Found:2013/09/09(月) 14:40:17.22 ID:???
無能な質問者による回答者に対する罵倒w
41Name_Not_Found:2013/09/09(月) 15:48:31.71 ID:???
>>33
どうすれば完璧なのか教えてくれ
42Name_Not_Found:2013/09/09(月) 16:11:24.49 ID:???
jqueryを使って、
liタグの羅列から、指定したインデックスのli要素を削除したり、
指定した場所にli要素を挿入したりするにはどうしたらいいですか?
43Name_Not_Found:2013/09/09(月) 16:13:01.21 ID:???
完璧なんて無い
すべてのキーの列挙が保証されるgetOwnPropertyKeysもES6だし
44Name_Not_Found:2013/09/09(月) 16:13:56.06 ID:???
>>42
一回は自分で作ってから来い。
45Name_Not_Found:2013/09/09(月) 16:16:44.27 ID:???
>>39
ソースを読めるようになると便利よ
もっと具体的に聞いてくれたら親身に教えてあげられるよ
頑張れ!!
っていうツンデレメッセージなのにそれも分からんとか……
46Name_Not_Found:2013/09/09(月) 16:34:22.50 ID:???
>>29
まず「空のJSON判定」では無くて「空のobject判定」だということをハッキリさせよう。
47Name_Not_Found:2013/09/09(月) 16:37:02.91 ID:???
>>45
スルーされて消えていった質問も多いんだから、
質問者は例えひどく言われたとしても、
関心を持ってもらっただけでもラッキーと思うべきだよね。
48Name_Not_Found:2013/09/09(月) 16:44:25.05 ID:Wa11yclS
JSONのNがなんだったかいつも忘れてしまう
JavaScriptObjectなんとか…
49Name_Not_Found:2013/09/09(月) 16:47:09.68 ID:???
42の件ですが出来ました

// 削除
$('#test').children().eq(0).remove();

// 挿入
$('#test').children().eq(0).before("<li>4</li>");

// 追加
$('#test').append("<li>5</li>");
50Name_Not_Found:2013/09/09(月) 16:47:40.20 ID:???
notification?
51Name_Not_Found:2013/09/09(月) 16:49:48.69 ID:???
>>49
出来たら来るな。
52Name_Not_Found:2013/09/09(月) 16:52:12.50 ID:???
自分のやり方とは違う人もいるのだから質問することに問題はありません
53Name_Not_Found:2013/09/09(月) 16:56:07.88 ID:Wa11yclS
解決した報告はいいんじゃね?
54Name_Not_Found:2013/09/09(月) 16:56:15.32 ID:???
>>41
まとめ

enumerable unique string keys
→Object.keys [ES5]

unique string keys
→Object.getOwnPropertyNames [ES5]

unique keys
→Object.getOwnPropertyKeys [ES6]

private keys
→現状手段無し(不明) [ES6-7]
55Name_Not_Found:2013/09/09(月) 17:10:54.47 ID:???
getOwnPropertyNamesを決める時に、名前をKeysじゃなくてNamesにしてて良かったな。
ECMAは未来がちゃんと見えてる、頼もしい。
56Name_Not_Found:2013/09/10(火) 02:55:13.13 ID:???
arrayを拡張したいですがprototypeは汚染したくないです
arrayとprototypeのプロトタイプチェーンの間に別のprototypeを挟み込むことなんて出来ますか?
57Name_Not_Found:2013/09/10(火) 04:55:35.51 ID:???
var base = ["a","b","c"];
var child = Object.create(base);

child[0] = "x";
child[3] = "x";

console.log(child.join("-"));

こうすると、出力は"x-b-c"になります
親オブジェクトに存在していたインデックスに対してはjoinが働き、新規に追加した分には働かない
何故こういう動作になるのですか?
58Name_Not_Found:2013/09/10(火) 05:03:26.96 ID:???
var base = ["a","b","c"];
var child = Object.create(base);

child[0] = "x";
child[3] = "x";
base[3] = '';

console.log(child.join("-"));

更にこうすると、結果は"x-b-c-x"となります
59Name_Not_Found:2013/09/10(火) 05:12:26.05 ID:???
プロパティアクセスをハンドリングすることって出来ますか?
a[0] = "a";
としたら、0と"a"を関数で受け取るようなことがしたいのです
60Name_Not_Found:2013/09/10(火) 05:53:44.00 ID:???
>>57,58
console.dir(base);
console.dir(child);
としてみればわかるだろう。
61Name_Not_Found:2013/09/10(火) 06:45:36.99 ID:???
baseがarrayでchildがobjectだということしか分からないのでは?
baseの個数分だけchildの要素がjoinされるというのはちょっと変な動作だと思います
62Name_Not_Found:2013/09/10(火) 07:25:25.11 ID:???
childは配列じゃないから、child[3]="x"とやってもchild.lengthプロパティを更新してくれないからだな
baseを直接いじらなくても、child[3]="x"の後にchild.length=4とすればお望みの結果になるぞ
63Name_Not_Found:2013/09/10(火) 08:05:31.14 ID:???
なるほど
ありがとうございました
64Name_Not_Found:2013/09/10(火) 08:23:28.54 ID:???
>>56の件ですが、
継承でうまく何とかするのは無理っぽかったので
オブジェクトにメソッドを後付けする方法にしました
65Name_Not_Found:2013/09/10(火) 10:55:21.45 ID:???
>継承でうまく何とかするのは無理
そのためにES6には@@createがある
よってES6ではArrayやDateなんかをきちんと継承することが可能
ES5以前ではそういった継承は不可

@@createが導入されるのはもう少し先だろうけど
今でもFFで使えるDirectProxyでも似たような効果のことは出来る
66Name_Not_Found:2013/09/10(火) 11:01:08.12 ID:???
jquery uiにある機能はjquery uiを使いますか?
それとも最適なプラグインを探しますか?
なんか、jquery uiって微妙に動きがぎこちない気がします
67Name_Not_Found:2013/09/10(火) 11:06:59.99 ID:???
そのくらいてめえで考えられないのか?
親の言いなりで生きてきたのか?
68Name_Not_Found:2013/09/10(火) 11:24:45.94 ID:???
他人がどうしてるかなんて考えても分からんだろw
馬鹿かお前は
69Name_Not_Found:2013/09/10(火) 11:34:42.34 ID:???
>>65
ES6でサポートされるんですね
ありがとうございました
70Name_Not_Found:2013/09/10(火) 11:35:38.85 ID:???
質問練習場とか質問代理エスパー事務所とか無いのか?
こいつらまともに自分の知りたいことまとめられないから
検索もできなくて困ってるんじゃないだろうな

もっと努力をしろ
放り投げるような質問はNG
71Name_Not_Found:2013/09/10(火) 11:38:10.39 ID:???
>>66
動きがぎこちないと思うんだったら他の探せば?
一体何を求めているのか全く分からん
72Name_Not_Found:2013/09/10(火) 11:42:18.37 ID:???
自分で納得いかないものだったらどうするから自分で答え見つけられるだろ
ゆとりは人の意見聞かないと動かないんだな
73Name_Not_Found:2013/09/10(火) 12:01:42.82 ID:???
Widgetsは使わないかな。なんか見た目古臭いから。
Effectsも確かに今市
74Name_Not_Found:2013/09/10(火) 12:12:34.36 ID:???
自分の判断の原因が自分にあるのか、
それとも対象にあるのかは自分一人でいくら考えても分からない
そして様々な意見は第三者にも参考になる
質問に文句言ってるクズの書き込みは永遠に誰の役にも立たないし
書いた本人のためにすらなっていない
75Name_Not_Found:2013/09/10(火) 12:25:29.31 ID:???
ほとんどの2ch質問スレは質問に文句言うためのスレだろ。
76Name_Not_Found:2013/09/10(火) 12:37:13.83 ID:???
そんなことないが
77Name_Not_Found:2013/09/10(火) 12:50:16.64 ID:???
これでライブラリスレで聞いてこい

このよう機能をもつライブラリを検討しているのですが、
jquery uiではこの環境において動きがぎこちなくて困っています。
軽そうな類似のライブラリをいくつか教えていただけませんか?
78Name_Not_Found:2013/09/10(火) 12:50:51.28 ID:???
sublime textでJSbinみたいなプレイグラウンドを作ることは出来ないでしょうか?
JSbinは気軽に真新しい環境でコードを書けていいのですが、
sublimeのコード補完になれるとコーディングが面倒になってきました
sublime serverを入れたので編集、閲覧はできるのですが
真新しい環境の気軽な作成、ライブラリの簡単指定ができません
プラグイン自作すればいいかもですがpythonなんてもう忘れました
79Name_Not_Found:2013/09/10(火) 12:53:28.38 ID:???
80Name_Not_Found:2013/09/10(火) 12:56:32.46 ID:???
JSで自作するのではなくsublime textでやりたいんです
81Name_Not_Found:2013/09/10(火) 12:57:11.56 ID:???
>>78
板違い
82Name_Not_Found:2013/09/10(火) 12:59:34.21 ID:???
自分でこれがダメだと思えば他を使う
そこに他人の意見なんて聞く意味がない
はっきりいって自分の意見をもてない人間はこの業界向いてないよ
83Name_Not_Found:2013/09/10(火) 13:11:29.77 ID:???
JSbinみたいなプレイグラウンドを作りたい
プラグイン自作する気があってPythonは無理だけどJSならできる
なら>>27でええんとちゃうんか
わがままやな
84Name_Not_Found:2013/09/10(火) 13:28:36.48 ID:???
そもそもの発想が「sublime上でJSbinみたいなことがやりたい」なので
sublimeは必要条件です
85Name_Not_Found:2013/09/10(火) 13:36:48.06 ID:???
>>84
>「sublime上でJSbinみたいなことがやりたい」
残念ながらsublimeの性質とJSbinの性質を考えると無理です。
86Name_Not_Found:2013/09/10(火) 13:38:04.78 ID:???
とりあえず具体的にやりたいこと1つ挙げてみろよ
87Name_Not_Found:2013/09/10(火) 13:46:39.42 ID:???
>>84
sublimeの話をしたいんだったら明らかにこのスレじゃないだろ
sublimeスレ行けよ
88Name_Not_Found:2013/09/10(火) 13:48:15.09 ID:???
JavaScriptスレでもPHPスレでも嫌われてて大変ですね
89Name_Not_Found:2013/09/10(火) 13:48:50.35 ID:???
まずその性質の違いを説明しろよ
90Name_Not_Found:2013/09/10(火) 13:49:42.32 ID:???
なんでjsスレでpythonの質問が出てくるんだよ
91Name_Not_Found:2013/09/10(火) 14:19:05.83 ID:???
スレチになりそうな質問は広く慎重にするのが基本だろ
自分からスレチの方向に狭めて無遠慮に聞いてどうする
92Name_Not_Found:2013/09/10(火) 14:50:41.78 ID:???
>>78
SublimeServerて、ただの簡易HTTPSvrじゃん。Sublimeから呼び出せるってだけで。
つまり依然NativeアプリをWebアプリに組み込むという話なので、そんなもん
ブラウザ拡張でも作るかい? まあ方向としてはSublimeServer改良したプラグイン自作するのがいいんじゃない?
93Name_Not_Found:2013/09/10(火) 15:17:27.94 ID:???
書き込み不可なはずのプロパティに、
何度か書き込みをかけたり、その作業をする関数を何度か呼ぶと、
書き込みができてしまい、困惑しています
これはブラウザのバグなのでしょうか?
Chromeです

Object.defineProperty(Object.prototype,'0',{set:function (v){this.first_value=v}});

function test1(){
var a=[];
a[0]=123;
return a[0];
}

function test2(){
var a=[];
for(var i=0;i<100;i++)a[0]=123;
return a[0];
}

test1() //undefined
test1() //123
test1() //123

test2() //123
94Name_Not_Found:2013/09/10(火) 15:18:15.29 ID:???
location.hrefを書き換えると、書き換え先のurlに飛んじゃうんですけど
飛ばないでlocation.hrefを書き換える方法ありませんか?
リファラーを特定のurlにしたいのが望みなので、location.hrefを使わなくてもいいです
95Name_Not_Found:2013/09/10(火) 15:19:53.80 ID:???
アドレスバーだけ変える方法はあるけどリファラーは無理
拡張でも特権APIを申請しないと出来ない危険な行為
96Name_Not_Found:2013/09/10(火) 15:26:54.29 ID:n5ewSFyR
>>94の望んでいるものは
history.pushStateなんじゃなかろか?
97Name_Not_Found:2013/09/10(火) 15:35:02.16 ID:n5ewSFyR
ちがうかごめん
98Name_Not_Found:2013/09/10(火) 15:36:58.59 ID:???
現在のURLを偽装してから飛ばすことで、リファラーを偽装できないか?ということだろう
現在のページと同オリジンの範囲でいいならpushStateで解決だが
99Name_Not_Found:2013/09/10(火) 16:24:07.42 ID:???
ES5対応の解説書ない?
100Name_Not_Found:2013/09/10(火) 16:37:02.88 ID:???
101Name_Not_Found:2013/09/10(火) 16:42:38.38 ID:???
リファラ偽装(をさせる)なんかできたらCSRFやり放題じゃーん。
まあ、トークン方式で防げるけど。

リファラなしにならなあ。
102Name_Not_Found:2013/09/10(火) 16:45:59.74 ID:???
pushStateで変えられる範囲内なら可能。
103Name_Not_Found:2013/09/10(火) 16:54:57.17 ID:???
ここってJavaScript全般の質問OK?
node.jsとかもおk?
104Name_Not_Found:2013/09/10(火) 17:01:24.67 ID:???
Web制作板だから、内容による
105Name_Not_Found:2013/09/10(火) 17:15:36.80 ID:???
専スレがあるのならそっち使えばいいんじゃない?
Nodeスレは致命的なほどには寂れてはいないし
スレを賑わかすチャンスだ
106Name_Not_Found:2013/09/10(火) 19:27:19.32 ID:???
function Hoge(){
  var a = 0;
  function Hage() {
    a = 1;
   }
}


この2つ目の関数の中でのaはグローバル変数宣言になるのでしょうか?
107Name_Not_Found:2013/09/10(火) 19:36:02.04 ID:???
自分でためせば分かることを聞くの?
108Name_Not_Found:2013/09/10(火) 20:22:45.46 ID:???
ならない
109Name_Not_Found:2013/09/11(水) 00:32:59.99 ID:???
>>93
ブラウザのバグかどうかを検討するなら最低でもIE,firefox,Chromeぐらいで動かしてみよう
空のオブジェクトで初期化するなら a=[] じゃなくて a={}
110Name_Not_Found:2013/09/11(水) 01:09:14.06 ID:???
>>109 もちろんFireFoxでは正常に
test1() //undefined
test1() //undefined
test1() //undefined

test2() //undefined
です
111Name_Not_Found:2013/09/11(水) 01:19:07.40 ID:???
>>110
だからさ、おまえはObjectのプロトタイプをいじってるのに、なんでArrayで動作確認してるのよ?
Arrayの0プロパティの動作はArrayの勝手だろ?
112Name_Not_Found:2013/09/11(水) 01:40:48.42 ID:???
>>111
ArrayはObjectを継承しています
そこは重要ではなく
Array.prototypeでも同じ結果になります
113Name_Not_Found:2013/09/11(水) 01:50:58.57 ID:???
>>112
ArrayはObjectを継承してるけど、数字プロパティの挙動はオーバライドしなおしていいわけよ
Arrayは数字プロパティに対してlengthプロパティ書き直したりしているから、
あきらかにArray自身が数字プロパティに対する処理をオーバライドしてる

そしてArrayに対する数字プロパティの挙動はちょっと特殊で、
Array.prototypeでは完全には上書きできない
114Name_Not_Found:2013/09/11(水) 01:59:54.46 ID:???
仕様でそのように書かれているのですか?
現にFirefoxでは期待通りに動きますし、Chromeでも最初はそうです。
115Name_Not_Found:2013/09/11(水) 02:06:07.05 ID:???
Object.prototypeやArray.prototypeの数字プロパティを変更した場合の
Arrayオブジェクトの動作が定義されてなければ、
それは実装依存
116Name_Not_Found:2013/09/11(水) 02:25:21.41 ID:???
仕様を見ると、Arrayの独自処理に入る前に
すべてのオブジェクトプロパティ代入処理の中で代入可能か判断する段階があります
そこではプロトタイプをたどってセッターがある場合は代入不可と判断されるはずのようなのです
117Name_Not_Found:2013/09/11(水) 02:44:44.52 ID:???
15.4章のどこだよそんなこと書いてあるのは
118Name_Not_Found:2013/09/11(水) 03:07:44.33 ID:???
JavaScriptで、自分自身のlastModifiedを取得し
変更されていたらリロードさせる
みたいなことって出来ますか?
119Name_Not_Found:2013/09/11(水) 03:11:35.45 ID:???
>>118
ajaxで通信してヘッダー見ればいい
120Name_Not_Found:2013/09/11(水) 03:23:07.33 ID:???
>>117その前です
[[Put]](8.12.5)で[[DefineOwnProperty]](Array:15.4.5.1)が呼ばれる(6)の1つ前に
プロトタイプをたどった先にセッターがあればそれが呼ばれて終わる(5)となっています
121Name_Not_Found:2013/09/11(水) 04:03:50.52 ID:???
>>119
ありがとうございました
調べてみます
122Name_Not_Found:2013/09/11(水) 05:34:27.50 ID:???
sublimeにJava?Script Snippetsを入れたのですが
oを入力してもonreadystateが出ません
https://sublime.wbond.net/packages/JavaScript%20Snippets
ここにリストが載っていますが登録が少ないような?
ブラウザで実装された全ての関数が補完で出て欲しいんですが、
そういうことを可能にするにはどうしたらいいのでしょうか?
123Name_Not_Found:2013/09/11(水) 06:00:32.97 ID:???
根本的に勘違いしていて
コード補完はsnippetではなくcode completionでしたてへぺろ
AndyJS2を入れたらいけました\(^o^)/
124Name_Not_Found:2013/09/11(水) 10:25:20.66 ID:???
>>78の件ですが、SublimeFileTemplateとライブラリ別のテンプレートで、
新しい環境の構築を簡易にし、
これにlastModifiedをチェックしてリロードするJSを組み合わせたら
JSBinにかなり近い操作感になりました
ありがとうございました
125Name_Not_Found:2013/09/11(水) 10:50:01.11 ID:???
以下の画像の様にjQuery UIのモーダルダイアログ内でスクロールバーを表示させたいのですが、オプションが探しても見当たらないです。
cssのoverflowがhiddenになっていて、それをautoにすれば以下の様になるのは分かっているのですが、jQuery UIの処理が走ってからCSS再読込とかするしかないんですかね?
https://monosnap.s3.amazonaws.com/52098e802cdcf276fb50fad5/52098f182cdcf276fb50fb14/522fca712cdc30d7daaa83da.png?Signature=hfx8jiAuFiy0Jsb85gfKoNAeqwM=&Expires=1378863829&AWSAccessKeyId=AKIAIO6PKRFX5SEQQGLQ
126125:2013/09/11(水) 10:51:15.52 ID:???
画像貼れてないし…画像は忘れて下さい。
127Name_Not_Found:2013/09/11(水) 17:50:40.99 ID:???
document.createElement() で作成したエレメントにinnerHTMLを設定すると、
appendする前に内容を反映しようと動作してしまい困っています。
これは仕様なのでしょうか?
何か他に手段があれば教えてください。

〜↓最小コード〜
<html>
<head>
<script>
window.onload = function(){
var div = document.createElement('div');
div.innerHTML = '<html><head></head><body><img src="undeined.jpg" /></body></html>';
// ↑設定した時点でブラウザが undeined.jpg を読み込みに行く
};
</script>
</head>
<body>
<h1>test</h1>
</body>
</html>
128Name_Not_Found:2013/09/11(水) 18:06:51.53 ID:???
<!DOCTYPE html>くらい付けろデコスケ野郎
129Name_Not_Found:2013/09/11(水) 18:20:50.72 ID:???
>>128
付けても動作しませんが。
解決方法を教えてください。
130Name_Not_Found:2013/09/11(水) 18:22:33.23 ID:???
ここの解答者は的外れなことしか答えられないんですかね?
最小コードでいちいちDOCTYPEなんて必要ないのに、もしかして付けたら動作するとでも思ったんですか???
131Name_Not_Found:2013/09/11(水) 18:29:18.11 ID:???
なんでDOCTYPEを付けろと言われてるかわからんのか
132Name_Not_Found:2013/09/11(水) 18:31:11.78 ID:???
>>131
わかりません。教えてください
133Name_Not_Found:2013/09/11(水) 18:40:19.92 ID:???
はやく>>127Lに対するDOCTYPEを付ける意味を教えてください。
それとも今言い訳でも考えてるのでしょうか?
134Name_Not_Found:2013/09/11(水) 18:49:08.88 ID:???
答えられない 馬鹿 が、見当違いな解答して逃げましたね。

もういいです。
違う場所で質問します。
馬鹿に用はないので。
さようなら。
135Name_Not_Found:2013/09/11(水) 18:51:04.61 ID:???
嫌です
136Name_Not_Found:2013/09/11(水) 18:56:46.89 ID:???
まともに質問すりゃ回答が貰えるのにねw
137Name_Not_Found:2013/09/11(水) 19:55:02.33 ID:???
>>133
質問するなら最低限の勉強くらいしてこいって話だよ
138Name_Not_Found:2013/09/11(水) 19:56:57.75 ID:???
DOCTYPEは関係ないだろ・・・・・
何言ってんだこいつ
139Name_Not_Found:2013/09/11(水) 20:01:14.89 ID:???
質問に答えられないから
お門違いの話して話をそらすのに必死なんだよ
察しろ
140Name_Not_Found:2013/09/11(水) 20:02:40.72 ID:???
PHPの次はJavaScript荒らしてんのか
141Name_Not_Found:2013/09/11(水) 20:14:28.71 ID:???
と言いつつ誰も回答しないw
馬鹿ばっかなのかよ
142Name_Not_Found:2013/09/11(水) 20:18:12.45 ID:???
巡回荒らしが来ただけだから皆スルーするように
143Name_Not_Found:2013/09/11(水) 20:27:58.05 ID:???
divのinnerHTMLにhtmlやbodyを代入する時点で違和感を感じろよ
こんな糞コードを書いて偉そうにすんな
144Name_Not_Found:2013/09/11(水) 20:52:08.72 ID:???
innerHTMLとかパフォーマンス的にもセキュリティ的にも最悪なのによく使おうと思うな
145Name_Not_Found:2013/09/11(水) 20:56:51.89 ID:???
ここも腐海に沈んだか…。
146Name_Not_Found:2013/09/11(水) 21:05:25.81 ID:???
一つ上の行でcreateElementを使ってるにもかかわらずinnerHTMLを使う謎行動
しかもその中身はtitleが無いheadを含んだhtml要素
147Name_Not_Found:2013/09/11(水) 21:08:55.49 ID:???
自作自演乙
148Name_Not_Found:2013/09/11(水) 21:35:59.85 ID:???
IFrameの読み込み状態をイベントじゃなくて
readyStateみたいなプロパティで知る方法ありますか?
readyStateはIE以外のChromeやFFでは動かなかったので。
149Name_Not_Found:2013/09/11(水) 21:46:11.26 ID:???
>>148
document.readyStateはIE以外でも動くはずだが。
150Name_Not_Found:2013/09/12(木) 00:08:48.08 ID:???
やりたい事を勝手に憶測して
好き勝手妄想して貶すスレはここですか?

入力されたDOMをParseして抽出してappendChildしたいのかもしれんだろ
headの中身がないってdocutypeと同レベルの突っ込みでワロスw

お前らまずは7解決策を書いてから語れよw不可能でもそうならそう言えよw
荒らしと同じ知能だわ
151Name_Not_Found:2013/09/12(木) 00:10:33.08 ID:???
あっ、荒らしの自作自演でしたか
これは失敬w以降スルーしますw
152Name_Not_Found:2013/09/12(木) 00:18:49.26 ID:???
>>149
bodyぢゃなくてiframeだよ
153Name_Not_Found:2013/09/12(木) 00:19:56.58 ID:???
>>152
iframeのdocumentとればいいだろ
154Name_Not_Found:2013/09/12(木) 00:32:54.31 ID:???
>やりたい事を勝手に憶測して
>好き勝手妄想して貶すスレはここですか?

>入力されたDOMをParseして抽出してappendChildしたいのかもしれんだろ

一レスでブーメランを投げるとかさすがだな
普通は貼られたソースを見て判断するだろ
155Name_Not_Found:2013/09/12(木) 01:27:04.15 ID:???
偶然気づいたのですが、FirefoxのAudio Data APIを使用するとsetIntervalの精度が良くなるのですが
内部で高精度カウンタを使ったりしているのでしょうか?
Firefox限定の話で申し訳ないですがこれについて何かご存知の方があれば教えてください
156Name_Not_Found:2013/09/12(木) 03:04:14.58 ID:7U/YrctA
window.location.search以外でwindow間で値を渡すにはどうやれば良いですか?
157Name_Not_Found:2013/09/12(木) 03:20:00.20 ID:???
innerHTMLが遅いって言ってる人がいますが根拠は何ですか?
俺もinnerHTML(笑)って思っていましたが
オライリーのハイパフォーマンスJavaScriptで一度にDOMアクセスする手法として普通に使っていたので
それ以降普通に使ってます
158Name_Not_Found:2013/09/12(木) 03:25:28.53 ID:???
あとinnerHTML特有のセキュリティー問題ってなんだろう
エスケープしない場合の危険はcreateElementでも同じでは
159Name_Not_Found:2013/09/12(木) 03:36:09.28 ID:???
>>157
google "innerHTML vs appendChild "
160Name_Not_Found:2013/09/12(木) 04:06:29.03 ID:???
>>157
細切れで繰り返す場合は別として
大量のソースを一括して処理する場合は innerHTML の方がむしろ早いかも

>>155
audio は同期が重要になるから多少気を使う様にプログラムされていることはありそうだね
Audio API 利用したら副産物としてついでにタイマー API の精度も上がるとか
そのぶんリソースも余計に消費されて多少なりとも他所にしわ寄せがいく筈
161Name_Not_Found:2013/09/12(木) 04:09:37.90 ID:???
appendはinnerHTMLでしない方がいいってことですよね
appendするコード片の作成はinnerHTMLで問題ないのでは
>>127のコードに突っ込み所はあるものの
innerHTMLの使用には問題がないと考えます
162Name_Not_Found:2013/09/12(木) 04:18:35.17 ID:???
jQueryの中でも使ってますね
163Name_Not_Found:2013/09/12(木) 04:30:32.70 ID:???
JavaScriptでおのれが書かれているHTML中のscript要素を削除したら何が起きますか?
164Name_Not_Found:2013/09/12(木) 05:01:07.36 ID:???
appendしなくても先読みするのは知らなかったけど、
ブラウザの立場からいったら読んでも全然おかしくないな
165Name_Not_Found:2013/09/12(木) 05:24:37.79 ID:???
俺も>>127の解決法が知りたい
サンプルコードで確認したらマジで新しい発見だわ
結局誰も答えられないのか?
166Name_Not_Found:2013/09/12(木) 06:02:40.93 ID:???
>143 Name_Not_Found sage 2013/09/11(水) 20:27:58.05 ID:??? [0]
>divのinnerHTMLにhtmlやbodyを代入する時点で違和感を感じろよ
>こんな糞コードを書いて偉そうにすんな

>146 Name_Not_Found sage 2013/09/11(水) 21:05:25.81 ID:???
>一つ上の行でcreateElementを使ってるにもかかわらずinnerHTMLを使う謎行動
>しかもその中身はtitleが無いheadを含んだhtml要素


うわぁ・・・innerHTMLも分かってない奴が大杉
167Name_Not_Found:2013/09/12(木) 06:05:21.57 ID:???
いやdivのinnerHTMLにhtmlやbodyを代入するのは普通におかしいだろw
これを気持ち悪いと思わない奴はプログラマーとしてセンスないわ
168Name_Not_Found:2013/09/12(木) 06:07:23.12 ID:???
てか解決法って何がどうなれば解決なんだよw
本人以外正解が分かってないのに解決法なんて言葉を使っちゃう奴は本人の可能性が比較的高いぞ?
169Name_Not_Found:2013/09/12(木) 06:10:35.73 ID:???
>>166
みんなお前のもう一歩上のことを理解して書き込んでるのだ
170Name_Not_Found:2013/09/12(木) 06:24:22.12 ID:???
>いやdivのinnerHTMLにhtmlやbodyを代入するのは普通におかしいだろw

まったくもっておかしくありませんが?
htmlやbodyタグ消えることすら知らんのか?
171Name_Not_Found:2013/09/12(木) 06:26:58.60 ID:???
頭の悪い奴ほど思考能力が無いことが実証されたな
innerHTMLもろくに使いこなせない無知を晒けだして恥ずかしくないの?
思い込みの激しいカルト宗教信者みたいでキモいわ
172Name_Not_Found:2013/09/12(木) 06:31:37.69 ID:???
みんなお前のもう一歩上のことを理解して書き込んでるのだ(キリッ
173Name_Not_Found:2013/09/12(木) 06:33:03.41 ID:???
>>172
wwwwwwwwww
174Name_Not_Found:2013/09/12(木) 06:38:52.61 ID:???
>>170
bodyを書いたdivを何にappendするんだよ
まさかのbody入れ子ww
175Name_Not_Found:2013/09/12(木) 06:39:25.96 ID:???
>>170
お前は無駄なコードを書くんだな
「普通に」おかしいだろ
176Name_Not_Found:2013/09/12(木) 06:43:03.95 ID:???
174 Name_Not_Found sage New! 2013/09/12(木) 06:38:52.61 ID:???
>>170
bodyを書いたdivを何にappendするんだよ
まさかのbody入れ子ww



まさか日本語も通じない池沼だったとはな
bodyが入れ子になるわけないのに・・・
177Name_Not_Found:2013/09/12(木) 06:51:41.78 ID:???
結果的にならないだけだろ馬鹿かお前
何にappendするんだよ
言ってみろよおら
178Name_Not_Found:2013/09/12(木) 06:52:42.57 ID:???
>>175
ユーザーが入力したコードを表示させるインターフェイスの実装だったら?
まさかセキュリティなんて的外れたこと言い出すなよ?
そんなんだから思考力がない低脳って言われんだよ
中卒は勉強し直してからこい
179Name_Not_Found:2013/09/12(木) 06:56:17.75 ID:???
innerHTMLの仕様も理解してない低学歴が顔真っ赤にしてレスするスレはここですか?
180Name_Not_Found:2013/09/12(木) 06:57:17.51 ID:???
>>153
レスをくれるのは有難いが
思い付きで物を言うのはやめて欲しい。
それが動けばここで訊かないよ。
181Name_Not_Found:2013/09/12(木) 06:57:32.70 ID:???
コードが変すぎてよくわからんが
動的に画像を追加するのが目的だろ
なんでトリッキーな条件を持ち出してくるんだよw
トリッキーなことがしたかったらトリッキーな問題に局所化してコードにしろよ
ほんとセンスねーな
182Name_Not_Found:2013/09/12(木) 07:02:56.54 ID:???
トリッキーではあるが、その目的は誰にもわからんよ
質問の本質はinnerHTMLに代入した時点での画像の先読み回避方法なんだから

だからそれ以外のことをぐだぐだ言ってる奴は荒らしと一緒
さっさと消えろ
183Name_Not_Found:2013/09/12(木) 07:15:36.88 ID:???
まじで何をしたいのかわからんけど
分かってもアホみたいなことの予感が半端ない
184Name_Not_Found:2013/09/12(木) 07:17:28.75 ID:???
普通に考えてinnerHTMLじゃなくても画像は読むんじゃねーの
だとしたらinnerHTMLも本質じゃないだろ
185Name_Not_Found:2013/09/12(木) 07:18:03.53 ID:???
>>183
気付いてないようだから教えてやるよ
何をしたいかをわかる必要はない。その事がわからないお前はアホ
186Name_Not_Found:2013/09/12(木) 07:23:15.38 ID:???
これまた馬鹿特有の珍論理きましたなぁ
やっぱり馬鹿を振ってもゴミしか出ないね
187Name_Not_Found:2013/09/12(木) 07:24:29.45 ID:???
低学歴の低脳にはわからんのだろう
188Name_Not_Found:2013/09/12(木) 07:26:32.85 ID:???
>>187
だな
186のような無知君にはわからせようとしても時間の無駄
189Name_Not_Found:2013/09/12(木) 07:27:18.22 ID:???
哀しき自演ww
190Name_Not_Found:2013/09/12(木) 07:31:57.59 ID:???
とうとう自演扱いしだしたぞ
間違ってるのに恥ずかしくないのかな?
191Name_Not_Found:2013/09/12(木) 07:41:25.27 ID:???
クロフォードがローカル変数は関数の最初で宣言しろというのでそうしていましたが
bootstrapの中を見るとそうしていません
どうするのがいいのでしょうか?
192Name_Not_Found:2013/09/12(木) 08:20:01.01 ID:???
ところで画像の先読みの何が不都合なんだ?

これも本質じゃないとかいわれそうだけど、どーしても知りたい欲求が抑えられない
innerHTMLにbodyとかも謎すぎるし、undeined.jpg? 頭おかしくなりそう助けてーーww
193Name_Not_Found:2013/09/12(木) 08:34:49.50 ID:???
いや、お前の頭は既におかしいから
194Name_Not_Found:2013/09/12(木) 08:37:48.05 ID:???
innerHTMLにhtmlタグやbodyタグが含まれている=ユーザー側の操作で値を投げ飛ばすシステム
undeined.jpg → undefined.jpg のタイポだろ。=名前から察するに存在しない画像
これくらいの推測は馬鹿でも出来るよな
195Name_Not_Found:2013/09/12(木) 08:52:01.53 ID:???
>>194
いやタイぽは悪ノリだけど、他のはいいように解釈してるだけでしょ。
存在しない画像だったら、その時点でsrc属性書かなきゃいいだけじゃん。
ユーザー側の操作で値を投げ飛ばすシステムだとしてもHTML丸渡し?まーいいけどさ
いいけど、突っこみたくたくなる気持ちも まあいーけどさ
196Name_Not_Found:2013/09/12(木) 08:52:05.38 ID:???
だーかーらーさー
いくら推測しても意味がないって。質問者がやりたいことを書いてないんだからさ

もし「○○したいけど、××で困っています」って言っているなら、そこで始めて(それが間違っているなら)指摘しろ
今回は「××で困っています」だけなんだから、それを超える改善方法を必要としてないし、またわざわざ教えてやる必要もない
わかったならさっさと仕事行けカス
197Name_Not_Found:2013/09/12(木) 08:59:47.07 ID:???
どうしてこんなに食いついてるんだろう
って考えたら、
DOCTYPEやinnerHTMLにhtmlタグ()とか
アホな事をドヤ顔で言っちゃって自分を正当化しとうと必死になっちゃってるんだろうな
198Name_Not_Found:2013/09/12(木) 09:10:24.71 ID:???
「ここはとあるレストラン
人気メニューはナポリタン・・」みたいに意味が不明すぎるからだろ
馬鹿すぎて難解になっているという例
199Name_Not_Found:2013/09/12(木) 09:17:22.57 ID:???
お前の日本語力が無いだけ
200Name_Not_Found:2013/09/12(木) 09:21:42.23 ID:???
!! 注意 !!!
ここは馬鹿が超初心者相手にドヤ顔解答して満足感を得る為だけに存在するスレッドです。
馬鹿のレベル以上の質問がなされると、見当違いの解答を述べだし、それを指摘されると今度は難癖つけだします。
質問者は以上を踏まえ十分理解した上で質問してください。
201Name_Not_Found:2013/09/12(木) 09:26:10.54 ID:???
わからなければ黙ってROMってればいいのに、
俺の方がお前より上って思い込んじゃってる痛い奴が
自分の低脳さを墓穴を掘るかのように自ら披露してるなw
あー恥ずかしいw
202Name_Not_Found:2013/09/12(木) 09:27:28.70 ID:???
日本語の問題じゃなくコードの問題なんだがw
203Name_Not_Found:2013/09/12(木) 09:28:49.48 ID:???
えっ、あれしきのコードが理解できない奴なんて存在するの?
どうして馬鹿は自分で馬鹿ですって言うんだろう・・・そんなに私、馬鹿ですってアピールしたいの?
204Name_Not_Found:2013/09/12(木) 09:30:23.51 ID:???
>>203
それはね、そいつが馬鹿だからだよ
205Name_Not_Found:2013/09/12(木) 09:36:06.11 ID:???
>>180
iframeのdocument取れないってことは同一生成元じゃないってことかよ
それならはじめに言ってくれ
そういうことならイベントしか無いよ、頑張れ。
206Name_Not_Found:2013/09/12(木) 11:14:22.43 ID:???
「appendする前に内容を反映しようと動作してしまい困っています」
これって具体的に機能的な障害が発生して困るってことじゃなくて
「自分の予想とは異なるから」困っているって意味じゃねw
ゆとり半端ねーな
207Name_Not_Found:2013/09/12(木) 11:19:27.30 ID:???
どうしたいのかという質問に答えられないのもそれで納得できる
「分からないこと」自体に困っていたのだ!
日本よ、これがゆとりだ
208Name_Not_Found:2013/09/12(木) 11:27:05.62 ID:???
世の中にはこういうのがあるようだ
http://javascript.erizo.net/javascript/java_1.html
209Name_Not_Found:2013/09/12(木) 11:53:52.26 ID:???
<div><div><div></div></div></div>
こういったDOM片をbodyにappendしたい場合、
最初のDOMだけはcreateElementしないと駄目ですか?
最初のdivにstyleや属性が色々付いている場合、メソッドで付けていくのが面倒くさいです
HTMLコードからDOMツリーから独立したDOMエレメントを直接作る方法があれば教えて下さい
210Name_Not_Found:2013/09/12(木) 12:06:47.28 ID:???
domfragmentにinnerHTMLがあればいいんですが・・
211Name_Not_Found:2013/09/12(木) 12:09:45.62 ID:???
>>209
DOMParserとかcreateContextualFragmentとか
212Name_Not_Found:2013/09/12(木) 12:22:23.00 ID:???
ありがとうございます
そんなものあるのかと思って調べたところ
createContextualFragmentはIEで未サポート
DOMParserはfirefox以外のサポート状況が「?」
とMDNにありました
やはり標準的じゃないやり方はいろいろ壁がありそうですね・・
213Name_Not_Found:2013/09/12(木) 12:23:28.96 ID:???
>>209
最初のDOMはcreateElementするとして
このDOMはただのWorkにして、そのDOMに<div><div><div></div></div></div>を追加(innerHTML)
で、Work.firstChildをbodyにappendするってのはどう?
214155:2013/09/12(木) 12:26:20.16 ID:???
>>160
高いタイマ精度は、コストパフォーマンスとのトレードオフなのですね
だからほんとは1ミリ秒の精度出せるけどFirefoxはあえて精度を落としているのかな?
ありがとうございました
215Name_Not_Found:2013/09/12(木) 12:27:05.82 ID:???
test
216クロックフォード:2013/09/12(木) 12:38:45.74 ID:???
>>191
儂の名はクロフォードじゃないわ
217Name_Not_Found:2013/09/12(木) 13:11:01.24 ID:???
>>155
Audio Data APIは廃止決定されたしその疑問は捨てること

>>165
画像だけ後から追加するかLazyLoadみたいに後からURL置き換える
環境に沿わないやり方を貫きたいのなら、環境の便利さを一部損なうのは当然
嫌ならDOMをラップして自作フレームワークでも作ること
218Name_Not_Found:2013/09/12(木) 13:35:29.29 ID:???
逆にプリロードできてて便利だと思うけど、何かしら特殊な事情があるのだろう。
219Name_Not_Found:2013/09/12(木) 13:39:10.58 ID:???
>>212
MDNは英語版見たほうがいいよ
日本語版は情報が古いことが多々あるから。
まあDOMParserも全ブラウザで実装されてるわけじゃないけど。
https://developer.mozilla.org/en-US/docs/Web/API/DOMParser

あとは、追加したいテキストをdata URI化して、
Ajaxで読み込んでresponseXMLからとるとか。
下も参考にどうぞ

Parsing and serializing XML
https://developer.mozilla.org/en-US/docs/Parsing_and_serializing_XML
220Name_Not_Found:2013/09/12(木) 13:51:03.17 ID:???
MDNはFirefoxに導入されてない機能の項目については信用しない方がいい
File Systemとかもう情報が古すぎて役立たない
221Name_Not_Found:2013/09/12(木) 14:59:14.28 ID:???
なんという身内贔屓
222Name_Not_Found:2013/09/12(木) 15:28:03.44 ID:???
まあ最近は古い書き方すると
代わりにこっち使ってってコンソールに出るから
1年くらい前の情報ならまだ役に立つ

あとはネイティブ関数の実装概要をtoStringされた時に
分かりやすく表示していこうってことになったから期待できる
http://wiki.ecmascript.org/doku.php?id=harmony:function_to_string

まあホストオブジェクトが対応するには
どこで決めるかが問題になるんだろうけど
223Name_Not_Found:2013/09/12(木) 15:35:18.42 ID:???
>>220
そりゃあMozillaの開発コミュニティが作ってるwikiであって、
HTML/JavaScriptの最新仕様解説サイトじゃないからね
最新の仕様を知りたいなら普通に原典を当たれば良かろう

それに、もし古いと思っているなら更新すればいいじゃん
誰でも編集できるんだから
224Name_Not_Found:2013/09/12(木) 16:59:20.44 ID:???
>>223
別に間違ってると言いたいわけじゃない
頼り過ぎには気をつけてねってことだ
いちいちつっかかってくんなよ
225Name_Not_Found:2013/09/12(木) 17:07:48.30 ID:???
何だこいつ、出て行けよ
226Name_Not_Found:2013/09/12(木) 17:17:01.06 ID:???
喧嘩は他所でやれ
227Name_Not_Found:2013/09/12(木) 17:27:25.82 ID:???
innerHTML="<table>〜"

createElement("table")


どっちがメジャーですか
228Name_Not_Found:2013/09/12(木) 17:40:19.22 ID:???
適材適所
229Name_Not_Found:2013/09/12(木) 17:56:39.80 ID:???
DOM.next

table = new HTMLTableElement
tbody = new HTMLTableSectionElement('tbody')
tr = new HTMLTableRowElement
td = new HTMLTableCellElement('td')
text = new Text('abc')

table.append(tbody.append(tr.append(td.append(text))))
230Name_Not_Found:2013/09/12(木) 18:00:22.77 ID:???
innerHTMLでおk
231Name_Not_Found:2013/09/12(木) 18:35:31.29 ID:???
時代はinsertAdjacentHTMLだから
232Name_Not_Found:2013/09/12(木) 18:52:28.90 ID:???
この統一感のなさ
次から次へと変なのばかりだしていやーね
233Name_Not_Found:2013/09/12(木) 19:17:28.29 ID:???
次から次に出るのは鳴り物入りで導入したけど結局しっくりこなくて流行らなかったからだな
234Name_Not_Found:2013/09/12(木) 19:20:57.90 ID:???
<div id="test"><div class="arrow"></div></div>
こういうHTMLがあり
var dom = document.getElementById('test');
var list = dom.getElementsByClassName('arrow');
こうしたら、arrowクラスの要素のリストが取得できますが
これをjqueryでやるにはどうしたらいいですか?
235Name_Not_Found:2013/09/12(木) 19:38:27.51 ID:???
jqueryでググレ
基本的な事だからどこでも書いてある
236Name_Not_Found:2013/09/12(木) 21:16:15.94 ID:???
すみません。質問です。
マウスイベントについて質問なのですが、

window.addEventListener("mousemove", onmousemove, false);

として、mousemoveイベントを拾っているのですが、マウスボタンを押しっぱなしにしている状態だと、
マウスを動かしてもonmousemoveが呼ばれなくて困っています。
押しっぱなしにしている状態でもonmousemoveが呼ばれるようにしたいのですが、なにか方法はないでしょうか?

ちなみにブラウザはChromeです。
237Name_Not_Found:2013/09/12(木) 22:18:05.79 ID:???
mouseenterとか他のはどうなのよ
238Name_Not_Found:2013/09/12(木) 22:48:29.59 ID:???
再現しないよ
239Name_Not_Found:2013/09/12(木) 23:05:42.63 ID:???
236です。

すみません。大変な凡ミスをしておりました。
Three.jsを使っているのですが、カメラをマウスドラッグで回すことができる補助ライブラリを使っていまして、
その補助ライブラリが内部で
event.preventDefault();
event.stopPropagation();
としているのが原因でした。これらをコメントアウトしたら、
マウスを押しっぱなしにしてもonmousemoveが呼ばれるようになりました。

大変失礼いたしました(汗)
240Name_Not_Found:2013/09/12(木) 23:26:37.59 ID:???
それくらい最初に言えよ
241Name_Not_Found:2013/09/13(金) 06:00:23.98 ID:???
JSHint Gutter for Sublime Textでチェック結果が出るウインドウを
チェックせずにもう一度出すにはどうしたらいいのでしょうか?
修正のたびにチェックしなおすと時間がかかります
242Name_Not_Found:2013/09/13(金) 06:33:33.55 ID:???
グローバル変数を同名のローカル変数に代入するにはどうしたらいいですか?
var a = 100;
function hoge () {
var b = a,a = b;
debugger;
}
hoge();

一度他の変数に入れたらできるかと思ってこうしてみたのですが
なぜかaはundefinedになってしまいます
243Name_Not_Found:2013/09/13(金) 07:31:04.43 ID:???
aがグローバル変数の場合これで出来ました
var a = 100;
function hoge () {
var a = window.a;
debugger;
}
hoge();

でもクロージャの場合はwindowでは取れません
クロージャのスコープを取得するにはどうしたらいいでしょうか
244Name_Not_Found:2013/09/13(金) 08:16:01.91 ID:???
クロージャとなる関数に名前を付けても、
その関数のローカル変数はその関数のプロパティにならないので、
グローバル変数のようにはいかないようです。
ただ、jqueryを使いまくる関数内で$をグローバルからローカルにしたい、
というのが目的だったのですが、
それをするには
var $=jQuery;
と書けばいいだけだと調査の途中に気付きました
これだけでパフォーマンスあがりますよね
245Name_Not_Found:2013/09/13(金) 08:47:56.14 ID:???
http://jsperf.com/localize-vs-global

chromeとfirefoxで、
ローカル変数に代入した方が遅くなるというまさかの結果になりました。。
「大差ない」ならまだしも数%も遅くなるとは
原因は何でしょうか
246Name_Not_Found:2013/09/13(金) 09:04:27.31 ID:???
localize の方が代入文の文だけ処理が多いからだろ。

普通は汎用的に以下の様にするから覚えておけばいい。

(function&nbsp;outer_func()&nbsp;{

var&nbsp;FOO&nbsp;=&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;"foo"
};

(function()&nbsp;{

var&nbsp;var_name&nbsp;=&nbsp;"FOO";

FOO&nbsp;=&nbsp;eval("(function(){return&nbsp;"&nbsp;+&nbsp;outer_func.toString().replace(
&nbsp;&nbsp;&nbsp;&nbsp;/([\s\S]*)(^\W*|;(?=\W*))(function[^(]*\([^)]*\)\s*\{[\s\S]*UNIQUE_STRING_IN_WHOLE_SCRIPT)([\s\S]*)/m,
&nbsp;&nbsp;&nbsp;&nbsp;"$1\nreturn&nbsp;"&nbsp;+&nbsp;var_name&nbsp;+&nbsp;";\n$2$3$4"
)&nbsp;+&nbsp;"();})();");


console.log(FOO.name);


})();

})();
247246:2013/09/13(金) 09:05:47.98 ID:???
何ぞ!?
248Name_Not_Found:2013/09/13(金) 09:12:22.39 ID:???
文字化けですか?

http://jsperf.com/localize-function-vs-global
関数に入れて比較したら「大差ない」でした
jQueryの処理が重すぎて、
ローカルかグローバルかの差が見えないほど小さくなっているのだと思われます
249Name_Not_Found:2013/09/13(金) 09:38:48.38 ID:???
大差ないとしても、そのテストコードは平等な比較ができていない。

localize の方は「代入」という、遅い処理が一行追加されてる分、
僅かにでも影響が数値として現れる。

後のテスト http://jsperf.com/localize-function-vs-global の方では
繰り返し 10000 回に対して代入 1回の為に影響が小さくなっているだけ。
250Name_Not_Found:2013/09/13(金) 11:01:37.92 ID:???
http://jsperf.com/localize-function-vs-global-function

余計なコードを取って関数呼び出しだけにすると、わずかにlocalizeの方が速くなりました
たしかに代入があるので、もし関数呼び出しが一回だけならlocalizeの方が遅くなると思います
251Name_Not_Found:2013/09/13(金) 13:50:25.02 ID:???
イベントをstopPropagationやpreventDefaultしているのですが
これをしないとどういう不具合があったんだっけ?という疑問がわいてきました
とりあえず付けた場合と、目的があって付けた場合が混在していると思うのです
必要なものを判別するにはどうすればいいですか?
252Name_Not_Found:2013/09/13(金) 13:54:24.10 ID:???
evalを使ってないとか一定のルールクリアしてれば
最近のコンパイラは関数でどの変数が必要になるか調べてリストを作る
実行時の解決には馬鹿正直に内側のスコープから検索せずにそのリストを使うから
グローバルだから凄く遅いとか
クロージャで必要な変数内スコープにキャッシュしたから凄く早いというのはない
253Name_Not_Found:2013/09/13(金) 14:04:55.02 ID:???
たしかにchromeはまったくといっていいほど差がでないです
254Name_Not_Found:2013/09/13(金) 14:10:50.27 ID:???
>>251
そのコードをコメントアウトしてみる。
255Name_Not_Found:2013/09/13(金) 14:24:01.92 ID:???
これからは速度をつけるにはインラインワーカーだ!
256Name_Not_Found:2013/09/13(金) 14:30:15.67 ID:???
残念ながら速度の問題が発生する多くはWorkerから扱えないDOM周りなんだよ
257Name_Not_Found:2013/09/13(金) 14:33:16.57 ID:???
&amp;nbsp;
258Name_Not_Found:2013/09/13(金) 19:43:21.63 ID:???
var tr = $("table tbody tr");
sort(0,tr.length-1,tr);

function sortData(start,end,tr)
{
//var tr = $("table tbody tr");
var x =tr.eq([Math.floor((start + end) / 2)]).children().eq(0).text();


のように使いたいのですが
Uncaught TypeError: Cannot call method 'eq' of undefined とでてできません

sort内のvar trをコメントアウトするとできます
引数でtrがうまく渡されてないようですが
どのようにすればうまく動くか教えてください
259Name_Not_Found:2013/09/13(金) 19:49:37.25 ID:???
あ 再帰のほうの引数とるの忘れてました
できました
260Name_Not_Found:2013/09/13(金) 21:49:33.35 ID:???
スマホサイトで広告張ってるのですが在庫切れが多くて困っております
HTMLからロードした広告が在庫切れで表示されない場合にJavaScriptから別の広告をロードする方法はありますでしょうか。
具体的には、以下についてとなります。
@ロードした広告が在庫切れで表示されない状態を検知する方法
A在庫切れで非表示の場合に、別の広告タグをロードする方法

以上、よろしくお願い致します。
261Name_Not_Found:2013/09/13(金) 22:00:26.75 ID:7/Ip7In/
>>260
さすがにざっくりすぎる

広告配信元とどのような契約をしているか知らんが
在庫切れを配信するな、と言うのがベスト

それが出来ん場合、在庫切れだとどうなっちゃうのかがわからんが
404とかが帰ってくるなら、ステータスコードを見る

そうでなくても、在庫切れだと識別できる何かがあるのなら
それがあったら別のものを再度ロードする

とかとか
262Name_Not_Found:2013/09/13(金) 22:01:17.69 ID:7/Ip7In/
続きは、JSのどこがわからないか
がわかったら聞いてくだされ
263Name_Not_Found:2013/09/13(金) 22:36:22.66 ID:???
>>244
> これだけでパフォーマンスあがりますよね
いいえ、下がります。
264Name_Not_Found:2013/09/13(金) 22:44:27.70 ID:???
>>262
基本的にステータスコードは帰ってきません。
JSで広告要素が存在するか、等の低レベルでの確認しか方法は無いのですが、それすら可能なのか?
という疑問でした。
ありがとうございます。
265Name_Not_Found:2013/09/13(金) 22:50:58.81 ID:LFRBRCn0
function sortData(start,end)
{
var x = data[Math.floor((start + end) / 2)];
var i = start;
var j = end;
while (true)
{
while (data[i] < x) i++;
while (x < data[j]) j--;
if (i >= j) break;
n = data[i];
data[i] = data[j];
data[j] = n;
i++;
j--;
}
if (start < i-1) sortData(start,i-1);
if (j+1 < end) sortData(j+1,end);
}


このクイックソートで空白文字を降順にソートしたいのですがどうすればいいでしょうか?
ほかの文字列はいろいろなabc cake zet me og ae などあるとします
教えてください
266Name_Not_Found:2013/09/13(金) 22:51:50.21 ID:???
>>263
下がるわけないだろ
馬鹿かお前
267Name_Not_Found:2013/09/13(金) 22:55:36.63 ID:???
>>266
ベンチマークしてみればわかります。
上がったという証拠を見せてください。
268Name_Not_Found:2013/09/13(金) 22:58:09.87 ID:LFRBRCn0
空白がabcやaeより上になってしまいます
空白を降順にするやり方教えて下ださい

funciton xx(a){
if(a==""){
}
else{
return a}
}

こういうチェックする関数をやってるんですがうまくいきません
269Name_Not_Found:2013/09/13(金) 22:58:56.83 ID:???
>>250を見れば分かりますよ
極度に最適化されている場合は差はなくなりますが
そうでない場合は数%の差はあります
というか原理的にそうなるのは当たり前のことです
270Name_Not_Found:2013/09/13(金) 23:13:19.27 ID:7/Ip7In/
>>268
空白とはスペースなのか、空なのか
271Name_Not_Found:2013/09/13(金) 23:19:49.68 ID:???
>>268
ソート関数ググって空白に関する処理を付け加えれば良い
272Name_Not_Found:2013/09/13(金) 23:34:28.68 ID:???
jQueryの押したらイベントを起こすbindやonですが
$function(){

}
の中に書くと動いて
これが無いと動かないのはなぜなんでしょうか?
273Name_Not_Found:2013/09/13(金) 23:36:59.01 ID:???
んー??
質問の意味が分からない・・・
274Name_Not_Found:2013/09/13(金) 23:37:57.35 ID:7/Ip7In/
>>272
要素は終了タグが読まれてからツリーにぶら下がる
程度に理解してもらえればわかりやすいかと

あと$function(){}てエラーになるだろ
275Name_Not_Found:2013/09/14(土) 00:13:50.52 ID:J1i2JugH
>>270
<td></td>です空だと思います
==""ってやったら通りました

ソートすると空白の行が上にきてしまいます
abcとかaeが上にくるようにして空白が一番下にさせかたがわかりません・・・
276Name_Not_Found:2013/09/14(土) 00:14:48.54 ID:???
>>274
ありがとうございます
$(function(){
});
でしたね;
277Name_Not_Found:2013/09/14(土) 00:29:20.45 ID:9LvZEWHJ
>>275
>>271にも書かれているけど
ソート関数でおググりください

そのほうが早いから
278Name_Not_Found:2013/09/14(土) 01:12:14.19 ID:J1i2JugH
>>277
ソート関数というより自作ソートです

funciton v(a){
if(a==""){
return ほにゃらら;
}
else{
return a}
}

空白だけ後ろにしたいんです
v(tr.eq(i).children().eq(n).text()) > v(x))

式のとき"abc"が返す値はなんでしょうか?
単語リストが3個だけの場合

a=="abc"
return 0;

a=="cake"
return 1;

a==""
return 2;

とやるとこの順番どおりできるのですが
単語リストがある場合
こうやって割り当てて値をつけていくのが大変です

空白のみ比較後ろにする方法しりませんか?
279Name_Not_Found:2013/09/14(土) 01:13:15.73 ID:J1i2JugH
単語が100文字とかあると
全部書くようなので大変です
空白のみ後ろにする方法を教えてください
280Name_Not_Found:2013/09/14(土) 01:15:43.01 ID:???
>>278
ソート関数でググレってアドバイスもらっといて無視するような輩はお帰りください
281Name_Not_Found:2013/09/14(土) 01:16:53.87 ID:9LvZEWHJ
>>278
だーら、ソート関数もしくは比較関数でググれってば
そうすれば文字列どうしを比較した時に何が起こるかわかるから

んでそこに空文字列の場合を自分で組み込めばいいじゃない
282Name_Not_Found:2013/09/14(土) 01:29:55.85 ID:???
構ってあげるなよ
283Name_Not_Found:2013/09/14(土) 02:22:20.93 ID:???
そーっとしておいてください!
284Name_Not_Found:2013/09/14(土) 09:09:05.41 ID:???
指定されたカウント数で0から1までループするにはどうしたらいいですか?
285Name_Not_Found:2013/09/14(土) 09:11:19.90 ID:???
増分は1/countですが、これを積み上げていくと丸め誤差でぴったり1ではなくなります
286Name_Not_Found:2013/09/14(土) 09:20:32.18 ID:???
i / count
するだけでした
287Name_Not_Found:2013/09/14(土) 10:02:08.07 ID:???
if (0.1 + 0.2 == 0.3) {
 // 処理
}

が動きません><
理由が分かる人はこのスレにいますか???
288Name_Not_Found:2013/09/14(土) 10:03:08.06 ID:???
います
289Name_Not_Found:2013/09/14(土) 10:04:43.04 ID:???
このスレは馬鹿な回答者しかいないから居ないよ
290Name_Not_Found:2013/09/14(土) 10:06:57.54 ID:???
煽っても教えてあげません
291287:2013/09/14(土) 10:08:33.84 ID:???
お前らって浮動点少数の扱いも知らないんだなw
292Name_Not_Found:2013/09/14(土) 10:12:40.42 ID:???
いますか?ってJavaScripterなら常識だろ
煽りにしてもレベル低すぎ
293Name_Not_Found:2013/09/14(土) 10:15:11.09 ID:???
>JavaScripterなら

え?馬鹿ですか?
お前らもう口開かないほうがいいわw
294Name_Not_Found:2013/09/14(土) 10:15:20.84 ID:???
別にJSに限った話じゃないぞ
プログラムするなら一般常識
295Name_Not_Found:2013/09/14(土) 10:15:23.89 ID:???
クロージャって外のスコープを取り込んでいる関数のことですよね
だとしたら、あらゆる関数はグローバルスコープを取り込んでいるので
クロージャなのでしょうか?
296Name_Not_Found:2013/09/14(土) 10:29:45.81 ID:???
JavaScript限定の話?
297Name_Not_Found:2013/09/14(土) 10:41:36.64 ID:???
読み込んだJavaScriptファイルとCSSファイルのリストを取得するにはどうしたらいいですか?
298Name_Not_Found:2013/09/14(土) 10:42:54.74 ID:???
外の環境を保持する仕組みがクロージャだから
そこら辺の関数はクロージャじゃない
299Name_Not_Found:2013/09/14(土) 10:52:04.92 ID:???
>>297
document.files
300Name_Not_Found:2013/09/14(土) 11:03:20.22 ID:J1i2JugH
無能しかいねえわここ
301Name_Not_Found:2013/09/14(土) 11:22:46.51 ID:???
これは伸びないタイプ
302Name_Not_Found:2013/09/14(土) 11:22:55.73 ID:???
じゃあいつまでも居続ける必要はないね。
303Name_Not_Found:2013/09/14(土) 11:26:57.50 ID:???
週末の定期オナニー明けで気が勃ってるだけだろ。
ほっといてやれ。
304Name_Not_Found:2013/09/14(土) 14:40:38.16 ID:9LvZEWHJ
>>300
昨日のソート君じゃん

'abc' > 'def'

の結果わかった?
そこに、空文字列の時だけ場合分けすればいいんだよ
305Name_Not_Found:2013/09/14(土) 15:08:55.91 ID:???
待ち時間に画面の真ん中にくるくる回るやつを出したいのですが
どうすればいいですか
306Name_Not_Found:2013/09/14(土) 15:10:40.21 ID:???
くるくる回るgif画像を表示するだけ
307Name_Not_Found:2013/09/14(土) 15:22:37.50 ID:???
低レベルな質問には即答なんだなw
さすが馬鹿しかないスレだわw
308Name_Not_Found:2013/09/14(土) 15:33:27.08 ID:???
画面を黒くしてからフェードアウトする処理を書きました
http://jsbin.com/IbumazI/1/edit
このコーディング用画面ではうまくいきますが
http://jsbin.com/IbumazI/1
このサイト画面では、chromeの場合、フェードアウトせずパッと色が変わってしまいます
IEとfirefoxではフェードアウトしますが、何かぎこちないです
うまく動くようにするにはどうしたらいいですか?
309Name_Not_Found:2013/09/14(土) 15:44:07.56 ID:???
onreadyじゃないと駄目なのかと思ってこうしても
やはりchromeでは変です

$(document).ready(function(){
$('<div>').attr('id', 'waitScreen')
.css({
position: 'fixed',
left: 0,
top: 0,
width: '100%',
height: '100%',
backgroundColor: '#000',
zIndex: 10000
})
.appendTo(document.body)
.fadeOut('slow');
});

http://jsbin.com/OneROGa/1
310Name_Not_Found:2013/09/14(土) 15:47:12.35 ID:9LvZEWHJ
>>308
俺のchromeではちゃんと見えてるよ
macとwindows両方とも
311Name_Not_Found:2013/09/14(土) 15:50:27.90 ID:9LvZEWHJ
setTimeoutで2秒くらい送らせてもガビるかね?
312Name_Not_Found:2013/09/14(土) 15:51:45.86 ID:???
>>307
ID隠すことを覚えたなら
文字列の比較もすぐ覚えられるだろうよww

cjkvの比較は期待通りにならんことが多いから気をつけろよ
313Name_Not_Found:2013/09/14(土) 16:06:47.75 ID:???
ありがとうございます
setTimeoutで1秒ウェイト取ったら正常動作しました
でも、マシン個体差というのがすっきりしません
なんのためのonreadyなのか・・
314Name_Not_Found:2013/09/14(土) 16:11:06.06 ID:9LvZEWHJ
>>313
readyは、ざっくり言えばDOMContentLoadedだから
ブラウザとしては、比較的忙しい時間帯とも言えるかもね
315Name_Not_Found:2013/09/14(土) 17:01:01.57 ID:J1i2JugH
>>304

sonicsort(start,end,tr,n,o,cmp)

function ncomp(a,b){
ほにゃらら
}

で今やってます
空白でできましたが
return "a"などreturn "Zzz"など返す必要がありました
316Name_Not_Found:2013/09/14(土) 17:02:45.89 ID:J1i2JugH
"a" "Zzz"より小さい 大きい比較のやつ知りませんか?
ASII Codeと一緒なのでしょうか?
317Name_Not_Found:2013/09/14(土) 17:22:04.30 ID:???
日本語でOK
なにが知りたいのか分からん
318Name_Not_Found:2013/09/14(土) 17:27:46.86 ID:J1i2JugH
a="a"
b="b"

a<b
は1になりますが

a=""やa="$"の場合いちいちチェックしないとどっちが大きいとかわかりませんってことです
これは何を元に決められてるのでしょうか?大きさは

ASCIIコード表でしょうか?
教えてください
319Name_Not_Found:2013/09/14(土) 17:28:50.60 ID:???
なんで言われたとおりソート関数使わないの・・?
なんでsonicsortとか意味不明な関数貼って満足してるの・・?
なんで使われて無いsonicsortで使われて無いncomp関数書いてるの・・?
気持ち悪すぎて吐きそう
320Name_Not_Found:2013/09/14(土) 17:29:08.99 ID:???
UTF-16
321Name_Not_Found:2013/09/14(土) 18:15:56.33 ID:J1i2JugH
>>319
配列じゃなくてテーブルのソートです
htmlのテーブルのソート関数はないと思いますが・・・

http://codepad.org/bQfwe7ri
こんな感じですthをクリックしたら発動する感じです
空白をやる場合ncompに

if(a==""){
return 'a';
}とかやらないとダメでした

ちなみにソート関数とはsort()でしょうか?
それをテーブルに使うことも可能なのでしょうか?
322Name_Not_Found:2013/09/14(土) 18:17:41.67 ID:9LvZEWHJ
>>315,318
返す必要があるってナンノコッチャ?

sonicsortが何だかわからないのだけれど
Array.sortで使う場合の比較関数は、引数に比較される2つが渡され
返り値は-1,0,1とするのが一般的(もっと大/小な数でも良いが)

function(a,b){
  if(a < b) return -1;
  if(a > b) return 1;
  return 0;
}

大小比較だけでは用が足せない場合は、この関数を自分でいじれば良いって話

文字列を比較は、その通りasciiになる。記号だって例外じゃないんだぜ
'a' > '$' はtrueになるじゃろ
323Name_Not_Found:2013/09/14(土) 18:19:29.12 ID:9LvZEWHJ
>>321
> if(a==""){
> return 'a';
> }とかやらないとダメでした

これを何度か書いているけど、いまいち何言っているのかわからん
324Name_Not_Found:2013/09/14(土) 18:19:29.84 ID:J1i2JugH
>>320
私へのレスですか?UTF-8でいいのでしょうか?
あとtablesorterで独自の比較関数のやり方知ってる人いたら教えてください
tablesorterを使ったほうが早いと思いますが比較関数のやり方がわからず作ってるところです

前に作ったんですがバブルソートだったのテーブルのデータが増えると凄い遅くて嫌なので
今新しくソート作ってる途中です

ソート関数とはなんなんでしょうか?それは配列だけにしか使えないんじゃないんでしょうか?
325Name_Not_Found:2013/09/14(土) 18:21:56.36 ID:???
ソートにHTMLもクソもない
326Name_Not_Found:2013/09/14(土) 18:22:16.28 ID:J1i2JugH
>>323


<td></td>
<td>aiueo</td>
<td>baka</td>
<td></td>
<td>hage</td>
<td>zzzz</td>
<td></td>

をソートさせると

空白
空白
空白
aiueo
baka
hage
zzzz

って表示されてしまって嫌だってことですこれを空白を一番最後にしようとしてるんですが
イマイチわかりません
そのa==""ってことです
空白だったらreturnを何か返せば後ろに来ると思って迷ってるところです
327Name_Not_Found:2013/09/14(土) 18:24:09.11 ID:???
>>324
8じゃなくてUTF16での文字コードね
328Name_Not_Found:2013/09/14(土) 18:25:51.89 ID:J1i2JugH
>>322
ソート関数を使う場合はどうすればいいのでしょうか?
tdを配列にいれるのでしょうか?
混乱してます
ソート関数を使えって
ソート関数は配列 [1,4,1,5,6] ["a","b","d","z","h"]とかにつかうらしいのですが
tdのデータを配列にいれてその値をループさせて取り出してやるってことでしょうか?
そのソート関数を使ったtdのテーブルソートのソースが見たいです
教えてください
329Name_Not_Found:2013/09/14(土) 18:37:01.75 ID:J1i2JugH
ちなみに複数列あるので他の行にも影響がでるのでtrで交換してます
tdでやったらその列だけ変わって他の行はそのままでおかしくなるからです

sort関数使えっていってますがどのように使うのかソースを張ってくれるとありがたいです
330Name_Not_Found:2013/09/14(土) 18:38:35.79 ID:???
>>326
で書いてみる
331Name_Not_Found:2013/09/14(土) 18:43:34.03 ID:J1i2JugH
>>330
ありがとうございます
ソース待ってます

これがソートの部分です
http://codepad.org/bQfwe7ri
これがthをクリックしたら発動するやつです
http://codepad.org/fiMHIBlv

テーブルは複数列です
一つの列だと他の列にも影響がでるのでtrで交換してます
332Name_Not_Found:2013/09/14(土) 18:44:53.90 ID:???
>>325
sortable属性ってあるよ
333Name_Not_Found:2013/09/14(土) 19:01:30.41 ID:???
めんどくせぇ
jqueryのtablesorter plugin使え
ある物使うのがプログラマーだ
334Name_Not_Found:2013/09/14(土) 19:28:13.44 ID:9LvZEWHJ
>>328
$('table tbody tr')ってすれば、行が取ってこれるでしょ、んで

{
  列1 : td1の値,
  列2 : td2の値,
  obj : <tr>のjQオブジェクト
}

みたいなオブジェクトつくって、それを配列に入れれば
sort()の比較関数で

function(a,b){
  if(a.列1 > b.列1){
    a.objをb.objの後ろに;
    return 1;
  }
  以下略
}

みたいに書けるじゃん
335Name_Not_Found:2013/09/14(土) 19:32:51.94 ID:J1i2JugH
オブジェクト作るところとか配列に入れるところとかのソースも教えてください
まったく知らないので
336Name_Not_Found:2013/09/14(土) 19:35:40.64 ID:9LvZEWHJ
えー、めんどくせー
オブジェクト作るのは

var obj = {
  名前 : 値,
  名前 : 値
};

ってすればいいよ。
配列に入れるのは

var rows = [];
rows.push(obj);

こう。pushは遅いという話も聞くが
337Name_Not_Found:2013/09/14(土) 19:37:18.34 ID:???
確か、Array.prototype.sort.call("TRの集合", function(trA, trB) { ... }); でソートできたはず。
ソート後に更新しないといけないとかクセがあったんで、おれは使ってないけど。
338Name_Not_Found:2013/09/14(土) 19:40:20.37 ID:9LvZEWHJ
今思ったが、比較関数の中でDOM操作すると回数が多くて無駄ですな

一変値だけでソートしてから
もう一度配列なめてdocumentFragmentの中で<tr>並べて
ボコンと入れ替えたほうがいい気がしてきた
339Name_Not_Found:2013/09/14(土) 19:49:28.67 ID:J1i2JugH
>>338
他のやり方教えてください
とりあえずソニックソートで日付の比較関数は作れたのですが空白のやつがイマイチで・・・
sort関数でできるやり方教えてください

cmp(tr.eq(i).children().eq(n).text(),x)


function ncomp(a,b){
array=new Array;
array.push(a,b);
for(i=0; i<array.length; i++){
if (array[i].match(/時間/)) {
array[i]=array[i].replace(/(\d+)時間前/, "$1") * 3600;
} else if (array[i].match(/分/)) {
array[i]=array[i].replace(/(\d+)分前/, "$1") * 60;
} else if (array[i].match(/秒/)) {
array[i]=array[i].replace(/(\d+)秒前/, "$1");
}else if (array[i].match(/日/)) {
array[i]=array[i].replace(/(\d+)日前/, "$1") * 86400;
}
}
if(array[0]<array[1]){
return 1;
}else{
return 0;
}
}
340Name_Not_Found:2013/09/14(土) 20:01:34.14 ID:???
>>331
すまんがレス見ないうちに書き終えちゃった
とりあえず>>326を標準ソートでがんばってみたよ

http://ideone.com/x2Z7Bw
341Name_Not_Found:2013/09/14(土) 20:03:13.36 ID:9LvZEWHJ
>>339
sortの使い方は書いたし、足りない分はMDNでも見たほうがいい
ソートっていろんなアルゴリズムがあるんで調べて欲しいんだけど
比較関数ってのは何度も何度もキックされる

だから、例えば時間を表す文字列を時間に変換する、みたいな操作は
ソートする前に予めやっといたほうがロスが少ない

それと空白って書くのやめろよ、空文字列なんだろ
>>1にオレオレ用語は混乱するからやめろって書いてあるだろ

んで、空文字列はundefinedにしておけば、文字列ソートしたら最後尾に来る、はず
342Name_Not_Found:2013/09/14(土) 20:17:58.06 ID:J1i2JugH
>>340
難しそうなので自作のでやってみます
わざわざソースありがとうございました

>>341
if(a==""){
a=undefined;
}ってやればいいのでしょうか?
343Name_Not_Found:2013/09/14(土) 20:23:12.06 ID:???
そこは試せよw
344Name_Not_Found:2013/09/14(土) 20:23:50.34 ID:9LvZEWHJ
>>342
まずaがなんなのかわかんない
345Name_Not_Found:2013/09/14(土) 20:25:13.42 ID:???
>>342
>>340はやってることは凄くシンプルだよ

1.ソートしたい対象(textContent)を抜き出す
2.それがソートされるとき、どう要素が変更されるか監視する
3.その通りに本命の対象を変える
346Name_Not_Found:2013/09/14(土) 20:27:13.39 ID:9LvZEWHJ
書いた
おかしいところがあったら、それはプレミアムモルツのせい
http://jsbin.com/IWiLuFi/1/edit
347Name_Not_Found:2013/09/14(土) 20:29:24.94 ID:J1i2JugH
>>344

>>339のは変換したり特定単語の順位をつけたりするときに使うため配列にしてあります
こちらはそのままa,bと文字列で扱うので
プッシュしたりしてません

やっぱり空文字列の場合はUTF16ってやつみて

array=new Array;
array.push(a,b);
for(i=0; i<array.length; i++){

if(array[i]==""){
array[i]="Zzzzzzz";
}

}

ってやるしかありませんかね?
348Name_Not_Found:2013/09/14(土) 20:30:43.22 ID:J1i2JugH
>>345
return (!a || !b) ? a < b : a > b
こことか難しそうですし
jQueryじゃないし日付とか単語の順位付けとかやるのに応用できなさそうなので難しいってことです
シンプルだけど難しいのでjQueryとか使ったやり方でSort関数のほうが難しいですね
349Name_Not_Found:2013/09/14(土) 20:37:14.17 ID:9LvZEWHJ
>>347
そんなことせなんでもいいじゃん
空文字列の場合は別扱いすれば
http://jsbin.com/IWiLuFi/2/edit
350Name_Not_Found:2013/09/14(土) 20:37:43.52 ID:J1i2JugH
>>345
凄いですね!!!まさにこういう$('button#numb').on('click',function(){ sortTable('number'); });埋め込むやつ求めてました
これの私が書いたような日付対応させるやり方とか

緑、赤、青
ってあった場合
赤、青、緑という順位付けをできるようなのも追加してください







351Name_Not_Found:2013/09/14(土) 20:41:14.24 ID:9LvZEWHJ
>>350
それは自分でやれよ

あと、これこのまま使っても、きっともっと詳しい人に
そんなの糞!って叩かれるにキマってるからな

もうプレモル4本目突入しちゃってるからな
やってほしかったら5本目買ってこい
352Name_Not_Found:2013/09/14(土) 20:44:10.36 ID:???
>>348
まさにそこが空文字なら後ろにするって部分だよ

あと、一応応用は効くよ
もし内容が日付で、""を最後にしたいのなら
そのreturnの行を
return (Date.parse(a) || 0) < (Date.parse(b) || 0)
にしたらいいよ
353Name_Not_Found:2013/09/14(土) 20:54:35.44 ID:???
354Name_Not_Found:2013/09/14(土) 20:58:23.45 ID:???
>>349
まあまあだね。じゃあ勝手にレビュー。

ソート関数が汎用的になっていない。
ソート関数を実装する人がよくやりがちだけど、
引数で処理を変えるんじゃなくて関数そのものを変えた方がいい
そのほうが処理がスッキリして明確になる。

つまりrows.sort内の処理を二つにわけ、
$('button#numb').on('click',function(){ sortTable(0, numberSort); });
$('button#name').on('click',function(){ sortTable(1, stringSort); });

こうすうることで、tableと関係ない汎用的なsort関数にすることが出来る。

この0と1からわかると思うけど、var obj = {略} の所、numberでソートの時は
nameいらないわけで無駄な値を取ってきてるね。
0と1だとマジックナンバーだから定数にした方がいいかもしれないけど。

それとrowsを使っている所、mapを使った方がいい。
配列 から 同数の配列を生成したいならばmapと言えば簡単だろう?
355Name_Not_Found:2013/09/14(土) 21:02:38.11 ID:J1i2JugH
>>353
そっちのjquery使ってない
1列しかできなくて難しいコードじゃなくて
>>345みたいなコードがいいです
356Name_Not_Found:2013/09/14(土) 21:03:24.38 ID:J1i2JugH
>>346のコードでした
357Name_Not_Found:2013/09/14(土) 21:10:30.96 ID:J1i2JugH
>>346のコードで

優勝、準優勝、準準優勝
みたいに順位付けして

あと日付の24 60 3600 みたいなやり方のやつも教えてください
358Name_Not_Found:2013/09/14(土) 21:35:38.29 ID:9LvZEWHJ
>>354
引数に関数渡すのは、ありだと思った
でも書くのが面倒だった、まじで
ビール飲み過ぎでおしっこ止まらないし


>>355
三項演算子と単項演算子は別に難しくないぞ、なれろ
359Name_Not_Found:2013/09/14(土) 21:38:43.94 ID:x238lJj8
あるDOMオブジェクトのonclickイベントに複数のハンドラがセットされているとして
通常は設定順に実行されますが、jqueryでtrigger()すると
最初の1つしか実行されません。
全部実行したい場合にはどういうコード書けばいいんでしょうか
360Name_Not_Found:2013/09/14(土) 21:43:50.85 ID:???
>>353
まあ色々やってみたかった、一つづつ処理を負いたかったってのはわかるよ。
結果として無駄なことやってるだけだけどw

他に人に最初に補足、これは実験的な機能を使ってるので
Chromeでオプション変えないと動きません。

まずtextsがsortされるし、関数実行中に画面描画はされないので、
deliverChangeRecordsは不要。
それ以前に関数実行中に画面描画はされないので、そもそもobserveを使う意味が無い。

recs.lengthを見ればわかるが、値の合計は15。
つまり8個しかないのに、tdへの代入が15回発生している。
だからobserveを使わずにsortし終わってから代入したほうがいいね。

あと細かいところで1/0は単純にInfinityでよい。
361Name_Not_Found:2013/09/14(土) 21:51:29.41 ID:J1i2JugH
>>358
早く教えてください
362Name_Not_Found:2013/09/14(土) 21:59:48.07 ID:9LvZEWHJ
>>359
eachすればいいんでね?
363Name_Not_Found:2013/09/14(土) 22:00:51.84 ID:???
>>340

> return (!a || !b) ? a < b : a > b

これが見にくいのは三項演算子だからではなく
優先順位がわかりにくいからだよ。

四則演算程度の優先順位ならだれでも知って当然だが、
?と<がでてきたら、えっ?えっ?ってなっちゃう。
もしかしたらこうかも知れないしさ。

(!a || !b) ? a < b : a   > b

カッコでくくるだけでシンプルになる
return (!a || !b) ? (a < b) : (a > b)

もしてもう一つ、式を変更しよう。否定というのは何かとわかりにくい。
(!a || !b) この形が出てきたら有名な、ドモルガンの法則がでてくる人は珍しいのかな?

法則に従って直せば、! (a && b) となる。頭の!は三項演算子の残り二つを入れ替えれば消える。

(a && b) ? (a > b) : (a < b)

まあこれはこれで正しく動くのかよくわからんがw
364Name_Not_Found:2013/09/14(土) 22:05:15.71 ID:J1i2JugH
なんかうまくできません
$("#item_table tbody tr:not([style*='none'])");
これをやろうとしましたができませんでした

cyokodogさんていうex-table-filterっていうのを作ってる凄い人に要望出しました
ソートも作ってほしいって
それがリリースされるまで自分のソートを使おうかと思います
理想のソートは

比較関数を引数でやれるやつです
365Name_Not_Found:2013/09/14(土) 22:06:30.30 ID:J1i2JugH
あと列に埋め込めるやつが理想です
1列目にはこの比較関数
2列目にはこの比較関数

みたいに
366Name_Not_Found:2013/09/14(土) 22:08:44.12 ID:???
>>359
そんなはずはないはずなんだが?
何か勘違いしてね?
367Name_Not_Found:2013/09/14(土) 22:10:33.86 ID:???
他の言語でも同じだが、省略できる括弧は絶対に書かないのが
coolだと信じてるヘボPGの多いこと多いこと。
368Name_Not_Found:2013/09/14(土) 22:17:46.10 ID:???
>>364
> cyokodogさんていうex-table-filterっていうのを作ってる凄い人に要望出しました

APIとかみたけど、ごめん、正直イケてない。

作者に言うべきことだけど、もう少し機能を細かく分けた方がいい。
機能を詰め込み過ぎでぶくぶく太ってる。

フィルタ機能とかたいていのものはjQueryで用意されてる
機能をそのまま使ったほうがいいんだ。

セレクタで出来ないような複雑なものでも、これなんか、
$(・・・).filter(フィルタ関数)なんかで行けるだろうし。
あとは表示非表示するだけ。

ようはjQueryを使いこなせ!
369Name_Not_Found:2013/09/14(土) 22:19:32.61 ID:9LvZEWHJ
JSはしょうがないよ
ClosureCompilerみたいな便利グッズが出来るまでは
1バイトでも少なく書きたい場面もあったし
370Name_Not_Found:2013/09/14(土) 22:21:22.88 ID:???
>>367
> 他の言語でも同じだが、省略できる括弧は絶対に書かないのが
> coolだと信じてるヘボPGの多いこと多いこと。
その通り。

確かに省略できる所を省略しても、
正しく動く。正確に判断してくれる。

だがそれは ”コンピュータが” だ。

ソースコードは人間のために読みやすいように書こう。
人間が読みにくいと思ったら、
コンピュータが読めてもそれは
人間が読むコードじゃないんだよ。

えらいのは人間様です。人間様に優しくしましょうw
371Name_Not_Found:2013/09/14(土) 22:24:17.55 ID:???
>>369
それは技術をわかってないだけ。

ファイルサイズの話だと思うが、
確かに文字は少ない方がいいんだが
実のところほとんど意味は無い。

なぜなら普通はgzip圧縮して配信するから
その時長い単語や空白はよく圧縮できる。

1バイトでもというが、本当に
数バイトとしか変わらなかったりするよ。
画像ファイルサイズを考えてみ?
372Name_Not_Found:2013/09/14(土) 22:26:48.02 ID:9LvZEWHJ
>>371
今はね、回線も太くなったしサーバも強固になったから楽なんだけど
昔から書いてる人はそうもいかなかったんだよ

ユーザから見たらたかが数バイトでも
サーバから見ると×アクセス数だから
その名残で、短く書く癖が付いちゃってる人もいるんだぜ、って話
373Name_Not_Found:2013/09/14(土) 22:35:31.19 ID:???
ちくしょう、考えちまったからレスしとくかw

> (a && b) ? (a > b) : (a < b)

そもそもソート関数で、比較条件が逆になるってことが
おかしいことなんだよ。
ソートは常に同じ条件を使うことで正しく並ぶはず。

ただ例外はある。多分空文字だろう?
空文字では適切に並ばなかったため、「じゃあ逆にしたら並ぶんじゃね?」という
安直な発想で、条件を逆にしてしまったのだろうが、
そうではなく、空文字を例外として扱うコードを書いた方がいい。

いいというのは人間にとって読みやすいという意味。
このように書くことで、空文字はちゃんとこのように扱っていると
コード上に明確に書く事ができる。
374Name_Not_Found:2013/09/14(土) 22:41:54.88 ID:???
>>372
それは最後までちゃんと計算してない。
バイト数だけで考えていて、
パーセンテージを出してないだろう。

たかだか数バイト。それが積もり積もって1GB。
大きいと思ったとしても1キロバイト中の1バイトであったら、
1000GBもの通信をしているわけ。
普段1000GBのデータ容量を使ってる所が
1GBが問題になるようなことはないよ

そんなことより人間の人件費を考えなさいと。
読みにくいコードは読むのに時間がかかる。
10秒余計にかかったら、それが積もり積もって(略
375Name_Not_Found:2013/09/14(土) 22:54:28.02 ID:9LvZEWHJ
>>374
そんな難しい話じゃないんだ

伝送量があと数百MBで料金あがっちゃう!削れ!、みたいなアットホームな話
最近では問題になることないからイメージできんと思うが

ちなみに人件費については、コード読むのに余計にかかった時間分
余計に給料払ってくれる会社が沢山あれば、SE業界はブラック
とか言われることも減るんだろうなあ…
376Name_Not_Found:2013/09/14(土) 23:04:40.56 ID:???
>>356

失礼だけど>>346のソースをパクらせてもらって、どんな感じか書いてみたよ
jQueryは使ってないけど

http://ideone.com/rD0vJC
377Name_Not_Found:2013/09/14(土) 23:24:33.78 ID:J1i2JugH
>>353

ソース参考になりました
indexOfのやつ真似させてもらいました
いちいちif文かかなくてもよかったんですね

function ucomp(a,b){
var u=["天才","秀才","普通","馬鹿"];
if(u.indexOf(a) <u.indexOf(b)){
return 1;
}
else{
return 0;
}
}
378Name_Not_Found:2013/09/14(土) 23:29:54.93 ID:9LvZEWHJ
>>376
Object.observe
何時ぐらいから本実装されんですかね?
379Name_Not_Found:2013/09/14(土) 23:35:22.74 ID:J1i2JugH
>>376
なんかわかりづらいです

比較関数を自分で作って
function () {mySort('number'),作った比較関数})

みたいに呼び出したりできるようにして欲しいです
380Name_Not_Found:2013/09/14(土) 23:36:24.52 ID:???
>>378
うーん、
Chrome,Firefoxの安定版で完璧に動くのはあと1年
モバイルも含めるとあと2年くらいかな
ES6の一部だから正式勧告は2014年末予定だね

まあobserveは結構特殊なものだけど、
同じく>>376で使ってるi18nAPIはもっと進みも早いし、
もっと使えるも、知ってて損のないものだよ

http://d.hatena.ne.jp/teramako/20130521/p1
http://note.chiebukuro.yahoo.co.jp/detail/n181230
381Name_Not_Found:2013/09/14(土) 23:36:28.54 ID:???
クレクレ厨に餌をあたえないでください
382Name_Not_Found:2013/09/14(土) 23:40:27.34 ID:???
>>381
まあこれくらいならやってほしいけど
>>379
http://ideone.com/U2HT6B
とりあえずこれでオシマイ
observeに凝るの疲れた
383Name_Not_Found:2013/09/14(土) 23:50:24.26 ID:9LvZEWHJ
>>380
うん、ざっくりは追っかけてるつもりでいます
仕事では古臭いことをやるケースが多いのでなかなか実践的には出来てませんが
384Name_Not_Found:2013/09/15(日) 00:04:16.61 ID:???
せやな…
385Name_Not_Found:2013/09/15(日) 00:19:00.07 ID:???
>>382
なんか無駄に複雑になってるなw
面倒なのでもうレビューしないけど1つだけ。

mapもさすがにそれだけあると
目ざわりだからこうするといいよ。

var map = function(array, func) { return [].map.call(array, func); };

まあ、実際にはunderscoreとか使えっちゅー話でもあるが。
386Name_Not_Found:2013/09/15(日) 00:36:15.54 ID:???
>>385
修正した

あと読みやすいようにアロー関数にしてみた
http://ideone.com/DRbOd4
387Name_Not_Found:2013/09/15(日) 00:36:27.07 ID:???
querySelectorAllってさ、イベントバインドするのに
ループ使わないといけないの?

jQueryみたいに

$('a').on('click', function() {}); (全てのa要素にclickハンドラをつける)

って簡単に書きたいんだけど?
388Name_Not_Found:2013/09/15(日) 00:38:46.08 ID:???
NodeList.prototype.map を作ったんだね。

mapとして取り出すか、メソッドはやすかは
方針次第だからどっちでもいいけど、
俺は将来NodeListにmapが追加されたら・・・とか
思っちゃうからあまり好きではないね。
389Name_Not_Found:2013/09/15(日) 00:47:09.79 ID:???
>>388
あくまでお遊びだから
あと暫くはES6の
array = Array.from(arrayLike)
を使ってねってなるんだと思ってる

ってことで
>>387
これでいいんじゃね
Node.prototype.on = function (evt, func) {
this.addEventListener(evt, func)
}

NodeList.prototype.on = function (evt, func) {
[].forEach.call(this, function (elm) {elm.on(evt, func)})
}
390Name_Not_Found:2013/09/15(日) 01:11:24.34 ID:???
>>386
アローって誰得なの…
391Name_Not_Found:2013/09/15(日) 01:16:17.65 ID:???
returnとfunctionを書かずに済むからmapなんかとの相性抜群
やはり短いほうが読みやすい
392Name_Not_Found:2013/09/15(日) 01:36:00.28 ID:???
>>391
短いほうが読みやすいってのはわかるんだけどな、
その前にまず、自分のコードを読みやすくしてからにしろと。
そんな小手先の書き方の前にまずやることがあるだろと。

http://jsfiddle.net/NwA63/1/
393392:2013/09/15(日) 01:49:11.24 ID:???
愚痴るけどさぁ、ぶっちゃけ初期バーションで
これぐらいのコード書いて欲しいんだよね。仕事なら。

上で出てるようなコードとか書かれてもさ
レビューに時間がかかるだけで全部書き直しだもの。

このコードもソート時の値の取得に、時間がかかりそうだから
メモ化するとか改善する点はあるわけ。

そのレベルでレビューしたいんだけど、
現実は上で出てるようなコードを
時間かけて読みといて、ダメな点を教えなきゃいけない。

はぁ、ここまで育ってくれるのにどれくらいかかるのか。
394Name_Not_Found:2013/09/15(日) 01:57:55.40 ID:???
>>392
講釈はありがたく受け取りますけど
数字ソート失敗してますがな…
395Name_Not_Found:2013/09/15(日) 02:00:19.90 ID:???
足りんかった
Firefoxで数字ソート失敗してます
講釈は重々承知致しましたが…
396Name_Not_Found:2013/09/15(日) 02:06:11.17 ID:???
五月雨で申し訳ございません
元の質問で、というか必要条件であるところの
空文字列だった場合のソートも失敗しているようでございます

お言葉は仰るとおりですので心に刻みたい所存であります
397392:2013/09/15(日) 02:08:35.56 ID:???
ソートのルールはlocaleCompareでしょ?
この規則は>>382丸パクリで変えてないよ。

これだけ読みやすければ、修正するのも簡単でしょ?
そのやり方でまたセンスが見えてくるんだが・・・。
398392:2013/09/15(日) 02:14:50.09 ID:???
コード修正するつもり無いし、
他の人のレスまとうと思ったけど
面倒になったので、アイデアだけ。

コード上でソートルールを書くのは
せっかくコードがテーブルに依存しなくなったのにもったいない。
(試してないけど、列数が増えてもコードに修正はいらないはず)

ソートのルールというのは、本質的には値の型の問題なので
colgroup要素とdata-*属性を使うかな。data-typeとか。
399Name_Not_Found:2013/09/15(日) 02:15:48.61 ID:4/IrQaYG
ワロタ
>>392先輩は会社でも同じようなことしてんだろうなw
400Name_Not_Found:2013/09/15(日) 02:19:02.27 ID:4/IrQaYG
>>398
そもそもなんでsortに比較関数渡せるのかっつーと
本質はそういうことだろうねえ
401392:2013/09/15(日) 02:23:30.00 ID:???
>>399
まったくもってそのとおりだよw
新卒が書けないのならまだわかるんだけどな。
新卒は素直にゆうこと聞いてくれるし。

なんであんなわかりにくいコード書くんだろう
馬鹿なのか? 技術力がないのか?
シンプルに素直に書けばいいだけなのに。

もうね。他人が書いたコードを”解析する”のはつかれるよ。
というかなんで解析しなくちゃならないんだ?
お前(コード書いた人)は問題の出題者か?
俺は問題の回答者か? お前が俺に問題を出題してるのか?
俺はそれを悩んで解かなきゃならないのか?

本当に意味不明。

コードってのはもっと気軽に小説のように読めないとダメなんだよ。
でないと、やってることがほんとうに正しいかなんてすぐにわからんだろ?

謎コードを時間かけて実際に動かしてデバッグして値確かめて、
あぁそういうことか一応確かにこれで動いてるな。
無駄ばかりだけどな!

何やってるんだか。
402392:2013/09/15(日) 02:28:01.67 ID:???
教育を兼ねてるつもりだから
ちゃんと読んでるけど、
本当なら読みにくい書き直し!で終わりたい

だが困ったことに読みにくいと直感で俺はわかるんだが、
その原因が俺が馬鹿なのか本当に読みにくいのかわからないから
一応読んでしまうという・・・。

読みにくい書き直し!で終わりたい。
403Name_Not_Found:2013/09/15(日) 02:35:30.43 ID:???
蛇足ってこういうのを言うんだろうなwww
ワロタ先輩、後輩のことはいいから自分のコードしっかりして!
仕様通り動かないってよ!
404Name_Not_Found:2013/09/15(日) 02:41:06.55 ID:???
>>392
Object.Observeはどこいったこれ?
そういう縛りプレイやってたんでしょ??
405Name_Not_Found:2013/09/15(日) 02:46:57.06 ID:???
もう触るなって、、、
ヤバイやつなの分からんか?
406Name_Not_Found:2013/09/15(日) 02:48:49.63 ID:???
>>404
言い訳はいいからさっさと直してやれよwww
質問者置き去りだけど
407Name_Not_Found:2013/09/15(日) 02:51:57.69 ID:???
1つ言うならjQueryを当たり前のように使う風潮は俺は嫌いだな。
それなら何でもライブラリを探せで話が終わるけど、
これ最初はもっと技術的な話だったでしょ?
標準ソート関数でいかにやるかっていう。

結局そこの部分が大事なわけで、他の部分でライブラリ使って、
俺スゲーアピールするのはズレてる気がする。
408Name_Not_Found:2013/09/15(日) 02:55:15.14 ID:???
荒らしにかまう奴も荒らし
アピールはほっとけ
生き恥を晒してるだけだからw
409Name_Not_Found:2013/09/15(日) 03:01:37.68 ID:???
質問者を無視して暴走したのも結構久しぶりだな
というか規制解除されてるタイミングと重なってるような
410Name_Not_Found:2013/09/15(日) 03:04:25.38 ID:???
ソートの項目数が増えるたことを考えると
>>392みたいに、比較関数の中でjQueryのメソッド使うとコスト上がりそう
先にソート内容を抽出しておいたほうが良くね?
411392:2013/09/15(日) 09:44:59.56 ID:???
先輩はヒントを上げるだけです。
答えは自分で考えなさい。

>>407
ライブラリ部分を自分のコードで
置き換えればいいだけだよ。
412392:2013/09/15(日) 09:51:31.09 ID:???
>>410
> >>392みたいに、比較関数の中でjQueryのメソッド使うとコスト上がりそう
jQueryって言ったって内部でquerySelector使ってたりするけどね。

> 先にソート内容を抽出しておいたほうが良くね?

それはわかってるから ”メモ化” って言った。
はい、わからない用語は自分で調べるようにw

重いのは重いだろうけど、最初に内容を抽出するのも
不要な部分を取得しているわけで、例えば列数が100ぐらいになった時
1列あればソートできるのに、無駄な99列取ることになるよね?
まあ必要な1列だけ取り出せってだけだけど。

まあ、最近は色々と速くなってるからパフォーマンスのことを考えるときの原則
ベンチマークしてからやれ。これを忘れないように。
413392:2013/09/15(日) 09:55:09.03 ID:???
>>407
> これ最初はもっと技術的な話だったでしょ?
> 標準ソート関数でいかにやるかっていう。

そんな話だったっけ?って
最初の方見たけど、
どこにそんな縛りが書いてあるの?
414392:2013/09/15(日) 09:57:30.63 ID:???
あぁ、標準”ソート” 関数か?
なら使ってるじゃん?

その他の部分にライブラリ使うなとかは書いてないなぁ。
415392:2013/09/15(日) 10:43:44.49 ID:???
さすがに「比較関数の中でjQueryのメソッド使うとコスト上がりそう 」って
いうのは気になったのでそこだけ修正しておいたよ。

http://jsfiddle.net/NwA63/3/

いわゆるシュワルツ変換だね。
はい、テストに出ますよ。調べておくようにw
416Name_Not_Found:2013/09/15(日) 10:56:04.34 ID:AwZt2ebl
再帰関数でいつ終わるかわからないのですが
関数が終わったときにコールバック関数を呼び出したいです

callback(関数、コールバック関数);
って呼び出せる関数ってありませんか?
教えてください
417Name_Not_Found:2013/09/15(日) 10:59:47.09 ID:???
再帰が終わったら関数を抜けて次の命令が実行されるんだから
知りたければ再帰の直後で検知すればいいじゃん
コールバックする意味あんの?
418392:2013/09/15(日) 11:01:23.54 ID:???
あ、dataを作るとき、td:nth-child()で検索して、
親のtrを取得したほうが良かったかも。
まあいいや。

ここまでやってから、アロー関数使えば
シュワルツ変換もっとシンプルに書けるのに
と言ってほしい。


余談

PPTPとhttpsのポートが開いてると
Request Timeoutになるようになってるな。
419Name_Not_Found:2013/09/15(日) 12:36:39.53 ID:???
意味不明な挙動に出くわしました。さっぱりわかりません。
助けてください。

Object.method('superior', function (name) {
var that = this,
method = that[name];
return function ( ) {
return method.apply(that, arguments);};});
がコード内に記述してあった場合。

〜略
$(this).fadeIn();
$("#result").html("Success!");
〜略

$(this).fadeIn();まで実行され、
$("#result").html("Success!");が実行されません。
Object.met〜がないと実行されます。

また、Object.met〜があった場合でも

〜略
$(this).show();
$("#result").html("Success!");
〜略

$(this).fadeIn();でなく、$(this).show();を使用すると
$("#result").html("Success!");が実行されます。

$(this).fadeIn();のバグなんでしょうか?
420Name_Not_Found:2013/09/15(日) 13:12:22.93 ID:???
> $(this).fadeIn();のバグなんでしょうか?

コード読まなくてもすぐに分かる。
>>419が書いたコードのバグ。

本当にバグなら、調べてから言うから質問系にはならない。
(バグを見つける人はしっかり証拠を見つけてから言うので質問しない)
421Name_Not_Found:2013/09/15(日) 13:44:08.75 ID:???
>>420
自分では問題がわかりません。全コード書くので、
原因を教えて下さい。
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;};
Object.method('superior', function (name) {
var that = this,
method = that[name];
return function ( ) {
return method.apply(that, arguments);
};});
$(function() {
$('#btnLoad').click(function() {
$('#loader').empty().addClass('loading').show();
var t = setTimeout(loadImage, 1000);
});});
function loadImage() {
var img = new Image();
$(img).load(function() {
$(this).hide();
$('#loader').removeClass('loading').append(this);
$(this).fadeIn();
$("#result").html("aaa");//表示されない
})
.error(function() {
alert('error');
})
.attr('src', '20111216013520.jpg');}

Object.met〜がないと表示されます。
422Name_Not_Found:2013/09/15(日) 13:54:37.30 ID:???
>>421
おまえこれ全部自分で書いたの?
423Name_Not_Found:2013/09/15(日) 14:18:44.93 ID:???
>>418
名人様、ここは他者のコードを批評する場ではありません。
あなたの暴虐武人ぶりにスレ住民全員が困惑しています。

あなたはこちらのスレのほうが向いてます。
http://toro.2ch.net/test/read.cgi/tech/1378640419
どうか移動してもらえませんでしょうか。
424Name_Not_Found:2013/09/15(日) 14:19:30.56 ID:???
>>422
Function.prototype〜とObject.method〜はjsgoodpartsから、
画像ロードは、どっかのwebサイトにあったのを使ってます。
現在公開中してるwebアプリケーションはこのコードを改造したものを
使用してます。実際は、パスワードを入力し照合し、mysqlに記録した
画像のファイル名を$.ajaxで取得してきて、
画像ロードしていますが、いろいろ機能追加してるときに、
不具合を発見しました。その不具合は、Object.method〜があった
ときに起こることまではつきとめました。
425Name_Not_Found:2013/09/15(日) 14:24:43.61 ID:???
関数内のvarをとりまとめて関数の最初で宣言するよう変えてくれるような
そんなsublimeのプラグインはないでしょうか?
426Name_Not_Found:2013/09/15(日) 14:50:21.11 ID:???
Sublimeスレでお聞きになってください
427Name_Not_Found:2013/09/15(日) 15:03:51.74 ID:???
sublimeの一般的機能に関してはsublimeスレで聞くべきたと思いますが
JavaScripting固有の問題ですのでスレ違いとは考えません
428Name_Not_Found:2013/09/15(日) 15:10:09.40 ID:???
「var 」で検索して手動で書き換えろ
以上
429Name_Not_Found:2013/09/15(日) 15:11:36.74 ID:???
それはsublimeより前のやり方であって、sublime以降のやり方ではありません
430Name_Not_Found:2013/09/15(日) 15:18:02.21 ID:???
sublimeに限らず、そのような機能を提供しているエディタなりIDEなりはあるでしょうか?
431Name_Not_Found:2013/09/15(日) 15:18:20.11 ID:???
いやいや、Sublimeとはいえ拡張機能がなければただのテキストエディタだし
自分で作れない、見つけられないのなら諦めろ
見つけたいのならSublimeスレ、作って欲しいのならPythonスレにでも行け
432Name_Not_Found:2013/09/15(日) 15:20:21.18 ID:???
javascriptから
a:hover{background:red}
ってhoverやりたいんですけど、
これは
obj.styleからはできないんですね
433Name_Not_Found:2013/09/15(日) 15:21:59.68 ID:???
sublimeに関する話題はsublimeのスレで聞いたほうがいいよ
同じことを考えている人がいればそっちのスレ見るわけだし
434Name_Not_Found:2013/09/15(日) 15:25:05.74 ID:???
それにそもそもsublime textのプラグインはPythonで書くのでJavaScript固有の問題じゃない
スレ違いな話題はやめてほしい
435Name_Not_Found:2013/09/15(日) 15:33:06.66 ID:???
プラグインをどう書くかなど聞いていません
そして>>430で更に問題は一般化されているのです
本質的にJavaScriptの問題だということがおわかりいただけたかと思います
436Name_Not_Found:2013/09/15(日) 15:33:55.45 ID:???
スレ違いという書き込みこそスレ違いなんです
それをご理解下さい
437Name_Not_Found:2013/09/15(日) 15:38:00.20 ID:???
またお前か
438Name_Not_Found:2013/09/15(日) 15:38:19.24 ID:???
寝てる間にこんな面白い流れになってたなんて…
439Name_Not_Found:2013/09/15(日) 15:43:50.13 ID:???
>>415
http://jsfiddle.net/NwA63/3/

これを試してみましたが、番号でソートすると
1,11,12,...,2,21,22,...

になっていますが
440Name_Not_Found:2013/09/15(日) 15:48:22.19 ID:???
>>435-436
お前の理屈なんて聞いてないから
441Name_Not_Found:2013/09/15(日) 15:48:44.99 ID:???
>>439
触んなって
奴が戻ってきたらお前さん責任取れんのか?
442Name_Not_Found:2013/09/15(日) 15:50:20.79 ID:f5OyVNVL
>>424
どうやってデバッグしている?
JSコンソールにエラーは出ていない?
Object.methodの部分が何について書いてあるのかちゃんと本は読んだ?
443Name_Not_Found:2013/09/15(日) 15:51:18.07 ID:???
>>424
FunctionやObjectのprototypeをいじったら、
jQueryとかのライブラリが正常に動く保障はまったく無い
444Name_Not_Found:2013/09/15(日) 15:52:55.39 ID:f5OyVNVL
>>425
ないよ
445Name_Not_Found:2013/09/15(日) 15:55:21.62 ID:???
SublimeのプラグインじゃなくてJSパーサーの方向性の方がいいかもな
446Name_Not_Found:2013/09/15(日) 16:02:17.23 ID:???
ありがとうございます
やはりないのですか
今みていたのですがJavaScript Validator with Esprimaってプラグインで使っている
esprimaというプロダクトで文法を解析できるようなのでこれでできるのかもしれません
447Name_Not_Found:2013/09/15(日) 16:04:21.72 ID:???
おうwww
頑張れよw

(手で直すほうが100倍早いなんて野暮なことは言わない)
448Name_Not_Found:2013/09/15(日) 16:08:56.98 ID:???
できたらGitHabで公開してね
449Name_Not_Found:2013/09/15(日) 16:34:45.26 ID:???
>関数内のvarをとりまとめて関数の最初で宣言するよう
これってメリットあるん?
初心者のオレにはさっぱりわからん
450Name_Not_Found:2013/09/15(日) 16:44:29.14 ID:???
誰かの書いたコードを自分が読みやすい形に直したいってことでしょきっと
451Name_Not_Found:2013/09/15(日) 16:48:38.00 ID:???
http://javascript.crockford.com/code.html

The var statements should be the first statements in the function body.
452Name_Not_Found:2013/09/15(日) 16:55:30.45 ID:f5OyVNVL
>>449
スコープ内のどこで変数宣言しても全部最初に定義される。例えば

var a = 'hoge';
(function(){
  console.log(a); // 2. undefinedになり
  var a = 'fuga'; // 1. 最初にこの宣言だけ行われ(3. 代入はこの行で実行)
})();

こんな感じで
なので、そのスコープ内で宣言される全ての変数を把握していないと、おや?ということになる
ひとりで書いてれば気にならんけど、他人のコードをメンテする場合とか、結構イラッとする

スコープの最初に書き直されるのはどうかと思うけど
今いじってるスコープで宣言される変数の一覧を出すとか、色つけてくれたりしたら便利だと思う
453Name_Not_Found:2013/09/15(日) 17:17:44.48 ID:???
警告を出すだけならJSLintとかの仕事だ
それを機械的に直したいっていうのはちょっとニッチすぎるな
454Name_Not_Found:2013/09/15(日) 17:20:53.18 ID:???
「var 」を全部「let 」に置換すればいいよ
letなら(まともに実装してれば)巻き上げないから動けば気にしなくていいし、
動かなければあんまりいい設計じゃないってことで動くよう最小限書き直せばいい
それで妥協するのでもいいと思うよ
455Name_Not_Found:2013/09/15(日) 17:28:15.06 ID:???
>>439

> これを試してみましたが、番号でソートすると
> 1,11,12,...,2,21,22,...

はい知っています。でも答えは書きません。
正確にはChromeでは数字ではなく数値として
扱うようで数値での並び順になっています。

ヒントは>>354とその付近で既に示しています。
あとは自分で頑張りましょう。
456Name_Not_Found:2013/09/15(日) 17:31:48.10 ID:???
ダメな先輩きたー
>>349が責任とってお相手して差し上げろよww
457Name_Not_Found:2013/09/15(日) 17:33:42.40 ID:???
>>452
そんな挙動するのか、ありがとう。
とりあえず、他人のコード把握したいなら、さくらエディタでのgrepで
〜.jsファイルに対してvarで抜き出したいいんじゃな?
458Name_Not_Found:2013/09/15(日) 17:36:14.48 ID:???
varを関数の上の方に持ってくるべきという主張にはあまり賛同できないな。

varを関数の途中に持ってくるのは、この変数はここから使います。
という意思表示に現れ。

それを上に持ってくるのは、自分の考えをJavaScriptという
言語仕様だけのためにねじ曲げられているということ。
varを関数に途中に持ってくるのは理由があってやっているが
頭に持ってくるのは理由がない。

こういうのは、関数内でvarで宣言するよりも前に
変数が使用されていたらjshintなどで警告出させるべきだが
さてそんなオプションあったっけ?

もう一つ、変数の再定義をした時にも警告を出す必要があるが
jshintであればデフォルトでONだったはず。
459Name_Not_Found:2013/09/15(日) 17:39:31.65 ID:???
> こういうのは、関数内でvarで宣言するよりも前に
> 変数が使用されていたらjshintなどで警告出させるべきだが
> さてそんなオプションあったっけ?

latedefでいけるかな?
ちょっと手元に環境がないので試せない。
460Name_Not_Found:2013/09/15(日) 17:40:29.79 ID:???
>>458
そりゃそうだ
自分もどこでもいいと思うよ

他の言語から入ってきた人やJS初心者とか
色んな人が触るコードでいろいろコーディングスタイル厳しく統一していったら
最初にまとめて書いておこうねってなるとは思うけど
その程度のことだと思う
461Name_Not_Found:2013/09/15(日) 17:46:02.91 ID:???
宣言より上の操作でエラーが欲しければlet使えばいい。
宣言前の使用は実行時エラーになるが、
二重宣言とかはコンパイル時エラーで出してくれる。
462Name_Not_Found:2013/09/15(日) 17:47:42.05 ID:???
>>460
まぁ自分しか見ない・編集しないコードであれば好きにやりゃいいけど
他人が読む可能性があるコードでオレオレコーディングはやめてくれ
463Name_Not_Found:2013/09/15(日) 17:50:02.74 ID:???
俺俺コーディング??
タブ流とスペース流みたいなものでどっちが正しいとかないと思うが
何言ってんだか……
464Name_Not_Found:2013/09/15(日) 17:54:10.59 ID:???
varとか宣言がブロックスコープになる言語使ってきた人じゃないのなら混乱もないだろうし、
>>458のメリットも捨てがたい

そもそも元々柔軟さをとってそういう仕様になったんだから
よっぽどの場合を除き、仕様に則ってコーディングするのが普通じゃない?
あえてJSのスタイルに逆らうほうがオレオレだと思うけど
465Name_Not_Found:2013/09/15(日) 17:54:35.46 ID:???
>>463
え、JavaScript に関して言えば別だろ
466Name_Not_Found:2013/09/15(日) 17:57:27.72 ID:???
JSは裾野が広すぎてスタンダードが決めづらいだろう
JsDocみたいな提唱はあるけど
467Name_Not_Found:2013/09/15(日) 17:57:39.01 ID:???
自分が作ったコードをあとで馬鹿たれが編集するかもしれないって考えてコーディングするのがプロとしての勤めじゃないの?
なんでトラブルの原因になるかもしれないものをわざわざ残すような書き方をするのか
468Name_Not_Found:2013/09/15(日) 18:00:00.99 ID:???
>>460
> 色んな人が触るコードでいろいろコーディングスタイル厳しく統一していったら
> 最初にまとめて書いておこうねってなるとは思うけど

いやしないほうがいいと言ってるんだよ。

コーディングスタイルに関してはjshint等で設定をつめて
それに従わせるだけだからあえて説明する必要もない。
(エラーの意味ぐらい自分で調べろというだけ)

変数の巻き上げが起きない別の言語の話だが、中途で入ってきた人が
前の会社の癖(COBOLらしいが)で変数を関数の上で全部宣言していたのよ。

その時は、まあそんなスタイルもありかと思ったが、まあこれがうちの(俺の)
やり方だからってことで変数を使用する所で宣言するように直していったら
コードがかなり見やすくなった。

理由としてはこんな所。
・変数を利用する範囲が小さいから変数名は短くても十分
変数を冒頭に置くと関数内で被らないようにしないといけないから
分かりやすくということで、長い名前になりがち。
変数を利用する範囲が小さいならば、コード見れば何の値なのかすぐに分かる。

・変数の宣言と初期化処理を二重に書かなくて済む。
コントロールブレイクっていうCOBOLでのコードパターンがあるんだが
ループ中にブレイクしたら変数初期化をするなんてコードがあるんだよね。
ループの中だけでしか使わない変数なら、その場で宣言して代入すれば良いのにって思う。

・変数に代入した後、その値を変える必要が少なくなった。
宣言と使用箇所が分かれてると必然的に変数の再代入が必要になる。
再代入はするべきではないって話は、関数型言語を知らばわかる。
ここもテストに出るので勉強しておくようにw
469Name_Not_Found:2013/09/15(日) 18:01:46.43 ID:???
宣言を頭に持ってくるのは気持ちの問題でしかない
だってどこに書いても頭に持ってきたかのように振る舞うのだからね
あえて頭に書いてもロジック的なメリットはないし、同じことだ
それならどこにでも書けるというのを活かした方が正しい
少なくとも頭にまとめるべきというのは正しくない
現にそういうチェックはJSLintでもされてない
470Name_Not_Found:2013/09/15(日) 18:03:41.63 ID:???
>>468
静的方面から入った人は頭を見れば全部わかるみたいに考える人が多いから
そこの文化に従う事になればしょうがないことだと思うよ
471Name_Not_Found:2013/09/15(日) 18:04:00.39 ID:???
>だってどこに書いても頭に持ってきたかのように振る舞うのだからね
>あえて頭に書いてもロジック的なメリットはないし、同じことだ

え、JS素人ですか
472Name_Not_Found:2013/09/15(日) 18:04:35.71 ID:???
>>461
> 宣言より上の操作でエラーが欲しければlet使えばいい。

そのとおりだが、letはIE10以上でないと対応していないという
現実的な問題がある。

http://msdn.microsoft.com/en-us/library/ie/s4esdbwz(v=vs.94).aspx
473Name_Not_Found:2013/09/15(日) 18:05:54.06 ID:???
>>471
素人はお前だボケ
それとも流れが読めないのか?
474Name_Not_Found:2013/09/15(日) 18:06:09.97 ID:???
>>470
> 静的方面から入った人は頭を見れば全部わかるみたいに考える人が多いから

その言い方じゃ、静的言語を知らないとしか思えないぞ。

なぜなら静的言語で関数の頭でしか宣言できない言語は
ごくわずかだからだ。

ちゃんとどっちも勉強しておけよ。
全くどいつもこいつも(このスレだけの話じゃない)
475Name_Not_Found:2013/09/15(日) 18:07:22.36 ID:???
ここ1年IEを考えたことなんて数回しか無い。
できるだけ意図的に無視してるな。
476Name_Not_Found:2013/09/15(日) 18:08:13.72 ID:???
>>473
へー、自分以外が編集したときに宣言の巻き上げで問題を起こす可能性が0なのかー
さすがプロ(笑)
477Name_Not_Found:2013/09/15(日) 18:08:53.48 ID:???
>>474
だれも出来ないなんて言ってないよ
そういう文化があるし、そういうコードがJavaでもC++でも大多数
知らないの???
478Name_Not_Found:2013/09/15(日) 18:09:56.12 ID:???
>>474
頭かてーな
JavaScriptかどうかに関わらず言語の仕様に合わせろって言ってるだけだろ
479Name_Not_Found:2013/09/15(日) 18:11:23.50 ID:???
>>475
バグの原因の一つは「そんなこと考えていなかった」だからね。
この機会に考えるようにしよう。

これが現在のブラウザの使用率だ。
http://marketshare.hitslink.com/browser-market-share.aspx?qprid=3&qpcustomb=0
IE8 ・・・ 21.65%
IE10 ・・・ 18.65%
IE9 ・・・ 9.02%

それにしてもこれだけ使用している人が多いブラウザを
考えないでいい人って楽だね。

なんの目的にJavaScriptを使ってるの?
仕事じゃなさそう。
自分で動けば十分な使い方かな?
480Name_Not_Found:2013/09/15(日) 18:11:47.59 ID:???
>>476
0だよ

function f(){
var x
...
x = hoge



function f(){
...
var x = hoge

はロジック的に全くの等価
反例があるのならよろしくw
481Name_Not_Found:2013/09/15(日) 18:13:29.25 ID:???
>>480
その…の部分で問題が起きるかもしれないんだろ・・・
もしかして変数の巻き上げって現象を知らないのか?
482Name_Not_Found:2013/09/15(日) 18:13:45.09 ID:???
リロードしたら伸びすぎワロタ
483Name_Not_Found:2013/09/15(日) 18:15:32.35 ID:???
>>481
どう問題が起きるのか書いてくれないかな?
こっちアホだからわからんのよ?

それと変数じゃなくて、宣言の巻き上げでしょ?
484Name_Not_Found:2013/09/15(日) 18:16:25.65 ID:???
なつかしー展開。
一昔前は、何人ROMってたんだよってくらい
突然勢い伸びてた時期もあったなー。
485Name_Not_Found:2013/09/15(日) 18:16:31.97 ID:???
>>477
> そういう文化があるし、そういうコードがJavaでもC++でも大多数

大多数であるというデータがあるなら教えてよ。

少なくともJavaやC++で変数の宣言場所は自由だし、
俺の知る限りそれを守ってるプロジェクトなんか知らない。

上の方で宣言するしかない言語は知っているが、
どこでも宣言できるのに、上の方で宣言しろなんて文化は聞いたことがない。
486Name_Not_Found:2013/09/15(日) 18:16:37.44 ID:???
487Name_Not_Found:2013/09/15(日) 18:17:50.72 ID:???
>>468
>変数を冒頭に置くと関数内で被らないようにしないといけないから

スコープ内のどこでも、かぶっちゃいけないと思うの
多重定義は見逃してもらっているだけだと思ってる


>>477
まるで世界中の物を見てきたかのような口ぶりで
軽々しく「〜が大多数」とか言う人のことは話半分で聞いておけ
って爺ちゃんが言ってた
488Name_Not_Found:2013/09/15(日) 18:18:52.66 ID:???
>>486

var a = 'hoge';
(function(){
  console.log(a); // 2. undefinedになり
  var a = 'fuga'; // 1. 最初にこの宣言だけ行われ(3. 代入はこの行で実行)
})();

これと

var a = 'hoge';
(function(){
  var a;
  console.log(a); // 2. undefinedになり
  a = 'fuga'; // 1. 最初にこの宣言だけ行われ(3. 代入はこの行で実行)
})();

これは等価だと思うが?
489Name_Not_Found:2013/09/15(日) 18:23:37.22 ID:???
>>487
> スコープ内のどこでも、かぶっちゃいけないと思うの

いやいや、そういう話ではなくてね。

まず宣言の巻き上げが起きない
JavaScript以外の言語の話ね。

例はJavaScriptで書くけどw

function foo() {
 for(let i = 0; i < 100; i++) {
  console.log(i);
 }
 for(let i = 0; i < 100; i++) {
  console.log(i);
 }
}

こういうコードで、変数定義を関数の上の方に
持ってくるとかぶっちゃうわけよ。

スコープ内でかぶるとかいう話ではなく、
ブロックスコープが、関数スコープに
広がってしまうからかぶっちゃうのよ。
490Name_Not_Found:2013/09/15(日) 18:23:45.54 ID:???
>>486
これは結局こう書かないと行けないねってことで
>>488の通りだと思うけど

var a = 'hoge';
(function(){
  var a = 'fuga';
  console.log(a);
})();
491Name_Not_Found:2013/09/15(日) 18:24:52.72 ID:???
letを使うのは有用だけど、ここはESスレじゃないし
>>452のように、エディタやIDEでなんとかするのが建設的な気がする

とりあえず、sublimeのプラグインで書いてみようかと思うんだが
やっぱ色つけるのが良いですかね?他になにか案ある?
492Name_Not_Found:2013/09/15(日) 18:25:52.59 ID:???
>>489
なんでJSすれでJS以外の言語仕様の話持ち出すの?
493Name_Not_Found:2013/09/15(日) 18:25:57.29 ID:???
> >>452のように、エディタやIDEでなんとかするのが建設的な気がする

jshintでやれといったじゃん
人のはないちゃんと聞けよw
494Name_Not_Found:2013/09/15(日) 18:27:09.51 ID:???
Web製作管理板とは言え、最近はWebアプリというものもあるし
最先端技術を蔑ろにする方が現実を見てないと思うな
もうIEガーはいいよ
495Name_Not_Found:2013/09/15(日) 18:27:13.21 ID:???
>>492
変数は使用する所で宣言した方がいいという
話をしているだけですが、

他の言語の経験は、JavaScriptには当てはまらないとでも言いますか?
496Name_Not_Found:2013/09/15(日) 18:27:23.19 ID:???
嫌だよめんどくせえ
497Name_Not_Found:2013/09/15(日) 18:27:46.32 ID:???
>>494
「IEガー」がいい理由って何?
498Name_Not_Found:2013/09/15(日) 18:29:02.35 ID:???
>>492
ア・ス・ペ

>>495
JavaScriptスレでJavaScriptの変数の宣言場所の話をしてるのですが・・・
他の言語での変数宣言の場所の話は総合スレかなんかでどうぞ
499Name_Not_Found:2013/09/15(日) 18:29:40.83 ID:???
>>498
えぇ、ですからJavaScriptの変数の宣言場所の話をしていますよ?
500Name_Not_Found:2013/09/15(日) 18:31:06.40 ID:???
それではEcmaScriptスレの意見を伺ってみましょう。
http://toro.2ch.net/test/read.cgi/tech/1325448978/319-331
うーん、やっぱりここが頼りみたいですよ。
501Name_Not_Found:2013/09/15(日) 18:32:44.18 ID:???
>>495
それはわかるよ。俺もfor(var i=0 ; i<100 ; i++)って書くよ

んで、JSではこれをスコープの途中で書くと、このvar iが
スコープの最初に来ちゃう仕様だね、って話してんじゃん?
502Name_Not_Found:2013/09/15(日) 18:33:40.03 ID:???
>>500
そのスレは失敗に終わったECMAScript 4を語るスレです。
ちゃんとスレタイに書いてるじゃないですか?

ECMAScript Death 4 って
503Name_Not_Found:2013/09/15(日) 18:36:43.86 ID:???
>>491
色でいいと思うぞ、sublimeの機能はよく知らんが
見た/書いた時点でローカル変数であることがわかればいいんだから
504Name_Not_Found:2013/09/15(日) 18:37:10.26 ID:???
>>502
ワロタwそれはたまたまw

ちゃんと最近はES6やES7について語ってるよ
505Name_Not_Found:2013/09/15(日) 18:39:00.17 ID:???
>>501
そうだよ?

だからといって、関数の上に持ってくるのは
いいとは思えないと言ってるんじゃん。

関数の上に持ってくるのは、forループだけでしか使わないという
意思を無視して、言語仕様に歪められてるだけだと。

そこで「現に他の言語では使用する場所で宣言している」という
実例をあげたらいかんの?

プログラム言語の話なのに、現在のJavaScriptだけの世界で考えなきゃいかんの?
他のプログラム言語の経験は役に立たないと言わんばかりだね。

全く俺なんでCOBOLまで知ってるんだろう。使わんのにw
506Name_Not_Found:2013/09/15(日) 18:41:38.59 ID:???
(Pascal な俺はJSでも宣言は上にまとめてる、なんて言ったら吊るし上げにされそうな流れだ…)
507Name_Not_Found:2013/09/15(日) 18:42:10.70 ID:???
Cでは最初に宣言しなければならなかったがC++ではどこでも良くなった
つまりはそういうこと
508Name_Not_Found:2013/09/15(日) 18:42:43.20 ID:???
>>505
いや、そんな話してないってば
わかってもらえると思って直球で書かなかった俺も悪いんだけど

使う場所で宣言したほうがわかりやすい、って個人の感想じゃん


あと、関係ないけど、最後の1行が地獄のミサワっぽくて面白かった
509Name_Not_Found:2013/09/15(日) 18:43:00.88 ID:???
名人様方、ご講演誠にありがとうございました。
お出口はこちらとなっております。
http://toro.2ch.net/test/read.cgi/tech/1378640419/
510Name_Not_Found:2013/09/15(日) 18:44:14.83 ID:???
でも皆さん御用達のjQueryでもクロックフォードさんに従って(=上で宣言)なかったっけ?
最近のソースは違うのかな
511Name_Not_Found:2013/09/15(日) 18:44:30.32 ID:???
>>508
> 使う場所で宣言したほうがわかりやすい、って個人の感想じゃん

違うよ。俺の経験から結論が出た。

使う場所で宣言したほうが、見やすくわかりやすいコードになる。

その理由は、既に書いたつもりだけどな。
512Name_Not_Found:2013/09/15(日) 18:45:42.84 ID:???
>>>個人の感想じゃん

>>違うよ。俺の経験から結論が出た。

??????????????????
513Name_Not_Found:2013/09/15(日) 18:45:52.04 ID:???
>>511
>違うよ。俺の経験から結論が出た。
>使う場所で宣言したほうが、見やすくわかりやすいコードになる。

これは個人の感想だと思うんですけどねぇ・・・
514Name_Not_Found:2013/09/15(日) 18:49:18.76 ID:???
クロックフォードスタイルがいいのはvarを一度しか書かなくてよくて、冗長にならないこと
varで開始場所を示すというけど、
ローカル変数を宣言なしで使える言語では開始場所なんて示さないのに何の問題もないのだから
そんな機能はいらないと思う
515Name_Not_Found:2013/09/15(日) 18:49:31.24 ID:???
ジェネレーターで作ってみた
http://i.imgur.com/O6oQpgS.jpg
516Name_Not_Found:2013/09/15(日) 18:50:32.18 ID:???
クロックフォードスタイルじゃないとバーバーバーバー書いて馬鹿みたいになる
517Name_Not_Found:2013/09/15(日) 18:50:55.24 ID:???
>>513

えーと、つまりさ、

あんたは見やすいコードというのは
全て個人の感想だって言いたいわけ?
518Name_Not_Found:2013/09/15(日) 18:51:25.89 ID:???
うーん、流石名人はおっしゃることが一味違うなぁ
519Name_Not_Found:2013/09/15(日) 18:53:23.99 ID:???
>>515
あるんだwww
520Name_Not_Found:2013/09/15(日) 18:54:08.14 ID:???
varなんぞ書かなくていいなら書かない方がいい程度のもの
だから最初にまとめて宣言する
521Name_Not_Found:2013/09/15(日) 18:54:19.18 ID:???
俺も前にまとめて書くの好きなんだけど、
一時期はvarを宣言全部に書いてるコードを見て素人臭いと思うようになったが
for文とかはいいやって思って折衷案でやってる
変数が増えたときにコンマとピリオドの付け替えが面倒っちゃ面倒
522Name_Not_Found:2013/09/15(日) 18:54:27.95 ID:???
>>510
jQueryは優れてると思うけど
jQueryのコーディングスタイルを
盲信してるわけじゃないんでね。

わかりやすい所で言えば、
jQueryのインデントをタブでやるなんていう
規約はお断りだ。
523Name_Not_Found:2013/09/15(日) 18:55:09.99 ID:???
秀丸でお勧めのJavaScriptマクロを教えてください
524Name_Not_Found:2013/09/15(日) 18:55:44.94 ID:???
>>517
なんでそうなるのか(困惑
525Name_Not_Found:2013/09/15(日) 18:56:32.63 ID:???
>>521
関数型を知ると今度は、代入なしの宣言が嫌になると思うよw

例えばこんなの

function foo() {
 var i;

 ・・・色々コードがあって

 i = 0;
}
526Name_Not_Found:2013/09/15(日) 18:56:43.17 ID:???
>>523
ひで丸を投げ捨ててsublime textを使う
527Name_Not_Found:2013/09/15(日) 18:57:08.51 ID:???
>>517
本質的にはそうだと思う
そのコードを扱う人の集合が変わると、ぜんぜん違う
528Name_Not_Found:2013/09/15(日) 18:59:05.53 ID:???
>>524
俺が実例上げて見やすいコードになるって言ったら
お前は理由も言わずに、個人の感想だって言ったからだろ?

理由がないのなら、見やすいコードは全て個人の感想だ言ってるのも同然だ。

いきなり個人の感想呼ばわりされた、俺のほうが困惑だw
529Name_Not_Found:2013/09/15(日) 18:59:44.78 ID:???
>>525
そうそう、代入なしの宣言は最近書いたことないわ
宣言の順番変えたりして無理やり代入できるようにしてる、本末転倒かなとも思うけど
530Name_Not_Found:2013/09/15(日) 19:00:07.28 ID:???
>>527
> そのコードを扱う人の集合が変わると、ぜんぜん違う

じゃあ、コードを扱う集合が
どんな人達なのか考えなきゃいけないな。


つまり馬鹿な集団なのかどうか?ってこと。
531Name_Not_Found:2013/09/15(日) 19:02:22.27 ID:???
>>530
自分がおかしいと考えたことは無いのか
532Name_Not_Found:2013/09/15(日) 19:03:44.97 ID:???
>>529
そこまでやる勝ちはあるよ。

例えばScalaには
(って別の言語を出したらまたアイツがでてくるのかねぇ。うんざり)

varとvalというものがある。varが一般的な変数宣言で使うやつで、
valは再代入不可の変数。一旦代入したらその値はもう変えられない。
Scalaで推奨されているのはvalの方。

説明は面倒なので、
なぜこういうものがわざわざ用意されているかを察してくれw
533Name_Not_Found:2013/09/15(日) 19:04:44.02 ID:???
>>531
お前のほうが(略
534Name_Not_Found:2013/09/15(日) 19:06:19.04 ID:???
JavaScriptにおけるvarは単なる必要悪だから
それにかかずらう時間をいかに小さくするかだけが問題
ゆえにツールで生成するのがファンナルアンサー
535Name_Not_Found:2013/09/15(日) 19:06:30.27 ID:???
ここまで自信家だと、逆にかっこいいな
煽りとかじゃなくて純粋に

>>392さえなかったらと悔やまれる…
536Name_Not_Found:2013/09/15(日) 19:06:31.03 ID:???
>>532
あんたの論では、letが普及した後に吠えたほうがいいんじゃない
varはvarでletはletなんだから
537Name_Not_Found:2013/09/15(日) 19:07:22.58 ID:???
>>536
ルールに背く俺かっけえええええええ
なプログラマはいらないです
538Name_Not_Found:2013/09/15(日) 19:11:11.05 ID:???
ん?
539Name_Not_Found:2013/09/15(日) 19:12:26.79 ID:???
>>535
そのコードに未解決の問題が
残っているなら教えてくれ。

>>536
意味がさっぱりわからないw
540Name_Not_Found:2013/09/15(日) 19:16:10.87 ID:???
>>539
いや別にいいんだけどさ

むかし、JavaScriptメーリングリストがあった頃に
すっごい自信家で言葉もキツイんだけど
質問者の意図はエスパーしてでも完璧な回答する人がいて
それを思い出しただけ
541Name_Not_Found:2013/09/15(日) 19:17:47.90 ID:tPTE60ZD
【環境】Windows、IE8, 9, 10
【何をしたのか】ページをIE8互換モードで表示するようにし、showModalDialog()のスクリプトを実行したところ、IE10のみポップアップの子画面が小さく使い物になりません。
        showModalDialog()にて表示するページがフレームで分けているためなのですが、IE9まではできてました。
        ※いろいろ探しましたが、IE9でも同様の問題が起きると書かれた記事もありましたが、IE8互換モードにすることで解消できました。
【期待する結果】IE8,9と同じ画面サイズになるようにしたいです。うまい解決方法が知りたいです。
【サンプルコード】http://developer0000.digi2.jp/main.html
        IE8,9 と IE10で実行すると明らかです。

宜しくお願いします。
542Name_Not_Found:2013/09/15(日) 19:18:31.62 ID:???
うん、やっぱり代入と一緒に宣言したほうがいいね、基本的には
543Name_Not_Found:2013/09/15(日) 19:18:32.24 ID:???
次から質問限定じゃなくて総合スレにしませんか?
ここ質問スレだけどたまには議論したいこともあるでしょう
544Name_Not_Found:2013/09/15(日) 19:19:59.61 ID:???
>>543
そうじゃなくてちゃんとプログラム板のJSやESスレに来てよ
待ってるからさあ
545Name_Not_Found:2013/09/15(日) 19:22:57.47 ID:???
>>541
window.open使えば
546Name_Not_Found:2013/09/15(日) 19:24:27.09 ID:???
ライブラリで擬似ポップアップウィンドウ出すのが一番地球にやさしい
547Name_Not_Found:2013/09/15(日) 19:25:58.28 ID:???
>>540
大丈夫、リアルの俺は自信家じゃないからw

後輩から(先輩もあるが・・・)コードレビュー依頼きてぱっとみで見にくい、
冗長だと思うんだが、それで突き返さないでどういう発想で書いたのか想像しながら
何が問題でどういう風に考え方を変えるべきかをコードを手元で直しながら突き止めてる。

要約するとコードレビューの内容と同じものを俺が作ってるんだよ!
教育だから仕方ねぇけど、最初から俺が全部やったほうが早い感ぱねぇw

一目でぱっと判断した決断を信じて、さっさと突き返せばいいんだろうけどさ。
俺のほうが理解してないんじゃないかってどうしても思ってしまう。

やってみると最初の判断は正しくて、半分から3/4ぐらいの量で
シンプルに書き直せるんだよな。上でやってみせたのと同じ。

助けてくれ、頼むから最初からレビューに耐えるコードでレビュー依頼してくれorz
548Name_Not_Found:2013/09/15(日) 19:28:05.42 ID:???
>>541
標準モードでやるしかねぇだろ?

正しい動作は1つに決まっているが、
間違った動作というのはたくさんあるんだからさ

互換モードの正確な動きは
誰にもわからんよ。
549Name_Not_Found:2013/09/15(日) 19:33:02.97 ID:???
確かIE10の互換モードはポンコツで
IE11からは無くなるとかなんとかじゃなかったっけ?

もう普通にモダンブラウザ中心で開発するのが良いと思う
自分も今年に入ってからはIE8もサポート外にする運動に参加してる
550Name_Not_Found:2013/09/15(日) 19:34:07.80 ID:???
互換モードの切り替えボタン、なんであんなところに付けたんだよ!
間違えて押して気づかない人大杉んだろ!
551Name_Not_Found:2013/09/15(日) 19:35:18.62 ID:???
>>541
くっそwww
またクソ見てぇなコード見てしまった。
もうレビューしねぇぞ。

でもな、1つだけ言っておく。

お前ウェブで拾った内容をよくわからんままコピペしてるだろ?

タグが大文字小文字混じってる。しかもhtmlタグにいたっては、
開始タグが大文字で終了タグが小文字だ。
こういうことになるのは、コピペしているのが原因だ。

全てのタグの正しい使い方を勉強しろ。簡単な所までコピペするな。
基礎の基礎がわかっていないということを
ちゃんと自分で自覚してるか? してないなら自覚しておけよ。
552Name_Not_Found:2013/09/15(日) 19:37:13.98 ID:???
自分のところもjQuery2が出てから、いつIE8外そうかという話題をよくする。
早ければ来年、現実だと2年後くらいになりそうかな。
553Name_Not_Found:2013/09/15(日) 19:37:18.77 ID:???
>>549
> 自分も今年に入ってからはIE8もサポート外にする運動に参加してる

その運動の内容を教えてくれ。

えーとつまりだな。

IE8をサポート外にすることで発生する
さまざまな問題、クレーム、動きませんという内容に

その運動ではどのように対応しましょうと提案しているのだ?
554Name_Not_Found:2013/09/15(日) 19:38:37.59 ID:???
>>549
来年の4月9日まではIE8サポートしようかと思う
555Name_Not_Found:2013/09/15(日) 19:41:19.09 ID:???
>>552
jQuery 2.0系を参考にするのであれば、
jQuery 1.9系のサポートが終わった時を
目安にするのはどうでしょうか?

知っての通り、1.9系は2.0系と同じAPIを持っています。
サポートブラウザが違うだけです。

jQueryがIE対応がまだ必要と思えば1.9系のサポートは続きます。
そしてjQueryが1.9系を終わらせるときは古いIEのサポートが
もはや不要と思った時なはずです。

jQueryに判断を委ねるのもいいと思います。
556Name_Not_Found:2013/09/15(日) 19:43:21.60 ID:???
>>554
サポート期間って何を基準に決めてるの?
557Name_Not_Found:2013/09/15(日) 19:43:32.48 ID:???
1.x系と2.x系じゃないの?
558Name_Not_Found:2013/09/15(日) 19:43:32.41 ID:???
>>553
運動は心のなかで同士のことを思いながら参加してる
もちろん気にしないのが理想だけど、そうは勿論出来ない

本当に最近だと、モダンブラウザで動くように作って、
レガシーブラウザであまりにも酷い時は別にコード+αで書く

ページを分けれるときにはできるだけ分けさせてもらって極力シンプルにダサく作る
最初から古い環境でも動くように強く意識しては書かない
それがささやかな抵抗と未来への移行の準備
559Name_Not_Found:2013/09/15(日) 19:45:48.03 ID:???
>>555
勿論そのくらいのきっかけがあれば即日切る方針になるだろうね。
本当にあとはきっかけ待ちなんだよね。
560Name_Not_Found:2013/09/15(日) 19:46:11.89 ID:???
IE8は手抜き実装すぎてポリフィルが困難
561Name_Not_Found:2013/09/15(日) 19:48:11.07 ID:???
この中にサポート期間の判断に、
使用者数を考える人はいないの?
562Name_Not_Found:2013/09/15(日) 19:48:36.62 ID:???
公式のサポートが終わっても実態への影響はさほどでもないが
上司に打診しやすくなるし、起業としてもIE8歓迎の看板を下ろすいい機会にすべきでしょうな
563Name_Not_Found:2013/09/15(日) 19:49:04.53 ID:???
>>556
IE9以降が使えないXPのサポート期間を基準にしようかなと
564Name_Not_Found:2013/09/15(日) 19:50:51.03 ID:???
jQueryなどのライブラリを使えば、
同じ書き方で古いブラウザでも勝手に動くんで、
俺らの言うサポート言うのは古いブラウザで
テストするかどうかの違いだろう?

書き方なんてブラウザごとに変わんねぇよ。
ってか、現時点の話として、ブラウザごとに
書き換えたを変えるなんてそんな面倒なことしたくねぇよ。
565Name_Not_Found:2013/09/15(日) 19:51:47.72 ID:???
XPでもIEから移ればいいだけなんだから甘えるなっていうのが本音
566Name_Not_Found:2013/09/15(日) 19:51:51.30 ID:???
>>563
IE8を使えるWindows 7の人はどうするの?
567Name_Not_Found:2013/09/15(日) 19:52:05.62 ID:???
2年前に、地デジ移行期間に便乗して
「知っていますか?古いIEは使えなくなるんです」
ってやっていれば今頃…
568Name_Not_Found:2013/09/15(日) 19:52:34.69 ID:???
>>565
甘えるなとは開発者に言いたいw
569Name_Not_Found:2013/09/15(日) 19:55:27.05 ID:???
まったくだわ。他のブラウザはXPに対応してるのに
570Name_Not_Found:2013/09/15(日) 19:55:28.83 ID:???
そこそこ最新の技術を使って対応できない理由を作るのはよくやる

あと一回、Googleフレーム入れてたらIEでも動くんですけどねえって冗談で言ったら
それで納得されちゃったことがあるw

もう廃止になったからこの手は使えないが
571Name_Not_Found:2013/09/15(日) 19:55:35.68 ID:???
>>566
それを言い出すと
古いFirefoxやNetscapeだってまだ動くわけで、キリがない気がする
MSはアップデートを出してるんだから、それを意図的に拒む人・団体は、お察しください
なんじゃね?


ていうか、ぼーっとしてたら僕のIE7ちゃんがアプデされちゃったの!
誰か助けて!
572Name_Not_Found:2013/09/15(日) 19:58:49.71 ID:???
IE8は「変えたいけどどうしてもブラウザを変えられない」っていう理由が多いと見ると
Google Frameで納得は一理ある
573Name_Not_Found:2013/09/15(日) 19:59:51.09 ID:???
サポートが面倒だから切るっていうのは
間違っちゃいないんだけどさ、

技術的に出来るか出来ないかで話すと
IE6でも結構できちゃうんだよな。
574Name_Not_Found:2013/09/15(日) 20:02:09.16 ID:???
http://24ways.org/2010/calculating-color-contrast/
ここのアルゴリズムを使って背景色にあう文字色を決めるコードを書きました

http://jsbin.com/iTIgivO/1/edit
しかし特定の色では、ご覧のように、
白の方が見やすいのに黒になってしまいます
どうすればいいですか?
575Name_Not_Found:2013/09/15(日) 20:02:55.60 ID:???
古いブラウザへの対応は最初からそれが目的じゃない限りできる範囲で適当にやる
迷ったら断る
576Name_Not_Found:2013/09/15(日) 20:05:12.40 ID:???
>>574
ずばり言うけど、君の目がおかしいよ
色盲かもよ
577Name_Not_Found:2013/09/15(日) 20:07:55.24 ID:???
>>574
かなりちょうどいいバランスだと思うけどな
不満なら調整すれば?
少なくともバグじゃないよ
578Name_Not_Found:2013/09/15(日) 20:13:17.71 ID:???
古いブラウザ対応でも
それ用にお金と時間もらえるなら、俄然張り切るタイプです
579Name_Not_Found:2013/09/15(日) 20:13:46.33 ID:???
>>574
ディスプレイの型番を教えてくれ
話はまずそれからだ。
580Name_Not_Found:2013/09/15(日) 20:21:07.44 ID:???
http://jsbin.com/iTIgivO/5/edit

比較できるように修正しました
白の方が見やすいでしょう?
581Name_Not_Found:2013/09/15(日) 20:25:03.10 ID:???
>>421をお願いします
582Name_Not_Found:2013/09/15(日) 20:27:33.12 ID:???
583Name_Not_Found:2013/09/15(日) 20:33:56.24 ID:???
http://news.mynavi.jp/column/wc/006/index.html
SLよりこれのほうが使いやすい
584Name_Not_Found:2013/09/15(日) 20:38:08.93 ID:???
そういえばPhotoshopでもJSは動くんだよな
585Name_Not_Found:2013/09/15(日) 20:45:51.84 ID:???
sublimeのパクリやん
586Name_Not_Found:2013/09/15(日) 20:47:04.48 ID:???
ざっと見たけど思いっきりパクリに行っててわろた
587Name_Not_Found:2013/09/15(日) 20:49:14.54 ID:???
プラグインがJSで書けるならいいかも?
588Name_Not_Found:2013/09/15(日) 20:49:23.46 ID:???
589Name_Not_Found:2013/09/15(日) 20:51:13.46 ID:???
そっか、sublimeによって最早dreamweaverがオワコン化されてるから
本気で穫りに来たんだろうね
590Name_Not_Found:2013/09/15(日) 20:52:07.92 ID:???
>>583
SLってなに?
591Name_Not_Found:2013/09/15(日) 20:59:57.85 ID:???
>>580
>白の方が見やすいでしょう?
いいえ、白なんて滅多に使うもんじゃない
背景が明らかに黒い時だけ
592Name_Not_Found:2013/09/15(日) 21:14:57.60 ID:???
>>442
デバックはalertを使って変数に入ってる値を
調べる方法でやってます。

>>582
すいません。見落としていました。

>588
ありがとうございます。
この記事には、Object.method〜を使うとjquery ajaxが突然動かなくなり
使用しないことと載ってました。
詳しく読んでみます。
593Name_Not_Found:2013/09/15(日) 21:20:44.61 ID:???
>>592
>>443も見落としてるね
ブラウザのデバッガも使えない奴が
FunctionやObjectのプロトタイプを汚染するコードを書いちゃダメ
594Name_Not_Found:2013/09/15(日) 21:23:44.88 ID:???
頑張れ
alertよりもっといいものがあると知ってほしい
595Name_Not_Found:2013/09/15(日) 21:54:57.30 ID:???
>>592
Function.prototype.method = function (name, func) {
Object.defineProperty(this.prototype, name, { value: func, enumerable: false });
return this;
};

これでどうよ?
superior()の方の動作に問題があるかどうかは確認してないので、そっちは自分で確認してみて
596Name_Not_Found:2013/09/15(日) 22:03:07.61 ID:???
>>591
それはどう考えてもおかしいでしょう
背景色によって白か黒かを選ぶアルゴリズムなのに
白なんて滅多に使わないとか
597Name_Not_Found:2013/09/15(日) 22:06:03.44 ID:???
見やすさなんか人それぞれでいいだろ。

数式で見やすさが計算できるんじゃない。
見やすさが計算できる数式を作ったんだ。

数学とはそういうもんだぞ。
598Name_Not_Found:2013/09/15(日) 22:13:54.69 ID:???
brackets、使ってみたらsublimeに遠く及ばないね
スクロールが遅いし
表面上パクっただけだわ
599Name_Not_Found:2013/09/15(日) 22:14:07.24 ID:???
富士通のコントラストとか図るソフト
配布終わっちゃったんだよな
600Name_Not_Found:2013/09/15(日) 22:21:08.96 ID:???
俺もいま使ってみてる
スクロール遅いか?
601Name_Not_Found:2013/09/15(日) 22:22:37.19 ID:???
>>596
全くおかしくない。
Webページにおいて見やすいかはそういう基準も勿論入る。
「文字」っていうのは簡単じゃないんだ。
それこそフォントにもよるし、レンダリングエンジンによっても印象は違う。
602Name_Not_Found:2013/09/15(日) 22:27:49.96 ID:???
>>580を見てまだ黒の方が見やすいという人は、目か頭かまたはその両方がおかしいんです
603Name_Not_Found:2013/09/15(日) 22:28:54.40 ID:???
>>602
あぁ、うん、それでいいよ。
話はこれで終わったよね。
604Name_Not_Found:2013/09/15(日) 22:31:59.77 ID:???
いいえ。まだ始まったばかりです。
605Name_Not_Found:2013/09/15(日) 22:32:08.40 ID:???
同情してもらってコード書いて貰いたいのはわかるが甘いな
606Name_Not_Found:2013/09/15(日) 22:33:29.01 ID:???
こいつ多分自作自演名人様だな
最近良くいろんなスレ行ってるけど失業でもしたの?
607Name_Not_Found:2013/09/15(日) 22:36:29.87 ID:???
>>443
すいません。見落としてました。わかりました。
>>593
firebugで確認したところjQueryライブラリの中で
エラーが出ておりました。
firebugのスクリプトタブでコードを見ると日本語は文字化けすんですえね。
>>594
ありがとうございます。
>>595
firebugのエラーがなくなり正常に動作しました。
ありがとうございます。
608Name_Not_Found:2013/09/15(日) 22:47:36.07 ID:???
>>607
UTF-8になってればfirebugで日本語表示できない?
609Name_Not_Found:2013/09/15(日) 22:54:21.88 ID:???
http://www.w3.org/TR/AERT#color
このcolor differenceを計算するアルゴリズムを実装したのが以下となります
http://jsbin.com/AzeyOXI/1/edit
しかしこれも、黒とのコントラストの方が白とのコントラストよりも大きくなります
コントラストで決めることは出来ないのでしょうか・・・
610Name_Not_Found:2013/09/15(日) 22:57:53.66 ID:???
・・・
611Name_Not_Found:2013/09/15(日) 23:01:19.38 ID:???
The rage for color brightness difference is 125. The range for color difference is 500.

この最初のrageはrangeのタイポですよね・・
612Name_Not_Found:2013/09/15(日) 23:03:00.02 ID:???
もう600?
コーディングスタイルとかの話題で盛り上がりたければそういうスレを分岐しましょうか?
本当は言語仕様の話なんだからム板のEcmaScriptスレでやって欲しいところなんだけど。
本来の質問スレとして機能しないようでは困りますよね。
613Name_Not_Found:2013/09/15(日) 23:05:29.51 ID:???
今日の伸びが異例だっただけ
614Name_Not_Found:2013/09/15(日) 23:12:51.01 ID:???
勝手に新しく類似スレ立てて
皆が納得してちゃんと分岐するなんて
一体いつから錯覚していた?
615Name_Not_Found:2013/09/15(日) 23:25:54.49 ID:???
脱線から有意義な情報や意見が出ることもままあるということを
自治厨は分からんのです
616Name_Not_Found:2013/09/15(日) 23:29:51.95 ID:???
>>608
すいません。いろりろ試してるとできました。
617Name_Not_Found:2013/09/15(日) 23:33:40.52 ID:???
だからもう次スレのタイトル変えよう
618Name_Not_Found:2013/09/15(日) 23:36:02.81 ID:???
いいよ別に
こんなんたまにあるだけだから
619Name_Not_Found:2013/09/15(日) 23:48:15.67 ID:???
スレタイのことだけどさ、
大体さ、サブタイトル入れなかったのが
いけないんだよ。

108だろ? なら、
「+ JavaScript の質問用スレッド vol.108 〜煩悩〜 +

とかするべきじゃね?

109なら
「+ JavaScript の質問用スレッド vol.109 〜渋谷〜 +

これでどうよ? もっと楽しまなくちゃ。
620Name_Not_Found:2013/09/15(日) 23:52:46.61 ID:???
"+ JavaScript の質問用スレッド vol.109 〜"+Object.getOwnPropertyNames(window)[109]+"〜 +"
621Name_Not_Found:2013/09/15(日) 23:53:42.10 ID:???
早晩ネタに困るのが目に見えてるじゃん
622Name_Not_Found:2013/09/15(日) 23:59:50.77 ID:???
+ JavaScript の質問用スレッド vol.108 〜JS極めたら彼女できる〜+
623Name_Not_Found:2013/09/16(月) 00:10:12.17 ID:???
108と何もかかってないだろ
舐めてんのか
624Name_Not_Found:2013/09/16(月) 00:25:52.61 ID:???
>>620
これなら500スレネタがもつ
625Name_Not_Found:2013/09/16(月) 02:07:43.54 ID:???
>>574の件ですが、hueが指定した範囲にある時は判定式の閾値を増やすという方法で、
見やすい色にすることがてきました
ありがとうございました
626Name_Not_Found:2013/09/16(月) 02:33:29.22 ID:???
本当人の意見聞かないね
見やすいと思ってるのは君だけだって
627Name_Not_Found:2013/09/16(月) 04:28:54.76 ID:???
見やすくないと思ってるのもあなただけです
628Name_Not_Found:2013/09/16(月) 05:35:46.17 ID:???
わざわざリンク先見て意見くれる人を馬鹿にする質問者……
629Name_Not_Found:2013/09/16(月) 09:29:31.07 ID:???
テスト駆動JavaScriptを勉強中だけど、自分には内容が高度すぎて心が折れそう。

例えば「jQueryを使いこなして、webアプリを作りたい!」が本来の目標だとしたら、
「jQueryを開発する技術を学ぶ本」に手を出してしまったようなコレジャナイ感。

第2部「プログラマのためのJavaScript」は、知らない概念がバンバン出てくるけど
解説も少ないし、訳文もあまり良くないのでこの本だけでそれを学習するのは厳しい。
だからネットでかなりの部分を補完しながら進めてるけど、それだったらもっといい本で
勉強した方が効率いいしな…。
630Name_Not_Found:2013/09/16(月) 10:37:06.85 ID:???
……………。
631Name_Not_Found:2013/09/16(月) 10:40:17.14 ID:???
>>629
テスト駆動ってなに?
632Name_Not_Found:2013/09/16(月) 10:40:56.43 ID:???
なんやて駆動
633Name_Not_Found:2013/09/16(月) 10:45:34.99 ID:???
>>627は偽者です

http://www.colorcodehex.com/e052e0/
これをご覧下さい
E052E0を背景色にした場合の文字色を白と言っています
決して私だけの感覚ではないのです
634Name_Not_Found:2013/09/16(月) 10:55:12.99 ID:???
>>629の書き込みだけだと「テスト駆動JavaScript」という本について語ってるとか普通わからんだろうな
この本はオライリーの本とか一通り目を通した後じゃないと難しいかもね
おれはサンプルを自分の環境向けに実装し直しとかして勉強になったよ
635Name_Not_Found:2013/09/16(月) 10:59:00.20 ID:???
>>631
あるコードを実装する前にそのコードが正しく実装されればパスするはずのテストコードを書く
そのテストコードが失敗するのを確認→コードを実装→テストコードがパスするのを確認
これを繰り返してコード全体を実装していく開発方法
636Name_Not_Found:2013/09/16(月) 10:59:37.68 ID:???
http://www.color-sample.com/colors/e052e0/

ここも文字色を白にしています
これがfactです
637Name_Not_Found:2013/09/16(月) 11:01:44.99 ID:???
それ「jQueryを使いこなして、webアプリを作りたい」人が読む本じゃないよ
大規模なwebアプリを継続的に開発運用していきたい人が読む本
638Name_Not_Found:2013/09/16(月) 11:04:15.86 ID:???
>>629はjQueryを使いこなしたいわけじゃない
jQueryを云々は例として挙げてるだけだろ
639Name_Not_Found:2013/09/16(月) 11:05:27.92 ID:???
>>631
「Test-Driven JavaScript Development」 の和訳書名が「テスト駆動JavaScript」になってるんですよ。
イントロダクションで、JavaScriptデベロッパでテスト駆動開発してる奴はあまりいないって(2011年あたり?)
書いてあるけど、現在も変わってないのかな?

>>634
わかりにくかったかな。
レビューで「本格入門」が終わったら手を出していいかも、と書いてあったので購入しました。
640Name_Not_Found:2013/09/16(月) 11:07:50.94 ID:???
>>633
わかる


が、この色を、グラデではなく単色で塗りに使うのは…
目がチカチカするの俺だけ?
641Name_Not_Found:2013/09/16(月) 11:09:20.23 ID:???
>>639
テスト駆動の話が盛り上がったのって、結構前だったよね?
自分は、トライはしてみたけど、定着はしなかったなあ
642Name_Not_Found:2013/09/16(月) 11:17:00.11 ID:???
完全なテストファーストで開発するのはつらい
でもテストの自動化はけっこう普及してるんじゃないの?
643Name_Not_Found:2013/09/16(月) 12:14:09.38 ID:???
>>633
白色のほうがハッキリしてるけど、見やすさで言ったら黒色。
644Name_Not_Found:2013/09/16(月) 13:17:35.46 ID:???
週末に一気に伸びましたな
質問すると人と、答える人も

旧IEでも動くのか
モダンブラウザだけか
実装待ちの新機能も使ってるのか

を明記すればいいと思った
645Name_Not_Found:2013/09/16(月) 13:42:22.94 ID:???
それは質問者が
IE6で動くコード聞いてるのか
Chromeで動くコード聞いてるのか
それとも単に好奇心で技術的な質問をしてるのか
を明記すれば話が早い
646すごい学生君Ver0.1:2013/09/16(月) 14:41:37.16 ID:???
>>635
つまりjasmineでテストを書いて
javascriptファイルにテストに合格するコードを書いていき、
jenkinsでファイルを保存と同時にテストを走らせるという誰でもできることを君はしたいというのかね?
647Name_Not_Found:2013/09/16(月) 14:42:35.67 ID:???
http://weepy.github.io/jquery.path/

ここのstartをクリックしても何も起きないのですが何故ですか?
648すごい学生君Ver0.1:2013/09/16(月) 14:46:28.21 ID:???
>>647

まずConsoleにエラーが出てないか確認したまえ
649Name_Not_Found:2013/09/16(月) 14:53:38.60 ID:???
テスト駆動JavaScriptはもってるけど
テーマはいいんだけど、なんかずれてるんだよな。
テスト駆動の本では有るんだが、
そんな説明よりももっと他に説明することがあるでしょとか
俺はこんなやり方を考えてみたぜ(実践はしてないけどな)的な。


で、オライリーからテスタブルJavaScriptって本が出るよ。
http://www.oreilly.co.jp/books/9784873116358/

目次見る限りこっちのほうがいいと思う
650Name_Not_Found:2013/09/16(月) 15:03:59.76 ID:???
>>648
chromeではエラーが出てました
firefoxでは見られました
ありがとうございました
651Name_Not_Found:2013/09/16(月) 15:04:16.86 ID:???
テスト駆動の問題点は最初に実装するコードが
分かってることが前提になってるからだと思う。

関数の引数がこれで戻り値がこれでこのような関数があればアプリが作れる。
ということが明確にわかってる場合、簡単に最初にテストがかけると思う。

だからunderscoreみたいな単純な関数のライブラリであれば
テストを書くのも簡単だと思うよ。

でも、アプリを作っている場合、ぼんやりとはわかっていても
それが最善のやり方かどうかまではわからない。
ある程度作って形ができてから、コードを整理してシンプルな形にする。
どうしても最初に作らないとダメなんだよね。

で、最近gitを使い始めたのだけどテスト駆動を改良できそうな気がする
gitを知っていればコード修正の歴史を書き換えることが出来るということを知ってると思う。

これを使えば、最初に実装コードを書いてから、歴史をさかのぼって、テストコードを書いて
あたかもテストコードを先に書いてから、実装コードを書いたように、歴史を書き換えられる。
(完全に実装コードを書いてしまってからやるのではなく、ある程度書いて理解してから
歴史をさかのぼってテストコードを書くということ)

実際には実装コードとテストコードは並行して開発しているんだが、
コード修正の歴史はテスト駆動になっているという。
652Name_Not_Found:2013/09/16(月) 15:12:31.89 ID:???
よく分からないな
捨て去ったコードに対してテストを書く意味とは?
653Name_Not_Found:2013/09/16(月) 15:13:45.45 ID:???
テスト駆動開発では最初に失敗する
テストを書くということになっているんだが、

完成した時、つまりテストも通るとき、
本当にテストを最初に書いたかという証拠を
どうやって残すかが問題になる。

そこでgit。失敗するテストを書いた時点でコミットする。
テストを成功させる最低限のコードを書いた時点で、別のコミットをする
リファクタリングして綺麗にしたコミットをする。
全部で3つのコミット。

この3つのコミットさえできていればいいはずなので
gitを使って歴史を移動しながら3つのコミットを仕上げていく。
654Name_Not_Found:2013/09/16(月) 15:15:29.08 ID:???
2番目の最低限のコードのコミットは残す必要はないか。
そのコードをリファクタリングしていけば良い。
655Name_Not_Found:2013/09/16(月) 15:15:33.27 ID:???
javascriptでdiffをとる方法をおしえて
656Name_Not_Found:2013/09/16(月) 15:20:47.53 ID:???
a = {a:"a", b:"a",}
っていうのは
keyはダブルクォーテーションで囲わなくてもOKですか?
最後にカンマをつけましたがつけても大丈夫ですか?
657Name_Not_Found:2013/09/16(月) 15:24:07.87 ID:???
>>656
キーが英数文字と_などの一部の記号だけなら問題ない。

最後のカンマはECMAScript3の環境(つまり古いブラウザ)で動かす必要があるなら問題がある。
ECMAScript5以上を前提としていいのであれば問題ない。

なお、最後のカンマはJSHintなどを使えば問題がある場合に教えてくれる。
658Name_Not_Found:2013/09/16(月) 15:25:28.93 ID:???
>>655
探せ!この世のどこかにそれを置いてきたよ誰かが
659Name_Not_Found:2013/09/16(月) 15:27:24.57 ID:???
やめろワンピース!
660Name_Not_Found:2013/09/16(月) 15:28:59.16 ID:???
>>655
Ajaxでサーバに投げてコマンドのdiffでやって返してもらいたい気分
661Name_Not_Found:2013/09/16(月) 15:35:41.95 ID:???
>>652
> よく分からないな
> 捨て去ったコードに対してテストを書く意味とは?

テスト駆動開発は、テスト作成ではないのだよ。
テスト、たとえばユニットテストなどのことだけど、
テスト自体を開発するのではなく、テストを開発のための
道具として使っているだけ。

普通開発するとき、デバッグprintとか
最後には捨て去るのに、一時的にコード書くでしょ?
テスト駆動ではテストをそのような目的として使う。

捨て去ったコードに対してテストを書く(残す)のではなく
開発のために、一時的にテストを書いて、それを道具として使って、開発を行う。

まあ、デバッグコードを残すように、作ったテストが
使えるなら捨て去らなくてもいいけどね。
662Name_Not_Found:2013/09/16(月) 15:46:41.38 ID:???
無能しかいないな
663Name_Not_Found:2013/09/16(月) 17:33:30.85 ID:???
テスト駆動って意味あるのかね
まあ確かにそれなりのケースでバグの究明を早めることはできるだろうけど
全部動かした時にときどき不意に現れるような
本当に直しにくいバグを無くそうと思ったら
それこそ隅から隅までテストやらないといけないからなあ

中途半端じゃダメ
そのコストと、直しにくいバグを見つけるコスト、
どっちが高いかなあ
664Name_Not_Found:2013/09/16(月) 17:43:17.89 ID:???
先週から長文うぜえのが何匹か居ついちまってるのな
コード張るわけでも無いなら三行にまとめろ
665Name_Not_Found:2013/09/16(月) 18:18:04.78 ID:???
長文かつ連投かつ自演バレてないと思ってるから救えないよな
666Name_Not_Found:2013/09/16(月) 18:30:49.94 ID:???
なにたかが長文にこんなに拒否反応示してるんだろう?
嫌なら見なければいいのに。
誰かに2ちゃんねる見ろって命令でもされてるの?
667Name_Not_Found:2013/09/16(月) 18:32:20.41 ID:???
>>663
目的はテストじゃなくて
アプリを正しく動かすことなので、
中途半端でいいと思いますが?
いろんな手法を柔軟に使い分けろよ。
668Name_Not_Found:2013/09/16(月) 18:34:53.27 ID:???
なんでココはIDが出ないんだろうね。
669Name_Not_Found:2013/09/16(月) 18:38:32.82 ID:???
自演とか言ってる奴糖質すぎてやばいだろ
670Name_Not_Found:2013/09/16(月) 18:40:37.00 ID:???
× IDでると自作自演が出来ないからな

○ IDでると自作自演ってことにしづらいからな。
IDでると困るのは、実は「そいつは自作自演だ」って言ってる方なんだよ。
671Name_Not_Found:2013/09/16(月) 18:47:13.30 ID:???
自作自演をする方は実はIDがある方がやりやすかったりするw
2つ以上のIDを使い分ければいいからね。
672Name_Not_Found:2013/09/16(月) 18:50:59.03 ID:eIZnfm24
このチキンくんたちめ!
IDまるだしだぞー!
673Name_Not_Found:2013/09/16(月) 19:01:09.33 ID:CkVpuFd2
このチキンくん
674Name_Not_Found:2013/09/16(月) 19:01:11.58 ID:SZjLHB6w
たちめ!
675Name_Not_Found:2013/09/16(月) 19:01:46.21 ID:CkVpuFd2
IDまるだし
676Name_Not_Found:2013/09/16(月) 19:01:56.54 ID:SZjLHB6w
だぞー!
677Name_Not_Found:2013/09/16(月) 19:05:10.44 ID:CkVpuFd2
>>678
あなたの言ってる事は正しいと思います
678Name_Not_Found:2013/09/16(月) 19:05:11.53 ID:SZjLHB6w
>>677
いえいえ、あなたが言っている事こそ正しいと思います。
679Name_Not_Found:2013/09/16(月) 19:09:04.81 ID:???
長文君が発狂したのか
680Name_Not_Found:2013/09/16(月) 19:12:23.00 ID:SZjLHB6w
>>679
IDでてたら、長文君じゃないってわかるね。
IDでてなくてよかったねw
681Name_Not_Found:2013/09/16(月) 19:28:33.91 ID:???
図星だったみたいだな
長文かつ連投かつ自演かつ煽り耐性無し、4重苦
682Name_Not_Found:2013/09/16(月) 19:30:35.11 ID:???
統合失調症乙
683Name_Not_Found:2013/09/16(月) 19:55:39.49 ID:???
長文ってなにか悪いことだっけ?
何にそんなにムカついているのかわからない。
684Name_Not_Found:2013/09/16(月) 20:02:32.81 ID:???
同意w
きちがいの論理は分からんわ
685Name_Not_Found:2013/09/16(月) 20:10:38.68 ID:???
長文で説教はないわー
686Name_Not_Found:2013/09/16(月) 20:14:40.10 ID:???
長文の説教って何?
687Name_Not_Found:2013/09/16(月) 20:36:12.82 ID:???
alert(9999999999999991);
とすると9999999999999992と表示されるのですがなぜでしょうか
688Name_Not_Found:2013/09/16(月) 21:30:11.51 ID:???
(9999999999999991).toString(2)
//"100011100001101111001001101111110000001111111111111000"

(9999999999999992).toString(2)
//"100011100001101111001001101111110000001111111111111000"
689Name_Not_Found:2013/09/16(月) 21:46:59.07 ID:2BiTarbH
x=0;

function plus(x){
x=x+5;
alert(x);
}



<h1 onClick="plus(x)" >たす</h1>


これが何回クリックしても「5」としかでません。どう直せばよいですか?
IE10です
690Name_Not_Found:2013/09/16(月) 22:30:47.62 ID:???
理由は考えろ

function plus(y){
x=y+5;
alert(x);
}
691Name_Not_Found:2013/09/16(月) 22:51:57.57 ID:2BiTarbH
>>690
本当にありがとうございました!!!!!いやっほー
692Name_Not_Found:2013/09/16(月) 22:56:02.36 ID:???
理由を考える気はないらしい
693Name_Not_Found:2013/09/16(月) 23:30:12.65 ID:???
問題解決したらどうやって解決したか書けとは言うけどさ、
さすがにこの程度はいらんわw
694Name_Not_Found:2013/09/16(月) 23:33:51.74 ID:???
誰も過程を書けなんて言ってない
誠意を見せろってことだ
695Name_Not_Found:2013/09/16(月) 23:41:15.69 ID:???
._______________
|                          |
|       ノ       __________    │
|.     ノ|        |  |  |   | ノ ̄ ̄`ヽ、// // ////
|   .、__|__    | ̄ ̄ ̄|   |/ ´`ヽ _  // // //
|         |        |      |    --/ ̄ ,          ̄ ̄\
|         |        |      |    `ー‐し'ゝL              \
|_______________|(--‐‐'´}    ;/////--       \
                       `ヾ:::-‐'ーr‐'"      \      \
                                      \       |
        ____                             |       |
       /⌒  ⌒\                           |       |
     /( ●)  (●)\    はい!                   |       |
    /::::::⌒(__人__)⌒::::: \     誠意!                |       |
    |     |r┬-|     |                      |       |
    \      `ー'ォ     /                      |      |
   /           \______________/     /
696Name_Not_Found:2013/09/16(月) 23:55:03.11 ID:???
質問者が「どう直せばよいですか?」と聞いてきてるから、ただ

plus()

とだけ書いて終わりでも良いところなのに、
考えられるよう工夫した>>690の親心が届いていない様子が笑えた
697Name_Not_Found:2013/09/17(火) 00:10:07.99 ID:???
長い目で見たら初心者にはその場しのぎを教えるんじゃなくて
上達して帰ってもらうのが一番いいのは間違いないが、、、
698Name_Not_Found:2013/09/17(火) 00:53:01.36 ID:???
どうでもいいだろ。
やりたいようにやれ。
699Name_Not_Found:2013/09/17(火) 01:22:28.28 ID:???
しかしここで教えた奴らが作ったサイトを利用することになるかも知れないぞ
700Name_Not_Found:2013/09/17(火) 01:38:54.36 ID:???
それで?
701Name_Not_Found:2013/09/17(火) 02:10:53.50 ID:???
だからちゃんと教えていこうね
702Name_Not_Found:2013/09/17(火) 07:28:05.35 ID:???
container ={
x:0
}

function plus(c){
c.x=c.x+5;
alert(c.x);
}

<h1 onClick="plus(container)" >たす</h1>

引数を関数内で操作したいならこうじゃね
703Name_Not_Found:2013/09/17(火) 08:11:05.06 ID:???
<ol contenteditable>
<li>hoge</li>
<li>fuga</li>
</ol>
のようなHTMLで、編集中のアクティブなli要素を取得する方法はないでしょうか。
event.targetやdocument.activeElementにはol要素が入っちゃいますし
cssのli:focusなんかも反応しません。
liの方にcontenteditable付ける以外の方法ありましたら教えて下さい(←だとliをまたいだ複数行選択できない)
704Name_Not_Found:2013/09/17(火) 09:04:24.29 ID:???
予約語をメソッド名に使ってはいけないのでしょうか?
705Name_Not_Found:2013/09/17(火) 09:11:26.19 ID:???
http://alphasis.info/2012/11/javascript-reference-reserved_words/

JavaScriptの予約語は、変数名、関数名、メソッド名、オブジェクトの識別子に使えない。

とありました
でもinというメソッド名を使っていて問題なく動作していて
JSHintでも何も言われません
sublimeのJSformatをかけたらinが予約語と勘違いされてフォーマットされたので
アレ?と思いましたが。
706Name_Not_Found:2013/09/17(火) 09:22:27.32 ID:???
だから、あなたがたまたま使っている処理系で問題が無かったとしても、将来出てくる
処理系で、または他人が使っている処理系で動かない場合に、処理系が悪いのではなく
標準を無視した作者が悪いということになるわけで。それでよければ別にいいんじゃないの。
707Name_Not_Found:2013/09/17(火) 09:26:54.04 ID:???
使わないに越したことはないですね
ありがとうございました
708Name_Not_Found:2013/09/17(火) 09:40:46.69 ID:???
もし自分で言語を作ることがあったら
謎の予約後をひとつは入れておきたい
709Name_Not_Found:2013/09/17(火) 10:00:19.79 ID:???
710Name_Not_Found:2013/09/17(火) 10:02:14.18 ID:???
703ですが
window.getSelection().getRangeAt(0).commonAncestorContainer.parentNode
でアクセスできたので取り下げます
711Name_Not_Found:2013/09/17(火) 10:29:41.81 ID:???
>>706,707
ES5から仕様で使ってもいいことになった
どんどん使って問題ない
712Name_Not_Found:2013/09/17(火) 10:46:33.76 ID:???
>>709
Google様ありがとうございます!!
これで来年には表面上だけでもスッキリ縁が切れそうだ。
713Name_Not_Found:2013/09/17(火) 11:19:07.38 ID:???
次期ES、と思ったらES5ですか
じゃあJSformatは一種のバグかな
714Name_Not_Found:2013/09/17(火) 11:34:51.23 ID:???
>>711
なんでも使っていいって事ではなくて
「ES5では、オブジェクトプロパティ識別子として予約済みキーワードを使える」って話じゃないの?
Allow reserved words as property names under es5
https://github.com/jshint/jshint/pull/801
715Name_Not_Found:2013/09/17(火) 11:41:56.61 ID:???
716Name_Not_Found:2013/09/17(火) 11:44:57.63 ID:???
いつの間にかtype="text/javascript"を書かなくてもよくなってたのか・・・
717Name_Not_Found:2013/09/17(火) 11:46:20.09 ID:???
何を今更w
718Name_Not_Found:2013/09/17(火) 12:14:02.66 ID:???
廃止されたtext/javascriptが初期値なのは納得いかない
719Name_Not_Found:2013/09/17(火) 12:22:42.88 ID:???
廃止なんてされてないけど
720Name_Not_Found:2013/09/17(火) 12:27:55.14 ID:???
オブジェクトのキーに漢字やキリル文字を使うのは、よろしくないですか?
721Name_Not_Found:2013/09/17(火) 12:28:33.89 ID:???
廃止は
language="JavaScript"だな
今思うとこっちの方がいいんじゃないのかと思う
722Name_Not_Found:2013/09/17(火) 12:29:58.71 ID:???
>>720
ソースを見る人によっては文字化けするということを除けば問題ない
あと文字コードに注意
723Name_Not_Found:2013/09/17(火) 12:31:08.64 ID:???
724Name_Not_Found:2013/09/17(火) 12:32:48.58 ID:???
>>723
廃止はされてないじゃん
725Name_Not_Found:2013/09/17(火) 12:33:28.58 ID:???
>>722
なるほど、ありがとう
726Name_Not_Found:2013/09/17(火) 12:48:01.10 ID:???
>>724
javascript (obsolete) と登録されてる
リンク先のRFC4329で定義されている通り、初めから廃止されたMIMEタイプとして追加されたんだけどね
727Name_Not_Found:2013/09/17(火) 13:29:11.51 ID:???
statementとdecrationとexpressionの違いは何ですか
728Name_Not_Found:2013/09/17(火) 14:37:18.74 ID:???
statement 「文」:命令の最小単位
expression 「式」:評価され値を返す

「値」だけなのも「式」
「式」だけなのも「文」
つまり「値」⊂「式」⊂「文」
729Name_Not_Found:2013/09/17(火) 14:58:33.34 ID:???
なるほどー
esprimaのようなパーサでsyntax treeを作った時
programより下の一番粒度の高いオブジェクトはstatementということですね
730Name_Not_Found:2013/09/17(火) 15:09:55.22 ID:???
text/javascriptは最初から標準じゃないだけで廃止されたんじゃないよ
731Name_Not_Found:2013/09/17(火) 15:27:12.77 ID:???
firefox23でJavaScriptの有効/無効の切り替えってどうやってる?
QuickJava というアドオンが便利そうだけど、他にいい方法あるかな
732Name_Not_Found:2013/09/17(火) 16:09:02.65 ID:???
無効にする必要なんてないだろ
733Name_Not_Found:2013/09/17(火) 16:16:25.49 ID:???
unobtrusive javascriptの確認で必要なんです
QuickJavaで簡単に切り替え出来たんで、これで十分みたい
734Name_Not_Found:2013/09/17(火) 16:35:47.85 ID:???
prefbarおぬぬめ

と書こうと思ったら解決してた
735Name_Not_Found:2013/09/17(火) 17:49:08.72 ID:???
>>734
そんなのもあるんだ、ありがとう
PrefBarのほうが拡張機能の種類が多いですね
QuickJavaはもっと簡単な機能をアドオンバーに表示されたボタンでサクッと切り替える感じ
736Name_Not_Found:2013/09/17(火) 21:58:15.50 ID:???
催促するようで申し訳ないのですが、
>>93の件で>>120以降回答をいただけていないのですが、
見てもらえますでしょうか。
737Name_Not_Found:2013/09/17(火) 22:30:52.87 ID:???
javascriptにクロージャっがあるみたいなんですが、AS3とかC#と同じ感じで使って問題ないですか?
クロージャもラムダも似たようなもんかなって思ってます

c#だとこんなのイメージしてます
var f = new Action<string>((msg) => { Console.WriteLine(msg) });
f("hellow world");

as3だとこんなのイメージしてます
var f:Function = function(msg:String):void {Alert.show(msg)};
f("hellow world");
738Name_Not_Found:2013/09/17(火) 22:35:57.95 ID:???
ん?
739Name_Not_Found:2013/09/17(火) 23:36:08.73 ID:???
var f = function(msg) { alert(msg) };
f("hellow world");

javscriptだとこう?
740Name_Not_Found:2013/09/17(火) 23:38:27.10 ID:+lVR0Gr5
xという同じ文字使うからx=5がまた代入されるという理由ですよね
741Name_Not_Found:2013/09/17(火) 23:54:49.17 ID:???
>>740
>>689か?
グローバル変数とローカル変数の問題だよ。
742Name_Not_Found:2013/09/18(水) 00:08:39.82 ID:phEPVapY
最初はグローバル変数だったやつが関数内も同じ文字を使ったゆえにローカル変数になり、値が引き継がれなくなったということですか?
743Name_Not_Found:2013/09/18(水) 01:09:58.68 ID:???
>>742
いや、ひとつの変数がグローバル変数からローカル変数に変化するとかじゃないよ。
グローバル変数のxとローカル変数のxは別々に存在する。

x=0; ←グローバルx

function plus(x){ ←ローカルx
  x=x+5;      ←ローカルx
  alert(x);      .←ローカルx
}

<h1 onClick="plus(x)" >たす</h1> ←グローバルx

function plus(x){ は、意味合い的に function plus(var x;){ ということ。
Clickされると plus(0) が実行される。
すると関数は実質的にこのような動作となる。
  var x=0;
  x=x+5;
  alert(x);
この後、関数内ローカル変数のxはドブに捨てられる。
グローバル変数のxは何も操作されていないので、そのままの0です。
744Name_Not_Found:2013/09/18(水) 01:28:15.73 ID:phEPVapY
誤解しておりました。深夜まで丁寧な説明をしてくださりありがとうございました。
745Name_Not_Found:2013/09/18(水) 02:13:18.22 ID:???
>>739
超ありがちな例だとこんな

var f = (function(){
  var a = 0;
  return function(){ alert(++a); };
})();

f(); // 0
f(); // 1
f(); // 2


こういうのは
var f = function(msg){ alert(msg) };

単に変数に関数オブジェクトを放り込んでるだけで
本質的にはクロージャとは関係もない
746Name_Not_Found:2013/09/18(水) 02:22:52.49 ID:???
ちょ
747Name_Not_Found:2013/09/18(水) 02:27:38.07 ID:???
本来関数fからは外のスコープが見えるはずだけど
最近のエンジンは必要な変数しかコンテキストに付加しないから
実際は見えないから真にクロージャじゃない

それがどうしたと思うかも知れないが
デバッグでステップ実行とかすると困る事がよくある
748Name_Not_Found:2013/09/18(水) 03:10:26.99 ID:???
「真のクロージャ」とか自分で勝手に定義してるだけでは?
JSにおけるクロージャはそういうものだろう
749Name_Not_Found:2013/09/18(水) 04:49:47.54 ID:???
>>784
ぜんぜん違う
JSとか関係なくこれは実行系次第
750Name_Not_Found:2013/09/18(水) 05:16:08.82 ID:???
「真のクロージャ」のソースは?
751Name_Not_Found:2013/09/18(水) 08:25:58.55 ID:???
その真のクロージャとか言ってる実装は、GCの関係で使い物にならんだろうな
752Name_Not_Found:2013/09/18(水) 08:33:57.36 ID:???
英語Wikipediaの定義がまっとうなんだと思うが。
http://en.wikipedia.org/wiki/Closure_(computer_science)
753Name_Not_Found:2013/09/18(水) 10:08:03.38 ID:???
>>747
>最近のエンジンは必要な変数しかコンテキストに付加しない

へーへー

var a = b = 0;
function f(){ alert(a); }

こうした時、f では b は使われない、みたいな感じでしょうか
754Name_Not_Found:2013/09/18(水) 10:13:37.57 ID:???
>>753
そのbは何だよw
755Name_Not_Found:2013/09/18(水) 10:35:20.59 ID:???
使わない変数を渡さないことでどんな不便があり得るの?
756Name_Not_Found:2013/09/18(水) 10:36:44.81 ID:???
ないんじゃね?
757Name_Not_Found:2013/09/18(水) 10:51:11.91 ID:???
じゃあ真のクロージャの意味ねーじゃん
758Name_Not_Found:2013/09/18(水) 10:58:58.62 ID:???
クロージャにすれば100%静的スコープになるわけだが
クロージャにしなくても100%見えてるわけじゃない
みたいなことが言いたいのでは?
759Name_Not_Found:2013/09/18(水) 11:28:29.49 ID:???
クロージャと動的スコープ変数は共存できるぞ
760Name_Not_Found:2013/09/18(水) 11:54:34.97 ID:???
https://twitter.com/kyo_ago/status/380143189547438080
あごっちが言ってるこれのサンプルを誰かください
761Name_Not_Found:2013/09/18(水) 12:06:48.82 ID:???
>>745
f(); // 1
f(); // 2
f(); // 3
だろ
762Name_Not_Found:2013/09/18(水) 12:15:42.86 ID:???
あああお察しください
763Name_Not_Found:2013/09/18(水) 13:41:42.96 ID:???
var a = 0;

var f = (function () {
  var a = 10;
  return function (c) { return eval(c); }
}());

console.log(f("a++;"));
console.log(f("a++;"));
console.log(f("a++;"));
console.log(f("a++;"));
764Name_Not_Found:2013/09/18(水) 14:36:54.69 ID:???
var a = 0, b = 5;
eval('var c = 10;');

var f = (function (code) {
var a = 20;
eval(code);
f.self = this;
return function (code) {
return eval(code);
}
}('var d = 30;'));

eval.call(f.self, 'var e = 40;');

console.log(f('++a;')); // 21
console.log(f('++b;')); // 6
console.log(f('++c;')); // 11
console.log(f('++d;')); // 31
console.log(f('++e;')); // 41
console.log(f('var f = 50;')); // undefined
console.log(f('++f;')); // NaN or ReferenceError
765Name_Not_Found:2013/09/18(水) 14:39:26.97 ID:???
ネストしている連想配列の指定キーの参照を得るにはどうしたらいいですか?
766Name_Not_Found:2013/09/18(水) 14:42:47.48 ID:???
eval is evil
767Name_Not_Found:2013/09/18(水) 14:47:43.45 ID:???
>>765
連想配列のネストをたどるコードを書け
768Name_Not_Found:2013/09/18(水) 14:48:10.18 ID:???
eはグローバルだしevalにcallしても意味ないしあれだったな
769Name_Not_Found:2013/09/18(水) 14:51:30.19 ID:???
えばる?いーばる?
770Name_Not_Found:2013/09/18(水) 15:08:18.09 ID:???
大発見をしました

http://jsperf.com/var1-vs-var2

var a;
a = 100;

の方が

var a = 100;

よりも速いです
何故ですか?
771Name_Not_Found:2013/09/18(水) 15:13:00.87 ID:???
どうもサンプル数が少ない時の偏りだったようです
772Name_Not_Found:2013/09/18(水) 15:15:29.73 ID:???
しかし宣言と代入を分けた方が遅くなりそうなものですが、そうはならないのは何故ですか?
773Name_Not_Found:2013/09/18(水) 16:44:32.39 ID:???
JITで最適化されるからでしょ
774Name_Not_Found:2013/09/18(水) 17:02:55.19 ID:???
>>755
インライン関数がエラーで止まった時に上位スコープの変数確認できないから困る、
775Name_Not_Found:2013/09/18(水) 17:24:03.19 ID:???
例えばこういうケースだとデバッガからaは確認できるけどbはできない

function test1() {
var a = 1, b = 2;
var f = function () {
throw 'test';
a;
}
console.dir(f);
f();
}

test1();
----console----
<function scope>
|
Closure
|
a: 1
776Name_Not_Found:2013/09/18(水) 17:24:47.90 ID:???
ちなみにこれだとこうなる

function test2() {
var a = 1, b = 2;
var f = function () {
throw 'test';
eval('');
}
console.dir(f);
f();
}

test2();
----console----
<function scope>
|
Closure
|
a: 1
arguments: Arguments[0]
b: 2
f: function () {
777Name_Not_Found:2013/09/18(水) 17:56:13.42 ID:???
いやおまえそれGoogle Chromeの開発ツールの機能だろw
Firebugとかじゃそもそもconsole.dir(f)からClosureとか辿れないし、
aとbの中身も見たいならconsole.log(a,b)しとけよw
778Name_Not_Found:2013/09/18(水) 18:13:52.16 ID:???
表示されるか否かでデバッグのしやすさが段違いなんだが
デバッグしたこと無いのか?
779Name_Not_Found:2013/09/18(水) 18:21:25.48 ID:???
デバッグ便利ですとか言われても余分な参照をクロージャにずっと引きずられたら困る
GCとか意識したコード書いたことないの?
780Name_Not_Found:2013/09/18(水) 18:23:21.98 ID:???
>>777
分かってもらえなかったか……
console.dirはデバッガ使ったことない人でも表示がわかりやすいように入れただけで、
あってもなくてもどうでもいい部分なんだよ…

エラーで止まる設定にしたるとき
いざエラーが起きても最適化のせいで満足に状況を調べられないから困るってこと

あとChromeのデバッガはただV8のAPI叩いてるだけだからね
このことはV8コミュに何度もissueが挙がってる有名な問題なんだよ
でも根本的な仕組みの問題だから修正するのは難しい

まあ踏み込んだ話もどうでもよくて
言いたかったことはこれね>>747
781Name_Not_Found:2013/09/18(水) 18:26:59.26 ID:???
本末転倒だな
782Name_Not_Found:2013/09/18(水) 18:28:04.39 ID:???
最適化の問題じゃないよ?
参照が切れた変数をデバッグのためにずっと維持しておけってこと?
783Name_Not_Found:2013/09/18(水) 18:28:36.13 ID:???
別にこれが良いとか悪いとか言いたいんじゃなくて
流れに沿った豆知識を書きたかっただけだからもう気にしないで
784Name_Not_Found:2013/09/18(水) 18:31:12.83 ID:???
真のクロージャとか妙なこと言い出すからだろ
785Name_Not_Found:2013/09/18(水) 18:36:44.91 ID:???
別にそこ突っ込むとこじゃないでしょ
対比のための強調語として「真の〜」って書きたくなるものでしょ
そのくらい気持ちを組んでよ
786Name_Not_Found:2013/09/18(水) 19:17:44.97 ID:???
対比のための強調語に「真の〜」なんて使うやつは真の馬鹿だよ
787Name_Not_Found:2013/09/18(水) 19:32:13.70 ID:???
真の〜なんていう言葉は、真にそれ以外が偽者な場合か、
そうではないけどあえて突っ込んでもらうために使うかどっちかにしとけよ。
紛らわしい使い方すんな。
788Name_Not_Found:2013/09/18(水) 19:36:19.92 ID:???
var idname = "v6";

var a1 = document.getElementById(idname);
var a2 = document.getElementById(idname);
var a3 = document.getElementById(idname);
var a4 = document.getElementById(idname);

var i1 = setInterval(function(){a1.click();}, 1000);
var i2 = setInterval(function(){a2.click();}, 1000);
var i3 = setInterval(function(){a3.click();}, 1000);
var i4 = setInterval(function(){a4.click();}, 1000);



同じ要素を複数のintervalで自動クリックするやつなんですけど
ここでは4つですが数は2個以上を想定してください
これを修正してください
789Name_Not_Found:2013/09/18(水) 19:47:39.00 ID:???
>786-787
アスペ乙
790Name_Not_Found:2013/09/18(水) 19:53:38.04 ID:???
>>788
日本語が意味不明
791Name_Not_Found:2013/09/18(水) 19:54:29.58 ID:???
>>788

var idname = "v6";

var elm = document.getElementById(idname);

for (var i = 0, ivid = []; i < 4; ++i) {
ivid[i] = setInterval(function () { elm.click(); }, 1000);
}
792Name_Not_Found:2013/09/18(水) 20:00:16.44 ID:???
複数のintervalとか言ってるんだから、intervalのリストが必要になるんじゃないか?
793Name_Not_Found:2013/09/18(水) 20:05:57.67 ID:???
エスパーだが1秒ごとにクリックさせたいんだろう
794Name_Not_Found:2013/09/18(水) 20:08:15.30 ID:???
同じくエスパーだが
たぶん一定間隔じゃなくある程度ランダムな間隔でクリックしたいのだろう
795Name_Not_Found:2013/09/18(水) 20:12:42.62 ID:???
こうじゃないのか

for (var i = 0; i < 4; ++i) setTimeout(function () { elm.click(); }, 1000*i);
796Name_Not_Found:2013/09/18(水) 20:21:40.51 ID:???
後で止める仕組みが必要なのかどうかも問題だ
797Name_Not_Found:2013/09/18(水) 20:27:51.88 ID:???
元ソースから察するに要らないだろ
・i1、i2、i3、......単ローカル変数が何個あるか分からない
こんなもの使えない、意味もなくつけてるだけ
・精々数秒間程度、そもそもキャンセルがいることは稀
798Name_Not_Found:2013/09/18(水) 20:49:13.88 ID:???
エスパーだが何らかのゲームの自動操作を行いたいんだろう
799Name_Not_Found:2013/09/18(水) 20:51:43.26 ID:???
1つのintervalで1秒1クリックさせたいんですよ
そこでマルチスレッドぽく n数の分だけintervalを生成してそれぞれでクリックさせたいんですよ
さっきのコードの場合だとマルチスレッドで1秒間に4回くりっくすることになります
800Name_Not_Found:2013/09/18(水) 20:55:54.90 ID:???
>>799
残念ながらJavaScriptでは、タイマーで呼び出される処理も含めて全部一つのスレッド上で実行される
801Name_Not_Found:2013/09/18(水) 21:04:52.60 ID:???
複数のsetInterval呼び出しにわける意味もないからこうかな

var n = 4; // 1秒間に何回クリックするか
var idname = "v6";
var elm = document.getElementById(idname);
setInterval(function(){for(var i=0;i<n;i++){elm.click();}}, 1000);
802Name_Not_Found:2013/09/18(水) 21:14:13.11 ID:???
ネストしたオブジェクト構造から、任意のオブジェクトを引数に、親オブジェクトを得るための
ライブラリ的な何かありませんか?
803Name_Not_Found:2013/09/18(水) 21:19:02.66 ID:???
そんなもん自分でコード書け
804Name_Not_Found:2013/09/18(水) 21:21:13.03 ID:???
は?お前が書けや
805Name_Not_Found:2013/09/18(水) 21:23:20.80 ID:???
どう書けばいいんですか?
806Name_Not_Found:2013/09/18(水) 21:26:20.23 ID:???
とにかくFireBug?とかそういうのから変数を変更できなくする方法を教えてください
807Name_Not_Found:2013/09/18(水) 21:27:39.84 ID:???
せめて具体例書いて回答者の負担減らしてくれないかな?
808Name_Not_Found:2013/09/18(水) 21:35:56.28 ID:???
>>807
とにかく変数に入ってる値を書き換えられないようにできればいいんです
809Name_Not_Found:2013/09/18(水) 21:38:34.54 ID:???
そんな方法あるわけないだろw
810Name_Not_Found:2013/09/18(水) 21:42:09.13 ID:???
例えばなんですが、phpで外部スクリプトファイルを動的に生成して読み込んで、
読み込んで実行し終わったら外部スクリプトファイルの内容を空にしちゃえばいくらアクセスしても空の内容しかみえなくなります
811Name_Not_Found:2013/09/18(水) 21:44:35.59 ID:???
つまりindex.phpに
<script src="http://localhost/script.php"></script>
を書いて、
index.phpを読み込んだと同時にセッションを生成します
セッションを使ってscript.phpの内容を操作するのです
812Name_Not_Found:2013/09/18(水) 22:00:16.66 ID:???
ブラウザに読み込まれてコードが残ってるんだからそんなことしても意味ない
813Name_Not_Found:2013/09/18(水) 22:00:20.96 ID:???
コードは無くなっても変数は残るぞ
814Name_Not_Found:2013/09/18(水) 22:02:44.69 ID:???
このキチガイは長文野郎の自演
815Name_Not_Found:2013/09/18(水) 22:06:07.21 ID:???
>>808
const使えばいいよ
816Name_Not_Found:2013/09/18(水) 22:06:17.98 ID:???
統合失調症乙
817Name_Not_Found:2013/09/18(水) 22:12:01.24 ID:???
こいつプログラム板にいたやつだよな
手口がそのまんまだよ
818Name_Not_Found:2013/09/18(水) 22:20:34.76 ID:???
病院行けよ
819Name_Not_Found:2013/09/18(水) 22:22:22.07 ID:???
ECMAScriptスレにここへのリンクが貼られてから異常に加速してるからなw
820Name_Not_Found:2013/09/18(水) 22:24:25.92 ID:???
>>815
ありがとうございます
821Name_Not_Found:2013/09/18(水) 23:14:45.46 ID:???
病人もそこから来たのか
822Name_Not_Found:2013/09/18(水) 23:42:43.36 ID:???
ラストコール前だからはしゃいでるんだろう
823Name_Not_Found:2013/09/19(木) 01:04:15.20 ID:???
type="text/javascript"を書かなかったら
JavaScript あつかいになるって
ご完成保ててないよ。

type="text/javascript" を省略したら、
その前で使っていた言語とみなすブラウザが有る。


つまりだな。IE6では"text/vbscript”を最初に使っていると
次に省略したものが出てきたらvbscriptとして扱うんだよ。

明らかに互換性保ててないじゃないか!
824Name_Not_Found:2013/09/19(木) 01:10:45.96 ID:???
HTML5は後方互換性を保ってるわけじゃないから、別に問題ない。
そもそもIE6なんて化石みたいなブラウザに対してHTML5で書く必要性がないのだから、
もしIE6もサポート対象に入れなければならないなら普通にHTML4.1で書けばいい。
825Name_Not_Found:2013/09/19(木) 01:13:25.72 ID:???
それでどういうケースで問題が起こるの?
826Name_Not_Found:2013/09/19(木) 01:18:27.21 ID:???
text/vbscriptなんて使うやつおらんやろ
827Name_Not_Found:2013/09/19(木) 01:25:31.86 ID:???
varを関数先頭にまとめるbeautifierが欲しいです
esprimaでソースを分解し、escodegenでソースを再生成すればいいと分かりました
シンタックスツリーからすべてのdeclarationsを収集する処理も書きました
しかしdeclarationsが所属する関数を調べる方法が分かりません
どうしたらいいですか
828Name_Not_Found:2013/09/19(木) 01:43:00.44 ID:???
>どうしたらいいですか
あきらめてください
829Name_Not_Found:2013/09/19(木) 02:17:39.43 ID:???
誰か作ってくれませんか?
みんな欲しいでしょそういうの
もう変数を書く度に関数の最初に移動して追加するのは嫌だ (>_<)
830Name_Not_Found:2013/09/19(木) 02:19:26.18 ID:???
>>829
意味が無いのだからやらなくて良い。
831Name_Not_Found:2013/09/19(木) 02:28:21.27 ID:???
クロックフォードスタイルに意味があることは以前結論に至りましたよ
832Name_Not_Found:2013/09/19(木) 02:35:23.13 ID:???
意味が無いのだからやらなくて良い。
833Name_Not_Found:2013/09/19(木) 02:38:15.82 ID:???
absoluteなdivをtransitionで移動するようにしてみたのですが
スムーズに移動する時もあれば微妙にカクつく時もあり、
動きにバラつきを感じます
transitionではなくタイマーイベントでやった方がいいのでしょうか?
834Name_Not_Found:2013/09/19(木) 02:45:11.65 ID:???
いいや、前者でいい
835Name_Not_Found:2013/09/19(木) 03:08:13.83 ID:???
>>833
transition はサポートされていなくてもページは機能するから
実行の優先度が低くされる傾向はあるかもしれない
836Name_Not_Found:2013/09/19(木) 03:37:28.75 ID:???
んなことはない
837Name_Not_Found:2013/09/19(木) 13:07:01.48 ID:???
Object.keysで得られる配列は、対象が同じ場合、常に同一順序ですか?
838Name_Not_Found:2013/09/19(木) 13:51:39.98 ID:???
もちろん
839Name_Not_Found:2013/09/19(木) 13:56:56.48 ID:???
でも順序が同一だと前提してはいけませんよね?
840Name_Not_Found:2013/09/19(木) 14:25:17.62 ID:???
sortかければいいだけじゃん
何のために配列で帰ってきてるのよ
841Name_Not_Found:2013/09/19(木) 14:25:34.61 ID:???
ありがとうございました
842Name_Not_Found:2013/09/19(木) 17:35:01.57 ID:???
>>802
この件ですが、ネストされたオブジェクトを、キーを接続したパスで管理するクラスを書くことで
目的は実現できました
ありがとうございました
843Name_Not_Found:2013/09/19(木) 17:41:47.26 ID:???
ありがとう言うんならちゃんと質問しろ
844Name_Not_Found:2013/09/19(木) 18:17:42.87 ID:???
Objectにオブジェクトをマージするメソッドがない理由は何ですか
845Name_Not_Found:2013/09/19(木) 18:29:14.39 ID:???
ES6
Object.mixin(target, source) //string keys
Object.assign(target, source) //unique keys
846Name_Not_Found:2013/09/19(木) 19:12:28.30 ID:???
よく調べもしないですぐないない言う人って……
847Name_Not_Found:2013/09/19(木) 19:16:10.99 ID:???
ES6にはあるんですね〜
早く広まってほしいものです
ありがとうございました
848Name_Not_Found:2013/09/19(木) 19:27:07.46 ID:???
大抵のライブラリにはあるし自分でちょちょっと書いちゃえばいいじゃん
どうせ内部的にもObject.getOwnPropertyNamesとか使って内部JSで実装されるんだろうし
849Name_Not_Found:2013/09/19(木) 20:13:57.72 ID:???
自分で書けるほど簡単ではない
jqueryのは糞長いし
850Name_Not_Found:2013/09/19(木) 20:26:07.89 ID:???
シャローなマージなら簡単
851Name_Not_Found:2013/09/19(木) 20:35:58.09 ID:???
これじゃあかんのか??

Object.defineProperty(Object, 'mixin', {
value: function (target, source) {
var keys = Object.getOwnPropertyNames(source)
for (var i = 0; i < keys.length; ++i) {
target[keys[i]] = source[keys[i]]
}
return target
}
})
852Name_Not_Found:2013/09/19(木) 21:07:30.12 ID:???
jqeuryの文法はjavascriptと違うようですが、どうやって文法拡張してるんですか?
それとも、うまいことメソッドを使って別の文法みたいに見せてるんですか
853Name_Not_Found:2013/09/19(木) 21:09:21.51 ID:???
>>851
Object.defineProperty(Object, 'mixin', {
value: function (target, source) {
var keys = Object.getOwnPropertyNames(source);
for (var i=0; i<keys.length; i++) {
Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
}
return target;
}, enumerable: false
});
854Name_Not_Found:2013/09/19(木) 21:09:26.66 ID:???
後者で合ってる
855Name_Not_Found:2013/09/19(木) 21:11:22.24 ID:???
文法が違うと言われるとなんか違和感
856Name_Not_Found:2013/09/19(木) 21:15:15.61 ID:???
<div id="top">
<div>a<div>
<div>a<div>
<div>a<div>
<div>a<div>
<div>a<div>
</div>

こういうhtmlがあります
div#topの子要素をクリックしたときにインデックスが知りたいんですが
これはどうやって調べればいいのでしょうか?
857Name_Not_Found:2013/09/19(木) 21:16:17.85 ID:???
これでFAだな

Object.defineProperty(Object, 'mixin', {
value: function (target, source) {
var keys = Object.getOwnPropertyNames(source);
for (var i=0; i<keys.length; ++i) {
Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
}
return target;
}
});
858852:2013/09/19(木) 21:18:07.21 ID:???
>>854-855
最近javascript始めたので、まだ文法うろ覚えなんです
C++みたいな黒魔術使えるのかなーって思っただけです
あざーす
859Name_Not_Found:2013/09/19(木) 21:21:03.48 ID:???
jqueryは最初、$がただの関数名だと気づけなかった
860Name_Not_Found:2013/09/19(木) 21:30:53.88 ID:???
>>856
こんな感じ
テストはしてない

var tar = event.currentTarget
var top = document.querySelector('div#top')
var divs = document.querySelectorAll('div#top>div')
while(tar && !tar.webkitMatchesSelector('div#top>div')) tar = tar.parentNode
if(!tar) return //場違いな要素
for(var i=0;i<divs.length)if(tar == divs[i]) break;

//---iが番数--
//以降処理
861Name_Not_Found:2013/09/19(木) 21:35:32.84 ID:???
writable:trueとconfigurable:trueは要らんの?
862Name_Not_Found:2013/09/19(木) 21:42:11.19 ID:???
>>860
なんでwebkit限定にするの?
863Name_Not_Found:2013/09/19(木) 21:57:17.79 ID:???
>>862
まだプレフィックス要るよということをwebkitに代表させただけ
他がどの程度対応してるかは知らん
864Name_Not_Found:2013/09/19(木) 21:59:53.33 ID:???
>>861
つうかプロトタイプ拡張じゃないんだからこれでいい

Object.mixin = function (target, source) {
var keys = Object.getOwnPropertyNames(source);
for (var i=0; i<keys.length; ++i) {
Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
}
return target;
}
865Name_Not_Found:2013/09/19(木) 22:05:31.17 ID:???
せやな
866Name_Not_Found:2013/09/19(木) 22:28:14.92 ID:???
SIerが作ってる業務APPは、画面枚にjavascriptを別ファイルに外出しするのが普通なんですか?
867Name_Not_Found:2013/09/19(木) 22:29:14.52 ID:???
SIerってなに?
868Name_Not_Found:2013/09/19(木) 22:33:26.84 ID:???
恐怖のstaticおじさんの話じゃないだろうな……
http://el.jibun.atmarkit.co.jp/pressenter/2010/11/1-828a.html
869Name_Not_Found:2013/09/19(木) 22:50:17.68 ID:???
本当にその画面にだけ必要な機能だけ分けてあとは共通ファイルにしたら
関数数個のファイルだらけにならないか?
870Name_Not_Found:2013/09/19(木) 23:07:32.13 ID:???
継承のためのメソッドを実装した継承可能クラスがあれば
継承を書くの簡単じゃね?と思ったのですが
そういうのありますか?
871Name_Not_Found:2013/09/19(木) 23:16:23.24 ID:???
継承なんてこれでいいじゃん
obj.__proto__ = ClassX.prototype
872Name_Not_Found:2013/09/19(木) 23:20:27.32 ID:???
コンストラクタから親クラスのコンストラクタを呼び出したり
メソッドをmixinしたりの処理がありますが・・
873Name_Not_Found:2013/09/19(木) 23:21:23.09 ID:???
javascriptでデストラクタのやり方をおしえてください
874Name_Not_Found:2013/09/19(木) 23:22:27.61 ID:???
ない
875Name_Not_Found:2013/09/19(木) 23:26:42.91 ID:???
>>872
言葉はいいからコードでどうしたいのか例示して
876760:2013/09/19(木) 23:28:35.92 ID:???
どうかくのが良いのでしょうか
これのサンプルおねがいします
877Name_Not_Found:2013/09/19(木) 23:33:17.33 ID:???
>>876
一般的な話過ぎて特定のサンプルコードにするのは難しいな
878Name_Not_Found:2013/09/19(木) 23:36:10.47 ID:???
ExtendableClass.inherit(Hoge,hogesMethods);
Hoge.inherit(Moge,mogesMethods);
var moge = new Moge();

こんなイメージです
879Name_Not_Found:2013/09/19(木) 23:49:48.73 ID:???
一般的な話なのにコードにかけないのはよく理解してないからじゃないのか?
880Name_Not_Found:2013/09/19(木) 23:59:20.91 ID:???
>>873
1回だけ参照が切れてるか調べる方法ならある
881Name_Not_Found:2013/09/20(金) 00:00:57.43 ID:???
>>880
おしえてえください
882Name_Not_Found:2013/09/20(金) 00:04:27.82 ID:???
>>878

Hoge.__proto__ = ExtendableClass.prototype
Hoge.prototype = hogesMethods

Moge.__proto__ = Hoge.prototype
Moge.prototype = mogesMethods
883760:2013/09/20(金) 00:06:37.91 ID:???
そうですか・・・
あごっちに直接聞けばいいんですけど・・・
884Name_Not_Found:2013/09/20(金) 00:20:24.13 ID:???
>>879
ある程度まとまった量のコードを書かないと>>760に沿うようなサンプルの形にならんから
手間的にちょっと厳しいって感じだ
885Name_Not_Found:2013/09/20(金) 00:31:03.69 ID:???
超簡単な話こういうこと

//NG
function Human(name, age) {
var year = (new Date).getFullYear
this.wareki = (year - age > 25) ? 'showa' : 'heisei'
}

//OK
function Human(name, age) {
var year = (new Date).getFullYear
this.wareki = getWareki(year - age)
}
886Name_Not_Found:2013/09/20(金) 00:31:51.14 ID:???
まちった

//OK
function Human(name, age) {
this.wareki = getWareki(age)
}
887Name_Not_Found:2013/09/20(金) 00:34:06.13 ID:???
//NG
function Human(name, age) {
var year = (new Date).getFullYear
this.wareki = (year - age < 1988) ? 'showa' : 'heisei'
}
888Name_Not_Found:2013/09/20(金) 00:39:28.94 ID:???
Classが静的な言語なら幾ら分離してもIDEで追えるからいいけど
JavaScriptでは必ずしもそうでじゃないよ
889Name_Not_Found:2013/09/20(金) 00:47:00.27 ID:???
>>886がよくて>>887がダメな理由がわからん
890Name_Not_Found:2013/09/20(金) 00:49:59.83 ID:???
>>885-887
>Class(Object)の構築を初期化内でやるのはやめましょう。
これに対するサンプルコードだとは思えんな
891Name_Not_Found:2013/09/20(金) 00:52:24.69 ID:???
ロジックの分離ということだろう

そしてこのケースだと単純すぎてそぐわないが
obj.init()
とか
obj.set〜
みたいなスタイルが一番推奨ということだろう
892Name_Not_Found:2013/09/20(金) 00:56:27.65 ID:???
>>890
>どうしてもさけられない場合でもせめてロジックと分離しましょう
この部分です
大きな構造になってくると>>891みたいな事だと思います
893Name_Not_Found:2013/09/20(金) 01:03:49.30 ID:???
クラスつまりコンストラクターとプロトタイプの定義と、
それをインスタンス化して利用するコードをわけろっていうことなんじゃないの?
>>886-887はクラスをどう定義するかって話になるんでちょっとズレてるような
894Name_Not_Found:2013/09/20(金) 01:22:23.78 ID:???
ちゃんとクラスを作れという話だよ
動的にメソッドを追加するなってこと
895Name_Not_Found:2013/09/20(金) 01:27:11.46 ID:???
直前のツイート読む限りそういうことだな
896Name_Not_Found:2013/09/20(金) 03:01:03.48 ID:???
どんどんJavaScriptじゃなくなっていく気がするね
もう別の言語でいいじゃんってならないの
897Name_Not_Found:2013/09/20(金) 03:27:22.17 ID:???
普通にJavaScriptのプロトタイプベースのオブジェクト指向の話だよ
898Name_Not_Found:2013/09/20(金) 03:36:12.84 ID:???
JavaScriptの最大の利点はブラウザでそのまま動くことなんですから
各自が用途に適した作法で書けばいいでしょう
ある程度規模の大きいプログラムの場合は>>893-894みたいな作法が好ましいってだけですね
899Name_Not_Found:2013/09/20(金) 08:48:22.49 ID:???
そんなことJSに限らず当たり前だろ
900Name_Not_Found:2013/09/20(金) 12:16:33.66 ID:???
クラス継承って、結局こんな関数書いてやるのが一番簡単ですよね?

function extendsClass(Parent,Child) {
var keys,key,i,prototype;
prototype = Child.prototype;
Child.prototype = Object.create(Parent.prototype);
keys = Object.keys(prototype);
for ( i=keys.length; i--;){
key = keys[i];
Child.prototype[key] = prototype[key];
}
Child.prototype.constructor = Child;
}
901Name_Not_Found:2013/09/20(金) 12:19:32.08 ID:???
IE8以下を切るならES5使ってもOKですか?
902Name_Not_Found:2013/09/20(金) 12:29:16.29 ID:???
JSもLiving Standerdだからバージョンは気にせず目的の対象で動く機能を最大限使っていけばいい
Firefoxは既にES6の半分くらいに対応してるしね
ただし将来使えなくなりそうなものや独自拡張はオススメしない
903Name_Not_Found:2013/09/20(金) 13:07:53.37 ID:???
>>900
自分の使う範囲で問題無いならそれでいいんじゃないの?
904Name_Not_Found:2013/09/20(金) 14:05:11.84 ID:???
prototype.constructorを設定しない時に出る不具合ってありますか?
905Name_Not_Found:2013/09/20(金) 14:13:39.82 ID:???
なんであごっちって呼ばれてるの?
906Name_Not_Found:2013/09/20(金) 14:20:51.70 ID:???
>>904
prototype.constructorを使っていなければ無い
907Name_Not_Found:2013/09/20(金) 14:26:37.67 ID:???
prototype.constructorを使う人なんているの?
908Name_Not_Found:2013/09/20(金) 14:33:24.14 ID:???
コンストラクターとprototypeをまとめて書けるような機能も次期ESには載せて欲しい
分けて書くの気持ち悪い
909Name_Not_Found:2013/09/20(金) 14:52:35.86 ID:???
は?何いってんの
class構文がまさにそれだろ
910Name_Not_Found:2013/09/20(金) 15:03:34.97 ID:???
え?そんなのあんの?聞いてねーし
911Name_Not_Found:2013/09/20(金) 15:13:35.89 ID:???
たしかだいたいこういう糖衣構文だっけ

class A {
constructor() { 'A' }
a1() { 'a1' }
a2() { 'a2' }
}

class B extends A {
constructor() { 'B' }
b1() { 'b1' }
b2() { 'b2' }
}



function A() { 'A' }
A.prototype = {
construtor: A,
a1: function () { 'a1' },
a2: function () { 'a2' }
}

function B() { 'B' }
B.__proto__ = A.prototype
B.prototype = {
construtor: B,
b1: function () { 'b1' },
b2: function () { 'b2' }
}
912Name_Not_Found:2013/09/20(金) 15:25:07.11 ID:???
classは継承辺りまでは本当に様々な問題が全て解決してる
あとはprivateやstatic修飾子がこれでいいかなーって段階
913Name_Not_Found:2013/09/20(金) 15:41:52.14 ID:???
ES6じゃないとArrayとかDateとかちゃんと継承できないもんね
914Name_Not_Found:2013/09/20(金) 17:56:57.56 ID:???
class構文はES6の最も代表的存在なのに知らない人もいるのな……
915Name_Not_Found:2013/09/20(金) 18:36:28.13 ID:???
>>911
これってもうプロトタイプベースとは呼べないね
プロトタイプベースでありクラスベースってこと?
916Name_Not_Found:2013/09/20(金) 18:39:01.28 ID:???
本質的には何も変わってないからプロトタイプベースだよ
917Name_Not_Found:2013/09/20(金) 18:51:54.84 ID:???
基本的には「プロトタイプベース」の方がより柔軟で制約がなくて「上位」
今までも”Class”をエミュレートできてたわけなんだから
糖衣構文が入ったくらいで「クラスベース」とは呼ばれない

但しそういう視点で見ると「クラス」はあるとは言ってもいいと思う
※JAVAの人に対しては除く※
918Name_Not_Found:2013/09/20(金) 19:06:10.72 ID:???
他の動的言語のクラスもJAVA的クラスじゃないっていうか、そもそもそれは合わないからね。
あとクラスというかは文化の問題。
まあ初心者にclass構文だけどクラスじゃないのよとは流石に教えられないだろ……
これで厄介なクラスもどき問題に蹴りが付くといいな。
919Name_Not_Found:2013/09/20(金) 19:09:36.24 ID:???
JavaScriptにはクラスがない厨を黙らせられるようになったから良かった
920Name_Not_Found:2013/09/20(金) 19:14:53.43 ID:???
もしかするとJavaScriptにJavaという文字が入ってなかったらだいぶ違ってたかも
Javaみたいな典型的なお固い言語と比較されるLLなんて他に無いよ
921Name_Not_Found:2013/09/20(金) 19:36:35.58 ID:???
いまだに継承を必要とするプログラムを書いたことがない
922Name_Not_Found:2013/09/20(金) 19:46:06.99 ID:???
ま、まさかこんな脆弱性が存在するとは……やべえな
http://masatokinugawa.l0.cm/2013/09/u2028u2029.domxss.html
923Name_Not_Found:2013/09/20(金) 21:09:29.16 ID:???
どういうことですか?
924Name_Not_Found:2013/09/20(金) 21:12:39.33 ID:???
リダイレクトとかURLを弄る操作は特に「javascript:」に注意ってことだな
925Name_Not_Found:2013/09/20(金) 21:40:10.39 ID:???
>>922
きぬがわまさと君、自演で宣伝ごくろうさまです
chromeでチェックしてみたけど再現しなかったです
926Name_Not_Found:2013/09/20(金) 21:47:31.86 ID:???
再現します
節穴乙
927Name_Not_Found:2013/09/20(金) 21:53:17.51 ID:???
そもそもの仕様がおかしくないか
なんでそんな変な仕様なんだよ
ECMAはアホなのか?
928Name_Not_Found:2013/09/20(金) 21:56:34.03 ID:???
ESだけの問題じゃない
いろいろ不運が重なってのこと
929Name_Not_Found:2013/09/20(金) 22:31:34.94 ID:???
>>867
業務アプリケーションを作る会社 or 業務アプリケーションを作っている人の事をSIerという
930Name_Not_Found:2013/09/21(土) 10:39:56.21 ID:???
メソッドチェーンの末尾で、それを引数に関数を呼ぶことは出来ますか?
console.log(hoge.moge().poge());
これを
hoge.moge().poge().call(console.log);
みたいな感じです
931Name_Not_Found:2013/09/21(土) 11:27:47.39 ID:???
いや・・試したほうが早い事を何で聞くの?
932Name_Not_Found:2013/09/21(土) 11:34:38.01 ID:???
やり方が分からないのにどうやって試すんですか?
933Name_Not_Found:2013/09/21(土) 11:37:34.46 ID:???
普通のメソッドチェーン自体のやり方は理解してる?
934Name_Not_Found:2013/09/21(土) 11:46:22.03 ID:???
自分が何を質問してるかも分からないのか?
935Name_Not_Found:2013/09/21(土) 11:49:36.42 ID:???
質問の意味分かりませんか?
936Name_Not_Found:2013/09/21(土) 11:53:37.37 ID:???
メソッドチェーンの意味が分かっていないのでは?
それとcall, applyあたりについて調べたほうがいいね
937Name_Not_Found:2013/09/21(土) 11:57:05.94 ID:???
分かっていなければこんな質問をするわけがないことも分からないのですか??
938Name_Not_Found:2013/09/21(土) 11:58:19.13 ID:???
出来るのなら方法を、
出来ないのなら出来るようにする方法を書いて下さい
頓珍漢な推測は無用です
939Name_Not_Found:2013/09/21(土) 11:58:58.14 ID:???
console.logは関数オブジェクトだけ受け取っても実行できんから、
hoge.moge().poge().call(console.log); は無理かも?
940Name_Not_Found:2013/09/21(土) 11:59:15.12 ID:???
頭が高い
941Name_Not_Found:2013/09/21(土) 12:04:44.37 ID:???
>>930
poge()の戻り値の仕様がわからないとなんとも言えない
console.log(hoge.moge().poge()); を実行した場合にconsole.log()に出力するのは何?
poge()はメソッドチェーンを終了して何か値を返すということかな?
942Name_Not_Found:2013/09/21(土) 12:08:37.34 ID:???
logなので、この場合は文字列でしょう
943Name_Not_Found:2013/09/21(土) 12:11:39.23 ID:???
console.logはオブジェクトを渡して出力することもできるんだよ
944Name_Not_Found:2013/09/21(土) 12:11:57.87 ID:???
メソッドチェーンで産出した結果を他の関数に渡したくなった時、
全体を関数の引数にしたり、変数に代入してから関数に渡したりするのが面倒なので
産出結果自身が、自分を他の関数に渡せればいいのでは?
というのがもともとの発想です
945Name_Not_Found:2013/09/21(土) 12:14:09.30 ID:???
>>944
無理
jQueryみたいに全ての関数が常にjQueryオブジェクトを返すとかすれば別だけど。
946Name_Not_Found:2013/09/21(土) 12:18:32.47 ID:???
>>944
自分でメソッドチェーンするオブジェクトを書いてみれば、
無茶苦茶なことを言ってるということがわかる
947Name_Not_Found:2013/09/21(土) 12:31:01.45 ID:???
>>945
ありがとうございました
>>956
もしかしてメソッドチェーン=同一オブジェクトが渡っていくことと思ってますか?
単純にメソッドが次々に繋がっていけばメソッドチェーンだと思います
948Name_Not_Found:2013/09/21(土) 12:37:22.31 ID:???
>>947
そんなこと思ってないよ
自分が無茶苦茶なこと言ってないと思っているなら>>941に応えてくれよ
949Name_Not_Found:2013/09/21(土) 12:39:52.67 ID:???
jQueryとかでメソッドチェーンのやり方だけ覚えた奴が、
原理も知らないのにむちゃくちゃなことをやろうとしてるようにしか見えない
ちゃんとメソッドチェーンの仕組みを勉強したほうが今後のためだぞ
950Name_Not_Found:2013/09/21(土) 12:50:20.84 ID:???
>>947
少なくともpoge()メソッドがthisかもしくは別のオブジェクトをreturnしないと
poge().call()という呼び出しはできないんだよ
それをお前は理解してるか?
951Name_Not_Found:2013/09/21(土) 12:52:30.95 ID:???
まあ、メソッドチェーンを特殊なシンタックスと勘違いしちゃってる素人はよくいる
952Name_Not_Found:2013/09/21(土) 13:00:55.95 ID:???
>>930
この件ですが、とても恥ずかしい勘違いをしていることに気がつきました
半年ROMることにします
953Name_Not_Found:2013/09/21(土) 13:05:07.98 ID:???
君はコスモを感じたか
954Name_Not_Found:2013/09/21(土) 13:20:16.40 ID:???
Proxyを使えば全ての関数がメソッドチェーン意識した設計でなくても大丈夫よ
もしくは
new MethodChain(APIs)
みたいにする方法でもいくらかいける
955Name_Not_Found:2013/09/21(土) 14:30:21.28 ID:???
文字列の末尾が/だったらそれを削除する時
s = s.replace(/\/$/,'');
より簡潔あるいは速い書き方ありますか?
956Name_Not_Found:2013/09/21(土) 14:31:29.45 ID:???
>>952
これはもちろん偽者です
957Name_Not_Found:2013/09/21(土) 14:52:36.44 ID:???
もうあきた
958Name_Not_Found:2013/09/21(土) 14:54:03.48 ID:???
>>1も読まずに質問者としての最低限のルールも守らずID晒さなかった時点で偽物も本物も無えよ
どっちにしろクズ
959Name_Not_Found:2013/09/21(土) 15:00:03.58 ID:???
>>955
if ('/' === s.charAt(s.length - 1))
&nbsp;s = s.slice(0, -1)

簡潔ではないがこっちの方が早いと思う
960Name_Not_Found:2013/09/21(土) 15:00:37.02 ID:???
じゃあ、回答者のリテラシーを信用しますね
961Name_Not_Found:2013/09/21(土) 15:08:17.92 ID:???
>>959
http://jsperf.com/regex-v-s-slice

そちらの方がかなり速かったです
ありがとうございました
962Name_Not_Found:2013/09/21(土) 15:27:21.07 ID:???
>>959
それなら
if(s.endsWith('/'))
の方が簡単だし良くない?
963Name_Not_Found:2013/09/21(土) 15:35:07.75 ID:???
endsWidthとかstartWithなんてあったんですね
よくあるケースなのでうれしい機能です
でもchromeでは動かないようです
MDNを見ても記事がなんか古いような
便利なメソッドなのに、歴史の彼方に消え去ってしまった・・?
964Name_Not_Found:2013/09/21(土) 15:35:40.44 ID:???
>>962
まだほとんど実装されてない機能だからなあ…
利用できるようになればそっちのほうが明らかにいいだろうけど。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
965Name_Not_Found:2013/09/21(土) 15:38:42.80 ID:???
ES6で実装されるのかぁ
はよこいES6
966Name_Not_Found:2013/09/21(土) 15:48:53.44 ID:???
ChromeやNodeでも使えるよ
967Name_Not_Found:2013/09/21(土) 15:54:35.26 ID:???
すまないが次スレは俺に立てさせてくれ
968Name_Not_Found:2013/09/21(土) 16:09:59.25 ID:???
昔のテキストで node.jsのサンプルに require.paths.push(__dirname)で設定するところがあるんだけど、
require.pathsが廃止になっていて動かなくなってる。
代わりにmodule.paths.pushが使えると書いてあったので試したところ、別のファイルでrequireするところで失敗。
module.pathsの設定は引き継がれないみたい。

なので、windowsの場合、環境変数NODE_PATHで設定すればなんとか動いたけど、なんかもっとスマートな方法ないのかな?
969Name_Not_Found:2013/09/21(土) 16:15:48.52 ID:???
module.paths.push(process.env.HOMEPATH+'/node_modules');
970Name_Not_Found:2013/09/21(土) 16:16:25.78 ID:???
node.jsはスレ違いだろ・・
971Name_Not_Found:2013/09/21(土) 16:22:16.89 ID:???
JSは基礎仕様とホストAPIとエンジンが政教分離してるから強い
972Name_Not_Found:2013/09/21(土) 16:55:57.80 ID:???
node.jsはWEBプログラミング板のここか

サーバーサイドJavaScript総合
http://kohada.2ch.net/test/read.cgi/php/1210836132/

ほとんど死にかけてるけど
973Name_Not_Found:2013/09/21(土) 17:00:28.33 ID:???
プログラム板にもスレあったよ
974Name_Not_Found:2013/09/21(土) 17:03:38.45 ID:???
【node.js】サーバサイドjavascript 2【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1358937029/
これか
975Name_Not_Found:2013/09/21(土) 17:12:33.35 ID:???
ちゃんと毎日チェックしてるぞ
976Name_Not_Found:2013/09/21(土) 17:16:36.37 ID:???
>>969
それではうまくいきませんでした。

サーバー起動スクリプトの設定なんですけど、
require.paths.push(__dirname + "/lib");←廃止
module.paths.push(__dirname + "/lib");←/lib以下のファイルでrequire失敗

ttp://blog.fkei.me/2012/01/nodejs-v06requirepathssearch-path.html
ここを参考にしてprocess.env['NODE_PATH']を設定したらうまくいくようになりました。

スレ違いになるようなのでここまでにします。お騒がせしました。
977Name_Not_Found:2013/09/21(土) 17:19:08.93 ID:???
それはファイルの配置方法がおかしいだけだな
978Name_Not_Found:2013/09/21(土) 17:41:23.26 ID:???
ちゃんとindex.js書いてそこで読み込んでるか?
979Name_Not_Found:2013/09/21(土) 20:43:49.54 ID:???
メソッドチェーンの話

http://underscorejs.org/#tap

> tap_.tap(object, interceptor)
> Invokes interceptor with the object, and then returns object.
> The primary purpose of this method is to "tap into" a
> method chain, in order to perform operations on intermediate results within the chain.
>
> _.chain([1,2,3,200])
> .filter(function(num) { return num % 2 == 0; })
> .tap(alert)
> .map(function(num) { return num * num })
> .value();
> => // [2, 200] (alerted)
> => [4, 40000]

var b = _("a").tap(console.log).value().replace(/a/, 'b');
980Name_Not_Found:2013/09/21(土) 20:51:29.79 ID:???
>>983

polyfillとかshimとかで検索しろ。
新しい言語仕様ではなく、
単に関数レベルのものなら
ライブラリ一つで簡単に使えるようになる。

http://openweb.co.jp/2013/01/18/%E6%B0%97%E3%81%AB%E3%81%AA%E3%82%8B%EF%BC%81%E5%A4%A2%E3%81%8C%E3%81%82%E3%82%8B%EF%BC%81javascript-next-ecmascript6-1-es6%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%E9%96%A2%E6%95%B0/
981Name_Not_Found:2013/09/21(土) 21:12:35.16 ID:???
>>979
だめね。やり直し。
982Name_Not_Found:2013/09/21(土) 21:20:24.03 ID:???
子から親の参照を得られるオブジェクトモデルないですか?
キーの連続をパス化したものをインデックスにするモデルにしているのですが、
特定オブジェクトを検索してパスの集合を得る
→オブジェクトツリーに挿入などの操作を加える
→パス情報が更新される
→先に検索しておいたパス情報が不正確になる
という問題があります
オブジェクトツリーを更新しても検索結果が簡単には古くならない
そんなモデルはないものでしょうか
983Name_Not_Found:2013/09/21(土) 21:24:31.09 ID:???
>>981
chainメソッドが抜けてるんだなたぶん

firefoxはこれが動くんだなあ
b = _.chain("a").tap(console.log).value().replace(/a/, 'b');

chromeはこうしないとダメだわ
b = _.chain("a").tap(function(x){console.log(x)}).value().replace(/a/, 'b');
984Name_Not_Found:2013/09/21(土) 21:26:29.85 ID:???
すべての値がgetParentメソッドを持っている
そんなオブジェクトモデルは可能なのでしょうか
985Name_Not_Found:2013/09/21(土) 21:39:21.01 ID:???
不可能です
986Name_Not_Found:2013/09/21(土) 22:05:10.04 ID:???
全てはオブジェクトなので上書きできるそうですが
alert()でアラートを出さないでconsole.logを出すように拡張したいんですが
window.alert = function(n){console.log(n);}
ってやりました。
そこで、やっぱり元のアラートを出す動作に戻したいのですが、
どうやってもどすのでしょうか?
仕様として元に戻せますかね?
ブラウザのリロードすればいいというのはなしです
987Name_Not_Found:2013/09/21(土) 22:09:14.85 ID:???
変数にコピーして取っておけば?
988Name_Not_Found:2013/09/21(土) 22:10:19.95 ID:???
規格は見てないけどconsole.logのlogはstaticじゃなくて
プロトタイプ経由のメソッドであるべきなんじゃないかな?
ならthisが重要だからChromeの挙動で合ってるような気がする
989Name_Not_Found:2013/09/21(土) 22:17:11.15 ID:???
>>986
現実:
キャッシュするか、iframeのコンテキストを利用

ES6希望:
import alert from "@bom";
or
{alert} = System.get("@bom")
990Name_Not_Found:2013/09/21(土) 22:21:15.25 ID:???
いやいや。

delete window.alert;

これだけで元の alert が復活する。
991Name_Not_Found:2013/09/21(土) 22:31:24.78 ID:???
そのテクニックは仕様外だから実際は使えんな。
たしかモバイル機器によく入ってたNetFrontか何かで動かなくて詰まった記憶が。
992Name_Not_Found:2013/09/21(土) 23:04:32.23 ID:???
次スレですよ

+ JavaScript の質問用スレッド vol.109 +
http://toro.2ch.net/test/read.cgi/hp/1379772045/
993Name_Not_Found:2013/09/21(土) 23:13:10.40 ID:???
1000
994Name_Not_Found:2013/09/21(土) 23:24:53.58 ID:???
>>982
この件についてですが、valueとparentを持ちネスト可能なシンプルなオブジェクトを書いてみたら
インデックス方式よりずっとシンプルに出来そうです
やはり美しくないときは何か間違っているのですね
ありがとうございました
995Name_Not_Found:2013/09/21(土) 23:28:35.83 ID:???
これが入ったら無茶苦茶なことでも好きなようにできるようになるからそれまで我慢しろ
http://wiki.ecmascript.org/doku.php?id=strawman:value_proxies
996Name_Not_Found:2013/09/21(土) 23:43:19.83 ID:???
>>991
そもそも alert が標準にないのに、仕様外も何もない。

>>986
現状は大抵、Window.prototype の Own プロパティとして
alert が実装されてるから、Window.prototype.alert が
あればそれを使えばいい。

delete window.alert;

で元の alert が使える様になるのも同じ理由。
997Name_Not_Found:2013/09/21(土) 23:53:14.05 ID:???
>そもそも alert が標準にないのに、仕様外も何もない。
開き直りっすか
998Name_Not_Found:2013/09/22(日) 00:00:05.94 ID:???
は?
999Name_Not_Found:2013/09/22(日) 00:04:55.03 ID:???
1000
1000Name_Not_Found:2013/09/22(日) 00:05:31.81 ID:???
さ?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。