+ JavaScript の質問用スレッド vol.108 +
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/
■主要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 中でやるとか
■主要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 中でやるとか
JAVASCRIPT
<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">にアクセスすればいいのでしょうか
class="a"なものは複数ある可能性があるから、常に並びで返されるんで、 たとえ1個であっても並びの先頭の1個を取る必要があるんでしょ。 そしてrowspan=2にするのなら、偶数行はclass="a"のセルは書いてはいけないんじゃ ないのかな。テーブル表示して正しい構造になってるか確認してるの?
>>7 そのとおりです。
偶数行は<td class="a">はありません。
この場合、$('tr').eachを書く場合、偶数行はどのように上の行の<td class="a">にアクセスするのでしょうか?
closestは子孫じゃないととれないようですし・・・・
流れぶった切って申し訳ないけど、俺、最近ダメだわ。 10代の頃はSEXした後もその余韻で家帰ってもシコッてた頃が懐かしい。 20代後半から来るとは聞いてたけど。ホントなんだねぇ。 大学生の頃はイベントサークル所属して狂ったようにナンパして あの手この手でHすることばっかり考えて結果はあんまり伴ってなかったのに 今は若い子と知り合ってもそういう気になれないし 不思議と今の方が若い頃より女に不自由しない。 10代の頃の自分が今の自分を見るとビックリするだろうね。 もっと若くて勢いのある時にそうなってほしかったよ。 因みに今日も仕事でこんな時間。。。やっぱストレスなんですかね? 年は今年31で仕事は商社勤務です。医者に相談した方がいいんでしょうかね? どういうとこに相談すればいいんでしょうかね? ホントに性欲が無さ過ぎで悲しくなってくる。
>>9 遠回りのようだけど、行列が見た目と合致する二次元配列を作っておいて、
それを走査する方がいいのでは。
JavaScriptをIDEで開発したい場合、何が一番いいですか?
バトルにおいては各言語の調査やアピールも必要でしょ 喧嘩スレじゃないんだぞ いい意味のバトルだ
aptana studioを入れてみましたが 今書いてるソースのアウトラインが表示されない JSは自由度が高すぎるのでパースが難しいのかなぁ
>>13 著名人が使ってるのはwebStorm
ザコや無料厨が使ってるのはeclipseやaptanaとかテキストエディタ
ありがとうございました
さぶらいむてきすとがいいよ
sublime text、ctrl+Rで関数リストが出るんですね これは素敵だ
やってみたら夥しい数のconsoleが出てきた
JSHintのパッケージも入れてみたら便利になりました エディタなのに統合環境的に使えていいですね
【環境】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();
this. つけよう
>>23 ありがとうございます!
thisなんて初歩的すぎる見落としでした!
バッチリ動きました!
selfじゃだめなの?
self派?that派?ES6派?あなたはどっち派?
エディタを作る素材って感じだな でもゲームライブリ+TypeScript用オレオレエディタみたいなのが 気軽に作れるって、使う人が使えばいい開発環境になるかもな
空のJSON判定ってどうすりゃいいですか? var json1 = undefined; var json2 = null; var json3 = {}; のjson3が、{}であることを判定したいのですが。 json1,json2なら、未定義やnull時は if(!json1){...}; で判定できるんですが、json3の場合はどう書けばいいのか解りません。 if(json3 === {}){...}; はfalseになってしまいました。
400万行まで編集できるってマジ!? それなら普通のエディタも作れるじゃん
>>29 Object.keys(json3).length
それだと ECMAScript5 では不十分だけどね。
Web技術はみなLiving Standard バージョンとかそもそも無い
見てないけどbase64にしてイジってんじゃないの
何故ってどういうこと? 疑問点があるんならハッキリ言ったらいいし 全体の流れを知りたいのならソース見ればいいじゃん そのくらいのこともしない奴に教えられることなんて無いね
↑ 疑問点書いてあるのにそれすらわからないってアホだな
×そのくらいのこともしない奴に教えられることなんて無いね ○私の知識ではソースコード見ても分からないので、教えることは出来ない
無能な質問者による回答者に対する罵倒w
jqueryを使って、 liタグの羅列から、指定したインデックスのli要素を削除したり、 指定した場所にli要素を挿入したりするにはどうしたらいいですか?
完璧なんて無い すべてのキーの列挙が保証されるgetOwnPropertyKeysもES6だし
>>39 ソースを読めるようになると便利よ
もっと具体的に聞いてくれたら親身に教えてあげられるよ
頑張れ!!
っていうツンデレメッセージなのにそれも分からんとか……
>>29 まず「空のJSON判定」では無くて「空のobject判定」だということをハッキリさせよう。
>>45 スルーされて消えていった質問も多いんだから、
質問者は例えひどく言われたとしても、
関心を持ってもらっただけでもラッキーと思うべきだよね。
48 :
Name_Not_Found :2013/09/09(月) 16:44:25.05 ID:Wa11yclS
JSONのNがなんだったかいつも忘れてしまう JavaScriptObjectなんとか…
42の件ですが出来ました // 削除 $('#test').children().eq(0).remove(); // 挿入 $('#test').children().eq(0).before("<li>4</li>"); // 追加 $('#test').append("<li>5</li>");
notification?
自分のやり方とは違う人もいるのだから質問することに問題はありません
53 :
Name_Not_Found :2013/09/09(月) 16:56:07.88 ID:Wa11yclS
解決した報告はいいんじゃね?
>>41 まとめ
enumerable unique string keys
→Object.keys [ES5]
unique string keys
→Object.getOwnPropertyNames [ES5]
unique keys
→Object.getOwnPropertyKeys [ES6]
private keys
→現状手段無し(不明) [ES6-7]
getOwnPropertyNamesを決める時に、名前をKeysじゃなくてNamesにしてて良かったな。 ECMAは未来がちゃんと見えてる、頼もしい。
arrayを拡張したいですがprototypeは汚染したくないです arrayとprototypeのプロトタイプチェーンの間に別のprototypeを挟み込むことなんて出来ますか?
var base = ["a","b","c"]; var child = Object.create(base); child[0] = "x"; child[3] = "x"; console.log(child.join("-")); こうすると、出力は"x-b-c"になります 親オブジェクトに存在していたインデックスに対してはjoinが働き、新規に追加した分には働かない 何故こういう動作になるのですか?
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"となります
プロパティアクセスをハンドリングすることって出来ますか? a[0] = "a"; としたら、0と"a"を関数で受け取るようなことがしたいのです
>>57 ,58
console.dir(base);
console.dir(child);
としてみればわかるだろう。
baseがarrayでchildがobjectだということしか分からないのでは? baseの個数分だけchildの要素がjoinされるというのはちょっと変な動作だと思います
childは配列じゃないから、child[3]="x"とやってもchild.lengthプロパティを更新してくれないからだな baseを直接いじらなくても、child[3]="x"の後にchild.length=4とすればお望みの結果になるぞ
なるほど ありがとうございました
>>56 の件ですが、
継承でうまく何とかするのは無理っぽかったので
オブジェクトにメソッドを後付けする方法にしました
>継承でうまく何とかするのは無理 そのためにES6には@@createがある よってES6ではArrayやDateなんかをきちんと継承することが可能 ES5以前ではそういった継承は不可 @@createが導入されるのはもう少し先だろうけど 今でもFFで使えるDirectProxyでも似たような効果のことは出来る
jquery uiにある機能はjquery uiを使いますか? それとも最適なプラグインを探しますか? なんか、jquery uiって微妙に動きがぎこちない気がします
そのくらいてめえで考えられないのか? 親の言いなりで生きてきたのか?
他人がどうしてるかなんて考えても分からんだろw 馬鹿かお前は
>>65 ES6でサポートされるんですね
ありがとうございました
質問練習場とか質問代理エスパー事務所とか無いのか? こいつらまともに自分の知りたいことまとめられないから 検索もできなくて困ってるんじゃないだろうな もっと努力をしろ 放り投げるような質問はNG
>>66 動きがぎこちないと思うんだったら他の探せば?
一体何を求めているのか全く分からん
自分で納得いかないものだったらどうするから自分で答え見つけられるだろ ゆとりは人の意見聞かないと動かないんだな
Widgetsは使わないかな。なんか見た目古臭いから。 Effectsも確かに今市
自分の判断の原因が自分にあるのか、 それとも対象にあるのかは自分一人でいくら考えても分からない そして様々な意見は第三者にも参考になる 質問に文句言ってるクズの書き込みは永遠に誰の役にも立たないし 書いた本人のためにすらなっていない
ほとんどの2ch質問スレは質問に文句言うためのスレだろ。
そんなことないが
これでライブラリスレで聞いてこい このよう機能をもつライブラリを検討しているのですが、 jquery uiではこの環境において動きがぎこちなくて困っています。 軽そうな類似のライブラリをいくつか教えていただけませんか?
sublime textでJSbinみたいなプレイグラウンドを作ることは出来ないでしょうか? JSbinは気軽に真新しい環境でコードを書けていいのですが、 sublimeのコード補完になれるとコーディングが面倒になってきました sublime serverを入れたので編集、閲覧はできるのですが 真新しい環境の気軽な作成、ライブラリの簡単指定ができません プラグイン自作すればいいかもですがpythonなんてもう忘れました
JSで自作するのではなくsublime textでやりたいんです
自分でこれがダメだと思えば他を使う そこに他人の意見なんて聞く意味がない はっきりいって自分の意見をもてない人間はこの業界向いてないよ
JSbinみたいなプレイグラウンドを作りたい
プラグイン自作する気があってPythonは無理だけどJSならできる
なら
>>27 でええんとちゃうんか
わがままやな
そもそもの発想が「sublime上でJSbinみたいなことがやりたい」なので sublimeは必要条件です
>>84 >「sublime上でJSbinみたいなことがやりたい」
残念ながらsublimeの性質とJSbinの性質を考えると無理です。
とりあえず具体的にやりたいこと1つ挙げてみろよ
>>84 sublimeの話をしたいんだったら明らかにこのスレじゃないだろ
sublimeスレ行けよ
JavaScriptスレでもPHPスレでも嫌われてて大変ですね
まずその性質の違いを説明しろよ
なんでjsスレでpythonの質問が出てくるんだよ
スレチになりそうな質問は広く慎重にするのが基本だろ 自分からスレチの方向に狭めて無遠慮に聞いてどうする
>>78 SublimeServerて、ただの簡易HTTPSvrじゃん。Sublimeから呼び出せるってだけで。
つまり依然NativeアプリをWebアプリに組み込むという話なので、そんなもん
ブラウザ拡張でも作るかい? まあ方向としてはSublimeServer改良したプラグイン自作するのがいいんじゃない?
書き込み不可なはずのプロパティに、 何度か書き込みをかけたり、その作業をする関数を何度か呼ぶと、 書き込みができてしまい、困惑しています これはブラウザのバグなのでしょうか? 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
location.hrefを書き換えると、書き換え先のurlに飛んじゃうんですけど 飛ばないでlocation.hrefを書き換える方法ありませんか? リファラーを特定のurlにしたいのが望みなので、location.hrefを使わなくてもいいです
アドレスバーだけ変える方法はあるけどリファラーは無理 拡張でも特権APIを申請しないと出来ない危険な行為
96 :
Name_Not_Found :2013/09/10(火) 15:26:54.29 ID:n5ewSFyR
>>94 の望んでいるものは
history.pushStateなんじゃなかろか?
97 :
Name_Not_Found :2013/09/10(火) 15:35:02.16 ID:n5ewSFyR
ちがうかごめん
現在のURLを偽装してから飛ばすことで、リファラーを偽装できないか?ということだろう 現在のページと同オリジンの範囲でいいならpushStateで解決だが
ES5対応の解説書ない?
リファラ偽装(をさせる)なんかできたらCSRFやり放題じゃーん。 まあ、トークン方式で防げるけど。 リファラなしにならなあ。
pushStateで変えられる範囲内なら可能。
ここってJavaScript全般の質問OK? node.jsとかもおk?
Web制作板だから、内容による
専スレがあるのならそっち使えばいいんじゃない? Nodeスレは致命的なほどには寂れてはいないし スレを賑わかすチャンスだ
function Hoge(){ var a = 0; function Hage() { a = 1; } } この2つ目の関数の中でのaはグローバル変数宣言になるのでしょうか?
自分でためせば分かることを聞くの?
ならない
>>93 ブラウザのバグかどうかを検討するなら最低でもIE,firefox,Chromeぐらいで動かしてみよう
空のオブジェクトで初期化するなら a=[] じゃなくて a={}
>>109 もちろんFireFoxでは正常に
test1() //undefined
test1() //undefined
test1() //undefined
test2() //undefined
です
>>110 だからさ、おまえはObjectのプロトタイプをいじってるのに、なんでArrayで動作確認してるのよ?
Arrayの0プロパティの動作はArrayの勝手だろ?
>>111 ArrayはObjectを継承しています
そこは重要ではなく
Array.prototypeでも同じ結果になります
>>112 ArrayはObjectを継承してるけど、数字プロパティの挙動はオーバライドしなおしていいわけよ
Arrayは数字プロパティに対してlengthプロパティ書き直したりしているから、
あきらかにArray自身が数字プロパティに対する処理をオーバライドしてる
そしてArrayに対する数字プロパティの挙動はちょっと特殊で、
Array.prototypeでは完全には上書きできない
仕様でそのように書かれているのですか? 現にFirefoxでは期待通りに動きますし、Chromeでも最初はそうです。
Object.prototypeやArray.prototypeの数字プロパティを変更した場合の Arrayオブジェクトの動作が定義されてなければ、 それは実装依存
仕様を見ると、Arrayの独自処理に入る前に すべてのオブジェクトプロパティ代入処理の中で代入可能か判断する段階があります そこではプロトタイプをたどってセッターがある場合は代入不可と判断されるはずのようなのです
15.4章のどこだよそんなこと書いてあるのは
JavaScriptで、自分自身のlastModifiedを取得し 変更されていたらリロードさせる みたいなことって出来ますか?
>>117 その前です
[[Put]](8.12.5)で[[DefineOwnProperty]](Array:15.4.5.1)が呼ばれる(6)の1つ前に
プロトタイプをたどった先にセッターがあればそれが呼ばれて終わる(5)となっています
根本的に勘違いしていて コード補完はsnippetではなくcode completionでしたてへぺろ AndyJS2を入れたらいけました\(^o^)/
>>78 の件ですが、SublimeFileTemplateとライブラリ別のテンプレートで、
新しい環境の構築を簡易にし、
これにlastModifiedをチェックしてリロードするJSを組み合わせたら
JSBinにかなり近い操作感になりました
ありがとうございました
126 :
125 :2013/09/11(水) 10:51:15.52 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>
<!DOCTYPE html>くらい付けろデコスケ野郎
>>128 付けても動作しませんが。
解決方法を教えてください。
ここの解答者は的外れなことしか答えられないんですかね? 最小コードでいちいちDOCTYPEなんて必要ないのに、もしかして付けたら動作するとでも思ったんですか???
なんでDOCTYPEを付けろと言われてるかわからんのか
はやく
>>127 Lに対するDOCTYPEを付ける意味を教えてください。
それとも今言い訳でも考えてるのでしょうか?
答えられない 馬鹿 が、見当違いな解答して逃げましたね。 もういいです。 違う場所で質問します。 馬鹿に用はないので。 さようなら。
嫌です
まともに質問すりゃ回答が貰えるのにねw
>>133 質問するなら最低限の勉強くらいしてこいって話だよ
DOCTYPEは関係ないだろ・・・・・ 何言ってんだこいつ
質問に答えられないから お門違いの話して話をそらすのに必死なんだよ 察しろ
PHPの次はJavaScript荒らしてんのか
と言いつつ誰も回答しないw 馬鹿ばっかなのかよ
巡回荒らしが来ただけだから皆スルーするように
divのinnerHTMLにhtmlやbodyを代入する時点で違和感を感じろよ こんな糞コードを書いて偉そうにすんな
innerHTMLとかパフォーマンス的にもセキュリティ的にも最悪なのによく使おうと思うな
ここも腐海に沈んだか…。
一つ上の行でcreateElementを使ってるにもかかわらずinnerHTMLを使う謎行動 しかもその中身はtitleが無いheadを含んだhtml要素
自作自演乙
IFrameの読み込み状態をイベントじゃなくて readyStateみたいなプロパティで知る方法ありますか? readyStateはIE以外のChromeやFFでは動かなかったので。
>>148 document.readyStateはIE以外でも動くはずだが。
やりたい事を勝手に憶測して 好き勝手妄想して貶すスレはここですか? 入力されたDOMをParseして抽出してappendChildしたいのかもしれんだろ headの中身がないってdocutypeと同レベルの突っ込みでワロスw お前らまずは7解決策を書いてから語れよw不可能でもそうならそう言えよw 荒らしと同じ知能だわ
あっ、荒らしの自作自演でしたか これは失敬w以降スルーしますw
>>152 iframeのdocumentとればいいだろ
>やりたい事を勝手に憶測して >好き勝手妄想して貶すスレはここですか? ↓ >入力されたDOMをParseして抽出してappendChildしたいのかもしれんだろ 一レスでブーメランを投げるとかさすがだな 普通は貼られたソースを見て判断するだろ
偶然気づいたのですが、FirefoxのAudio Data APIを使用するとsetIntervalの精度が良くなるのですが 内部で高精度カウンタを使ったりしているのでしょうか? Firefox限定の話で申し訳ないですがこれについて何かご存知の方があれば教えてください
156 :
Name_Not_Found :2013/09/12(木) 03:04:14.58 ID:7U/YrctA
window.location.search以外でwindow間で値を渡すにはどうやれば良いですか?
innerHTMLが遅いって言ってる人がいますが根拠は何ですか? 俺もinnerHTML(笑)って思っていましたが オライリーのハイパフォーマンスJavaScriptで一度にDOMアクセスする手法として普通に使っていたので それ以降普通に使ってます
あとinnerHTML特有のセキュリティー問題ってなんだろう エスケープしない場合の危険はcreateElementでも同じでは
>>157 google "innerHTML vs appendChild "
>>157 細切れで繰り返す場合は別として
大量のソースを一括して処理する場合は innerHTML の方がむしろ早いかも
>>155 audio は同期が重要になるから多少気を使う様にプログラムされていることはありそうだね
Audio API 利用したら副産物としてついでにタイマー API の精度も上がるとか
そのぶんリソースも余計に消費されて多少なりとも他所にしわ寄せがいく筈
appendはinnerHTMLでしない方がいいってことですよね
appendするコード片の作成はinnerHTMLで問題ないのでは
>>127 のコードに突っ込み所はあるものの
innerHTMLの使用には問題がないと考えます
jQueryの中でも使ってますね
JavaScriptでおのれが書かれているHTML中のscript要素を削除したら何が起きますか?
appendしなくても先読みするのは知らなかったけど、 ブラウザの立場からいったら読んでも全然おかしくないな
俺も
>>127 の解決法が知りたい
サンプルコードで確認したらマジで新しい発見だわ
結局誰も答えられないのか?
>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も分かってない奴が大杉
いやdivのinnerHTMLにhtmlやbodyを代入するのは普通におかしいだろw これを気持ち悪いと思わない奴はプログラマーとしてセンスないわ
てか解決法って何がどうなれば解決なんだよw 本人以外正解が分かってないのに解決法なんて言葉を使っちゃう奴は本人の可能性が比較的高いぞ?
>>166 みんなお前のもう一歩上のことを理解して書き込んでるのだ
>いやdivのinnerHTMLにhtmlやbodyを代入するのは普通におかしいだろw まったくもっておかしくありませんが? htmlやbodyタグ消えることすら知らんのか?
頭の悪い奴ほど思考能力が無いことが実証されたな innerHTMLもろくに使いこなせない無知を晒けだして恥ずかしくないの? 思い込みの激しいカルト宗教信者みたいでキモいわ
みんなお前のもう一歩上のことを理解して書き込んでるのだ(キリッ
>>170 bodyを書いたdivを何にappendするんだよ
まさかのbody入れ子ww
>>170 お前は無駄なコードを書くんだな
「普通に」おかしいだろ
174 Name_Not_Found sage New! 2013/09/12(木) 06:38:52.61 ID:???
>>170 bodyを書いたdivを何にappendするんだよ
まさかのbody入れ子ww
まさか日本語も通じない池沼だったとはな
bodyが入れ子になるわけないのに・・・
結果的にならないだけだろ馬鹿かお前 何にappendするんだよ 言ってみろよおら
>>175 ユーザーが入力したコードを表示させるインターフェイスの実装だったら?
まさかセキュリティなんて的外れたこと言い出すなよ?
そんなんだから思考力がない低脳って言われんだよ
中卒は勉強し直してからこい
innerHTMLの仕様も理解してない低学歴が顔真っ赤にしてレスするスレはここですか?
>>153 レスをくれるのは有難いが
思い付きで物を言うのはやめて欲しい。
それが動けばここで訊かないよ。
コードが変すぎてよくわからんが 動的に画像を追加するのが目的だろ なんでトリッキーな条件を持ち出してくるんだよw トリッキーなことがしたかったらトリッキーな問題に局所化してコードにしろよ ほんとセンスねーな
トリッキーではあるが、その目的は誰にもわからんよ 質問の本質はinnerHTMLに代入した時点での画像の先読み回避方法なんだから だからそれ以外のことをぐだぐだ言ってる奴は荒らしと一緒 さっさと消えろ
まじで何をしたいのかわからんけど 分かってもアホみたいなことの予感が半端ない
普通に考えてinnerHTMLじゃなくても画像は読むんじゃねーの だとしたらinnerHTMLも本質じゃないだろ
>>183 気付いてないようだから教えてやるよ
何をしたいかをわかる必要はない。その事がわからないお前はアホ
これまた馬鹿特有の珍論理きましたなぁ やっぱり馬鹿を振ってもゴミしか出ないね
低学歴の低脳にはわからんのだろう
>>187 だな
186のような無知君にはわからせようとしても時間の無駄
哀しき自演ww
とうとう自演扱いしだしたぞ 間違ってるのに恥ずかしくないのかな?
クロフォードがローカル変数は関数の最初で宣言しろというのでそうしていましたが bootstrapの中を見るとそうしていません どうするのがいいのでしょうか?
ところで画像の先読みの何が不都合なんだ? これも本質じゃないとかいわれそうだけど、どーしても知りたい欲求が抑えられない innerHTMLにbodyとかも謎すぎるし、undeined.jpg? 頭おかしくなりそう助けてーーww
いや、お前の頭は既におかしいから
innerHTMLにhtmlタグやbodyタグが含まれている=ユーザー側の操作で値を投げ飛ばすシステム undeined.jpg → undefined.jpg のタイポだろ。=名前から察するに存在しない画像 これくらいの推測は馬鹿でも出来るよな
>>194 いやタイぽは悪ノリだけど、他のはいいように解釈してるだけでしょ。
存在しない画像だったら、その時点でsrc属性書かなきゃいいだけじゃん。
ユーザー側の操作で値を投げ飛ばすシステムだとしてもHTML丸渡し?まーいいけどさ
いいけど、突っこみたくたくなる気持ちも まあいーけどさ
だーかーらーさー いくら推測しても意味がないって。質問者がやりたいことを書いてないんだからさ もし「○○したいけど、××で困っています」って言っているなら、そこで始めて(それが間違っているなら)指摘しろ 今回は「××で困っています」だけなんだから、それを超える改善方法を必要としてないし、またわざわざ教えてやる必要もない わかったならさっさと仕事行けカス
どうしてこんなに食いついてるんだろう って考えたら、 DOCTYPEやinnerHTMLにhtmlタグ()とか アホな事をドヤ顔で言っちゃって自分を正当化しとうと必死になっちゃってるんだろうな
「ここはとあるレストラン 人気メニューはナポリタン・・」みたいに意味が不明すぎるからだろ 馬鹿すぎて難解になっているという例
お前の日本語力が無いだけ
!! 注意 !!! ここは馬鹿が超初心者相手にドヤ顔解答して満足感を得る為だけに存在するスレッドです。 馬鹿のレベル以上の質問がなされると、見当違いの解答を述べだし、それを指摘されると今度は難癖つけだします。 質問者は以上を踏まえ十分理解した上で質問してください。
わからなければ黙ってROMってればいいのに、 俺の方がお前より上って思い込んじゃってる痛い奴が 自分の低脳さを墓穴を掘るかのように自ら披露してるなw あー恥ずかしいw
日本語の問題じゃなくコードの問題なんだがw
えっ、あれしきのコードが理解できない奴なんて存在するの? どうして馬鹿は自分で馬鹿ですって言うんだろう・・・そんなに私、馬鹿ですってアピールしたいの?
>>180 iframeのdocument取れないってことは同一生成元じゃないってことかよ
それならはじめに言ってくれ
そういうことならイベントしか無いよ、頑張れ。
「appendする前に内容を反映しようと動作してしまい困っています」 これって具体的に機能的な障害が発生して困るってことじゃなくて 「自分の予想とは異なるから」困っているって意味じゃねw ゆとり半端ねーな
どうしたいのかという質問に答えられないのもそれで納得できる 「分からないこと」自体に困っていたのだ! 日本よ、これがゆとりだ
<div><div><div></div></div></div> こういったDOM片をbodyにappendしたい場合、 最初のDOMだけはcreateElementしないと駄目ですか? 最初のdivにstyleや属性が色々付いている場合、メソッドで付けていくのが面倒くさいです HTMLコードからDOMツリーから独立したDOMエレメントを直接作る方法があれば教えて下さい
domfragmentにinnerHTMLがあればいいんですが・・
>>209 DOMParserとかcreateContextualFragmentとか
ありがとうございます そんなものあるのかと思って調べたところ createContextualFragmentはIEで未サポート DOMParserはfirefox以外のサポート状況が「?」 とMDNにありました やはり標準的じゃないやり方はいろいろ壁がありそうですね・・
>>209 最初のDOMはcreateElementするとして
このDOMはただのWorkにして、そのDOMに<div><div><div></div></div></div>を追加(innerHTML)
で、Work.firstChildをbodyにappendするってのはどう?
214 :
155 :2013/09/12(木) 12:26:20.16 ID:???
>>160 高いタイマ精度は、コストパフォーマンスとのトレードオフなのですね
だからほんとは1ミリ秒の精度出せるけどFirefoxはあえて精度を落としているのかな?
ありがとうございました
test
>>155 Audio Data APIは廃止決定されたしその疑問は捨てること
>>165 画像だけ後から追加するかLazyLoadみたいに後からURL置き換える
環境に沿わないやり方を貫きたいのなら、環境の便利さを一部損なうのは当然
嫌ならDOMをラップして自作フレームワークでも作ること
逆にプリロードできてて便利だと思うけど、何かしら特殊な事情があるのだろう。
MDNはFirefoxに導入されてない機能の項目については信用しない方がいい File Systemとかもう情報が古すぎて役立たない
なんという身内贔屓
>>220 そりゃあMozillaの開発コミュニティが作ってるwikiであって、
HTML/JavaScriptの最新仕様解説サイトじゃないからね
最新の仕様を知りたいなら普通に原典を当たれば良かろう
それに、もし古いと思っているなら更新すればいいじゃん
誰でも編集できるんだから
>>223 別に間違ってると言いたいわけじゃない
頼り過ぎには気をつけてねってことだ
いちいちつっかかってくんなよ
何だこいつ、出て行けよ
喧嘩は他所でやれ
innerHTML="<table>〜" と createElement("table") 〜 どっちがメジャーですか
適材適所
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))))
innerHTMLでおk
時代はinsertAdjacentHTMLだから
この統一感のなさ 次から次へと変なのばかりだしていやーね
次から次に出るのは鳴り物入りで導入したけど結局しっくりこなくて流行らなかったからだな
<div id="test"><div class="arrow"></div></div> こういうHTMLがあり var dom = document.getElementById('test'); var list = dom.getElementsByClassName('arrow'); こうしたら、arrowクラスの要素のリストが取得できますが これをjqueryでやるにはどうしたらいいですか?
jqueryでググレ 基本的な事だからどこでも書いてある
すみません。質問です。 マウスイベントについて質問なのですが、 window.addEventListener("mousemove", onmousemove, false); として、mousemoveイベントを拾っているのですが、マウスボタンを押しっぱなしにしている状態だと、 マウスを動かしてもonmousemoveが呼ばれなくて困っています。 押しっぱなしにしている状態でもonmousemoveが呼ばれるようにしたいのですが、なにか方法はないでしょうか? ちなみにブラウザはChromeです。
mouseenterとか他のはどうなのよ
再現しないよ
236です。 すみません。大変な凡ミスをしておりました。 Three.jsを使っているのですが、カメラをマウスドラッグで回すことができる補助ライブラリを使っていまして、 その補助ライブラリが内部で event.preventDefault(); event.stopPropagation(); としているのが原因でした。これらをコメントアウトしたら、 マウスを押しっぱなしにしてもonmousemoveが呼ばれるようになりました。 大変失礼いたしました(汗)
それくらい最初に言えよ
JSHint Gutter for Sublime Textでチェック結果が出るウインドウを チェックせずにもう一度出すにはどうしたらいいのでしょうか? 修正のたびにチェックしなおすと時間がかかります
グローバル変数を同名のローカル変数に代入するにはどうしたらいいですか? var a = 100; function hoge () { var b = a,a = b; debugger; } hoge(); 一度他の変数に入れたらできるかと思ってこうしてみたのですが なぜかaはundefinedになってしまいます
aがグローバル変数の場合これで出来ました var a = 100; function hoge () { var a = window.a; debugger; } hoge(); でもクロージャの場合はwindowでは取れません クロージャのスコープを取得するにはどうしたらいいでしょうか
クロージャとなる関数に名前を付けても、 その関数のローカル変数はその関数のプロパティにならないので、 グローバル変数のようにはいかないようです。 ただ、jqueryを使いまくる関数内で$をグローバルからローカルにしたい、 というのが目的だったのですが、 それをするには var $=jQuery; と書けばいいだけだと調査の途中に気付きました これだけでパフォーマンスあがりますよね
localize の方が代入文の文だけ処理が多いからだろ。 普通は汎用的に以下の様にするから覚えておけばいい。 (function outer_func() { var FOO = { name: "foo" }; (function() { var var_name = "FOO"; FOO = eval("(function(){return " + outer_func.toString().replace( /([\s\S]*)(^\W*|;(?=\W*))(function[^(]*\([^)]*\)\s*\{[\s\S]*UNIQUE_STRING_IN_WHOLE_SCRIPT)([\s\S]*)/m, "$1\nreturn " + var_name + ";\n$2$3$4" ) + "();})();"); console.log(FOO.name); })(); })();
247 :
246 :2013/09/13(金) 09:05:47.98 ID:???
何ぞ!?
イベントをstopPropagationやpreventDefaultしているのですが これをしないとどういう不具合があったんだっけ?という疑問がわいてきました とりあえず付けた場合と、目的があって付けた場合が混在していると思うのです 必要なものを判別するにはどうすればいいですか?
evalを使ってないとか一定のルールクリアしてれば 最近のコンパイラは関数でどの変数が必要になるか調べてリストを作る 実行時の解決には馬鹿正直に内側のスコープから検索せずにそのリストを使うから グローバルだから凄く遅いとか クロージャで必要な変数内スコープにキャッシュしたから凄く早いというのはない
たしかにchromeはまったくといっていいほど差がでないです
これからは速度をつけるにはインラインワーカーだ!
残念ながら速度の問題が発生する多くはWorkerから扱えないDOM周りなんだよ
&nbsp;
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がうまく渡されてないようですが どのようにすればうまく動くか教えてください
あ 再帰のほうの引数とるの忘れてました できました
スマホサイトで広告張ってるのですが在庫切れが多くて困っております HTMLからロードした広告が在庫切れで表示されない場合にJavaScriptから別の広告をロードする方法はありますでしょうか。 具体的には、以下についてとなります。 @ロードした広告が在庫切れで表示されない状態を検知する方法 A在庫切れで非表示の場合に、別の広告タグをロードする方法 以上、よろしくお願い致します。
261 :
Name_Not_Found :2013/09/13(金) 22:00:26.75 ID:7/Ip7In/
>>260 さすがにざっくりすぎる
広告配信元とどのような契約をしているか知らんが
在庫切れを配信するな、と言うのがベスト
それが出来ん場合、在庫切れだとどうなっちゃうのかがわからんが
404とかが帰ってくるなら、ステータスコードを見る
そうでなくても、在庫切れだと識別できる何かがあるのなら
それがあったら別のものを再度ロードする
とかとか
262 :
Name_Not_Found :2013/09/13(金) 22:01:17.69 ID:7/Ip7In/
続きは、JSのどこがわからないか がわかったら聞いてくだされ
>>244 > これだけでパフォーマンスあがりますよね
いいえ、下がります。
>>262 基本的にステータスコードは帰ってきません。
JSで広告要素が存在するか、等の低レベルでの確認しか方法は無いのですが、それすら可能なのか?
という疑問でした。
ありがとうございます。
265 :
Name_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 などあるとします 教えてください
>>266 ベンチマークしてみればわかります。
上がったという証拠を見せてください。
268 :
Name_Not_Found :2013/09/13(金) 22:58:09.87 ID:LFRBRCn0
空白がabcやaeより上になってしまいます 空白を降順にするやり方教えて下ださい funciton xx(a){ if(a==""){ } else{ return a} } こういうチェックする関数をやってるんですがうまくいきません
>>250 を見れば分かりますよ
極度に最適化されている場合は差はなくなりますが
そうでない場合は数%の差はあります
というか原理的にそうなるのは当たり前のことです
270 :
Name_Not_Found :2013/09/13(金) 23:13:19.27 ID:7/Ip7In/
>>268 ソート関数ググって空白に関する処理を付け加えれば良い
jQueryの押したらイベントを起こすbindやonですが $function(){ } の中に書くと動いて これが無いと動かないのはなぜなんでしょうか?
んー?? 質問の意味が分からない・・・
274 :
Name_Not_Found :2013/09/13(金) 23:37:57.35 ID:7/Ip7In/
>>272 要素は終了タグが読まれてからツリーにぶら下がる
程度に理解してもらえればわかりやすいかと
あと$function(){}てエラーになるだろ
275 :
Name_Not_Found :2013/09/14(土) 00:13:50.52 ID:J1i2JugH
>>270 <td></td>です空だと思います
==""ってやったら通りました
ソートすると空白の行が上にきてしまいます
abcとかaeが上にくるようにして空白が一番下にさせかたがわかりません・・・
>>274 ありがとうございます
$(function(){
});
でしたね;
277 :
Name_Not_Found :2013/09/14(土) 00:29:20.45 ID:9LvZEWHJ
278 :
Name_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;
とやるとこの順番どおりできるのですが
単語リストがある場合
こうやって割り当てて値をつけていくのが大変です
空白のみ比較後ろにする方法しりませんか?
279 :
Name_Not_Found :2013/09/14(土) 01:13:15.73 ID:J1i2JugH
単語が100文字とかあると 全部書くようなので大変です 空白のみ後ろにする方法を教えてください
>>278 ソート関数でググレってアドバイスもらっといて無視するような輩はお帰りください
281 :
Name_Not_Found :2013/09/14(土) 01:16:53.87 ID:9LvZEWHJ
>>278 だーら、ソート関数もしくは比較関数でググれってば
そうすれば文字列どうしを比較した時に何が起こるかわかるから
んでそこに空文字列の場合を自分で組み込めばいいじゃない
構ってあげるなよ
そーっとしておいてください!
指定されたカウント数で0から1までループするにはどうしたらいいですか?
増分は1/countですが、これを積み上げていくと丸め誤差でぴったり1ではなくなります
i / count するだけでした
if (0.1 + 0.2 == 0.3) { // 処理 } が動きません>< 理由が分かる人はこのスレにいますか???
います
このスレは馬鹿な回答者しかいないから居ないよ
煽っても教えてあげません
291 :
287 :2013/09/14(土) 10:08:33.84 ID:???
お前らって浮動点少数の扱いも知らないんだなw
いますか?ってJavaScripterなら常識だろ 煽りにしてもレベル低すぎ
>JavaScripterなら え?馬鹿ですか? お前らもう口開かないほうがいいわw
別にJSに限った話じゃないぞ プログラムするなら一般常識
クロージャって外のスコープを取り込んでいる関数のことですよね だとしたら、あらゆる関数はグローバルスコープを取り込んでいるので クロージャなのでしょうか?
JavaScript限定の話?
読み込んだJavaScriptファイルとCSSファイルのリストを取得するにはどうしたらいいですか?
外の環境を保持する仕組みがクロージャだから そこら辺の関数はクロージャじゃない
300 :
Name_Not_Found :2013/09/14(土) 11:03:20.22 ID:J1i2JugH
無能しかいねえわここ
これは伸びないタイプ
じゃあいつまでも居続ける必要はないね。
週末の定期オナニー明けで気が勃ってるだけだろ。 ほっといてやれ。
304 :
Name_Not_Found :2013/09/14(土) 14:40:38.16 ID:9LvZEWHJ
>>300 昨日のソート君じゃん
'abc' > 'def'
の結果わかった?
そこに、空文字列の時だけ場合分けすればいいんだよ
待ち時間に画面の真ん中にくるくる回るやつを出したいのですが どうすればいいですか
くるくる回るgif画像を表示するだけ
低レベルな質問には即答なんだなw さすが馬鹿しかないスレだわw
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
310 :
Name_Not_Found :2013/09/14(土) 15:47:12.35 ID:9LvZEWHJ
>>308 俺のchromeではちゃんと見えてるよ
macとwindows両方とも
311 :
Name_Not_Found :2013/09/14(土) 15:50:27.90 ID:9LvZEWHJ
setTimeoutで2秒くらい送らせてもガビるかね?
>>307 ID隠すことを覚えたなら
文字列の比較もすぐ覚えられるだろうよww
cjkvの比較は期待通りにならんことが多いから気をつけろよ
ありがとうございます setTimeoutで1秒ウェイト取ったら正常動作しました でも、マシン個体差というのがすっきりしません なんのためのonreadyなのか・・
314 :
Name_Not_Found :2013/09/14(土) 16:11:06.06 ID:9LvZEWHJ
>>313 readyは、ざっくり言えばDOMContentLoadedだから
ブラウザとしては、比較的忙しい時間帯とも言えるかもね
315 :
Name_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"など返す必要がありました
316 :
Name_Not_Found :2013/09/14(土) 17:02:45.89 ID:J1i2JugH
"a" "Zzz"より小さい 大きい比較のやつ知りませんか? ASII Codeと一緒なのでしょうか?
日本語でOK なにが知りたいのか分からん
318 :
Name_Not_Found :2013/09/14(土) 17:27:46.86 ID:J1i2JugH
a="a" b="b" a<b は1になりますが a=""やa="$"の場合いちいちチェックしないとどっちが大きいとかわかりませんってことです これは何を元に決められてるのでしょうか?大きさは ASCIIコード表でしょうか? 教えてください
なんで言われたとおりソート関数使わないの・・? なんでsonicsortとか意味不明な関数貼って満足してるの・・? なんで使われて無いsonicsortで使われて無いncomp関数書いてるの・・? 気持ち悪すぎて吐きそう
UTF-16
321 :
Name_Not_Found :2013/09/14(土) 18:15:56.33 ID:J1i2JugH
>>319 配列じゃなくてテーブルのソートです
htmlのテーブルのソート関数はないと思いますが・・・
http://codepad.org/bQfwe7ri こんな感じですthをクリックしたら発動する感じです
空白をやる場合ncompに
if(a==""){
return 'a';
}とかやらないとダメでした
ちなみにソート関数とはsort()でしょうか?
それをテーブルに使うことも可能なのでしょうか?
322 :
Name_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になるじゃろ
323 :
Name_Not_Found :2013/09/14(土) 18:19:29.12 ID:9LvZEWHJ
>>321 > if(a==""){
> return 'a';
> }とかやらないとダメでした
これを何度か書いているけど、いまいち何言っているのかわからん
324 :
Name_Not_Found :2013/09/14(土) 18:19:29.84 ID:J1i2JugH
>>320 私へのレスですか?UTF-8でいいのでしょうか?
あとtablesorterで独自の比較関数のやり方知ってる人いたら教えてください
tablesorterを使ったほうが早いと思いますが比較関数のやり方がわからず作ってるところです
前に作ったんですがバブルソートだったのテーブルのデータが増えると凄い遅くて嫌なので
今新しくソート作ってる途中です
ソート関数とはなんなんでしょうか?それは配列だけにしか使えないんじゃないんでしょうか?
ソートにHTMLもクソもない
326 :
Name_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を何か返せば後ろに来ると思って迷ってるところです
>>324 8じゃなくてUTF16での文字コードね
328 :
Name_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のテーブルソートのソースが見たいです
教えてください
329 :
Name_Not_Found :2013/09/14(土) 18:37:01.75 ID:J1i2JugH
ちなみに複数列あるので他の行にも影響がでるのでtrで交換してます tdでやったらその列だけ変わって他の行はそのままでおかしくなるからです sort関数使えっていってますがどのように使うのかソースを張ってくれるとありがたいです
331 :
Name_Not_Found :2013/09/14(土) 18:43:34.03 ID:J1i2JugH
めんどくせぇ jqueryのtablesorter plugin使え ある物使うのがプログラマーだ
334 :
Name_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;
}
以下略
}
みたいに書けるじゃん
335 :
Name_Not_Found :2013/09/14(土) 19:32:51.94 ID:J1i2JugH
オブジェクト作るところとか配列に入れるところとかのソースも教えてください まったく知らないので
336 :
Name_Not_Found :2013/09/14(土) 19:35:40.64 ID:9LvZEWHJ
えー、めんどくせー オブジェクト作るのは var obj = { 名前 : 値, 名前 : 値 }; ってすればいいよ。 配列に入れるのは var rows = []; rows.push(obj); こう。pushは遅いという話も聞くが
確か、Array.prototype.sort.call("TRの集合", function(trA, trB) { ... }); でソートできたはず。 ソート後に更新しないといけないとかクセがあったんで、おれは使ってないけど。
338 :
Name_Not_Found :2013/09/14(土) 19:40:20.37 ID:9LvZEWHJ
今思ったが、比較関数の中でDOM操作すると回数が多くて無駄ですな 一変値だけでソートしてから もう一度配列なめてdocumentFragmentの中で<tr>並べて ボコンと入れ替えたほうがいい気がしてきた
339 :
Name_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;
}
}
341 :
Name_Not_Found :2013/09/14(土) 20:03:13.36 ID:9LvZEWHJ
>>339 sortの使い方は書いたし、足りない分はMDNでも見たほうがいい
ソートっていろんなアルゴリズムがあるんで調べて欲しいんだけど
比較関数ってのは何度も何度もキックされる
だから、例えば時間を表す文字列を時間に変換する、みたいな操作は
ソートする前に予めやっといたほうがロスが少ない
それと空白って書くのやめろよ、空文字列なんだろ
>>1 にオレオレ用語は混乱するからやめろって書いてあるだろ
んで、空文字列はundefinedにしておけば、文字列ソートしたら最後尾に来る、はず
342 :
Name_Not_Found :2013/09/14(土) 20:17:58.06 ID:J1i2JugH
>>340 難しそうなので自作のでやってみます
わざわざソースありがとうございました
>>341 if(a==""){
a=undefined;
}ってやればいいのでしょうか?
そこは試せよw
344 :
Name_Not_Found :2013/09/14(土) 20:23:50.34 ID:9LvZEWHJ
>>342 >>340 はやってることは凄くシンプルだよ
1.ソートしたい対象(textContent)を抜き出す
2.それがソートされるとき、どう要素が変更されるか監視する
3.その通りに本命の対象を変える
346 :
Name_Not_Found :2013/09/14(土) 20:27:13.39 ID:9LvZEWHJ
347 :
Name_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";
}
}
ってやるしかありませんかね?
348 :
Name_Not_Found :2013/09/14(土) 20:30:43.22 ID:J1i2JugH
>>345 return (!a || !b) ? a < b : a > b
こことか難しそうですし
jQueryじゃないし日付とか単語の順位付けとかやるのに応用できなさそうなので難しいってことです
シンプルだけど難しいのでjQueryとか使ったやり方でSort関数のほうが難しいですね
349 :
Name_Not_Found :2013/09/14(土) 20:37:14.17 ID:9LvZEWHJ
350 :
Name_Not_Found :2013/09/14(土) 20:37:43.52 ID:J1i2JugH
>>345 凄いですね!!!まさにこういう$('button#numb').on('click',function(){ sortTable('number'); });埋め込むやつ求めてました
これの私が書いたような日付対応させるやり方とか
緑、赤、青
ってあった場合
赤、青、緑という順位付けをできるようなのも追加してください
青
赤
赤
青
緑
緑
351 :
Name_Not_Found :2013/09/14(土) 20:41:14.24 ID:9LvZEWHJ
>>350 それは自分でやれよ
あと、これこのまま使っても、きっともっと詳しい人に
そんなの糞!って叩かれるにキマってるからな
もうプレモル4本目突入しちゃってるからな
やってほしかったら5本目買ってこい
>>348 まさにそこが空文字なら後ろにするって部分だよ
あと、一応応用は効くよ
もし内容が日付で、""を最後にしたいのなら
そのreturnの行を
return (Date.parse(a) || 0) < (Date.parse(b) || 0)
にしたらいいよ
>>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と言えば簡単だろう?
355 :
Name_Not_Found :2013/09/14(土) 21:02:38.11 ID:J1i2JugH
>>353 そっちのjquery使ってない
1列しかできなくて難しいコードじゃなくて
>>345 みたいなコードがいいです
356 :
Name_Not_Found :2013/09/14(土) 21:03:24.38 ID:J1i2JugH
357 :
Name_Not_Found :2013/09/14(土) 21:10:30.96 ID:J1i2JugH
>>346 のコードで
優勝、準優勝、準準優勝
みたいに順位付けして
あと日付の24 60 3600 みたいなやり方のやつも教えてください
358 :
Name_Not_Found :2013/09/14(土) 21:35:38.29 ID:9LvZEWHJ
>>354 引数に関数渡すのは、ありだと思った
でも書くのが面倒だった、まじで
ビール飲み過ぎでおしっこ止まらないし
>>355 三項演算子と単項演算子は別に難しくないぞ、なれろ
359 :
Name_Not_Found :2013/09/14(土) 21:38:43.94 ID:x238lJj8
あるDOMオブジェクトのonclickイベントに複数のハンドラがセットされているとして 通常は設定順に実行されますが、jqueryでtrigger()すると 最初の1つしか実行されません。 全部実行したい場合にはどういうコード書けばいいんでしょうか
>>353 まあ色々やってみたかった、一つづつ処理を負いたかったってのはわかるよ。
結果として無駄なことやってるだけだけどw
他に人に最初に補足、これは実験的な機能を使ってるので
Chromeでオプション変えないと動きません。
まずtextsがsortされるし、関数実行中に画面描画はされないので、
deliverChangeRecordsは不要。
それ以前に関数実行中に画面描画はされないので、そもそもobserveを使う意味が無い。
recs.lengthを見ればわかるが、値の合計は15。
つまり8個しかないのに、tdへの代入が15回発生している。
だからobserveを使わずにsortし終わってから代入したほうがいいね。
あと細かいところで1/0は単純にInfinityでよい。
361 :
Name_Not_Found :2013/09/14(土) 21:51:29.41 ID:J1i2JugH
362 :
Name_Not_Found :2013/09/14(土) 21:59:48.07 ID:9LvZEWHJ
>>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
364 :
Name_Not_Found :2013/09/14(土) 22:05:15.71 ID:J1i2JugH
なんかうまくできません $("#item_table tbody tr:not([style*='none'])"); これをやろうとしましたができませんでした cyokodogさんていうex-table-filterっていうのを作ってる凄い人に要望出しました ソートも作ってほしいって それがリリースされるまで自分のソートを使おうかと思います 理想のソートは 比較関数を引数でやれるやつです
365 :
Name_Not_Found :2013/09/14(土) 22:06:30.30 ID:J1i2JugH
あと列に埋め込めるやつが理想です 1列目にはこの比較関数 2列目にはこの比較関数 みたいに
>>359 そんなはずはないはずなんだが?
何か勘違いしてね?
他の言語でも同じだが、省略できる括弧は絶対に書かないのが coolだと信じてるヘボPGの多いこと多いこと。
>>364 > cyokodogさんていうex-table-filterっていうのを作ってる凄い人に要望出しました
APIとかみたけど、ごめん、正直イケてない。
作者に言うべきことだけど、もう少し機能を細かく分けた方がいい。
機能を詰め込み過ぎでぶくぶく太ってる。
フィルタ機能とかたいていのものはjQueryで用意されてる
機能をそのまま使ったほうがいいんだ。
セレクタで出来ないような複雑なものでも、これなんか、
$(・・・).filter(フィルタ関数)なんかで行けるだろうし。
あとは表示非表示するだけ。
ようはjQueryを使いこなせ!
369 :
Name_Not_Found :2013/09/14(土) 22:19:32.61 ID:9LvZEWHJ
JSはしょうがないよ ClosureCompilerみたいな便利グッズが出来るまでは 1バイトでも少なく書きたい場面もあったし
>>367 > 他の言語でも同じだが、省略できる括弧は絶対に書かないのが
> coolだと信じてるヘボPGの多いこと多いこと。
その通り。
確かに省略できる所を省略しても、
正しく動く。正確に判断してくれる。
だがそれは ”コンピュータが” だ。
ソースコードは人間のために読みやすいように書こう。
人間が読みにくいと思ったら、
コンピュータが読めてもそれは
人間が読むコードじゃないんだよ。
えらいのは人間様です。人間様に優しくしましょうw
>>369 それは技術をわかってないだけ。
ファイルサイズの話だと思うが、
確かに文字は少ない方がいいんだが
実のところほとんど意味は無い。
なぜなら普通はgzip圧縮して配信するから
その時長い単語や空白はよく圧縮できる。
1バイトでもというが、本当に
数バイトとしか変わらなかったりするよ。
画像ファイルサイズを考えてみ?
372 :
Name_Not_Found :2013/09/14(土) 22:26:48.02 ID:9LvZEWHJ
>>371 今はね、回線も太くなったしサーバも強固になったから楽なんだけど
昔から書いてる人はそうもいかなかったんだよ
ユーザから見たらたかが数バイトでも
サーバから見ると×アクセス数だから
その名残で、短く書く癖が付いちゃってる人もいるんだぜ、って話
ちくしょう、考えちまったからレスしとくかw > (a && b) ? (a > b) : (a < b) そもそもソート関数で、比較条件が逆になるってことが おかしいことなんだよ。 ソートは常に同じ条件を使うことで正しく並ぶはず。 ただ例外はある。多分空文字だろう? 空文字では適切に並ばなかったため、「じゃあ逆にしたら並ぶんじゃね?」という 安直な発想で、条件を逆にしてしまったのだろうが、 そうではなく、空文字を例外として扱うコードを書いた方がいい。 いいというのは人間にとって読みやすいという意味。 このように書くことで、空文字はちゃんとこのように扱っていると コード上に明確に書く事ができる。
>>372 それは最後までちゃんと計算してない。
バイト数だけで考えていて、
パーセンテージを出してないだろう。
たかだか数バイト。それが積もり積もって1GB。
大きいと思ったとしても1キロバイト中の1バイトであったら、
1000GBもの通信をしているわけ。
普段1000GBのデータ容量を使ってる所が
1GBが問題になるようなことはないよ
そんなことより人間の人件費を考えなさいと。
読みにくいコードは読むのに時間がかかる。
10秒余計にかかったら、それが積もり積もって(略
375 :
Name_Not_Found :2013/09/14(土) 22:54:28.02 ID:9LvZEWHJ
>>374 そんな難しい話じゃないんだ
伝送量があと数百MBで料金あがっちゃう!削れ!、みたいなアットホームな話
最近では問題になることないからイメージできんと思うが
ちなみに人件費については、コード読むのに余計にかかった時間分
余計に給料払ってくれる会社が沢山あれば、SE業界はブラック
とか言われることも減るんだろうなあ…
377 :
Name_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;
}
}
378 :
Name_Not_Found :2013/09/14(土) 23:29:54.93 ID:9LvZEWHJ
>>376 Object.observe
何時ぐらいから本実装されんですかね?
379 :
Name_Not_Found :2013/09/14(土) 23:35:22.74 ID:J1i2JugH
>>376 なんかわかりづらいです
比較関数を自分で作って
function () {mySort('number'),作った比較関数})
みたいに呼び出したりできるようにして欲しいです
クレクレ厨に餌をあたえないでください
383 :
Name_Not_Found :2013/09/14(土) 23:50:24.26 ID:9LvZEWHJ
>>380 うん、ざっくりは追っかけてるつもりでいます
仕事では古臭いことをやるケースが多いのでなかなか実践的には出来てませんが
せやな…
>>382 なんか無駄に複雑になってるなw
面倒なのでもうレビューしないけど1つだけ。
mapもさすがにそれだけあると
目ざわりだからこうするといいよ。
var map = function(array, func) { return [].map.call(array, func); };
まあ、実際にはunderscoreとか使えっちゅー話でもあるが。
querySelectorAllってさ、イベントバインドするのに ループ使わないといけないの? jQueryみたいに $('a').on('click', function() {}); (全てのa要素にclickハンドラをつける) って簡単に書きたいんだけど?
NodeList.prototype.map を作ったんだね。 mapとして取り出すか、メソッドはやすかは 方針次第だからどっちでもいいけど、 俺は将来NodeListにmapが追加されたら・・・とか 思っちゃうからあまり好きではないね。
>>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)})
}
returnとfunctionを書かずに済むからmapなんかとの相性抜群 やはり短いほうが読みやすい
393 :
392 :2013/09/15(日) 01:49:11.24 ID:???
愚痴るけどさぁ、ぶっちゃけ初期バーションで これぐらいのコード書いて欲しいんだよね。仕事なら。 上で出てるようなコードとか書かれてもさ レビューに時間がかかるだけで全部書き直しだもの。 このコードもソート時の値の取得に、時間がかかりそうだから メモ化するとか改善する点はあるわけ。 そのレベルでレビューしたいんだけど、 現実は上で出てるようなコードを 時間かけて読みといて、ダメな点を教えなきゃいけない。 はぁ、ここまで育ってくれるのにどれくらいかかるのか。
>>392 講釈はありがたく受け取りますけど
数字ソート失敗してますがな…
足りんかった Firefoxで数字ソート失敗してます 講釈は重々承知致しましたが…
五月雨で申し訳ございません 元の質問で、というか必要条件であるところの 空文字列だった場合のソートも失敗しているようでございます お言葉は仰るとおりですので心に刻みたい所存であります
397 :
392 :2013/09/15(日) 02:08:35.56 ID:???
ソートのルールはlocaleCompareでしょ?
この規則は
>>382 丸パクリで変えてないよ。
これだけ読みやすければ、修正するのも簡単でしょ?
そのやり方でまたセンスが見えてくるんだが・・・。
398 :
392 :2013/09/15(日) 02:14:50.09 ID:???
コード修正するつもり無いし、 他の人のレスまとうと思ったけど 面倒になったので、アイデアだけ。 コード上でソートルールを書くのは せっかくコードがテーブルに依存しなくなったのにもったいない。 (試してないけど、列数が増えてもコードに修正はいらないはず) ソートのルールというのは、本質的には値の型の問題なので colgroup要素とdata-*属性を使うかな。data-typeとか。
399 :
Name_Not_Found :2013/09/15(日) 02:15:48.61 ID:4/IrQaYG
ワロタ
>>392 先輩は会社でも同じようなことしてんだろうなw
400 :
Name_Not_Found :2013/09/15(日) 02:19:02.27 ID:4/IrQaYG
>>398 そもそもなんでsortに比較関数渡せるのかっつーと
本質はそういうことだろうねえ
401 :
392 :2013/09/15(日) 02:23:30.00 ID:???
>>399 まったくもってそのとおりだよw
新卒が書けないのならまだわかるんだけどな。
新卒は素直にゆうこと聞いてくれるし。
なんであんなわかりにくいコード書くんだろう
馬鹿なのか? 技術力がないのか?
シンプルに素直に書けばいいだけなのに。
もうね。他人が書いたコードを”解析する”のはつかれるよ。
というかなんで解析しなくちゃならないんだ?
お前(コード書いた人)は問題の出題者か?
俺は問題の回答者か? お前が俺に問題を出題してるのか?
俺はそれを悩んで解かなきゃならないのか?
本当に意味不明。
コードってのはもっと気軽に小説のように読めないとダメなんだよ。
でないと、やってることがほんとうに正しいかなんてすぐにわからんだろ?
謎コードを時間かけて実際に動かしてデバッグして値確かめて、
あぁそういうことか一応確かにこれで動いてるな。
無駄ばかりだけどな!
何やってるんだか。
402 :
392 :2013/09/15(日) 02:28:01.67 ID:???
教育を兼ねてるつもりだから ちゃんと読んでるけど、 本当なら読みにくい書き直し!で終わりたい だが困ったことに読みにくいと直感で俺はわかるんだが、 その原因が俺が馬鹿なのか本当に読みにくいのかわからないから 一応読んでしまうという・・・。 読みにくい書き直し!で終わりたい。
蛇足ってこういうのを言うんだろうなwww ワロタ先輩、後輩のことはいいから自分のコードしっかりして! 仕様通り動かないってよ!
>>392 Object.Observeはどこいったこれ?
そういう縛りプレイやってたんでしょ??
もう触るなって、、、 ヤバイやつなの分からんか?
>>404 言い訳はいいからさっさと直してやれよwww
質問者置き去りだけど
1つ言うならjQueryを当たり前のように使う風潮は俺は嫌いだな。 それなら何でもライブラリを探せで話が終わるけど、 これ最初はもっと技術的な話だったでしょ? 標準ソート関数でいかにやるかっていう。 結局そこの部分が大事なわけで、他の部分でライブラリ使って、 俺スゲーアピールするのはズレてる気がする。
荒らしにかまう奴も荒らし アピールはほっとけ 生き恥を晒してるだけだからw
質問者を無視して暴走したのも結構久しぶりだな というか規制解除されてるタイミングと重なってるような
ソートの項目数が増えるたことを考えると
>>392 みたいに、比較関数の中でjQueryのメソッド使うとコスト上がりそう
先にソート内容を抽出しておいたほうが良くね?
411 :
392 :2013/09/15(日) 09:44:59.56 ID:???
先輩はヒントを上げるだけです。
答えは自分で考えなさい。
>>407 ライブラリ部分を自分のコードで
置き換えればいいだけだよ。
412 :
392 :2013/09/15(日) 09:51:31.09 ID:???
>>410 >
>>392 みたいに、比較関数の中でjQueryのメソッド使うとコスト上がりそう
jQueryって言ったって内部でquerySelector使ってたりするけどね。
> 先にソート内容を抽出しておいたほうが良くね?
それはわかってるから ”メモ化” って言った。
はい、わからない用語は自分で調べるようにw
重いのは重いだろうけど、最初に内容を抽出するのも
不要な部分を取得しているわけで、例えば列数が100ぐらいになった時
1列あればソートできるのに、無駄な99列取ることになるよね?
まあ必要な1列だけ取り出せってだけだけど。
まあ、最近は色々と速くなってるからパフォーマンスのことを考えるときの原則
ベンチマークしてからやれ。これを忘れないように。
413 :
392 :2013/09/15(日) 09:55:09.03 ID:???
>>407 > これ最初はもっと技術的な話だったでしょ?
> 標準ソート関数でいかにやるかっていう。
そんな話だったっけ?って
最初の方見たけど、
どこにそんな縛りが書いてあるの?
414 :
392 :2013/09/15(日) 09:57:30.63 ID:???
あぁ、標準”ソート” 関数か? なら使ってるじゃん? その他の部分にライブラリ使うなとかは書いてないなぁ。
415 :
392 :2013/09/15(日) 10:43:44.49 ID:???
416 :
Name_Not_Found :2013/09/15(日) 10:56:04.34 ID:AwZt2ebl
再帰関数でいつ終わるかわからないのですが 関数が終わったときにコールバック関数を呼び出したいです callback(関数、コールバック関数); って呼び出せる関数ってありませんか? 教えてください
再帰が終わったら関数を抜けて次の命令が実行されるんだから 知りたければ再帰の直後で検知すればいいじゃん コールバックする意味あんの?
418 :
392 :2013/09/15(日) 11:01:23.54 ID:???
あ、dataを作るとき、td:nth-child()で検索して、 親のtrを取得したほうが良かったかも。 まあいいや。 ここまでやってから、アロー関数使えば シュワルツ変換もっとシンプルに書けるのに と言ってほしい。 余談 PPTPとhttpsのポートが開いてると Request Timeoutになるようになってるな。
意味不明な挙動に出くわしました。さっぱりわかりません。 助けてください。 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();のバグなんでしょうか?
> $(this).fadeIn();のバグなんでしょうか?
コード読まなくてもすぐに分かる。
>>419 が書いたコードのバグ。
本当にバグなら、調べてから言うから質問系にはならない。
(バグを見つける人はしっかり証拠を見つけてから言うので質問しない)
>>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〜がないと表示されます。
>>422 Function.prototype〜とObject.method〜はjsgoodpartsから、
画像ロードは、どっかのwebサイトにあったのを使ってます。
現在公開中してるwebアプリケーションはこのコードを改造したものを
使用してます。実際は、パスワードを入力し照合し、mysqlに記録した
画像のファイル名を$.ajaxで取得してきて、
画像ロードしていますが、いろいろ機能追加してるときに、
不具合を発見しました。その不具合は、Object.method〜があった
ときに起こることまではつきとめました。
関数内のvarをとりまとめて関数の最初で宣言するよう変えてくれるような そんなsublimeのプラグインはないでしょうか?
Sublimeスレでお聞きになってください
sublimeの一般的機能に関してはsublimeスレで聞くべきたと思いますが JavaScripting固有の問題ですのでスレ違いとは考えません
「var 」で検索して手動で書き換えろ 以上
それはsublimeより前のやり方であって、sublime以降のやり方ではありません
sublimeに限らず、そのような機能を提供しているエディタなりIDEなりはあるでしょうか?
いやいや、Sublimeとはいえ拡張機能がなければただのテキストエディタだし 自分で作れない、見つけられないのなら諦めろ 見つけたいのならSublimeスレ、作って欲しいのならPythonスレにでも行け
javascriptから a:hover{background:red} ってhoverやりたいんですけど、 これは obj.styleからはできないんですね
sublimeに関する話題はsublimeのスレで聞いたほうがいいよ 同じことを考えている人がいればそっちのスレ見るわけだし
それにそもそもsublime textのプラグインはPythonで書くのでJavaScript固有の問題じゃない スレ違いな話題はやめてほしい
プラグインをどう書くかなど聞いていません
そして
>>430 で更に問題は一般化されているのです
本質的にJavaScriptの問題だということがおわかりいただけたかと思います
スレ違いという書き込みこそスレ違いなんです それをご理解下さい
またお前か
寝てる間にこんな面白い流れになってたなんて…
>>439 触んなって
奴が戻ってきたらお前さん責任取れんのか?
442 :
Name_Not_Found :2013/09/15(日) 15:50:20.79 ID:f5OyVNVL
>>424 どうやってデバッグしている?
JSコンソールにエラーは出ていない?
Object.methodの部分が何について書いてあるのかちゃんと本は読んだ?
>>424 FunctionやObjectのprototypeをいじったら、
jQueryとかのライブラリが正常に動く保障はまったく無い
444 :
Name_Not_Found :2013/09/15(日) 15:52:55.39 ID:f5OyVNVL
SublimeのプラグインじゃなくてJSパーサーの方向性の方がいいかもな
ありがとうございます やはりないのですか 今みていたのですがJavaScript Validator with Esprimaってプラグインで使っている esprimaというプロダクトで文法を解析できるようなのでこれでできるのかもしれません
おうwww 頑張れよw (手で直すほうが100倍早いなんて野暮なことは言わない)
できたらGitHabで公開してね
>関数内のvarをとりまとめて関数の最初で宣言するよう これってメリットあるん? 初心者のオレにはさっぱりわからん
誰かの書いたコードを自分が読みやすい形に直したいってことでしょきっと
452 :
Name_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. 代入はこの行で実行)
})();
こんな感じで
なので、そのスコープ内で宣言される全ての変数を把握していないと、おや?ということになる
ひとりで書いてれば気にならんけど、他人のコードをメンテする場合とか、結構イラッとする
スコープの最初に書き直されるのはどうかと思うけど
今いじってるスコープで宣言される変数の一覧を出すとか、色つけてくれたりしたら便利だと思う
警告を出すだけならJSLintとかの仕事だ それを機械的に直したいっていうのはちょっとニッチすぎるな
「var 」を全部「let 」に置換すればいいよ letなら(まともに実装してれば)巻き上げないから動けば気にしなくていいし、 動かなければあんまりいい設計じゃないってことで動くよう最小限書き直せばいい それで妥協するのでもいいと思うよ
>>439 > これを試してみましたが、番号でソートすると
> 1,11,12,...,2,21,22,...
はい知っています。でも答えは書きません。
正確にはChromeでは数字ではなく数値として
扱うようで数値での並び順になっています。
ヒントは
>>354 とその付近で既に示しています。
あとは自分で頑張りましょう。
ダメな先輩きたー
>>349 が責任とってお相手して差し上げろよww
>>452 そんな挙動するのか、ありがとう。
とりあえず、他人のコード把握したいなら、さくらエディタでのgrepで
〜.jsファイルに対してvarで抜き出したいいんじゃな?
varを関数の上の方に持ってくるべきという主張にはあまり賛同できないな。 varを関数の途中に持ってくるのは、この変数はここから使います。 という意思表示に現れ。 それを上に持ってくるのは、自分の考えをJavaScriptという 言語仕様だけのためにねじ曲げられているということ。 varを関数に途中に持ってくるのは理由があってやっているが 頭に持ってくるのは理由がない。 こういうのは、関数内でvarで宣言するよりも前に 変数が使用されていたらjshintなどで警告出させるべきだが さてそんなオプションあったっけ? もう一つ、変数の再定義をした時にも警告を出す必要があるが jshintであればデフォルトでONだったはず。
> こういうのは、関数内でvarで宣言するよりも前に > 変数が使用されていたらjshintなどで警告出させるべきだが > さてそんなオプションあったっけ? latedefでいけるかな? ちょっと手元に環境がないので試せない。
>>458 そりゃそうだ
自分もどこでもいいと思うよ
他の言語から入ってきた人やJS初心者とか
色んな人が触るコードでいろいろコーディングスタイル厳しく統一していったら
最初にまとめて書いておこうねってなるとは思うけど
その程度のことだと思う
宣言より上の操作でエラーが欲しければlet使えばいい。 宣言前の使用は実行時エラーになるが、 二重宣言とかはコンパイル時エラーで出してくれる。
>>460 まぁ自分しか見ない・編集しないコードであれば好きにやりゃいいけど
他人が読む可能性があるコードでオレオレコーディングはやめてくれ
俺俺コーディング?? タブ流とスペース流みたいなものでどっちが正しいとかないと思うが 何言ってんだか……
varとか宣言がブロックスコープになる言語使ってきた人じゃないのなら混乱もないだろうし、
>>458 のメリットも捨てがたい
そもそも元々柔軟さをとってそういう仕様になったんだから
よっぽどの場合を除き、仕様に則ってコーディングするのが普通じゃない?
あえてJSのスタイルに逆らうほうがオレオレだと思うけど
>>463 え、JavaScript に関して言えば別だろ
JSは裾野が広すぎてスタンダードが決めづらいだろう JsDocみたいな提唱はあるけど
自分が作ったコードをあとで馬鹿たれが編集するかもしれないって考えてコーディングするのがプロとしての勤めじゃないの? なんでトラブルの原因になるかもしれないものをわざわざ残すような書き方をするのか
>>460 > 色んな人が触るコードでいろいろコーディングスタイル厳しく統一していったら
> 最初にまとめて書いておこうねってなるとは思うけど
いやしないほうがいいと言ってるんだよ。
コーディングスタイルに関してはjshint等で設定をつめて
それに従わせるだけだからあえて説明する必要もない。
(エラーの意味ぐらい自分で調べろというだけ)
変数の巻き上げが起きない別の言語の話だが、中途で入ってきた人が
前の会社の癖(COBOLらしいが)で変数を関数の上で全部宣言していたのよ。
その時は、まあそんなスタイルもありかと思ったが、まあこれがうちの(俺の)
やり方だからってことで変数を使用する所で宣言するように直していったら
コードがかなり見やすくなった。
理由としてはこんな所。
・変数を利用する範囲が小さいから変数名は短くても十分
変数を冒頭に置くと関数内で被らないようにしないといけないから
分かりやすくということで、長い名前になりがち。
変数を利用する範囲が小さいならば、コード見れば何の値なのかすぐに分かる。
・変数の宣言と初期化処理を二重に書かなくて済む。
コントロールブレイクっていうCOBOLでのコードパターンがあるんだが
ループ中にブレイクしたら変数初期化をするなんてコードがあるんだよね。
ループの中だけでしか使わない変数なら、その場で宣言して代入すれば良いのにって思う。
・変数に代入した後、その値を変える必要が少なくなった。
宣言と使用箇所が分かれてると必然的に変数の再代入が必要になる。
再代入はするべきではないって話は、関数型言語を知らばわかる。
ここもテストに出るので勉強しておくようにw
宣言を頭に持ってくるのは気持ちの問題でしかない だってどこに書いても頭に持ってきたかのように振る舞うのだからね あえて頭に書いてもロジック的なメリットはないし、同じことだ それならどこにでも書けるというのを活かした方が正しい 少なくとも頭にまとめるべきというのは正しくない 現にそういうチェックはJSLintでもされてない
>>468 静的方面から入った人は頭を見れば全部わかるみたいに考える人が多いから
そこの文化に従う事になればしょうがないことだと思うよ
>だってどこに書いても頭に持ってきたかのように振る舞うのだからね >あえて頭に書いてもロジック的なメリットはないし、同じことだ え、JS素人ですか
>>471 素人はお前だボケ
それとも流れが読めないのか?
>>470 > 静的方面から入った人は頭を見れば全部わかるみたいに考える人が多いから
その言い方じゃ、静的言語を知らないとしか思えないぞ。
なぜなら静的言語で関数の頭でしか宣言できない言語は
ごくわずかだからだ。
ちゃんとどっちも勉強しておけよ。
全くどいつもこいつも(このスレだけの話じゃない)
ここ1年IEを考えたことなんて数回しか無い。 できるだけ意図的に無視してるな。
>>473 へー、自分以外が編集したときに宣言の巻き上げで問題を起こす可能性が0なのかー
さすがプロ(笑)
>>474 だれも出来ないなんて言ってないよ
そういう文化があるし、そういうコードがJavaでもC++でも大多数
知らないの???
>>474 頭かてーな
JavaScriptかどうかに関わらず言語の仕様に合わせろって言ってるだけだろ
>>476 0だよ
function f(){
var x
...
x = hoge
と
function f(){
...
var x = hoge
はロジック的に全くの等価
反例があるのならよろしくw
>>480 その…の部分で問題が起きるかもしれないんだろ・・・
もしかして変数の巻き上げって現象を知らないのか?
リロードしたら伸びすぎワロタ
>>481 どう問題が起きるのか書いてくれないかな?
こっちアホだからわからんのよ?
それと変数じゃなくて、宣言の巻き上げでしょ?
なつかしー展開。 一昔前は、何人ROMってたんだよってくらい 突然勢い伸びてた時期もあったなー。
>>477 > そういう文化があるし、そういうコードがJavaでもC++でも大多数
大多数であるというデータがあるなら教えてよ。
少なくともJavaやC++で変数の宣言場所は自由だし、
俺の知る限りそれを守ってるプロジェクトなんか知らない。
上の方で宣言するしかない言語は知っているが、
どこでも宣言できるのに、上の方で宣言しろなんて文化は聞いたことがない。
>>468 >変数を冒頭に置くと関数内で被らないようにしないといけないから
スコープ内のどこでも、かぶっちゃいけないと思うの
多重定義は見逃してもらっているだけだと思ってる
>>477 まるで世界中の物を見てきたかのような口ぶりで
軽々しく「〜が大多数」とか言う人のことは話半分で聞いておけ
って爺ちゃんが言ってた
>>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. 代入はこの行で実行)
})();
これは等価だと思うが?
>>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);
}
}
こういうコードで、変数定義を関数の上の方に
持ってくるとかぶっちゃうわけよ。
スコープ内でかぶるとかいう話ではなく、
ブロックスコープが、関数スコープに
広がってしまうからかぶっちゃうのよ。
>>486 これは結局こう書かないと行けないねってことで
>>488 の通りだと思うけど
var a = 'hoge';
(function(){
var a = 'fuga';
console.log(a);
})();
letを使うのは有用だけど、ここはESスレじゃないし
>>452 のように、エディタやIDEでなんとかするのが建設的な気がする
とりあえず、sublimeのプラグインで書いてみようかと思うんだが
やっぱ色つけるのが良いですかね?他になにか案ある?
>>489 なんでJSすれでJS以外の言語仕様の話持ち出すの?
>
>>452 のように、エディタやIDEでなんとかするのが建設的な気がする
jshintでやれといったじゃん
人のはないちゃんと聞けよw
Web製作管理板とは言え、最近はWebアプリというものもあるし 最先端技術を蔑ろにする方が現実を見てないと思うな もうIEガーはいいよ
>>492 変数は使用する所で宣言した方がいいという
話をしているだけですが、
他の言語の経験は、JavaScriptには当てはまらないとでも言いますか?
嫌だよめんどくせえ
>>492 ア・ス・ペ
>>495 JavaScriptスレでJavaScriptの変数の宣言場所の話をしてるのですが・・・
他の言語での変数宣言の場所の話は総合スレかなんかでどうぞ
>>498 えぇ、ですからJavaScriptの変数の宣言場所の話をしていますよ?
>>495 それはわかるよ。俺もfor(var i=0 ; i<100 ; i++)って書くよ
んで、JSではこれをスコープの途中で書くと、このvar iが
スコープの最初に来ちゃう仕様だね、って話してんじゃん?
>>500 そのスレは失敗に終わったECMAScript 4を語るスレです。
ちゃんとスレタイに書いてるじゃないですか?
ECMAScript Death 4 って
>>491 色でいいと思うぞ、sublimeの機能はよく知らんが
見た/書いた時点でローカル変数であることがわかればいいんだから
>>502 ワロタwそれはたまたまw
ちゃんと最近はES6やES7について語ってるよ
>>501 そうだよ?
だからといって、関数の上に持ってくるのは
いいとは思えないと言ってるんじゃん。
関数の上に持ってくるのは、forループだけでしか使わないという
意思を無視して、言語仕様に歪められてるだけだと。
そこで「現に他の言語では使用する場所で宣言している」という
実例をあげたらいかんの?
プログラム言語の話なのに、現在のJavaScriptだけの世界で考えなきゃいかんの?
他のプログラム言語の経験は役に立たないと言わんばかりだね。
全く俺なんでCOBOLまで知ってるんだろう。使わんのにw
(Pascal な俺はJSでも宣言は上にまとめてる、なんて言ったら吊るし上げにされそうな流れだ…)
Cでは最初に宣言しなければならなかったがC++ではどこでも良くなった つまりはそういうこと
>>505 いや、そんな話してないってば
わかってもらえると思って直球で書かなかった俺も悪いんだけど
使う場所で宣言したほうがわかりやすい、って個人の感想じゃん
あと、関係ないけど、最後の1行が地獄のミサワっぽくて面白かった
でも皆さん御用達のjQueryでもクロックフォードさんに従って(=上で宣言)なかったっけ? 最近のソースは違うのかな
>>508 > 使う場所で宣言したほうがわかりやすい、って個人の感想じゃん
違うよ。俺の経験から結論が出た。
使う場所で宣言したほうが、見やすくわかりやすいコードになる。
その理由は、既に書いたつもりだけどな。
>>>個人の感想じゃん >>違うよ。俺の経験から結論が出た。 ??????????????????
>>511 >違うよ。俺の経験から結論が出た。
>使う場所で宣言したほうが、見やすくわかりやすいコードになる。
これは個人の感想だと思うんですけどねぇ・・・
クロックフォードスタイルがいいのはvarを一度しか書かなくてよくて、冗長にならないこと varで開始場所を示すというけど、 ローカル変数を宣言なしで使える言語では開始場所なんて示さないのに何の問題もないのだから そんな機能はいらないと思う
クロックフォードスタイルじゃないとバーバーバーバー書いて馬鹿みたいになる
>>513 えーと、つまりさ、
あんたは見やすいコードというのは
全て個人の感想だって言いたいわけ?
うーん、流石名人はおっしゃることが一味違うなぁ
varなんぞ書かなくていいなら書かない方がいい程度のもの だから最初にまとめて宣言する
俺も前にまとめて書くの好きなんだけど、 一時期はvarを宣言全部に書いてるコードを見て素人臭いと思うようになったが for文とかはいいやって思って折衷案でやってる 変数が増えたときにコンマとピリオドの付け替えが面倒っちゃ面倒
>>510 jQueryは優れてると思うけど
jQueryのコーディングスタイルを
盲信してるわけじゃないんでね。
わかりやすい所で言えば、
jQueryのインデントをタブでやるなんていう
規約はお断りだ。
秀丸でお勧めのJavaScriptマクロを教えてください
>>521 関数型を知ると今度は、代入なしの宣言が嫌になると思うよw
例えばこんなの
function foo() {
var i;
・・・色々コードがあって
i = 0;
}
>>523 ひで丸を投げ捨ててsublime textを使う
>>517 本質的にはそうだと思う
そのコードを扱う人の集合が変わると、ぜんぜん違う
>>524 俺が実例上げて見やすいコードになるって言ったら
お前は理由も言わずに、個人の感想だって言ったからだろ?
理由がないのなら、見やすいコードは全て個人の感想だ言ってるのも同然だ。
いきなり個人の感想呼ばわりされた、俺のほうが困惑だw
>>525 そうそう、代入なしの宣言は最近書いたことないわ
宣言の順番変えたりして無理やり代入できるようにしてる、本末転倒かなとも思うけど
>>527 > そのコードを扱う人の集合が変わると、ぜんぜん違う
じゃあ、コードを扱う集合が
どんな人達なのか考えなきゃいけないな。
つまり馬鹿な集団なのかどうか?ってこと。
>>529 そこまでやる勝ちはあるよ。
例えばScalaには
(って別の言語を出したらまたアイツがでてくるのかねぇ。うんざり)
varとvalというものがある。varが一般的な変数宣言で使うやつで、
valは再代入不可の変数。一旦代入したらその値はもう変えられない。
Scalaで推奨されているのはvalの方。
説明は面倒なので、
なぜこういうものがわざわざ用意されているかを察してくれw
JavaScriptにおけるvarは単なる必要悪だから それにかかずらう時間をいかに小さくするかだけが問題 ゆえにツールで生成するのがファンナルアンサー
ここまで自信家だと、逆にかっこいいな
煽りとかじゃなくて純粋に
>>392 さえなかったらと悔やまれる…
>>532 あんたの論では、letが普及した後に吠えたほうがいいんじゃない
varはvarでletはletなんだから
>>536 ルールに背く俺かっけえええええええ
なプログラマはいらないです
ん?
>>535 そのコードに未解決の問題が
残っているなら教えてくれ。
>>536 意味がさっぱりわからないw
>>539 いや別にいいんだけどさ
むかし、JavaScriptメーリングリストがあった頃に
すっごい自信家で言葉もキツイんだけど
質問者の意図はエスパーしてでも完璧な回答する人がいて
それを思い出しただけ
541 :
Name_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で実行すると明らかです。
宜しくお願いします。
うん、やっぱり代入と一緒に宣言したほうがいいね、基本的には
次から質問限定じゃなくて総合スレにしませんか? ここ質問スレだけどたまには議論したいこともあるでしょう
>>543 そうじゃなくてちゃんとプログラム板のJSやESスレに来てよ
待ってるからさあ
ライブラリで擬似ポップアップウィンドウ出すのが一番地球にやさしい
>>540 大丈夫、リアルの俺は自信家じゃないからw
後輩から(先輩もあるが・・・)コードレビュー依頼きてぱっとみで見にくい、
冗長だと思うんだが、それで突き返さないでどういう発想で書いたのか想像しながら
何が問題でどういう風に考え方を変えるべきかをコードを手元で直しながら突き止めてる。
要約するとコードレビューの内容と同じものを俺が作ってるんだよ!
教育だから仕方ねぇけど、最初から俺が全部やったほうが早い感ぱねぇw
一目でぱっと判断した決断を信じて、さっさと突き返せばいいんだろうけどさ。
俺のほうが理解してないんじゃないかってどうしても思ってしまう。
やってみると最初の判断は正しくて、半分から3/4ぐらいの量で
シンプルに書き直せるんだよな。上でやってみせたのと同じ。
助けてくれ、頼むから最初からレビューに耐えるコードでレビュー依頼してくれorz
>>541 標準モードでやるしかねぇだろ?
正しい動作は1つに決まっているが、
間違った動作というのはたくさんあるんだからさ
互換モードの正確な動きは
誰にもわからんよ。
確かIE10の互換モードはポンコツで IE11からは無くなるとかなんとかじゃなかったっけ? もう普通にモダンブラウザ中心で開発するのが良いと思う 自分も今年に入ってからはIE8もサポート外にする運動に参加してる
互換モードの切り替えボタン、なんであんなところに付けたんだよ! 間違えて押して気づかない人大杉んだろ!
>>541 くっそwww
またクソ見てぇなコード見てしまった。
もうレビューしねぇぞ。
でもな、1つだけ言っておく。
お前ウェブで拾った内容をよくわからんままコピペしてるだろ?
タグが大文字小文字混じってる。しかもhtmlタグにいたっては、
開始タグが大文字で終了タグが小文字だ。
こういうことになるのは、コピペしているのが原因だ。
全てのタグの正しい使い方を勉強しろ。簡単な所までコピペするな。
基礎の基礎がわかっていないということを
ちゃんと自分で自覚してるか? してないなら自覚しておけよ。
自分のところもjQuery2が出てから、いつIE8外そうかという話題をよくする。 早ければ来年、現実だと2年後くらいになりそうかな。
>>549 > 自分も今年に入ってからはIE8もサポート外にする運動に参加してる
その運動の内容を教えてくれ。
えーとつまりだな。
IE8をサポート外にすることで発生する
さまざまな問題、クレーム、動きませんという内容に
その運動ではどのように対応しましょうと提案しているのだ?
>>549 来年の4月9日まではIE8サポートしようかと思う
>>552 jQuery 2.0系を参考にするのであれば、
jQuery 1.9系のサポートが終わった時を
目安にするのはどうでしょうか?
知っての通り、1.9系は2.0系と同じAPIを持っています。
サポートブラウザが違うだけです。
jQueryがIE対応がまだ必要と思えば1.9系のサポートは続きます。
そしてjQueryが1.9系を終わらせるときは古いIEのサポートが
もはや不要と思った時なはずです。
jQueryに判断を委ねるのもいいと思います。
>>554 サポート期間って何を基準に決めてるの?
1.x系と2.x系じゃないの?
>>553 運動は心のなかで同士のことを思いながら参加してる
もちろん気にしないのが理想だけど、そうは勿論出来ない
本当に最近だと、モダンブラウザで動くように作って、
レガシーブラウザであまりにも酷い時は別にコード+αで書く
ページを分けれるときにはできるだけ分けさせてもらって極力シンプルにダサく作る
最初から古い環境でも動くように強く意識しては書かない
それがささやかな抵抗と未来への移行の準備
>>555 勿論そのくらいのきっかけがあれば即日切る方針になるだろうね。
本当にあとはきっかけ待ちなんだよね。
IE8は手抜き実装すぎてポリフィルが困難
この中にサポート期間の判断に、 使用者数を考える人はいないの?
公式のサポートが終わっても実態への影響はさほどでもないが 上司に打診しやすくなるし、起業としてもIE8歓迎の看板を下ろすいい機会にすべきでしょうな
>>556 IE9以降が使えないXPのサポート期間を基準にしようかなと
jQueryなどのライブラリを使えば、 同じ書き方で古いブラウザでも勝手に動くんで、 俺らの言うサポート言うのは古いブラウザで テストするかどうかの違いだろう? 書き方なんてブラウザごとに変わんねぇよ。 ってか、現時点の話として、ブラウザごとに 書き換えたを変えるなんてそんな面倒なことしたくねぇよ。
XPでもIEから移ればいいだけなんだから甘えるなっていうのが本音
>>563 IE8を使えるWindows 7の人はどうするの?
2年前に、地デジ移行期間に便乗して 「知っていますか?古いIEは使えなくなるんです」 ってやっていれば今頃…
まったくだわ。他のブラウザはXPに対応してるのに
そこそこ最新の技術を使って対応できない理由を作るのはよくやる あと一回、Googleフレーム入れてたらIEでも動くんですけどねえって冗談で言ったら それで納得されちゃったことがあるw もう廃止になったからこの手は使えないが
>>566 それを言い出すと
古いFirefoxやNetscapeだってまだ動くわけで、キリがない気がする
MSはアップデートを出してるんだから、それを意図的に拒む人・団体は、お察しください
なんじゃね?
ていうか、ぼーっとしてたら僕のIE7ちゃんがアプデされちゃったの!
誰か助けて!
IE8は「変えたいけどどうしてもブラウザを変えられない」っていう理由が多いと見ると Google Frameで納得は一理ある
サポートが面倒だから切るっていうのは 間違っちゃいないんだけどさ、 技術的に出来るか出来ないかで話すと IE6でも結構できちゃうんだよな。
古いブラウザへの対応は最初からそれが目的じゃない限りできる範囲で適当にやる 迷ったら断る
>>574 ずばり言うけど、君の目がおかしいよ
色盲かもよ
>>574 かなりちょうどいいバランスだと思うけどな
不満なら調整すれば?
少なくともバグじゃないよ
古いブラウザ対応でも それ用にお金と時間もらえるなら、俄然張り切るタイプです
>>574 ディスプレイの型番を教えてくれ
話はまずそれからだ。
そういえばPhotoshopでもJSは動くんだよな
sublimeのパクリやん
ざっと見たけど思いっきりパクリに行っててわろた
プラグインがJSで書けるならいいかも?
そっか、sublimeによって最早dreamweaverがオワコン化されてるから 本気で穫りに来たんだろうね
>>580 >白の方が見やすいでしょう?
いいえ、白なんて滅多に使うもんじゃない
背景が明らかに黒い時だけ
>>442 デバックはalertを使って変数に入ってる値を
調べる方法でやってます。
>>582 すいません。見落としていました。
>588
ありがとうございます。
この記事には、Object.method〜を使うとjquery ajaxが突然動かなくなり
使用しないことと載ってました。
詳しく読んでみます。
>>592 >>443 も見落としてるね
ブラウザのデバッガも使えない奴が
FunctionやObjectのプロトタイプを汚染するコードを書いちゃダメ
頑張れ alertよりもっといいものがあると知ってほしい
>>592 Function.prototype.method = function (name, func) {
Object.defineProperty(this.prototype, name, { value: func, enumerable: false });
return this;
};
これでどうよ?
superior()の方の動作に問題があるかどうかは確認してないので、そっちは自分で確認してみて
>>591 それはどう考えてもおかしいでしょう
背景色によって白か黒かを選ぶアルゴリズムなのに
白なんて滅多に使わないとか
見やすさなんか人それぞれでいいだろ。 数式で見やすさが計算できるんじゃない。 見やすさが計算できる数式を作ったんだ。 数学とはそういうもんだぞ。
brackets、使ってみたらsublimeに遠く及ばないね スクロールが遅いし 表面上パクっただけだわ
富士通のコントラストとか図るソフト 配布終わっちゃったんだよな
俺もいま使ってみてる スクロール遅いか?
>>596 全くおかしくない。
Webページにおいて見やすいかはそういう基準も勿論入る。
「文字」っていうのは簡単じゃないんだ。
それこそフォントにもよるし、レンダリングエンジンによっても印象は違う。
>>580 を見てまだ黒の方が見やすいという人は、目か頭かまたはその両方がおかしいんです
>>602 あぁ、うん、それでいいよ。
話はこれで終わったよね。
いいえ。まだ始まったばかりです。
同情してもらってコード書いて貰いたいのはわかるが甘いな
こいつ多分自作自演名人様だな 最近良くいろんなスレ行ってるけど失業でもしたの?
>>443 すいません。見落としてました。わかりました。
>>593 firebugで確認したところjQueryライブラリの中で
エラーが出ておりました。
firebugのスクリプトタブでコードを見ると日本語は文字化けすんですえね。
>>594 ありがとうございます。
>>595 firebugのエラーがなくなり正常に動作しました。
ありがとうございます。
>>607 UTF-8になってればfirebugで日本語表示できない?
・・・
The rage for color brightness difference is 125. The range for color difference is 500. この最初のrageはrangeのタイポですよね・・
もう600? コーディングスタイルとかの話題で盛り上がりたければそういうスレを分岐しましょうか? 本当は言語仕様の話なんだからム板のEcmaScriptスレでやって欲しいところなんだけど。 本来の質問スレとして機能しないようでは困りますよね。
今日の伸びが異例だっただけ
勝手に新しく類似スレ立てて 皆が納得してちゃんと分岐するなんて 一体いつから錯覚していた?
脱線から有意義な情報や意見が出ることもままあるということを 自治厨は分からんのです
>>608 すいません。いろりろ試してるとできました。
だからもう次スレのタイトル変えよう
いいよ別に こんなんたまにあるだけだから
スレタイのことだけどさ、 大体さ、サブタイトル入れなかったのが いけないんだよ。 108だろ? なら、 「+ JavaScript の質問用スレッド vol.108 〜煩悩〜 + とかするべきじゃね? 109なら 「+ JavaScript の質問用スレッド vol.109 〜渋谷〜 + これでどうよ? もっと楽しまなくちゃ。
"+ JavaScript の質問用スレッド vol.109 〜"+Object.getOwnPropertyNames(window)[109]+"〜 +"
早晩ネタに困るのが目に見えてるじゃん
+ JavaScript の質問用スレッド vol.108 〜JS極めたら彼女できる〜+
108と何もかかってないだろ 舐めてんのか
>>574 の件ですが、hueが指定した範囲にある時は判定式の閾値を増やすという方法で、
見やすい色にすることがてきました
ありがとうございました
本当人の意見聞かないね 見やすいと思ってるのは君だけだって
見やすくないと思ってるのもあなただけです
わざわざリンク先見て意見くれる人を馬鹿にする質問者……
テスト駆動JavaScriptを勉強中だけど、自分には内容が高度すぎて心が折れそう。 例えば「jQueryを使いこなして、webアプリを作りたい!」が本来の目標だとしたら、 「jQueryを開発する技術を学ぶ本」に手を出してしまったようなコレジャナイ感。 第2部「プログラマのためのJavaScript」は、知らない概念がバンバン出てくるけど 解説も少ないし、訳文もあまり良くないのでこの本だけでそれを学習するのは厳しい。 だからネットでかなりの部分を補完しながら進めてるけど、それだったらもっといい本で 勉強した方が効率いいしな…。
……………。
なんやて駆動
>>629 の書き込みだけだと「テスト駆動JavaScript」という本について語ってるとか普通わからんだろうな
この本はオライリーの本とか一通り目を通した後じゃないと難しいかもね
おれはサンプルを自分の環境向けに実装し直しとかして勉強になったよ
>>631 あるコードを実装する前にそのコードが正しく実装されればパスするはずのテストコードを書く
そのテストコードが失敗するのを確認→コードを実装→テストコードがパスするのを確認
これを繰り返してコード全体を実装していく開発方法
それ「jQueryを使いこなして、webアプリを作りたい」人が読む本じゃないよ 大規模なwebアプリを継続的に開発運用していきたい人が読む本
>>629 はjQueryを使いこなしたいわけじゃない
jQueryを云々は例として挙げてるだけだろ
>>631 「Test-Driven JavaScript Development」 の和訳書名が「テスト駆動JavaScript」になってるんですよ。
イントロダクションで、JavaScriptデベロッパでテスト駆動開発してる奴はあまりいないって(2011年あたり?)
書いてあるけど、現在も変わってないのかな?
>>634 わかりにくかったかな。
レビューで「本格入門」が終わったら手を出していいかも、と書いてあったので購入しました。
>>633 わかる
が、この色を、グラデではなく単色で塗りに使うのは…
目がチカチカするの俺だけ?
>>639 テスト駆動の話が盛り上がったのって、結構前だったよね?
自分は、トライはしてみたけど、定着はしなかったなあ
完全なテストファーストで開発するのはつらい でもテストの自動化はけっこう普及してるんじゃないの?
>>633 白色のほうがハッキリしてるけど、見やすさで言ったら黒色。
週末に一気に伸びましたな 質問すると人と、答える人も 旧IEでも動くのか モダンブラウザだけか 実装待ちの新機能も使ってるのか を明記すればいいと思った
それは質問者が IE6で動くコード聞いてるのか Chromeで動くコード聞いてるのか それとも単に好奇心で技術的な質問をしてるのか を明記すれば話が早い
>>635 つまりjasmineでテストを書いて
javascriptファイルにテストに合格するコードを書いていき、
jenkinsでファイルを保存と同時にテストを走らせるという誰でもできることを君はしたいというのかね?
>>647 まずConsoleにエラーが出てないか確認したまえ
>>648 chromeではエラーが出てました
firefoxでは見られました
ありがとうございました
テスト駆動の問題点は最初に実装するコードが 分かってることが前提になってるからだと思う。 関数の引数がこれで戻り値がこれでこのような関数があればアプリが作れる。 ということが明確にわかってる場合、簡単に最初にテストがかけると思う。 だからunderscoreみたいな単純な関数のライブラリであれば テストを書くのも簡単だと思うよ。 でも、アプリを作っている場合、ぼんやりとはわかっていても それが最善のやり方かどうかまではわからない。 ある程度作って形ができてから、コードを整理してシンプルな形にする。 どうしても最初に作らないとダメなんだよね。 で、最近gitを使い始めたのだけどテスト駆動を改良できそうな気がする gitを知っていればコード修正の歴史を書き換えることが出来るということを知ってると思う。 これを使えば、最初に実装コードを書いてから、歴史をさかのぼって、テストコードを書いて あたかもテストコードを先に書いてから、実装コードを書いたように、歴史を書き換えられる。 (完全に実装コードを書いてしまってからやるのではなく、ある程度書いて理解してから 歴史をさかのぼってテストコードを書くということ) 実際には実装コードとテストコードは並行して開発しているんだが、 コード修正の歴史はテスト駆動になっているという。
よく分からないな 捨て去ったコードに対してテストを書く意味とは?
テスト駆動開発では最初に失敗する テストを書くということになっているんだが、 完成した時、つまりテストも通るとき、 本当にテストを最初に書いたかという証拠を どうやって残すかが問題になる。 そこでgit。失敗するテストを書いた時点でコミットする。 テストを成功させる最低限のコードを書いた時点で、別のコミットをする リファクタリングして綺麗にしたコミットをする。 全部で3つのコミット。 この3つのコミットさえできていればいいはずなので gitを使って歴史を移動しながら3つのコミットを仕上げていく。
2番目の最低限のコードのコミットは残す必要はないか。 そのコードをリファクタリングしていけば良い。
javascriptでdiffをとる方法をおしえて
a = {a:"a", b:"a",} っていうのは keyはダブルクォーテーションで囲わなくてもOKですか? 最後にカンマをつけましたがつけても大丈夫ですか?
>>656 キーが英数文字と_などの一部の記号だけなら問題ない。
最後のカンマはECMAScript3の環境(つまり古いブラウザ)で動かす必要があるなら問題がある。
ECMAScript5以上を前提としていいのであれば問題ない。
なお、最後のカンマはJSHintなどを使えば問題がある場合に教えてくれる。
>>655 探せ!この世のどこかにそれを置いてきたよ誰かが
やめろワンピース!
>>655 Ajaxでサーバに投げてコマンドのdiffでやって返してもらいたい気分
>>652 > よく分からないな
> 捨て去ったコードに対してテストを書く意味とは?
テスト駆動開発は、テスト作成ではないのだよ。
テスト、たとえばユニットテストなどのことだけど、
テスト自体を開発するのではなく、テストを開発のための
道具として使っているだけ。
普通開発するとき、デバッグprintとか
最後には捨て去るのに、一時的にコード書くでしょ?
テスト駆動ではテストをそのような目的として使う。
捨て去ったコードに対してテストを書く(残す)のではなく
開発のために、一時的にテストを書いて、それを道具として使って、開発を行う。
まあ、デバッグコードを残すように、作ったテストが
使えるなら捨て去らなくてもいいけどね。
無能しかいないな
テスト駆動って意味あるのかね まあ確かにそれなりのケースでバグの究明を早めることはできるだろうけど 全部動かした時にときどき不意に現れるような 本当に直しにくいバグを無くそうと思ったら それこそ隅から隅までテストやらないといけないからなあ 中途半端じゃダメ そのコストと、直しにくいバグを見つけるコスト、 どっちが高いかなあ
先週から長文うぜえのが何匹か居ついちまってるのな コード張るわけでも無いなら三行にまとめろ
長文かつ連投かつ自演バレてないと思ってるから救えないよな
なにたかが長文にこんなに拒否反応示してるんだろう? 嫌なら見なければいいのに。 誰かに2ちゃんねる見ろって命令でもされてるの?
>>663 目的はテストじゃなくて
アプリを正しく動かすことなので、
中途半端でいいと思いますが?
いろんな手法を柔軟に使い分けろよ。
なんでココはIDが出ないんだろうね。
自演とか言ってる奴糖質すぎてやばいだろ
× IDでると自作自演が出来ないからな ○ IDでると自作自演ってことにしづらいからな。 IDでると困るのは、実は「そいつは自作自演だ」って言ってる方なんだよ。
自作自演をする方は実はIDがある方がやりやすかったりするw 2つ以上のIDを使い分ければいいからね。
672 :
Name_Not_Found :2013/09/16(月) 18:50:59.03 ID:eIZnfm24
このチキンくんたちめ! IDまるだしだぞー!
673 :
Name_Not_Found :2013/09/16(月) 19:01:09.33 ID:CkVpuFd2
このチキンくん
674 :
Name_Not_Found :2013/09/16(月) 19:01:11.58 ID:SZjLHB6w
たちめ!
675 :
Name_Not_Found :2013/09/16(月) 19:01:46.21 ID:CkVpuFd2
IDまるだし
676 :
Name_Not_Found :2013/09/16(月) 19:01:56.54 ID:SZjLHB6w
だぞー!
677 :
Name_Not_Found :2013/09/16(月) 19:05:10.44 ID:CkVpuFd2
678 :
Name_Not_Found :2013/09/16(月) 19:05:11.53 ID:SZjLHB6w
>>677 いえいえ、あなたが言っている事こそ正しいと思います。
長文君が発狂したのか
680 :
Name_Not_Found :2013/09/16(月) 19:12:23.00 ID:SZjLHB6w
>>679 IDでてたら、長文君じゃないってわかるね。
IDでてなくてよかったねw
図星だったみたいだな 長文かつ連投かつ自演かつ煽り耐性無し、4重苦
統合失調症乙
長文ってなにか悪いことだっけ? 何にそんなにムカついているのかわからない。
同意w きちがいの論理は分からんわ
長文で説教はないわー
長文の説教って何?
alert(9999999999999991); とすると9999999999999992と表示されるのですがなぜでしょうか
(9999999999999991).toString(2) //"100011100001101111001001101111110000001111111111111000" (9999999999999992).toString(2) //"100011100001101111001001101111110000001111111111111000"
689 :
Name_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です
理由は考えろ function plus(y){ x=y+5; alert(x); }
691 :
Name_Not_Found :2013/09/16(月) 22:51:57.57 ID:2BiTarbH
>>690 本当にありがとうございました!!!!!いやっほー
理由を考える気はないらしい
問題解決したらどうやって解決したか書けとは言うけどさ、 さすがにこの程度はいらんわw
誰も過程を書けなんて言ってない 誠意を見せろってことだ
._______________ | | | ノ __________ │ |. ノ| | | | | ノ ̄ ̄`ヽ、// // //// | .、__|__ | ̄ ̄ ̄| |/ ´`ヽ _ // // // | | | | --/ ̄ ,  ̄ ̄\ | | | | `ー‐し'ゝL \ |_______________|(--‐‐'´} ;/////-- \ `ヾ:::-‐'ーr‐'" \ \ \ | ____ | | /⌒ ⌒\ | | /( ●) (●)\ はい! | | /::::::⌒(__人__)⌒::::: \ 誠意! | | | |r┬-| | | | \ `ー'ォ / | | / \______________/ /
質問者が「どう直せばよいですか?」と聞いてきてるから、ただ
plus()
とだけ書いて終わりでも良いところなのに、
考えられるよう工夫した
>>690 の親心が届いていない様子が笑えた
長い目で見たら初心者にはその場しのぎを教えるんじゃなくて 上達して帰ってもらうのが一番いいのは間違いないが、、、
どうでもいいだろ。 やりたいようにやれ。
しかしここで教えた奴らが作ったサイトを利用することになるかも知れないぞ
それで?
だからちゃんと教えていこうね
container ={ x:0 } function plus(c){ c.x=c.x+5; alert(c.x); } <h1 onClick="plus(container)" >たす</h1> 引数を関数内で操作したいならこうじゃね
<ol contenteditable> <li>hoge</li> <li>fuga</li> </ol> のようなHTMLで、編集中のアクティブなli要素を取得する方法はないでしょうか。 event.targetやdocument.activeElementにはol要素が入っちゃいますし cssのli:focusなんかも反応しません。 liの方にcontenteditable付ける以外の方法ありましたら教えて下さい(←だとliをまたいだ複数行選択できない)
予約語をメソッド名に使ってはいけないのでしょうか?
だから、あなたがたまたま使っている処理系で問題が無かったとしても、将来出てくる 処理系で、または他人が使っている処理系で動かない場合に、処理系が悪いのではなく 標準を無視した作者が悪いということになるわけで。それでよければ別にいいんじゃないの。
使わないに越したことはないですね ありがとうございました
もし自分で言語を作ることがあったら 謎の予約後をひとつは入れておきたい
703ですが window.getSelection().getRangeAt(0).commonAncestorContainer.parentNode でアクセスできたので取り下げます
>>706 ,707
ES5から仕様で使ってもいいことになった
どんどん使って問題ない
>>709 Google様ありがとうございます!!
これで来年には表面上だけでもスッキリ縁が切れそうだ。
次期ES、と思ったらES5ですか じゃあJSformatは一種のバグかな
いつの間にかtype="text/javascript"を書かなくてもよくなってたのか・・・
何を今更w
廃止されたtext/javascriptが初期値なのは納得いかない
廃止なんてされてないけど
オブジェクトのキーに漢字やキリル文字を使うのは、よろしくないですか?
廃止は language="JavaScript"だな 今思うとこっちの方がいいんじゃないのかと思う
>>720 ソースを見る人によっては文字化けするということを除けば問題ない
あと文字コードに注意
>>724 javascript (obsolete) と登録されてる
リンク先のRFC4329で定義されている通り、初めから廃止されたMIMEタイプとして追加されたんだけどね
statementとdecrationとexpressionの違いは何ですか
statement 「文」:命令の最小単位 expression 「式」:評価され値を返す 「値」だけなのも「式」 「式」だけなのも「文」 つまり「値」⊂「式」⊂「文」
なるほどー esprimaのようなパーサでsyntax treeを作った時 programより下の一番粒度の高いオブジェクトはstatementということですね
text/javascriptは最初から標準じゃないだけで廃止されたんじゃないよ
firefox23でJavaScriptの有効/無効の切り替えってどうやってる? QuickJava というアドオンが便利そうだけど、他にいい方法あるかな
無効にする必要なんてないだろ
unobtrusive javascriptの確認で必要なんです QuickJavaで簡単に切り替え出来たんで、これで十分みたい
prefbarおぬぬめ と書こうと思ったら解決してた
>>734 そんなのもあるんだ、ありがとう
PrefBarのほうが拡張機能の種類が多いですね
QuickJavaはもっと簡単な機能をアドオンバーに表示されたボタンでサクッと切り替える感じ
催促するようで申し訳ないのですが、
>>93 の件で
>>120 以降回答をいただけていないのですが、
見てもらえますでしょうか。
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");
ん?
var f = function(msg) { alert(msg) }; f("hellow world"); javscriptだとこう?
740 :
Name_Not_Found :2013/09/17(火) 23:38:27.10 ID:+lVR0Gr5
xという同じ文字使うからx=5がまた代入されるという理由ですよね
742 :
Name_Not_Found :2013/09/18(水) 00:08:39.82 ID:phEPVapY
最初はグローバル変数だったやつが関数内も同じ文字を使ったゆえにローカル変数になり、値が引き継がれなくなったということですか?
>>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です。
744 :
Name_Not_Found :2013/09/18(水) 01:28:15.73 ID:phEPVapY
誤解しておりました。深夜まで丁寧な説明をしてくださりありがとうございました。
>>739 超ありがちな例だとこんな
var f = (function(){
var a = 0;
return function(){ alert(++a); };
})();
f(); // 0
f(); // 1
f(); // 2
こういうのは
var f = function(msg){ alert(msg) };
単に変数に関数オブジェクトを放り込んでるだけで
本質的にはクロージャとは関係もない
ちょ
本来関数fからは外のスコープが見えるはずだけど 最近のエンジンは必要な変数しかコンテキストに付加しないから 実際は見えないから真にクロージャじゃない それがどうしたと思うかも知れないが デバッグでステップ実行とかすると困る事がよくある
「真のクロージャ」とか自分で勝手に定義してるだけでは? JSにおけるクロージャはそういうものだろう
>>784 ぜんぜん違う
JSとか関係なくこれは実行系次第
「真のクロージャ」のソースは?
その真のクロージャとか言ってる実装は、GCの関係で使い物にならんだろうな
>>747 >最近のエンジンは必要な変数しかコンテキストに付加しない
へーへー
var a = b = 0;
function f(){ alert(a); }
こうした時、f では b は使われない、みたいな感じでしょうか
使わない変数を渡さないことでどんな不便があり得るの?
ないんじゃね?
じゃあ真のクロージャの意味ねーじゃん
クロージャにすれば100%静的スコープになるわけだが クロージャにしなくても100%見えてるわけじゃない みたいなことが言いたいのでは?
クロージャと動的スコープ変数は共存できるぞ
>>745 f(); // 1
f(); // 2
f(); // 3
だろ
あああお察しください
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++;"));
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
ネストしている連想配列の指定キーの参照を得るにはどうしたらいいですか?
eval is evil
eはグローバルだしevalにcallしても意味ないしあれだったな
えばる?いーばる?
どうもサンプル数が少ない時の偏りだったようです
しかし宣言と代入を分けた方が遅くなりそうなものですが、そうはならないのは何故ですか?
JITで最適化されるからでしょ
>>755 インライン関数がエラーで止まった時に上位スコープの変数確認できないから困る、
例えばこういうケースだとデバッガから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
ちなみにこれだとこうなる 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 () {
いやおまえそれGoogle Chromeの開発ツールの機能だろw Firebugとかじゃそもそもconsole.dir(f)からClosureとか辿れないし、 aとbの中身も見たいならconsole.log(a,b)しとけよw
表示されるか否かでデバッグのしやすさが段違いなんだが デバッグしたこと無いのか?
デバッグ便利ですとか言われても余分な参照をクロージャにずっと引きずられたら困る GCとか意識したコード書いたことないの?
>>777 分かってもらえなかったか……
console.dirはデバッガ使ったことない人でも表示がわかりやすいように入れただけで、
あってもなくてもどうでもいい部分なんだよ…
エラーで止まる設定にしたるとき
いざエラーが起きても最適化のせいで満足に状況を調べられないから困るってこと
あとChromeのデバッガはただV8のAPI叩いてるだけだからね
このことはV8コミュに何度もissueが挙がってる有名な問題なんだよ
でも根本的な仕組みの問題だから修正するのは難しい
まあ踏み込んだ話もどうでもよくて
言いたかったことはこれね
>>747
本末転倒だな
最適化の問題じゃないよ? 参照が切れた変数をデバッグのためにずっと維持しておけってこと?
別にこれが良いとか悪いとか言いたいんじゃなくて 流れに沿った豆知識を書きたかっただけだからもう気にしないで
真のクロージャとか妙なこと言い出すからだろ
別にそこ突っ込むとこじゃないでしょ 対比のための強調語として「真の〜」って書きたくなるものでしょ そのくらい気持ちを組んでよ
対比のための強調語に「真の〜」なんて使うやつは真の馬鹿だよ
真の〜なんていう言葉は、真にそれ以外が偽者な場合か、 そうではないけどあえて突っ込んでもらうために使うかどっちかにしとけよ。 紛らわしい使い方すんな。
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個以上を想定してください これを修正してください
>786-787 アスペ乙
>>788 var idname = "v6";
var elm = document.getElementById(idname);
for (var i = 0, ivid = []; i < 4; ++i) {
ivid[i] = setInterval(function () { elm.click(); }, 1000);
}
複数のintervalとか言ってるんだから、intervalのリストが必要になるんじゃないか?
エスパーだが1秒ごとにクリックさせたいんだろう
同じくエスパーだが たぶん一定間隔じゃなくある程度ランダムな間隔でクリックしたいのだろう
こうじゃないのか for (var i = 0; i < 4; ++i) setTimeout(function () { elm.click(); }, 1000*i);
後で止める仕組みが必要なのかどうかも問題だ
元ソースから察するに要らないだろ ・i1、i2、i3、......単ローカル変数が何個あるか分からない こんなもの使えない、意味もなくつけてるだけ ・精々数秒間程度、そもそもキャンセルがいることは稀
エスパーだが何らかのゲームの自動操作を行いたいんだろう
1つのintervalで1秒1クリックさせたいんですよ そこでマルチスレッドぽく n数の分だけintervalを生成してそれぞれでクリックさせたいんですよ さっきのコードの場合だとマルチスレッドで1秒間に4回くりっくすることになります
>>799 残念ながらJavaScriptでは、タイマーで呼び出される処理も含めて全部一つのスレッド上で実行される
複数の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);
ネストしたオブジェクト構造から、任意のオブジェクトを引数に、親オブジェクトを得るための ライブラリ的な何かありませんか?
そんなもん自分でコード書け
は?お前が書けや
どう書けばいいんですか?
とにかくFireBug?とかそういうのから変数を変更できなくする方法を教えてください
せめて具体例書いて回答者の負担減らしてくれないかな?
>>807 とにかく変数に入ってる値を書き換えられないようにできればいいんです
そんな方法あるわけないだろw
例えばなんですが、phpで外部スクリプトファイルを動的に生成して読み込んで、 読み込んで実行し終わったら外部スクリプトファイルの内容を空にしちゃえばいくらアクセスしても空の内容しかみえなくなります
ブラウザに読み込まれてコードが残ってるんだからそんなことしても意味ない
コードは無くなっても変数は残るぞ
このキチガイは長文野郎の自演
統合失調症乙
こいつプログラム板にいたやつだよな 手口がそのまんまだよ
病院行けよ
ECMAScriptスレにここへのリンクが貼られてから異常に加速してるからなw
病人もそこから来たのか
ラストコール前だからはしゃいでるんだろう
type="text/javascript"を書かなかったら JavaScript あつかいになるって ご完成保ててないよ。 type="text/javascript" を省略したら、 その前で使っていた言語とみなすブラウザが有る。 つまりだな。IE6では"text/vbscript”を最初に使っていると 次に省略したものが出てきたらvbscriptとして扱うんだよ。 明らかに互換性保ててないじゃないか!
HTML5は後方互換性を保ってるわけじゃないから、別に問題ない。 そもそもIE6なんて化石みたいなブラウザに対してHTML5で書く必要性がないのだから、 もしIE6もサポート対象に入れなければならないなら普通にHTML4.1で書けばいい。
それでどういうケースで問題が起こるの?
text/vbscriptなんて使うやつおらんやろ
varを関数先頭にまとめるbeautifierが欲しいです esprimaでソースを分解し、escodegenでソースを再生成すればいいと分かりました シンタックスツリーからすべてのdeclarationsを収集する処理も書きました しかしdeclarationsが所属する関数を調べる方法が分かりません どうしたらいいですか
>どうしたらいいですか あきらめてください
誰か作ってくれませんか? みんな欲しいでしょそういうの もう変数を書く度に関数の最初に移動して追加するのは嫌だ (>_<)
クロックフォードスタイルに意味があることは以前結論に至りましたよ
意味が無いのだからやらなくて良い。
absoluteなdivをtransitionで移動するようにしてみたのですが スムーズに移動する時もあれば微妙にカクつく時もあり、 動きにバラつきを感じます transitionではなくタイマーイベントでやった方がいいのでしょうか?
いいや、前者でいい
>>833 transition はサポートされていなくてもページは機能するから
実行の優先度が低くされる傾向はあるかもしれない
んなことはない
Object.keysで得られる配列は、対象が同じ場合、常に同一順序ですか?
もちろん
でも順序が同一だと前提してはいけませんよね?
sortかければいいだけじゃん 何のために配列で帰ってきてるのよ
ありがとうございました
>>802 この件ですが、ネストされたオブジェクトを、キーを接続したパスで管理するクラスを書くことで
目的は実現できました
ありがとうございました
ありがとう言うんならちゃんと質問しろ
Objectにオブジェクトをマージするメソッドがない理由は何ですか
ES6 Object.mixin(target, source) //string keys Object.assign(target, source) //unique keys
よく調べもしないですぐないない言う人って……
ES6にはあるんですね〜 早く広まってほしいものです ありがとうございました
大抵のライブラリにはあるし自分でちょちょっと書いちゃえばいいじゃん どうせ内部的にもObject.getOwnPropertyNamesとか使って内部JSで実装されるんだろうし
自分で書けるほど簡単ではない jqueryのは糞長いし
シャローなマージなら簡単
これじゃあかんのか?? 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 } })
jqeuryの文法はjavascriptと違うようですが、どうやって文法拡張してるんですか? それとも、うまいことメソッドを使って別の文法みたいに見せてるんですか
>>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
});
後者で合ってる
文法が違うと言われるとなんか違和感
<div id="top"> <div>a<div> <div>a<div> <div>a<div> <div>a<div> <div>a<div> </div> こういうhtmlがあります div#topの子要素をクリックしたときにインデックスが知りたいんですが これはどうやって調べればいいのでしょうか?
これで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; } });
858 :
852 :2013/09/19(木) 21:18:07.21 ID:???
>>854-855 最近javascript始めたので、まだ文法うろ覚えなんです
C++みたいな黒魔術使えるのかなーって思っただけです
あざーす
jqueryは最初、$がただの関数名だと気づけなかった
>>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が番数--
//以降処理
writable:trueとconfigurable:trueは要らんの?
>>862 まだプレフィックス要るよということをwebkitに代表させただけ
他がどの程度対応してるかは知らん
>>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;
}
せやな
SIerが作ってる業務APPは、画面枚にjavascriptを別ファイルに外出しするのが普通なんですか?
SIerってなに?
本当にその画面にだけ必要な機能だけ分けてあとは共通ファイルにしたら 関数数個のファイルだらけにならないか?
継承のためのメソッドを実装した継承可能クラスがあれば 継承を書くの簡単じゃね?と思ったのですが そういうのありますか?
継承なんてこれでいいじゃん obj.__proto__ = ClassX.prototype
コンストラクタから親クラスのコンストラクタを呼び出したり メソッドをmixinしたりの処理がありますが・・
javascriptでデストラクタのやり方をおしえてください
ない
>>872 言葉はいいからコードでどうしたいのか例示して
876 :
760 :2013/09/19(木) 23:28:35.92 ID:???
どうかくのが良いのでしょうか これのサンプルおねがいします
>>876 一般的な話過ぎて特定のサンプルコードにするのは難しいな
ExtendableClass.inherit(Hoge,hogesMethods); Hoge.inherit(Moge,mogesMethods); var moge = new Moge(); こんなイメージです
一般的な話なのにコードにかけないのはよく理解してないからじゃないのか?
>>873 1回だけ参照が切れてるか調べる方法ならある
>>878 Hoge.__proto__ = ExtendableClass.prototype
Hoge.prototype = hogesMethods
Moge.__proto__ = Hoge.prototype
Moge.prototype = mogesMethods
883 :
760 :2013/09/20(金) 00:06:37.91 ID:???
そうですか・・・ あごっちに直接聞けばいいんですけど・・・
>>879 ある程度まとまった量のコードを書かないと
>>760 に沿うようなサンプルの形にならんから
手間的にちょっと厳しいって感じだ
超簡単な話こういうこと //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) }
まちった //OK function Human(name, age) { this.wareki = getWareki(age) }
//NG function Human(name, age) { var year = (new Date).getFullYear this.wareki = (year - age < 1988) ? 'showa' : 'heisei' }
Classが静的な言語なら幾ら分離してもIDEで追えるからいいけど JavaScriptでは必ずしもそうでじゃないよ
>>885-887 が
>Class(Object)の構築を初期化内でやるのはやめましょう。
これに対するサンプルコードだとは思えんな
ロジックの分離ということだろう そしてこのケースだと単純すぎてそぐわないが obj.init() とか obj.set〜 みたいなスタイルが一番推奨ということだろう
>>890 >どうしてもさけられない場合でもせめてロジックと分離しましょう
この部分です
大きな構造になってくると
>>891 みたいな事だと思います
クラスつまりコンストラクターとプロトタイプの定義と、
それをインスタンス化して利用するコードをわけろっていうことなんじゃないの?
>>886-887 はクラスをどう定義するかって話になるんでちょっとズレてるような
ちゃんとクラスを作れという話だよ 動的にメソッドを追加するなってこと
直前のツイート読む限りそういうことだな
どんどんJavaScriptじゃなくなっていく気がするね もう別の言語でいいじゃんってならないの
普通にJavaScriptのプロトタイプベースのオブジェクト指向の話だよ
JavaScriptの最大の利点はブラウザでそのまま動くことなんですから
各自が用途に適した作法で書けばいいでしょう
ある程度規模の大きいプログラムの場合は
>>893-894 みたいな作法が好ましいってだけですね
そんなことJSに限らず当たり前だろ
クラス継承って、結局こんな関数書いてやるのが一番簡単ですよね? 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; }
IE8以下を切るならES5使ってもOKですか?
JSもLiving Standerdだからバージョンは気にせず目的の対象で動く機能を最大限使っていけばいい Firefoxは既にES6の半分くらいに対応してるしね ただし将来使えなくなりそうなものや独自拡張はオススメしない
>>900 自分の使う範囲で問題無いならそれでいいんじゃないの?
prototype.constructorを設定しない時に出る不具合ってありますか?
なんであごっちって呼ばれてるの?
>>904 prototype.constructorを使っていなければ無い
prototype.constructorを使う人なんているの?
コンストラクターとprototypeをまとめて書けるような機能も次期ESには載せて欲しい 分けて書くの気持ち悪い
は?何いってんの class構文がまさにそれだろ
え?そんなのあんの?聞いてねーし
たしかだいたいこういう糖衣構文だっけ 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' } }
classは継承辺りまでは本当に様々な問題が全て解決してる あとはprivateやstatic修飾子がこれでいいかなーって段階
ES6じゃないとArrayとかDateとかちゃんと継承できないもんね
class構文はES6の最も代表的存在なのに知らない人もいるのな……
>>911 これってもうプロトタイプベースとは呼べないね
プロトタイプベースでありクラスベースってこと?
本質的には何も変わってないからプロトタイプベースだよ
基本的には「プロトタイプベース」の方がより柔軟で制約がなくて「上位」 今までも”Class”をエミュレートできてたわけなんだから 糖衣構文が入ったくらいで「クラスベース」とは呼ばれない 但しそういう視点で見ると「クラス」はあるとは言ってもいいと思う ※JAVAの人に対しては除く※
他の動的言語のクラスもJAVA的クラスじゃないっていうか、そもそもそれは合わないからね。 あとクラスというかは文化の問題。 まあ初心者にclass構文だけどクラスじゃないのよとは流石に教えられないだろ…… これで厄介なクラスもどき問題に蹴りが付くといいな。
JavaScriptにはクラスがない厨を黙らせられるようになったから良かった
もしかするとJavaScriptにJavaという文字が入ってなかったらだいぶ違ってたかも Javaみたいな典型的なお固い言語と比較されるLLなんて他に無いよ
いまだに継承を必要とするプログラムを書いたことがない
どういうことですか?
リダイレクトとかURLを弄る操作は特に「javascript:」に注意ってことだな
>>922 きぬがわまさと君、自演で宣伝ごくろうさまです
chromeでチェックしてみたけど再現しなかったです
再現します 節穴乙
そもそもの仕様がおかしくないか なんでそんな変な仕様なんだよ ECMAはアホなのか?
ESだけの問題じゃない いろいろ不運が重なってのこと
>>867 業務アプリケーションを作る会社 or 業務アプリケーションを作っている人の事をSIerという
メソッドチェーンの末尾で、それを引数に関数を呼ぶことは出来ますか? console.log(hoge.moge().poge()); これを hoge.moge().poge().call(console.log); みたいな感じです
いや・・試したほうが早い事を何で聞くの?
やり方が分からないのにどうやって試すんですか?
普通のメソッドチェーン自体のやり方は理解してる?
自分が何を質問してるかも分からないのか?
質問の意味分かりませんか?
メソッドチェーンの意味が分かっていないのでは? それとcall, applyあたりについて調べたほうがいいね
分かっていなければこんな質問をするわけがないことも分からないのですか??
出来るのなら方法を、 出来ないのなら出来るようにする方法を書いて下さい 頓珍漢な推測は無用です
console.logは関数オブジェクトだけ受け取っても実行できんから、 hoge.moge().poge().call(console.log); は無理かも?
頭が高い
>>930 poge()の戻り値の仕様がわからないとなんとも言えない
console.log(hoge.moge().poge()); を実行した場合にconsole.log()に出力するのは何?
poge()はメソッドチェーンを終了して何か値を返すということかな?
logなので、この場合は文字列でしょう
console.logはオブジェクトを渡して出力することもできるんだよ
メソッドチェーンで産出した結果を他の関数に渡したくなった時、 全体を関数の引数にしたり、変数に代入してから関数に渡したりするのが面倒なので 産出結果自身が、自分を他の関数に渡せればいいのでは? というのがもともとの発想です
>>944 無理
jQueryみたいに全ての関数が常にjQueryオブジェクトを返すとかすれば別だけど。
>>944 自分でメソッドチェーンするオブジェクトを書いてみれば、
無茶苦茶なことを言ってるということがわかる
>>945 ありがとうございました
>>956 もしかしてメソッドチェーン=同一オブジェクトが渡っていくことと思ってますか?
単純にメソッドが次々に繋がっていけばメソッドチェーンだと思います
>>947 そんなこと思ってないよ
自分が無茶苦茶なこと言ってないと思っているなら
>>941 に応えてくれよ
jQueryとかでメソッドチェーンのやり方だけ覚えた奴が、 原理も知らないのにむちゃくちゃなことをやろうとしてるようにしか見えない ちゃんとメソッドチェーンの仕組みを勉強したほうが今後のためだぞ
>>947 少なくともpoge()メソッドがthisかもしくは別のオブジェクトをreturnしないと
poge().call()という呼び出しはできないんだよ
それをお前は理解してるか?
まあ、メソッドチェーンを特殊なシンタックスと勘違いしちゃってる素人はよくいる
>>930 この件ですが、とても恥ずかしい勘違いをしていることに気がつきました
半年ROMることにします
君はコスモを感じたか
Proxyを使えば全ての関数がメソッドチェーン意識した設計でなくても大丈夫よ もしくは new MethodChain(APIs) みたいにする方法でもいくらかいける
文字列の末尾が/だったらそれを削除する時 s = s.replace(/\/$/,''); より簡潔あるいは速い書き方ありますか?
もうあきた
>>1 も読まずに質問者としての最低限のルールも守らずID晒さなかった時点で偽物も本物も無えよ
どっちにしろクズ
>>955 if ('/' === s.charAt(s.length - 1))
s = s.slice(0, -1)
簡潔ではないがこっちの方が早いと思う
じゃあ、回答者のリテラシーを信用しますね
>>959 それなら
if(s.endsWith('/'))
の方が簡単だし良くない?
endsWidthとかstartWithなんてあったんですね よくあるケースなのでうれしい機能です でもchromeでは動かないようです MDNを見ても記事がなんか古いような 便利なメソッドなのに、歴史の彼方に消え去ってしまった・・?
ES6で実装されるのかぁ はよこいES6
ChromeやNodeでも使えるよ
すまないが次スレは俺に立てさせてくれ
昔のテキストで node.jsのサンプルに require.paths.push(__dirname)で設定するところがあるんだけど、 require.pathsが廃止になっていて動かなくなってる。 代わりにmodule.paths.pushが使えると書いてあったので試したところ、別のファイルでrequireするところで失敗。 module.pathsの設定は引き継がれないみたい。 なので、windowsの場合、環境変数NODE_PATHで設定すればなんとか動いたけど、なんかもっとスマートな方法ないのかな?
module.paths.push(process.env.HOMEPATH+'/node_modules');
node.jsはスレ違いだろ・・
JSは基礎仕様とホストAPIとエンジンが政教分離してるから強い
プログラム板にもスレあったよ
ちゃんと毎日チェックしてるぞ
それはファイルの配置方法がおかしいだけだな
ちゃんとindex.js書いてそこで読み込んでるか?
メソッドチェーンの話
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');
子から親の参照を得られるオブジェクトモデルないですか? キーの連続をパス化したものをインデックスにするモデルにしているのですが、 特定オブジェクトを検索してパスの集合を得る →オブジェクトツリーに挿入などの操作を加える →パス情報が更新される →先に検索しておいたパス情報が不正確になる という問題があります オブジェクトツリーを更新しても検索結果が簡単には古くならない そんなモデルはないものでしょうか
>>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');
すべての値がgetParentメソッドを持っている そんなオブジェクトモデルは可能なのでしょうか
不可能です
全てはオブジェクトなので上書きできるそうですが alert()でアラートを出さないでconsole.logを出すように拡張したいんですが window.alert = function(n){console.log(n);} ってやりました。 そこで、やっぱり元のアラートを出す動作に戻したいのですが、 どうやってもどすのでしょうか? 仕様として元に戻せますかね? ブラウザのリロードすればいいというのはなしです
変数にコピーして取っておけば?
規格は見てないけどconsole.logのlogはstaticじゃなくて プロトタイプ経由のメソッドであるべきなんじゃないかな? ならthisが重要だからChromeの挙動で合ってるような気がする
>>986 現実:
キャッシュするか、iframeのコンテキストを利用
ES6希望:
import alert from "@bom";
or
{alert} = System.get("@bom")
いやいや。 delete window.alert; これだけで元の alert が復活する。
そのテクニックは仕様外だから実際は使えんな。 たしかモバイル機器によく入ってたNetFrontか何かで動かなくて詰まった記憶が。
1000
>>982 この件についてですが、valueとparentを持ちネスト可能なシンプルなオブジェクトを書いてみたら
インデックス方式よりずっとシンプルに出来そうです
やはり美しくないときは何か間違っているのですね
ありがとうございました
>>991 そもそも alert が標準にないのに、仕様外も何もない。
>>986 現状は大抵、Window.prototype の Own プロパティとして
alert が実装されてるから、Window.prototype.alert が
あればそれを使えばいい。
delete window.alert;
で元の alert が使える様になるのも同じ理由。
>そもそも alert が標準にないのに、仕様外も何もない。 開き直りっすか
は?
1000
さ?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。