+ JavaScript の質問用スレッド vol.111 +
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 中でやるとか
乙
前スレの最後の方の質問者はただの荒らしだろ スレを無駄に消費せず荒らしを見分けろ
一回目のクリックイベント と 二回目のクリックイベント を 判定するには クリックイベントのあと に 一回目か二回目のクリックイベントかを判定する関数をよんで そのあと一回目と二回目の処理に分けたいんだけど (その後はループで一回目と二回目がいれかわってほしい) その処理の最後にflagというグローバル変数を1ずつ足して if(数%2==0){二回目の時の処理}else{一回目の時の処理} という感じで処理を別々に分けたのですが しっくりきません グローバル変数を使わずにしたいのですがどう考えれば良いでしょうか?
textフォームに対して、enterキーが押されたのと同じイベントを起こさせるにはどうしたらいいですか?
>>6 jQueryにはまさにそういうことをする
関数があったんだけど、削除されちゃったね。
http://api.jquery.com/toggle-event/ 面倒なんでjQuery使って書くけどこんな感じでどう?
$(・・・).on('click', (function() {
function odd() {
・・・
}
function even() {
・・・
}
var flag = 1;
return function () {
flag % 2 ? odd() : even();
};
})());
ああ、flagを更新する処理を入れ忘れたw まあ、動かしてないから他にもミスあるだろうけ あとは頑張ってw
イベントハンドラの中からtriggerしても問題ないですか? 何となく気持ち悪かったので、setTimeoutすることにしましたが
循環参照を持つオブジェクトを文字列化&パースする方法はありませんでしょうか?
前スレで気になってたんですけど 結局 Object.prototype.toString.call(obj) == "[object Array]" じゃダメな理由ってなんですか?
美しくない
むしろどうしてそれで絶対安心と思えるのか 配列がすり抜ける可能性があるだろ
let ってtscript ype=で1.7以降を指定しないと動かないんだな 小一時間悩んだ
全角スペースって日本以外でも同じ文字コードなんですか?
それってfirefox限定の話じゃないの?
18 :
17 :2013/10/14(月) 07:24:58.22 ID:???
>>16 アスキーコードには全角スペースなんて無いよ
全角なんて考え方が無い文字が多い
質問者のID出しは強制にしないか? じゃないとまた荒されて無駄に消費してしまう。 ID出してない質問は無視する方向で。
>>21 そういう提案するのにもID出してもらえれば多少説得力がある
23 :
21 :2013/10/14(月) 08:28:56.06 ID:9VCWPPzH
これでいいか?
25 :
21 :2013/10/14(月) 08:33:48.22 ID:9VCWPPzH
では、質問者のID出し強制という事で。
JavaScriptの下らねぇ質問はID出して書き込みやがれ vol.112
27 :
>>1 :2013/10/14(月) 09:37:54.40 ID:A5mYqsEP
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/
28 :
>>2 :2013/10/14(月) 09:38:29.73 ID:A5mYqsEP
29 :
>>3 :2013/10/14(月) 09:39:02.26 ID:A5mYqsEP
■主要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 中でやるとか。
30 :
>>4 :2013/10/14(月) 09:39:34.51 ID:A5mYqsEP
クソスレ化オメデトウ 民度が低くなった証拠だな
あらしは回答も自演するからねえ CSS質問スレがあらしに潰されたときの流れとかぶる
このスレはROMってるだけでも勉強になるから潰したくない 最新の仕様情報やトリビア的な知識、果てはトリッキーなコードなどとと、意外と為になるから勿体無い
トリッキーなコードはいらんだろw
いやいや、割と参考になるってw 今までにもへ〜こういうやり方もあるのかって思った事が何度かあったぜw
露骨な荒らし以外にもしょうもない言い争いでスレ浪費したりするし 質問スレを肴に雑談するスレとかあってもいいんでね
荒れるうちが華っていう見方もあるぞ 枯れた技術のスレほど寂しいもんはない
URLのトップレベルドメインを取り出し、Whoisデータベースなどで情報を取得することは可能ですか? jpなら日本というようにです
ブラウザのJSだけでは無理ですね
荒らしとIDは何の関係もないだろw 前スレの最後の方の質問者はあきらかに同一人物だったんだから 基本的に全く同じことを何回も言うやつは荒らしと心得よ
jasmine使ってテストが書かれていてgithubに公開しているのオープンソースを何でもいいので教えてください
で、
>>12 がいけない場合を具体的に教えてくれる奴はおらんのか
lodashに「これ何に使うんだ?」っていうような関数が結構ありますが それを説明してるサイトとかないですか?
ライブラリの質問はライブラリスレで
JavaScriptスレはJavaScriptのライブラリの話題を包含しているので問題はありませんよ JavaScriptライブラリスレでライブラリ以外の話をするのはスレ違いですが
存在意義がなくなるので素直に移っていただけませんか?
クズが駐在してるから本当に答えて欲しい人はID出してね
ID出してない質問とそれに対する解答は自作自演だと思え
存在意義がないなら落ちればいいだけでしょう スレを分けている合理的なありません むしろ一括して話した方が有益だと思いますよ
別に自作自演だろうが何だろうが関係ない 解答者同士が議論するようなことにならなければいいだけ
IDを出したい人はIDを出して質問するスレを作ってそこに常駐すればいいんです そいういう自由をあなたは有していますよ
質問者がきちんと意図を伝えられるのならスレを分ける必要なんて無いんだよ 今はそういう合理的な理由でスレが分かれてるんだから秩序を乱すな
56 :
42 :2013/10/14(月) 17:11:01.14 ID:???
急いでるからはやく!
>>55 意味が分かりません
あなたの発言は合理的ではありません
58 :
42 :2013/10/14(月) 17:11:45.15 ID:???
自己解決しました。 もう答えなくて結構です。
ライブラリスレは半分隔離スレみたいなもの あとは分かるな?
60 :
44 :2013/10/14(月) 17:15:14.28 ID:???
自己解決しました。 もう答えなくて結構です。
>>58 >>60 これ系の書き込みが荒らしです
あとは言わなくても分かりますよね
そう、無視すべきです
プログラム板のGitスレ荒らしてるのもこの屑だったのか・・・
63 :
44 :2013/10/14(月) 17:19:37.02 ID:???
>>62 見に行ったらガチだった
これは2ch運営に報告しておくわ
悪質な場合警告くるから覚悟しておけよ?
荒らしは基本的にあまり知的資質に恵まれていないので 手法はきわめて単調で、 それを見分けることは難しくはありません
せやなw 証拠もバラバラ落とすしww
自分語り乙
69 :
42 :2013/10/14(月) 18:34:21.62 ID:???
>>70 Chromeはchrome://flags/とかで設定代えないとダメなんじゃないか?
言語構造のforを書き換えることはできませんか? for = window.alert for(1)でアラートが表示するみたいな
>>71 strict mode
>>72 window.for = alert
window.for(1)
それは言語構造ではありません
いいえ言語構造です
言語構造ってphperが使う言葉ですね
>>73 strict mode だけじゃ let 使えんぞ
>>11 を作ってみたのですが、自分で用意したオブジェクトや
ネイティブオブジェクトの概ねではうまくいくのですが
肝心の目標のdocumentやwindowを、今回作ったもので循環参照のない形に変換して
JSON.stringifyに通すと循環参照エラーが出てしまいます
しかし、stringifyに通すオブジェクトに循環参照が無いことを確認するテストは通ります
少しソースを見てもらうことはできますか?
ライブラリのコントロールから外れたやり方でポップオーバーメニューを表示する場合 閉じるコントロールもやらないといけないですね クリックを検知して自分じゃなかったら閉じるみたいな そういうのを簡単にやるにはどうしたらいいですか?
クリックを検知して自分じゃなかったら閉じればいい
それが面倒くさいんですが
洒落たことはせずにHTML5要素とデフォルトコントロールで片付けろ
ジェイクエリーオブジェクトを引数にして呼び出したら 閉じる用のクリックハンドラをセットして勝手に後処理もしてくれるような そんな関数を作ったらいいのでしょうか
>>79 ぐぐっても出てこないのですが、ポップオーバーメニューとは何でしょう?
ポップダウンメニューでした
違った ドロップダウンメニューでした
>>78 を再度色んな環境で試してみたところ
Chrome以外(NodeやFirefox)のグローバルオブジェクトでは成功しましたが
Chromeではどうもうまく行きません
> (3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。(なりすまし及び煽り防止のため)
循環参照ではないはずなのに Converting circular structure to JSON エラーが出てしまいます
91 :
Name_Not_Found :2013/10/14(月) 21:10:10.29 ID:gEeDrXf6
> (6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。 > ※必ず「問題の事象が再現されること」を確認してください。 > 必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
93 :
Name_Not_Found :2013/10/14(月) 21:33:37.22 ID:gEeDrXf6
95 :
Name_Not_Found :2013/10/14(月) 21:56:24.40 ID:gEeDrXf6
>>94 test1、適当な循環参照を持つオブジェクト
test2、ネイティブMathオブジェクト
までは成功して、Chromeでは
test3、グローバルオブジェクト
でエラーになると思うのですがどうですか?
NodeやFirefoxではtest3も通過してくれるかと
>>93 'use strict' なのに eval() を使用している時点でおかしい気がする。
97 :
Name_Not_Found :2013/10/14(月) 22:14:50.78 ID:gEeDrXf6
>>96 use strict中でもevalは使うことができます
あとparserとreplacerの部分は関数をより良く処理するためのものですので
無視されたり取り除かれたりしてもて結構です
同様に配列の扱いなど、性能動作に中途半端な点があると思いますが
「循環参照」に絞ってご指摘いただけたらと思います
>>93 で言いますと
91行目で循環参照エラーが出てしまうということです
その前の85行目で一応そのチェックはしているつもりなのです
>>95 "SecurityError: Blocked a frame with origin"
セキュリティ的な理由で異なるドメインのframeは参照できません。
>>98 言うまでもなくそれはjsfiddleのスクリプトエラーであって
今回提示したものではないことはお分かりになると思います
100 :
99 :2013/10/14(月) 22:23:48.31 ID:gEeDrXf6
IDを出していませんでした
>>99 現象が再現できる形でコードを掲示してください。
ideoneは違う、jsfiddleは違う、あれもこれも違うでは現象を再現できません。
確かにグローバルオブジェクトを渡すのだから、グローバルオブジェクトが特定できる形にしないと意味がないな。 HTMLがない条件ではグローバルオブジェクトは如何様にも変化する。
>>99 > 言うまでもなくそれはjsfiddleのスクリプトエラーであって
あなたが掲示したコード上でエラーになっていますが、エラー箇所を読んでますか?
104 :
Name_Not_Found :2013/10/14(月) 22:44:34.52 ID:gEeDrXf6
>>103 なるほど
多分グローバルオブジェクトとフレームが繋がっていて
走査中に跨ごうとしてしまったんだと思います
ローカルの何もないHTML上で確認していたので気づきませんでした
ご指摘ありがとうございます
>>104 ざっとしか読んでませんが、気がついた点がいくつか。
・isObject でObject型を完全に判定できていません。typeof obj === 'hoge' や typeof obj === 'function' もObject型です。
・JSONは function を許容しませんので function だった場合に文字列化する処理が必要です。
・byXJSON(xjson, nativeFunc) の nativeFuncの処理がありません。そもそも、"netive code" なfunctionに限定する意味は何でしょう?
>>105 window にパスするように作るなら当然、frameも考慮する必要がありますが、そこは考慮しなくて良いのでしょうか。
そもそも、どこまで機能するものを求めているのか、要求仕様が見えてきません。
frameを考慮しなくて良いなら、window 以外の引数をサンプルにすべきだと思いますが。
109 :
Name_Not_Found :2013/10/14(月) 23:13:47.16 ID:gEeDrXf6
110 :
Name_Not_Found :2013/10/14(月) 23:20:01.51 ID:gEeDrXf6
>>108 実際にはwindowを文字列化する予定はありませんが、
それに近い巨大で複雑なものが対象になると思うので
気持ち悪い現象を潰したいなあと思いまして
循環参照チェックをしてるのにエラーが出るってことは
ひょっとして文字列化する数が多いか、何かのパターンだと
エラーが出るのかもしれないと思ってまして
そうであっても何であっても、エラーが出ないように修正したいので
まずなぜエラーが起きているのかを知りたいです
>>109 > その3問全て
>>93 を見て貰えればわかると思います
>>93 でも Object.isObject でObject型を判定できていないように読めます。
横着せずに自分の言葉で説明してください。
それからなぜ、
>>104 では
>>93 にあったコードが削られているのでしょう?
たぶん、これでいいだろうと適当にコードを書いて再現性テストを省略してませんか?
>>109 のコードがあなたの期待する結果になっているのかすら怪しく思えてきます。
> val.match(/^function [\s\S]+?}$/))
typeof演算子で判定する方がよっぽどスマートだと思います。
正直、後出し情報が多すぎて読む気が失せます。
あまりに長引くようなら適当なところで降りさせて頂きます。
JSON.stringifyがエラーになる条件を知りたいなら JSON.stringifyに渡してエラーになるオブジェクトを作るだけのコードを提示したらよいのでは?
>>111 横からだけど、
> それからなぜ、
>>104 では
>>93 にあったコードが削られているのでしょう?
> たぶん、これでいいだろうと適当にコードを書いて再現性テストを省略してませんか?
>
>>109 のコードがあなたの期待する結果になっているのかすら怪しく思えてきます。
原因は下記じゃない?
>
>>96 なんかの意見も出たので
> 惑わせないように本当に最低限のコードに絞りました
必要なコード(functionの判定)まで削っちゃってる時点で本末転倒な気はするけど。
というか、事情があってコードを削っているなら始めからそう書けばいいのに、何も書かずにやって後出しするから更に怒られるんだよな。
無断で独断専行する人とコミュニケーションをとる場合は、逐一こちらがリードしてやらないといけないから大変だよ。
空白文字で区切られた文字列を配列にしようと思います var s = "hoge moge koge"; var r = s.match(/([^\s]+)/g); console.dir(r); こうしたところ、\sに全角スペースもヒットしました 望ましい動作ですが、これはJavaScriptの仕様でしょうか?
116 :
Name_Not_Found :2013/10/15(火) 00:30:24.88 ID:LiehKfIj
>>111 >Object型を判定できていない
それは関数の場合でしょうか?
関数から伸びるメンバを追うとこのモデルでは根本的に破綻してしまうので
関数は他の値と同等なただの値として文字列化しています
このような慣用的なモデルでは関数から伸びるメンバが保有できなかったり
配列がオブジェクトに化けたりする問題を抱えますが、一先ずこう、まとめたところで、
関数をオブジェクトと見なしてないのは意図的なものです
本気でやるのなら、ディスクリプタベースのモデル+αにしないとはいけないと感じています
とりあえずこれは意図的なものです
>あなたの期待する結果
最終的にはNodeとChromeAppで互いのAPIを叩き会える機構を作ろうと思ってまして、
これはその計画の一部なので、どれも望んでいるものとは遠いとも言えますが、
限定的な機能は有していますし、何よりもローカルで試していただけると、
どれでもstringify問題が再現していただけると思います
そこは適当ではなくちゃんと確認してあげています
117 :
Name_Not_Found :2013/10/15(火) 00:31:12.62 ID:LiehKfIj
>>111 >typeof演算子
関数は文字列化して格納してありますので、
JSON.parseのparserでは文字列状の関数を判断する必要があり、typeofは使えません
>後出し情報が多すぎ
この1点だけお願いします
JSON.stringifyで循環参照を含んで文字列化出来ないエラーが
Chromeで確認した時におきるのはどうしてでしょうか
stringifyに渡すオブジェクトのチェック(chkCir)も置きましたが
それにも引っかからず謎です
118 :
Name_Not_Found :2013/10/15(火) 00:35:15.84 ID:LiehKfIj
>>111 ,113
isObjectという名前とその作り方には問題がありますね
すみません
>>112 検討します
>>114 functionを明示的に文字列化する機構を除いても
ネイティブJSON.stringifyの仕様で除外されるようになるだけなので
特に本質には関係ないと思い説明を省いてしまいました
申し訳ありません
>>119 空白文字に全角空白も加えました
ありがとうございました
122 :
Name_Not_Found :2013/10/15(火) 00:50:48.19 ID:LiehKfIj
原因がわかったかもしれません
123 :
Name_Not_Found :2013/10/15(火) 01:01:41.70 ID:LiehKfIj
わかりました 原因はHTMLAllCollectionでした こいつは特定の問題解決のために typeof document.all //"undefined" Object.keys(document.all) //["0", "1", "2", "3", "4", "5", "length"] みたいな特別な挙動をするのを失念しておりました Nodeで問題ないのは当たり前、Firefoxで問題ないのはこれが無いからでした どうもお騒がせしました
まあいいってことよ。 俺のアドバイスが役に立ったようだな。
ここまで全部自演
自演とジエンドって似てるよな。
129 :
Name_Not_Found :2013/10/15(火) 01:18:12.34 ID:tLPWT4cK
130 :
Name_Not_Found :2013/10/15(火) 01:28:46.85 ID:tLPWT4cK
皆さんのアドバイスのおかけで5倍くらい早く解決出来ました 本当にいろいろとどうもありがとうございました
結局いつものパターンかよ
ずっと俺のパターン
>>127 オブジェクトかどうかを確実に確認できる方法ってある?
随分必死だな
>>133 function isObject(x){
return ["undefined", "boolean", "number", "symbol", "string"].indexOf(typeof x) === -1 && x !== null
}
>>133 対象が「Undefined型」「Null型」「Boolean型」「Number型」「String型」「Symbol型」のいずれでもない場合に「Object型」となります。
泥臭いですが、現状ではこれしか思いつきません。
もっとスマートな方法が ECMAScript 6 で用意されていればいいんですが、どなたかご存知ですか。
こういうのはlodashのコードを見ればいいよ。
function isObject(value) {
// check if the value is the ECMAScript language type of Object
//
http://es5.github.io/#x8 // and avoid a V8 bug
//
http://code.google.com/p/v8/issues/detail?id=2291 return !!(value && objectTypes[typeof value]);
}
var objectTypes = {
'boolean': false,
'function': true,
'object': true,
'number': false,
'string': false,
'undefined': false
};
document.allを忘れてた function isObject(x){ return ["undefined", "boolean", "number", "symbol", "string"].indexOf(typeof x) === -1 && x !== null || x === document.all }
>>137 そうですか。残念です…。
>>138 "Implementation-defined" が考慮されてませんね。
typeof value === 'foo' だったり、typeof value === 'length' だった場合に期待通りの結果を返さないバグが存在します。
>>139 document.all は undefined を返す仕様だから
>>135 でいいような。
>>135 を使用してミスするならその人の実装が悪いと思う。
>>142 でもそれじゃ標準っぽくないよね
標準のArray.isArrayの完璧さと比べたら残念
>>139 やっぱりこれダメだわ
document.allがundefinedのケースを忘れてた
>>141 逆に"undefined"を返すオブジェクトだって現にあるわけだし……
>>144 「document.all は意図的に ECMAScript に違反している」と HTML 5 仕様にあるから、むしろ ECMAScript に違反する結果を返す実装が正しいと思う。
ECMAScript に違反する実装が標準化されてしまっているんだから。
まあ、二律違反だし、どちらが正しいとも言い切れないんだろうけどね。
Firefox の RegExp (今は直ってるんだっけ?)でも意図的に仕様違反している実装があったと思うけど、そこまで対応して要ったらキリがない気がする。
もっと短いの思いついた document.allはダメだけど function isObject(x){ return x === Object(x) }
>>146 document.all は意図的名違反なので、"Implementation-defined" とは別問題ではないかと。
"Implementation-defined" ははじめから決定されている仕様です。
typeof 演算子が規定にない文字列を返す時にも、対象を「Object型」と判定しなければなりません。
それは単なる拡張であってESには関係ないし 付き合いきれませんねえ それを考えるんなら将来のtypeof評価なんかの オーバーロードを考えたほうがまだ価値がある
151 :
149 :2013/10/15(火) 02:26:26.94 ID:9MJsyGKD
>>150 私の誤読なら申し訳ないのですが、ESはその拡張を許しているように読めました。
"Object (non-standard exotic and does not implement [[Call]])" を tyoeof 演算子で判定する場合、どのような文字列を返すとお考えでしょうか。
ESはあらゆる拡張を認めています 終わり
>>148 その意義があるかどうかは別として document.all を判定するなら Object.prototype.toString を使うとか
少なくともES6の間はそれが最善だろうね
いいえ、Object.prototype.toString神話が通用するのはES5の間だけです
ES6じゃなにか問題があんの?
ある
JavaScriptにsetter,getterは必要ですか?
はい
ありがとうございました
「数値もしくは数値を表わした文字列」を検出する関数はlodashにもないのでしょうか? isNumberでも駄目でした
function isNumberString(x){ return x == Number(x) }
ありがとうございます それだと console.log(isNumberString('')); これでもtrueになってしまいます
そのくらい自分で調整しろや
function isNumberString(x){ return x === String(Number(x)); } これでどうですか?
素直に型で場合分けすれば問題なし function isNumberString(x) { return [false,true,x === +x+''][1+['number','string'].indexOf(typeof x)] }
ありがとうございます こんな方法あるんですね +x+'' の最初の+にはどういう意味があるのでしょうか?
x = "123" -x //-123 +x //123
なるほど String(Number(x)) と同じ意味だったのですね ありがとうございました
172 :
Name_Not_Found :2013/10/15(火) 06:20:23.58 ID:kEe+JSOQ
Array.prototype[Symbol.toStringTag] = "Baka" Object.prototype.toString.call([]) //"[object Baka]"
条件文のかわりに配列と論理式を使うやり方はパフォーマンス的にはどうなのでしょうか? 配列をキャッシュしたら相当速くなりそうですが
昔? IE8でも条件分のほうがいいけど?
jsperfの結果を見ると大体firefoxの方がchromeより速いんだけど何で? V8ってもう時代おくれなの?
いつからchromeのほうが早いと思っていた
V8が速いからnode.jsが作られたんだろ? node.jsのエンジンを今のfirefoxのエンジンにしたら激速になるな
>>180 早いからだけではなくJS-C++バインディングが素晴らしかったから
>>181 それグラフが上の方が速いの?
それならsafariだけ飛び抜けて速くないか
どんどん下がってるんだから下の方が速いのか 分かりにくいグラフだな
(function(global){
(function(global){ })(window); これをjqueryで書く場合は動書くんですか?
var element = document.create element.setAttribute 〜 element.style 〜 みたいにずらずら書くものをもっと短くしたいと思い function newElement (tagname, attr, style) { var e = document.createElement(tagname); for (var i in attr) { e.setAttribute(i, attr[i]); } for (var i in style) { e.style[i] = style[i]; } return e; } var element = newElement('div', { id: "foo", "class": "bar" }, { top: "0px", left: "0px" }); みたいなことをしているのですが、こういう関数を使うのは普通でしょうか
(function(global,$){ })(window,jQuery);
>>188 一番に考えるのはそういう動的な大量の要素の追加をしなくて良くならないかというところだと思う
関数を作るのは第二策
その書き方ははじめてみました $とjQueryのはみかけたことはありましたが windowとjQueryは別物と考えるのでしょうか?
使いやすいか、どう使うかの問題
関数の外の変数のことを何と言いますか? グローバル変数は一番外側の変数ですが、そこまで外側ではない変数のことです
そのスコープのローカル変数
chromeのデバッガでは、closureという項目に分類されてますよね グローバル変数、ローカル変数から類推するとクロージャ変数でしょうか?
そんな呼び方はありません その関数からみるとたまたまクロージャに属する変数というだけで ただのローカル変数です
そう思うんなら好き勝手にオレオレ用語使えばいいじゃん 聞いた人は何だこいつって思うけどな 人の忠告は屁理屈こねずに素直に聞いたほうがいいぞ
単に事実を語っているだけですが?
アスペだったか…
意味不明の人格攻撃に逃げたということは 「根拠などあるはずもないが、おのれの幼児性故にそういうことにしておきたかった」 という認識でよろしいでしょうか?
Javscriptでtableのtdは除いたcolspanで出来た枠の部分を指定するのってどうやったらできるんでしょうか?
>>206 荒らしでないことは書き込みを見れば明らかですが?
荒らしかどうかを決めるのはお前でなくて周りのやつだ 俺は荒らしだと思うから去ってくれ ↓以下、弁解や汚い自演h要らないからそのまま去れな
>>203 別に人格批判はしてないよ
ただ普通とは違う人なら対応もかえないとね
事実を示しているのだから事実を示して下さいね あなたの主観の開陳が示しうるのはあなたの個人的な気持ちだけであって 外的な事実ではないのです
俺達はお前のオカンじゃないんだわww おんぶにだっこは簡便な
>>211 随分ととんちんかんな解釈ですね
あなた自身を他人に投影し
鏡に向かって批判しているようにしか見えませんよ
お前が質問してるんだろうが 頭大丈夫か?
> (1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
こいつってずっと前から居付いてるけど JavaScriptについて学びたいのか仕事で上手くいかなくてイライラしてるのか? 俺には理解できないんだが
きっと難しくて理解出来ないんだよ
マウスドラッグによる移動がchromeではキュンキュンなのですが、 firefoxではぎこちないです fpsがあからさまに低い感じです これはどうしようもないのでしょうか?
日本語でOK
fpsはframes per secondの略です オブジェクトを横に移動すると 上から下に描画していく様が確認できるほどガビガビ感あるんですが・・
当然AnimationFrameを使ってるんだよな?
普通にabsoluteなdivに マウス座標をオフセットを便宜加えた座標を書き込んでるだけです 初耳なので調べてみます ありがとうございました
304 Name_Not_Found[sage] 2013/08/06(火) 17:10:15.89 ID:??? 要素の削除ボタンをクリックすると、その要素が削除されます デスクトップ(body)をダブルクリックすると、要素が作成できます 削除ボタンで削除した直後にbodyをクリックすると、ダブルクリックになってしまいます クリックイベント内でpreventDefaultとstopPropagationはしていますが、 違った種類のイベントには効き目はないですよね 意図しないダブルクリックが発生しないようにするにはどうすればいいですか? という質問を以前にしたものですが、解決法を見つけました bodyでダブルクリックが発生する前にはbodyで二度シングルクリックが発生しているので、 最後二つのシングルクリックを調べることでbodyがダブルクリックされたかどうかが分かります 時間はかかりましたがこのスレのおかげで解決できました ありがとうございました
・
縦はokなんだよね うんうん body { height: 3000px; background-color: #aaf; }
>>223 あと、各要素の領域は Google Developer Tools や Firebug 等で確認できるので活用して下さい。
開発者ツールについてはテンプレに入れる案がありましたが、
まだ入ってないので。何か文章を考えたほうがいいかもしれませんね…。
>>198 stackoverflowに書かれている用語が正式な用語である保障はありません。
少なくとも、ECMAScript 5 には Closure Variable という用語はありません。
そもそも Closure という用語さえもありません。Closure は ECMAScript 5 において正式な用語ではありません。
正式な用語を知りたいなら仕様書を参照して下さい。
フォーラムに書かれている記述は全く当てになりませんし、そもそもあなたがここに書かれた情報を信用していないようです。
ご自身で解読されることをお勧めします。英語を読めないなら翻訳ツールを使えばいいでしょう。
http://es5.github.io/
ガキの喧嘩はスレの無駄づかいなのでやめて欲しい。 だいたい脳内オレオレ用語はテンプレでやめろと書いてあるんだから そう言えば済むでしょ。それで納得しない奴を説得とか普通無理だし。 そこでどつき合い始めたら自分もガキのレベルということになるだけ。
せやの
要素.click(); とすると要素のonclickイベントが動かないのですが イベントを発生させるにはdispatchEventを使うしかないのでしょうか
まともなモダンブラウザならどんな要素でも可能なはずです
235 :
233 :2013/10/16(水) 14:01:25.17 ID:???
>>234 レスありがとうございます
試しにonclickに登録した関数を簡素なものに変えたら動きました
実クリックでしか動かないのは登録した関数の方に問題があるようなので
そっちを見直してみることにします
>>226 よく分かりました
ありがとうございました
JavaScriptで二つの文字列のdiffを取る方法を教えてください
>>229 ESの仕様書の中にはないのですね
知りたいのは正式名称ではなく妥当な言葉です
なぜそれを知りたかったのかというと、呼ぶ言葉があった方が便利だからです
もしなければ作るべきだし、あるのなら使う方が公利にかなっていると思います
英語を母語とする一定数の技術者の間で実際に使われている言葉なので変ではないと個人的には思いますが
日本の技術者には通りのいい言葉ではないということは分かりました
ありがとうございました
>>237 俺も前に調べたけどdiffのアルゴリズムがそもそも簡単じゃないし色んな方法があるね
そういうライブラリ使うか自分で実装するかしかないと思う
>>237 「diffを取る」の定義をはっきりさせてみなよ。最低限で何箇所
挿入・削除・置換すればいいかを数えるのなら動的計画法で。
function dist(s1, s2) {
var a = new Array(s1.length+1), i, j;
for(i = 0; i <= s1.length; ++i) a[i] = new Array(s2.length+1);
for(i = 0; i <= s1.length; ++i) a[i][0] = i;
for(j = 0; j <= s2.length; ++j) a[0][j] = j;
for(i = 1; i <= s1.length; ++i)
for(j = 1; j <= s2.length; ++j) {
var x = a[i-1][j-1] + ((s1[i-1] == s2[j-1])?0:1);
var y = a[i][j-1] + ((s1[i] == s2[j-1])?0:1);
var z = a[i-1][j] + ((s1[i-1] == s2[j])?0:1);
a[i][j] = Math.min(x, Math.min(y, z));
}
return a[s1.length][s2.length];
}
>>238 別に用語は作らなくても「クロージャに捕獲されてる変数」でいいんでは。
>>241 よく使われる概念や事柄に名前を付けることにはほとんどメリットしかないと思いますが・・。
名称の選択には議論の余地があるかと思いますが
名前を付けるべきではないという意見は全く理解が出来ません
>>228 これはもともとこういうコードでした
jsbinはクッキーか何かで管理していて
他の人が変更すると自動的にリビジョンを作成するようになっているようです
document.bodyはbody要素以下を取得しますが html文書全体を取得する方法を教えてください
やりたいのはhtml文書全体を取得して、innerHTMLで1から書き換えたいんです
>>242 目的は人に正しく伝える事ですよね。
ならば、用語を作る事でその用語を知らない人に伝わらないリスクがあるのでは?
正式な用語は唯一の意味を持ちますが、独自の用語は読み手によって違った解釈をされる可能性があります。
あなたが用語を作り出してそれをすべての人に説明するのなら構いませんが、毎回用語の説明から入るのは効率が悪いのではないですか。
少なくとも、万人向けではありません。
>>246 広まるまでは伝わらないリスクはありますが、それが人口に膾炙することで解消するでしょう
個人的には相手に分からない言葉を使う気はありません
何が万人にとっての利益となるかという問題です
ここですべてを解決しようというのではなく、あくまで問題提起です
長期的にそうなっていけばいいかと
var o = {}; Object.defineProperty(o, 'test', { value: [1,3,5,7,9], enumerable: false, configurable: false, writable: false }); o.test[2] = 1000; console.log(o.test); 配列の一部を書き換えられないようにしたいんですが 書き換えられてしまいます writableがfalseなのになぜですか?
>>249 それは単に「o.test = なんとか」が禁止されるだけでしょ。あなたがやってる
のは「var a = o.test; a[2] = 1000;」と同じだから書き込んではいないよね。
自分が正しいと思う日本語でも米国で喋ったら誰も聞いてくれないでしょ。 言語というのは相対的なものだと認識しなはれ。他人に俺様用語の布教したいなら 質問スレでやるのは迷惑なのでどっかよそでやってくれ。皆様、以後スルーで。
>>250 definePropertyは変数の書き換えはできないのですか?
書き換え禁止なのはプロパティであってプロパティがもつ値ではない 値がプリミティブ型なら同時に変数も書き換え不可となるが リファレンス型の場合はオブジェクト本体は他所に合って プロパティの値としてはそれへの参照を持っているだけ だからオブジェクト自体は書き換えできる オブジェクトの方に書き換え禁止フラグを建てるには Object.freezeを使う
jQueryのAjax使ってjsonなどを取得する時 url〜&callback=jQueryの&callback=jQueryの部分をなんとかして出さない方法無いんでしょうか?
ネットで読めるES5のセオリーとかこう書けとかそういうのおしえて
サイズ変更操作時にカーソルを変えますが カーソル直下の要素のcursorを変えても、動かしている途中でマウスカーソルがはみ出ます やはりカーソル変更用の透明レイヤーを作成するのが定石なのでしょうか?
>>258 生産性を向上させる具体的なアイデアがまったくないな
なんて不毛なスレなんだ
>>254 そんなのがついた記憶が無いんだけど、
なんか間違ってんじゃねーの?
最小限のコードで試してみろ
jqueryがvisibilityを切り替えるメソッドを用意してないのは何故ですか?
「表示非表示を切り替える」とか悪い設計 「表示する」か「非表示にする」か
非表示のままサイズを計測する時はdisplay:noneでは不可能ですよね? そういう時のためにvisibility操作用メソッドがあってもいいと思うのですが
>>261 書くまでもないってだけじゃね
更に先読みしますとだな
document.getElementById('id').style.display=(document.getElementById('id').style.display=='none')?'inline':'none';
>>263 おいおい
visibilityはstyle.visibilityってのがあってstyle.displayとは別物
前者は見えなくなるだけだから計測には問題ない
用語は適切に使ってくれ
重くなる上に可読性下がるからJQueryは使って欲しくないよー visibilityよりCSS弄った方が軽い気がする
>>265 だから計測するためにはdisplay:noneではなくvisibility:hiddenを使わないといけないってことだろ
jQueryのfade系メソッドってちゃんと最初のopacityも考慮するんだね opacityを下げた要素をfadeInしても最初のopacityを超えることがない 気が利いてるな
keydownイベントをdocument以外で受けることは出来ますか? 一時的に追加するDOMにハンドラをセットする場合、$dom.off()で一括削除できるので keydownイベントもdocumentではなくその要素に付けたいです
>>269 誤読してるのはあなたですよ
現にあなた以外の人には伝わっているのですから
「もしかして自分が間違っているのか?」と自問してから書き込んで下さいね
駄目だこいつ
知的強度の足りない人ほど他人を自分より馬鹿だと思いたがるから困ったものです 健康な知性とは自分の判断を疑うことのできる知性です 特に他人に対して批判的な書き込みをする場合はまず自問してから書き込んで下さいね
いいからここでやるなよ
そうやって触るから居着いちゃったんだろうに
スルーで。
もしかして質問してるの全部同じ人なの? ここんとこ質問⇒回答⇒回答に対して噛み付く って流れしか見ない気がするんだが ここって実は3〜4人で回ってるのか
ID出さないで質問してるのはみんな同じ人です
マウスから大量の雪を降らせるようなスクリプトを作っています 座標データを雪の数だけ大量に保持し、一番下まできたら消える (落下速度はまちまちで先に生成されたものから消えるとは限らない) ということをしたいのですが 配列のデータを削除する Array.splice(i,1) の処理が遅いらしく重いです このような処理をする場合にもっとパフォーマンス的によい設計はないでしょうか?
削除せずに再利用したらどうかな
大量って数万個とか降らすわけではあるまい そこは重くないはずだよ それともプロファイリングした結果かい?
雪が消えるたびにarrayを詰めるのはいかにもパフォーマンス悪そう オブジェクトにしてみたら?
完全に病気です
3分差は基本的に自演と思っていい
>>282 データの数とループ数を固定して、削除済みのindexを別の配列に保持し
先頭の削除済みindexから順番に再使用していく感じでしょうか
確かにこの方が実用的かもしれません
>>283 見た目で判断していました
指摘され、同時に計算式を整数のみから小数を扱うものに変えていたことを思い出し
計算式を整数に戻したら軽くなったので確かにspliceはパフォーマンスに影響は少ないようです
>>286 そんな気がします
documentに付けたkeydownハンドラでESCキー押下を検知したら カスタムイベントを発火して、他のDOMに伝播させようと思いました しかしカスタムイベントはdocumentまでしか到達しません バブルダウンはしないようです? 他のDOMにもイベントを伝えるにはどうしたらいいのでしょうか?
いや処理的にDOMの末端から上に浮かび上がってほしいので、バブルダウンはしなくていいです DOMの末端でイベント起こすにはどうしたら?
しないよ
jQueryのtriggerはあくまで擬似的なもの イベントを起こしているわけではない
585 自分:Name_Not_Found[sage] 投稿日:2013/08/19(月) 01:15:39.72 ID:??? ハンドラを外す時のために参照を保持しておくのが面倒くさいです キー名で外せたらいいと思うのですが、そういうjqueryプラグイン的なものないですか? 付ける時 $div.on('mousemove',func,'hoge'); 外す時 $div.off('mousemove','hoge'); こんなイメージです という質問を以前した者ですが、今jQueryイベントについて調べていて $div.on('mousemove.hoge',func); $div.on('click.hoge',func); などと名前空間を付加しておけば $div.off('.hoge'); で一括削除できるということを知りました〜 削除のために参照を保持しておく必要なんてなかったのでした ありがとうございました
モーダルウインドウ表示中は通常のキーハンドラは止まっていて欲しいのですが、 documentに後から付けたキーハンドラは通常のキーハンドラより後から呼びだされるため stopPropagationしても時既に遅しです 後から追加したハンドラを先に呼び出されるようにする方法はないでしょうか?
キャプチャーフェーズをリスンしろ
ありがとうございます たしかにそれならうまく逆にできそうです jqueryでできるのかな
305 :
Name_Not_Found :2013/10/18(金) 21:39:00.31 ID:1NCYwNka
すごく初歩的なことで申し訳ないのですが、location.hrefは.hrefを省いてlocationとしても良いのですか?
現在のページを「:タイトル - URL」という形式でツイートするブックマークレットを作ったのですが、これでどんなページでも正しく動作するのか(正しくエンコードできるか)不安です
javascript:location='
https://twitter.com/intent/tweet?status= '+encodeURIComponent('%EF%BC%9A'+document.title)+'%20-%20'+encodeURIComponent(location);
locationはglobalProxyだからOKです
jqueryでキャプチャリングフェーズを指定することはできなそうです 世のモーダルウインドウはどうやってイベントを止めてるんだろ フラグ管理すれば簡単ですが、何かキレイじゃない感じがするんですよね〜 上に被さるものを下が管理する感じが
ありがとうございます それがよきにはからうのは表示部分だけで、ハンドラ関係は変更しないのでは? 表示部分は既に出来ているので変更する気はありません
あれも嫌これも駄目じゃ話が進まんね そんなに思い通りがいいなら自分でリスナ管理して 0から作りなおせばいいのに
同種のハンドラを外す→優先させたいハンドラを付ける→ハンドラを付け直す という方法を考えました うまくいくか分かりませんが〜
マジキチ 1つのハンドラ内でコントロールしろよ
たしかにマジキチかもしれません しかし本来はjquery自体が提供すべきメソッドなのです それがないためにブラックジャッグのようなことをするはめになったのです
次の方どうぞー
しね
テキストフォームで受けきれなくなったキーが外に溢れて画面をスクロールさせる問題は どう解決すればいいでしょうか? tweetdeckはちゃんとガードしています やはりよく出来たアプリは細かいところまで気がきいていますね
そんなことはありませんし、解決の方法もありません
解決の方法はありますよ。 あるべき、しかし難しい方法は、イベントをこぼす側つまりフォームコントロール側で止める 美しさに欠ける、しかし簡単な方法は、こぼれたイベントを受け取る側でフォーカスされているエレメントを判断して分岐する、 だと思います ここはやはりあるべき方法を目指したいところです
そんなことはありませんし、解決の方法もありません
>>319 解決法があるならコードを示して下さい。
>>261 > jqueryがvisibilityを切り替えるメソッドを用意してないのは何故ですか?
表示に関する処理はCSSが担当だからです。
jQueryはDOM操作をするものです。
アニメーションはCSSだけでやるには機能が少ないためにやってるだけで
本来はデザインに関するものはCSSの担当です。
>>321 あると考えることと方法が分かることは別です
カーソルが左端にある時に左に移動しようとしたらpreventDefault 右端にある時に右に移動しようとしても同様 で防げそうです
>>323 方法がわからないのなら、解決法があるとは限らないという事です。
326 :
325 :2013/10/19(土) 12:55:30.61 ID:6xzVOmWZ
firefoxでのブックマークレットに関する質問なのですが、 javascript: document.body.innerHTML = 'AAA'; というブックマークレットを実行したところ、firefoxのみページ遷移が発生し、 アドレスバーが javascript: document.body.innerHTML = 'AAA'; となってしまいます。(他ブラウザでは元ページのままちゃんとbody内HTMLが変更されます) また、即時関数を用いて、 javascript: (function(){document.body.innerHTML = 'AAA';})(); としたところ、他のブラウザと同様に正常に動作いたしました。 firefoxだけこのような挙動を示すのはなぜかお分かりになる方はいらっしゃいますか。 firefoxではこの例以外にもブックマークレットからappendChildなどで要素を追加した場合にも ページ遷移が発生し、アドレスがブックマークレットのスクリプトになる現象を確認しています。 firefoxのブラウザの仕様にお詳しい方いらっしゃいましたら是非ともご教授お願いいたします。 (>_________<)
>>325 「出来ることは分かるが、どうするかはまだ分からない」
ということに向って行くのがものを作るということです
328 :
326 :2013/10/19(土) 13:07:10.99 ID:6xzVOmWZ
あ、名前間違えてましたw 325じゃなくて326です
http://jsbin.com/ImIvAco/1/edit キャレットの位置を知りたくてselectionStartを確認するコードを書いてみたのですが
挙動が不可解です
一文字入力すると0
それを削除すると1
になります
そこから更にbackspaceすると0に戻ります
chromeでもfirefoxでも同じです
キャレットの位置を正確に表わしていないように思えますが何故このような動作になるのでしょうか?
あっ(察し keydownだから移動する前を位置を取得してるだけでした お騒がせしました
chromeで、 テキストフォームからアンフォーカスした時、一瞬だけマウスカーソル形状がpointerになります ある特定の場所をクリックしてのアンフォーカスをした時だけです どうも非表示のポップダウンメニューのcursor指定に反応しているっぽいです ためしにbodyにcursor:defaultを設定してみたら直りました やはりバグでしょうか? bodyにはcursor:defaultを指定すべきなのでしょうか
>>317 の件ですが、キャレット位置を判定してpreventDefaultする方法で問題なく出来ました
ありがとうございました
要素の座標を動かす場合にCSSの値を変更する以外の方法ってありますか?
windowの位置を動かしてください
337 :
Name_Not_Found :2013/10/19(土) 19:41:52.92 ID:bEFQ9cM2
URLをエンコードしたいのですが、探してみると以下の3つの関数がありました escape encodeURI encodeURIComponent これらの違いはなんでしょうか? また、どれを使えばいいのでしょうか?
URLをエンコードするのならescape URLの為にエンコードするのならそのURLの仕様に従って残りの2つ
+function ($) { "use strict"; bootstrapでこういう表記を見たのですが 最初の+の意味は何ですか?
関数文ではなく関数式ってこと
341 :
Name_Not_Found :2013/10/20(日) 04:11:41.77 ID:OsVF/bFW
Javascriptを用いてスマートフォンのWeb上でパノラマ写真を表示し、 初期は画像の中心でドラッグで画像の視点を動かしたいと考えています。 どのように作っていけばいいでしょうか?
ありがとうございます 何にも代入してない関数式?って思ったらこれで即時関数なんですね
即時関数が関数式なことを示していてよさそうって思ったけど JShintでエラー出るな・・
hintはこんな所気をつけたらいいのねと分かったら外すのが吉
気をつけてもミスをするのが人間。 人間のことをよく知りましょう。
潜在的なエラーも見つけてくれるから常時使う方が吉だと思うけど
エラーなんて実行すれば分かるがな
bootstrapのコードは行末セミコロンもないしifを{}なしで書くし、読みにくいですね 行末セミコロンがないと次の行に続いているのか続いていないかを いちいち次の行を見て判断しないといけないので特に読みにくいです twitterともあろうものが何故こんなくそコードを書いているのでしょうか クロックフォードに叱ってほしいものです
荒らしたいのは分かるけどさ もういいよその話は この前クロックなんちゃらは時代遅れ、NPMスタイルが至高ってので決着付いたろ
荒らす気なんてないですよ やはりlint/hintのメリットは大きいと再確認しただけです 確実にコードのクオリティが上がりますので
実行してもわからないエラー(問題点)を 指摘するのがjshintなのに。 まったくわかってないなぁ。
>>351 同意
「気付かなかった、アブネー」っていうことがたびたびあるからもう手放せない
馬鹿なエラー出すし重いし役に立たないから俺は速攻やめたな 使うにしてもいっぱい機能無効にしないと糞だし悪品だわ
たしかに少し待つけどそんなにしょっちゅう使うものでもないじゃん 一段落ついたら実行くらいの頻度だよ
jshintでエラーなんて聞いたことないし、 役に立つし、いっぱい機能無効にしないとって それお前が書くコードに問題がありすぎってことじゃねーかw
353「俺のコードは問題があるとたくさんエラーが出る。エラーを無視するように設定しないと使い物にならない」
構文エラー以外でも警告が出てうざいってことでしょ 分かるよ
智恵子は東京に空がないという くそコードだから警告出してくれてるのにそれをうざいという
必要だが表示したくない要素を見えなくしたい時、 よく座標をマイナスにしますが この値の大きさはパフォーマンスに影響を与えるのでしょうか?
bootstrapのgraphiconってどういう仕組みなんですか?
ぐらひ婚ですか? なんでしょうね。 グラファイ婚かもしれません。
なんでアウトラインフォントみたいなことが出来るのか分かりません HTML5の機能?
最初の文字を入力したら自動的に候補が出る機能ってJSでどうやって実装したらいいんですか? 一文字入力するごとに逐次検索してたら場合によっては激重になるだろうから インデックス化とかするんだと思うのですが そういうライブラリとかあるんですか?
外部JSの読み込みに、 <script src="..." charset="UTF-8" .... ~~~~~~~~~ と、charset属性が指定されてることがありますが、これは付けた方がいいのでしょうか? 読み込み、解釈が速くなるのかも知りたいです
>>363 JSで実装すべきことじゃない
HTML5のautocompleteとdatalist要素を使う
>>364 同じ文字コードなら不要
早くなるとかそういうものではない
パフォーマンス厨消えろ
>>364 該当JavaScriptファイルにContent-Typeヘッダが出力されていれば不要です。
パフォーマンスは重要な要素だろ アホなのか?
charsetがどうのこうのでパフォーマンスがどう変わるかなんて とても複雑な問題だし効果も数値として出るかどうかってレベル つまり気にしても無駄 もっと他に気にするべきことがあるはず パレートの法則を知れ
低レベルな奴ほど 気にしても無駄(キリッ とか言っちゃうよな
お前の為を思って言ってやってんだよ
思わなくて結構です^^;
気になるなら自分で計測すればいい。 content-typeでやっている処理を考えれば、 そんなもので差がでないのは誰でも当然だと思う話。 もし違えば、驚きだからそういうデータを示せば良い。 ヒーローになれるとおもうよ。 プロならやらなくてもわかる常識を 覆すことになるわけだから。
>お前の為を思って言ってやってんだよ きもい
まーたマルチ商法・カルト宗教信者が沸いてんのか 押し付けがましいったらありゃしないな
>>365 ありがとうございます
動的にdatalistタグを設定すればいいんですね
ただ数十ワード程度ならいいですが、
ワードが数千くらいになったらDOMの操作が重くなりすぎるのではないでしょうか
ワードが数千になってから言え 無用な心配ばかりしていては先に進まん 細かいことまで想定してるのならはっきり事前に全部言え
IEで画面をクリックしたらたまにウインドウが最小化するという謎の現象が出ています 考えられる原因は何でしょうか
最小化ではなく非アクティブ化でした
379 :
366 :2013/10/20(日) 21:40:59.05 ID:???
>>364 あえてパフォーマンスに言及するなら、文字コード判別は始めにContent-Typeヘッダで行うので、Content-Typeで文字コードを指定すべきです。
ブラウザがContent-Typeヘッダを信用するとは限らないんだが それぞれのブラウザでいろんな工夫をしてるからな
てか今は全部UTF-8だから何も気にすることはないだろ
>>376 より汎用的な方法を探っているだけです
否定することで話が進むんですよ
それが弁証法です
アルゴリズム、方法ってのは向き不向きがあるんだが…… 汎用的でパフォーマンスもいい銀の弾丸なんてありません
datalist使うのはアルゴリズムじゃなくてソリューションですよ JavaScriptはプログラム言語なんだからアルゴリズムで解決できます
こいつ知恵袋で散々舐めた質問と受け答えして嫌われた初心者に似てるな
>>382 ではデータが数億個になったらどうしますか?
量によって最適なやり方は変わってくるんですよ?
それぐらい知ってますよね?
>>375 ,382,386
まず、あなた自身で試してから問題提起して下さい。
実験もせずにこうなるんじゃないか、ああなるんじゃないか、と不安になるのは時間の無駄です。
弁証法は哲学で通用する論理であってプログラミングならより実証的であるべきです。
はい論破()
393 :
390 :2013/10/21(月) 02:35:26.06 ID:???
欲しいです 私の敗北を認めますのでください どうかお願いします。モニターの前で土下座してますのでお願いします
あげない♪
また完全勝利してしまった・・・ 敗北を知りたい
精神年齢が小学生並みだねぇ
>>387 MUSTの助詞でそれを守るように規定されてんの?
もっと言えばタグsrcを見る→ヘッダのTypeを見る→無効な時だけタグのTypeを見る
みたいになってないとロジック上差が出るとは言えないでしょ
例えコストが高いことでも並列化やマルチスレッド化で実行時間に現れるとは限らないし……
>>397 原文読めよ
MUSTになってるだろうが
英文読むまでもなく「次の 優先順位を守らねばならない」とあるんだがな MUST知ってる奴が原文詠まずに非難するとか意味わからん こいつに限らんが、無根拠に非難する奴が多すぎ ソースは示されてるんだからその文面に沿って反論しろよ
順位は重要じゃないでしょ 大事なのは処理をスキップするように決められているかどうか
スクリプト要素のエンコーディングは外部ファイルの場合 ヘッダのContent-Typeから取れなければタグのcharasetを見る それも無ければmeta→ページと同じ つまりは単純な理屈の上ではContent-Typeやらなんやら結局全て文字コードが同じ場合は charsetを付けるのはサーバーがContent-Typeを送るのなら無駄な分だけ低パフォーマンス 送らないのなら付けたほうが早いと思われる
headerのcharsetと実際の中身が違ったらどうなるの? 文字化けしちゃうよね だからscriptで指定する方が強いと思うんだけど
そうなると、scriptタグでcharsetの指定があればheaderをいちいち解析する必要もないから 指定した方がはやそうなんだけど
>>404 HTML文章の話ではありません
HTMLの話はHTMLのスレでしてくださいね?
>>333 この件ですが、ポップオーバーが消えている時にも、
textフォームからfocusoutした時にはfadeToでふんわり消す、を実行していたため
消えている要素が一瞬アクティブ的になって(このあたり不明)それがカーソルを反応させているのでした
displayがnoneになっているのだからマウスが反応するのも変な気がしますが
ともかくもともと非表示の時にfadeToしないようにしたところ、現象が消えました
ありがとうございました
>>406 HTML4.01ではHTTPヘッダにも言及されています。
思い込みで発言せずにちゃんと読みましょうね。
消す速度をものすごくゆっくりにしたところ、 カーソルが変わるだけでなくリンクも有効で クリックするとジャンプしました displayがnoneでもfadeToしている間は表示されるのかな〜?
>>408 答えになっていません
逃げずにちゃんと答えてください
HTTPヘッダが全てに優先するに決まってる 原理的に考えてもそうだし、試さずに適当な事言うやつどうにかしてくれ
>>411 だから、それが違っていたらどうなるかって話をしてるんですけど?
違ってたらも何もheaderからContent-Typeが送られれば 100%Content-Typeに基いてエンコーディングが判断される charsetはなんの効果も出さない、無いのと同じ、それだけ
http://jsbin.com/adoquco/2/edit 再現コードが書けました\(^o^)/
openをクリックすると黒いボックスが出ます
closeをクリックすると閉じます
close with fadeをクリックすると、ボックスは消えますが、領域は生きていて、マウスも反応します
その後は別にエラーもでていないのに、openをクリックしても何も起きなくなります
何故こんな挙動になるのでしょうか?
chromeだけかと思ったらfirefoxでも起きますね
Chromeでyieldを使いたいのですがどうすればよいですか? V8 3.20.17.15です
>>414 なお、data:text/plain;charset=sjis,あいう
だと文字化けし、
data:text/plain;charset=utf8,あいう
だと文字化けしない模様
>>413 に触るな
他のスレでも質問しまくってる
ただの愉快犯のゴミカスだから
正規表現エスケープはどうするのが一番いいですか?
こういうのはlodashが実装していて欲しいのですがないみたいですね
lodashはおんぶにだっこツールではありませんw
>>420 UnicodeEscapeSequenceに変換する
正規表現で使われる特殊文字のみエスケープしたいってことでしょ?
それでは関係ない文字までエスケープされてしまいます
具体的にどうしたいの? たとえば /[入力文字列]/ の場合だと []内は多くがエスケープ不要だから違ってくる
必要だと思うなら自分でライブラリに追加したらいいじゃん?
ライブラリの作成者が追加すれば一人分の作業コストですみますが 利用者がおのおの追加したら作業コストは膨れあがります だから源流で修正するのがベストなのです
>>428 「ようなこと」じゃわからないんだけど、具体的には
なんだ解決方法を探ってるんじゃなくて 自分の案を入れて欲しいってだけなのね pullrequest投げてしね
> (4) 常に自発的に調べる心構えを持ってください。 > 具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。 > わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
ECMAScriptで実装して紅の
お前しか使わんものを実装しても仕方がない
いくつかのブロックが並んでいまして左右に巡回スクロールできるとします 12345 例えばこの内4つ見えるとしたら |1234|← |2345|← |3451|→ |2345|→ |1234|→ |5123| というイメージです ここまではいいのですが、例えば7つ見える時に |1234512|→ |5123451|← |1234512|← |2345123| のようにしたいのです ここで問題なのですが、 例えば |1234512| の状態で左の1に起きたことをそのまま右の1にも起こしたいといいますか、 1つのものをなんとかオブジェクトの参照コピーのように複製して配置できないでしょうか
>>432 最初から「一番いい方法は何ですか」と言っていますが?
>>435 正規表現のエスケープなんてごく一般的な処理の一つです
いろいろ方法教えてもお前受け入れる気ないじゃんw
いい方法は受け入れますよ 当たり前のことです
回答者の回答にちゃんと駄目だしするのも質問者の使命ではないですか? 俺はそう考えています
却下されることが不快なら最初から答えないことです そんな人の意見は大抵たいしたことはないので
要件を出せない質問に答える必要はないね 以後スルーで
>>436 それって DOM の話?
なら現状 cloneNode とかするしかないような
SVG なら use 要素使えるけど
例えば片方のリンクにフォーカスがあたったとしたら もう片方も同じ表示にしたいんです SVGなら可能ということですがforeignObjectはどうなのでしょうか
446 :
Name_Not_Found :2013/10/22(火) 01:17:22.40 ID:0ptdTFsS
かなりサイズの大きな画像を表示させようと考えています。 スマートフォンで見た場合縮小されて表示されるのですが、 これを縮小せずに表示させることは可能ですか?
JSerは覚えることが多いので充実してるし周りの評判なんて気になりません
初心者向けとされる言語は馬鹿にされがちだけど 実際には初心者向け言語を馬鹿にする奴ほどC級なんだよね しかもJSは実際には全然初心者向けじゃないという
documentオブジェクトは"document"という自分を表わす文字列を持っていますか?
NO
そうですか ありがとうございました
配列の存在しないインデックスが叩かれた時 undefinedではなく0を返してほしいのですが どのように組んだらいいのか検討もつきません どうか教えてください
ラッパーをかます
Array.prototype.__proto__ = Proxy.create({ get: function () { return 0 } }) arr = [10, 11, 12] arr[1] // 11 arr[62566615] //0
面白いなこれ Number.prototype.__proto__ = Proxy.create({ get: function(target, name){ var func = Math[name]; return func.length === 1 ? func(target) : func.bind(Math,target); } }); x = 123; x.sqrt.floor.pow(2); //121
プロトタイプ汚染すんな
Proxyは汚染にはならないよ ただしこれはOldProxyだから列挙等をしようとするとこのままではエラーになってしまう 適切に転送するか、本当ならDirectProxyを使えば問題0
こういうのが一番上品? class XArray extends Array { constructor(...arg) { super(...arg) return new Proxy(this, { get: (target, name) => this[name] ? this[name] : 0 }) } } arr = XArray(10, 11, 12) arr[1] //11 arr[663682] //0
swith文で、任意のcaseから希望のcaseにジャンプさせることって出来ますか?
NO
そうですか・・・・ ありがとうございました
case文ってちょっと原始的すぎるのでは? 改良の余地がありますよね
>>463 シンプルな程、効率化しやすい
任意の位置にジャンプはgoto文的で良くない気がする
下手をすれば無限ループになる
switch部を関数に分離して 好きなように再帰すればいいと思うよ
466 :
Name_Not_Found :2013/10/22(火) 18:51:35.56 ID:ZYsKF+Eg
ベストアンサー
6 : アルゼンチンバックブリーカー(SB-iPhone):2013/10/22(火) 18:05:22.05 ID:CPH4lEqci
>>1 それは営業がクソ。
10行ぐらいのスクリプトでも4万ぐらいぼれる
'hoge.fuge.poge' という文字列を使って data['hoge']['fuga']['poge'] という多重インデックスを作るライブラリありませんか?
undefinedを上書きできるってES3まででしたっけ? ES5ブラウザを対象とする場合は気にしなくていいですね?
>>468 もっと具体的に
>>469 その通りだし、そもそもうっかり上書きすることなんてないから気にする必要ない
ありがとうございました
OSXが無料化→linux死亡→JavaScript死亡 こうですか?
検索窓のプレースホルダーを英語にしたら長くなりすぎてフォームからはみ出ました こういう時はどういう処理をするのが定石ですか
474 :
Name_Not_Found :2013/10/23(水) 10:59:35.90 ID:YuBCZP20
ほっとく
475 :
Name_Not_Found :2013/10/23(水) 20:27:21.62 ID:uuVkPahp
WebGLを始めたいのですが、多くのチュートリアルで 最低限必要な大量の初期化設定コードの意味に触れすらしないで チュートリアルを進めたり、 せっかく生の3Dプログラミングをするのに 行列演算等で外部ライブラリを使ったりしていて 私の性格上非常に気持ちが悪くて覚えにくいです 私に合いそうなWebチュートリアルをご存知のかたがいらっしゃいましたら どうか教えてくれませんでしょうか?
476 :
Name_Not_Found :2013/10/24(木) 01:31:05.55 ID:Vcvey8Fb
ちょっと質問させてください。
Win8でIE10です。先代のPCがWin7のIE9だったと記憶していますが、
その先代PCで動いていたこちらのサンプルが動きません。
http://www.openspc2.org/reibun/javascript/image/016/ 別のサンプルで普通にCSSのところにclip:rect(略);…と書く分にはちゃんと動作しています。
切り取る範囲を変化させたいのでJavaScriptを使いたいのですが
サンプルの
document.myIMG.style.clip = "rect(0 "+cx+" "+cy+" 0)";
の代わりに使えそうな書き方とかはないでしょうか?
同一のボタンに、「クリック」と「長押し」を実装するにはどうしたらいいですか?
思いつきの質問に答えてあげるほど暇ではありません ちゃんと自分でどの方向性をどこまでやったか報告してください
思いつきではありませんが? 今はボタンをクリックするところまで実装してます 長押ししたらメニューが出るようにしたいです
> (6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。 > ※必ず「問題の事象が再現されること」を確認してください。 > 必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
481 :
Name_Not_Found :2013/10/24(木) 08:49:24.51 ID:xt8ka4sP
ヒント:(思いつきだけどね) onclickが押して、離した時発生するのに対し、 onmousedownは、ボタンを押した瞬間に発生します。
>>476 px付けてもダメ?
俺のxpのie8では再現出来ないけど
>>415 ボタンで言うと
close with fadeはフェードアウトなので
closeの処理を入れてはだめ
いれるならopenボタンの処理
fadeToのopacity(透過)が有効なようなので
open処理でopacityを戻してあげる
>>481 mousedownでクリック開始時間をセットしたらクリックで長押しもあっさり判定できそうですね
ありがとうございました
長押しはマウスアップしなくても発生しないといけないので違いました
マウスオーバーで領域アウトしたかを判定するようにして タイムアウトでチェックで出来そうではあります キレイにまとめるのが少し大変そうですが
487 :
Name_Not_Found :2013/10/24(木) 17:48:42.90 ID:fpQxDEPv
onmousedown setTimeoutで1秒後にメニュー処理 onclick メニュー未処理 clearTimeout onmouseup(カーソル外した時用) メニュー未処理 clearTimeout
カーソルを外したらmouseupが発生するのですか?
そのくらい試せ
だってマウスボタンを上げてないのに発生したら変じゃないですか?
クラス名とID名を同じにしたら問題あるでしょうか? modalというクラスがあり idをmodalにしたら、何か動作がおかしいです でもaModalに変えたら直りました クラス名とID名は別物だから、おかしくなる方がおかしいと思うんですが・・・
どこかのうんこなセレクタライブラリ使ってないのなら問題ない
自分で以前に#modalをCSS定義してたのを忘れてただけでした (>_<) 失礼しました
494 :
476 :2013/10/24(木) 21:45:13.04 ID:Vcvey8Fb
>>482 pxをつけたところ動作しました!
ありがとうございました!
>>488 カーソルを外したらmouseoutが発生すると思うからそれを取れば。
IE10の場合に強制的に互換モードで表示させるJavascriptって、書けないかね。 下記みたいに、meta要素を挿入してみるのは出来たが、表示には効果無かった。 <script type="text/javascript"> <!-- var targetEle = document.getElementsByTagName("meta")[1]; var newEle = document.createElement("meta"); newEle.setAttribute("http-equiv","X-UA-Compatible"); newEle.setAttribute("content","IE=emulate8;"); targetEle.parentNode.insertBefore(newEle,targetEle); // --> </script>
497 :
496 :2013/10/25(金) 01:05:40.94 ID:???
F12 開発者ツールでHTMLを見ると <meta http-equiv="X-UA-Compatible" content="IE=emulate8"/> がhead内に書き出しされてあるのだが、 確認のためにbody内に置いておいた下記スクリプトの結果を見ると―― <p>document.documentMode:<strong><script>document.write(document.documentMode)</script></p> ドキュメント・モードは変更されずに document.documentMode:10 のままだった。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。 IEの逆行化は全世界の人々に迷惑をかけるテロ的行為なのわかってんのか?? 間違っても開発者に相談するな、ころされるぞ
互換モードはIE10で半分廃止、11で完全に廃止のはず 諦めろ
500 :
496 :2013/10/25(金) 01:16:31.53 ID:???
だって、折角のIE8での達成をふいにするバグを増やしたIE9・IE10が悪いよ。 しかしマアそんなことより、純技術的にJavascriptでは不可能なのかどうかを知りたい。
不可能じゃない フルCanvasのオレオレレンダラ作ればいいだけ ちょっとしたCSSやJSでなんとかなるとか甘いこと考えずに プログラマなら根本から修正しろ
Canvasもメソッドに頼ると誤差が出る可能性があるから ImageDataで更新しないといけないな
LinuxEmulatorの上でChromium動かせばいいんじゃないの
IEよりかも問題なのは FirefoxやChromeだよ。 互換モードそのものがない。 もう互換モードは諦めたほうがいいのではないか?
バグが有るのならホッとけばいいのに 取り繕うから修正されないんだろ 黙って報告しておけ
いい加減特に理由もないのにXHTML指定してくるの止めてもらえませんかね XHTML5で書いて返しても何も言われないし
要素を作成する前にハンドラをセットすることは出来ますか?
createElementを上書きすることで可能になります
510 :
Name_Not_Found :2013/10/25(金) 09:54:44.04 ID:3li5tcH1
果たして万引きっていけない事なのかなぁ? 盗られるほうがあほ!
よう朝鮮人
おれはJavaScriptをぶっころす。文句があるやつは今のうちに言っとけ
口先短小チンポには何もできない
せいぜいF5連打くらいのもんだろwww
>>512 ガチで通報したわ
IP開示されて警官やってくるからな
編集中のソースからCSSの色が確認できるsublimeプラグインないですか? #eeeなどの文字列を拾って色に変換するものです
JavaScriptってJQueryとかのライブラリ使わないと サイト制作では、正直あんまり使いどころないな。
HTMLと混同してね?
>>517 そりゃ素人考え
jQueryでできることは全てJavaScriptで出来る
なぜならjQueryはJavaScriptのラッパーだからである
単に静的なサイトなだけだろ 使い所ないの意味が分からん
JQuery等のライブラリなかったころ みんな時計とか、マーキーとか カウンター作ってキリ番ゲットとか マウスオーバーで色が変わる リンクバナー作ってたのは分かるけど、 正直あの当時使い所がほかにあんまり 思いつかなかった
黒歴史
オブジェクトの定義の中で、 自身プロパティを呼び出して格納したいのですが可能でしょうか? var objectHoge = { propty1: 'hoge1', propty2: 'hoge2', proAry: [ { index1: /**ここにhoge1**/ }, { index2: /**ここにhoge2**/ } ] } ↓これはできるのですが、気分的に同じオブジェクトに入れたくて・・・ var propty1 = 'hoge1', propty2 = 'hoge2', objectHoge = { proAry: [ { index1: propty1 }, { index2: propty2 } ] }
オブジェクトを組み立てる関数を外に用意すれば出来る
そんなことせんでもできるがな var objectHoge = { propty1: 'hoge1', propty2: 'hoge2', get proAry(){ var self = this return [ { get index1(){ return self.propty1} }, { get index2(){ return self.propty2} } ] } }
javascriptの真髄を見たような気がした なんじゃこのコードはwwww
サーバサイドでやってたことをクライアントサイドでできる くっそコスト食いのデータベース(笑)なんかもういらない
Node.jsってだいぶん普及してるの? 使ってる人まわりで見たことないけど
ソース中に入れ子構造のhtmlを記述すると 分かりにくくなりますが、どうやってますか?
>>529 使いどきってのがある
単なるWebサーバーやCGI的な使い方じゃ駄目
アプリケーションサーバ、特にコネクションとコネクションを中継するような処理に持ってこい
例えばサーバー側でブラウザを立ち上げてDOMやCanvasの演算をさせて返すとか
そう言った新しいやり方にも向いてる
クライアントとしても使えるし、意外とバランスよく優秀だから、広く使うのがコツ
>>530 の件ですが、
html += '</div>';
など一行ずつ分けて書いてコメント入れることにしました
ありがとうございました
よく分からんがもし巨大なHTMLとかを入れたいのならこうね var text = getSource(function(){/* <html> <title>hello</title> </html> */}); function getSource(func) { return func.toString().match(/\n([\s\S]*)\n/)[1]; }
それならヒアドキュメントに出来ますね コメントとして書くとはまた頓知の効いた ありがとうございました
すごい技だ!
>>530 - 外部HTMLにしてXHRでロード
- 外部HTMLにしてサーバサイドスクリプトでJSコードに変換
- テンプレートHTMLを作成してローカルでJSコードに変換してUP
近い将来的にはHTMLのTemplate要素やES6のTemplate文字列を使うのがいいね
旬なのは
>>533 だと思う、一昔前はFxの実装がアレでできなかったから
>>525 ,526
ありがとうございます。勉強になりました。
539 :
Name_Not_Found :2013/10/26(土) 09:26:20.00 ID:sFjF7/3Q
ブラウザ間のキーコードの差異を吸収するようなライブラリとか、一般的な方法ってありませんか? firefoxとchromeだと-,^などの記号系のみのキーのキーコードが結構違うようで、 その違いを吸収する地道な場合分け以外の方法どなたか知りませんか? jqeury(2.0.3)のwhichでもそこまで対応していないようなので、あんまり需要ないんでしょうか?
541 :
Name_Not_Found :2013/10/26(土) 10:31:57.90 ID:sFjF7/3Q
>>540 それなりに使っている人がいるので、ブラウザが対応していないからといって
無視するのは気が引けますが、そのへんのあまり良い方法は無いみたいですね
ありがとうございました。
event.charとevent.keyIdentifierでいいやん
継承はない クラスからインスタンスにメンバが受け継がれるのではなく 各オブジェクトが探索チェーンを接続しあって延長するだけ
それが継承だろ
勿論日本語ではそう言ってもいいが プログラミング用語としては継承を語るにはJava的クラスの存在は必須 JavaScriptのオブジェクト指向システムは Inheritance(継承)ではなくてDelegate(委譲) 方向が真逆で混同してはいけない
言葉の違いでしかないじゃん 他のクラスやオブジェクトのメンバを引き継いでオブジェクトを作成できる、という本質には変わりない
本質は違う 見かけが一見同じってだけ 地動説と天動説くらい違う
いや本質は同じで見かけが違うだけだよ
550 :
543 :2013/10/26(土) 11:37:14.51 ID:???
goodpartには、「Javascriptはプロトタイプ継承を行う言語である。 それはオブジェクトが他のオブジェクトから直接継承を行うことを意味する」 と書いてあったので、継承があると考えてました。
JavaScripterが読むべきとされているオライリーのJavaScript本にも JavaScriptは継承ができない、なんて書いてる本はないだろ
プロトタイプオブジェクトを継承するのであってクラスを継承するのではないから別もん
>>551 継承できないとは言ってない
そういう「継承」という言葉は概念としての使われ方
JSのシステムに「継承」があるかといえば無い
>>552 なるほど、javascriptはclassがないからclassを継承できないが、
オブジェクトを継承するってことですか。
まずJavaScriptとJavaの違いも分からないような奴になんて答えるのが適切かと、
継承という言葉の用途の話は切り分けろよ
それと
>>543 が突っ込んでるのはBAのこのあまりに酷い文章についてだろう
>>JavaScriptはECMAScriptという規格にそって作られた簡易言語で、Javaのような便利道具はなく、継承などの再利用の仕組みも存在しません。
完全にクラス厨の脳だな
JavaScriptはJavaみたいなお固い『継承機能』じゃなくてもっと柔軟な方法を持ってるってこった
んでこのスレの人はJAVAとかCとかも 余裕で使えるの?
あたりまえ
C# Java PHP Pythonぐらい クラス厨で悪いがJavaScriptはだいぶ異端に見えるけどね
おまえ、youtubeでjavascriptの解説とかやってんの?
JAVAとか、Cとか使える人が、なんでJavaScriptやってるの? 趣味なら分かるけど、仕事でやるならJAVAとかCのほうが 報酬や給料高いと思うんだけど。
作るものによって言語が決まるのであって 特定の言語を使うために作るものが決まるのではない
>>560 Webサービスを作る仕事ならJavascriptは必須でしょ
お前それGoogleのエンジニアに対しても言えんの?
JSは理不尽さにイライラすることが少ない言語 センスがいい
分かるわぁ
どの言語が理不尽感じるの?
JS って言うやつは ペドフィリア
ロリは小中学生、ペドは小学生未満と俺の中で決めている
聞かれたから答えとは言ってない
どっちにしても JS って言うやつはヘンタイには違いがない
同意
つまり
>>564 はヘンタイのペドフィリアってことでおk?
拡張子最悪ですね
御意
女子小学生と思うとかわいく思えてきた
577 :
Name_Not_Found :2013/10/27(日) 03:08:09.65 ID:kJDszKN0
質問です。iPhoneで見た際にタッチした座標を取得しようと考えています。 $('#box')[0].addEventListener('touchstart', touchHandler, false); function touchHandler(e) { e.preventDefault(); var touch = e.touches[0]; alert(touch.pageX); }; とすると上手くいくのですが $('#box')[0].on('touchstart', touchHandler, false); の場合var touch の中をe.originalEvent.touches[0]に変えても [Error] TypeError: 'undefined' is not a function (evaluating '$('#box').on('touchstart', touchHandler, false)') とエラーが出てしまいます。 なぜでしょうか?
$ = document.querySelectorAll.bind(document) Node.prototype.on = Node.prototype.addEventListener $('#box')[0].on('touchstart', touchHandler, false); function touchHandler(e) { e.preventDefault(); var touch = e.touches[0]; alert(touch.pageX); };
タブを実装することを考えますと、 グループ化した類似要素の中で、一つだけを有効にする を実現することになると思いますが どうやるのが一番スマートですか?
nthセレクタとscopedStyleの上書き
それまで有効だった要素からactiveクラスを削除し 新しい要素にactiveクラスを付ける といったことが考えられますが それまで有効だった要素からクラスを削除するような処理は自動化できそうな気もします
> (3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。(なりすまし及び煽り防止のため)
クリックしたURLのトップ, セカンド, サードレベルドメインを取り出したいです
yahoo.co.jpならyahoo,jp、google.comならgoogle,comというようにです
どんなURLにも対応させたいのですが、ここから分かりません
function url(info) { // クリックしたURLがinfoに入る
var url = info.replace("
http:// ", ""); //
http:// を消去
var arr = url.split("/");
var dom = arr[0]; // ドメイン名
}
ドメイン部分を.で分割して取り出すにもyahooの場合はcoがあるのでどうすればいいのでしょうか?
再帰を行わずにフィボナッチ数列を求めたいのですができますか?
function fib(lim) { var arr = [0, 1] for(let i = 2; i < lim; ++i) arr[i] = arr[i-1] + arr[i-2] return arr }
>>584 ruby用でゴメン。
def fibonacci(n)
r5 = Math.sqrt(5)
return (((1+r5)/2)**n/r5+0.5).to_i
end
「**」はベキ乗、「to_i」は整数化。
数列とはいったい・・・うごごご!
588 :
Name_Not_Found :2013/10/27(日) 14:43:25.21 ID:zdSQ+uNp
>>583 ちなみに
google.co.jpはどーすんの
yahoo.comは
>>588 google, jpとyahoo,comだけを取り出したいです
組織名と国名の部分だけ
スキャートってなんやねん
true/false を返す関数に、文字列を参照渡しすることで、 真偽値判定と同時に、渡した文字列まで変更したいのですが、 どのようなコードを書けばよいのでしょうか? var strhoge = 'hoge'; if( preformStr( strhoge ) ){ alert( strhoge ); //←ここで大文字にしたい } function preformStr( str ){ if( typeof str !== 'string' ){ return false; } else { str = str.toUpperCase(); return true; } } 当然これ↑だと、小文字のままです・・・・。
>>591 参照渡しはオブジェクトでなければ不可能。
Stringオブジェクトにしてみては?
すべての要素に行き渡るようなイベントを発するにはどうしたらいいですか?
>>589 一番右のcomとかjpはTLDといってこれは国名だけを表してるわけでは無いです。
その左側の構造のルールはTLD毎に決められているので、
組織名に相当するものを得るにはTLD毎にルールを記述する必要があります。
このTLD毎のルールは単純なアルゴリズムでは記述できない場合が多いです。
jpドメインの場合でも、けっこうな大きさの地域名リスト等を検索して
どこが組織名に相当するかを判定する必要があります。
>>594 「すべての要素に行き渡るようなイベント」とは何?
目的を明確に
ハンドラを付けたすべてのDOM要素がそのイベントを受け取れるような そういうイベントを発したいのです
598 :
593 :2013/10/27(日) 17:43:14.20 ID:???
よく考えたらStringオブジェクトは str = str.toUpperCase(); で参照が切れるな いずれにしてもプリミティブ型では無理
>>597 抽象的過ぎてさっぱりわからん
ハンドラを付けた要素をリストアップしてdispatchEventしたら?
>>599 抽象的??
一般的なニーズだと思いますが
CustomEventのことかな?
>>600 目的がさっぱりわからんという事
そんなイベントを作って何が便利なのかわからん
回答はしたから好きにしてくれ
>>597 勝手に補完してあげる。
(click)ハンドラを付けたすべてのDOM要素がその(click)イベントを受け取れるような
そういう(click)イベントを発したいのです
※(click)は自分の好きなものの置き換えろ。
答え clickイベント発行すれば?
答えおかしくね
カスタムイベントを発する→ハンドラを付けた要素がそれを受け取って、それぞれの処理をする ということをやりたいのです
$('#test').on('hoge',function(e){ console.log('test'); }); $(window).on('hoge',function(e){ console.log('window'); }); $(window).trigger('hoge'); こうすると、windowしかイベントを受け取りません testにも伝播してほしいのです
jQueryではなく標準のメソッドでイベントをディスパッチしてください jQueryのtriggerはイベントを作ってるわけではなく擬似的なものです
>>605-606 「やりたいこと」じゃなくて目的(なぜそうしたいのか)がわからんってことなんだが
なぜ同じ話を繰り返すんだ
$('#test').on('hoge',function(e){ console.log('test'); }); $(window).on('hoge',function(e){ console.log('window'); }); $('*').trigger('hoge'); これでいいだろ
>>611 それが正解だったら、
馬鹿すぎるとしかw
セレクタの意味をわかってねーw
回答ありがとうございます 統合しますと、 jqueryだとキャプチャイベントを伝播させることは出来ないので ハンドラをリストアップし、自分でよびださないといけない ということでしょうか jqueryでハンドラのリストアップってどうやるんですか?
>>613 任意のタイミングで実行したいだけなら、要素にイベントハンドラを付けたりせずに、配列とかに保持しておけばいいのでは
おっしゃるとおりですがイベントシステム上でやる方がシンプルになると思うので・・ bootstrapでは show.bs.hoge hide.bs.hoge などのカスタムイベントを活用しています そういうことをやりたいのです bootstrapはどうやって伝播させてるのでしょうか
というかdispatchEventしろといわれてるのに何でtriggerを使うんだよ
>>616 bootstrapは知らんが、ソース読めば解読できるんじゃないの?
なんでも人に聞いて済ませようとするなよ
教えて訓は嫌われるぞ
>>616 イベントじゃないものを無理やりイベントでどうにかしようとしても複雑になるだけでは
やりにくいと思ったら、 それはやり方が間違っていると思え。
A,B,Cのいずれかのボタンをクリックしたら、A.B.C全てのボタンをクリックしたように振舞って欲しい、って質問を思い出した 今考えても、わかりにくいことこの上ないUIだな
HTML5ではイベントはDocumentElement後globalまで伝染するようになってる
>>623 間に document が入るのでは?
関数を実行するときの()ってなにか名称があるのでしょうか?
かっこ
かっこつけんなよ
>>617 jqueryでdispatchEventに相当するものがtriggerですが?
>>619 インシデントがイベント的なのでイベントとして実装しようとしているのです
ハンドラをリストアップして順に呼び出す、という機能を jqueryは標準で提供していないのでしょうか? イベントを仮想的に実現しているのだから、 バブルアップさせたりも自在に出来ると思うのですが・・
>>jqueryでdispatchEventに相当するものがtriggerですが? いいえ、jQueryにはdispatchメソッドが有ります アホですか?
>>628 trigger のコードには dispatchEvent がありませんが?
自分の勝手な思い込みを捨てて言われたとおりにやってみてはどうですか?
632 :
620 :2013/10/28(月) 02:39:49.52 ID:???
jqueryにはdispatchEventというメソッドはありません triggerで実装しているからです エミュレートしているので、内部でdispatchEventを使っていなくても同様のことです エミュレートしたイベントシステムを使っているjqueryに対して 生javascriptのdispatchEventを使うのは感覚的にマズいと B級以上のプログラマーなら分かると思うのですが・・
>>633 いい加減、中途半端な知識で反論⇒それに突っ込むという流れにうんざりなのですが。
なぜ自信満々に反論できるんです?
知らない知識を教えてもらう質問者の立場上、回答者のほうが正しいかもしれない(100%とはいいません)ぐらいの認識は持っておくべきだと思いますが。
> エミュレートしたイベントシステムを使っているjqueryに対して
> 生javascriptのdispatchEventを使うのは感覚的にマズいと
> B級以上のプログラマーなら分かると思うのですが・・
内部的に addEventListener を使用している jQuery に対して dispatchEvent を使っても問題ない事はJavaScriptコードを解読できるプログラマなら分かると思うのですが、違いますか?
そもそも、回答者はjQueryを要件にあげていないようですが、jQueryとdispatchEventを組み合わせる回答だとどうして判断したのですか?
jQueryを使わなければ済む話ではないのですか?
一定の回答は出ているのですから、まずはその回答に沿ったコードを書いてみるべきではないですか?
ここは自助努力を持つ質問者向けのスレッドです。あなたの物言いからは自分でコードを書いてみようという自助努力の傾向が一切見られません、典型的な教えて君です。
そろそろ、他の質問と混同するのでID出すなり、固定HNを使用すべきではないですか?(
>>1 )
違和感があるけどそうなのかなぁ?→やっぱり間違ってた という流れが多いので 違和感を早いうちに表明しているだけです。 jqueryに対して生のイベントオブジェクトを発行するのは違和感がありますし 特にjqueryはキャプチャリングフェーズのサポートが弱いので、 それでクロスブラウザでのバブルアップはしないんじゃないでしょうか。 するというのならコードで示してください 間違った方法を提示してコードを書いてみろというのは暴論だと思いますが。
×クロスブラウザでのバブルアップ ○クロスブラウザでのバブルダウン でした
それで解決するのなら普通にdispatchEvent使えばいいじゃん??? なに、縛りでもやってるの?
javascriptでデータベースにアクセスする場合 AccessとMySQLどちらの方が使いやすいとかありますか?
後出し条件に自演、いつものあれだな
>>635 また、条件後出しかよ
違和感って何だよ、あんたの発言そのものが違和感だらけだからあんた試せよって返されたらあんた試そうと思うのか?
キャプチャリングフェーズなんて誰も触れてないだろ、キャプチャしないイベントで試したのか?
バブルダウンて何だよ、そんな用語がDOMのどこに出てくるんだ?
あんたが質問者なんだから試すのはそっちだろうが
間違った手法であることを証明出来てないのになぜ回答者に試させるんだよ
回答者に手間を押し付けて楽しようとする輩はスレ違いだから出て行け
>>635-636 あなたにはもう回答する気も起きません。
あなたの為にコーディングする時間は取れませんので悪しからず。
回答者の方へ。 下記に該当する質問はスルーする事を強く推奨します。 ■慇懃無礼君の質問傾向 1. 条件を後出しする 2. 具体的な状況説明は一切せず、期待する動作だけを書く(それでも要求仕様が足りない) 3. 回答者からの質問にはスルーするか見当違いの返答を返す 4. 自分の期待通りでない回答がくると、主観的かつ感覚的な駄目出しをして受け入れない 5. 根拠のない反論、(知識不足による)頓珍漢な反論を繰り返す
あなたより優秀で話の分かる方に回答してもらえるので答えなくて結構です
Array.apply(null, Array(10)).map(Function.prototype.call, parseInt); //=> [0,1,2,3,4,5,6,7,8,9] という動作について質問です。mapの挙動については理解できたのですが、 前半について、なぜ Array(10).map(Function.prototype.call, parseInt); では //=> [,,,,,,,,,]になるのでしょうか?
Array.apply(null, Array(10))はundefinedで埋まった要素数10の配列 Array(10)は要素数10の空配列、だからmapで変化しない
要素数じゃなくて配列の長さ、lengthと言った方が適切か 後者は要素がないからそもそも変化しないということ
647 :
Name_Not_Found :2013/10/28(月) 15:33:34.30 ID:QcW/MzAG
不思議なコードだな parseInt は一体何をparseしているんだろう? 配列 index だとするならArray(10).map(…) も同じ結果になりそうなものだが
この前説明出たろ mapは存在するインデックスに対してしか作用しない 従って空配列に適応すると元と同じ長さの空配列が帰る
ああ、そうかわかった、ありがとう しかし空配列って紛らわしい言葉だな 他に言い様が無いのかもしれないが
parseIntだと内部的にString(index)してparseすることになるからNumberの方がいいね
箱の大きさと中身は別だからね
var arr = Array.apply(null, Array(10)).map(Function.prototype.call, parseInt); for (var arr = [], i = 0; i < 10; i++) arr[i] = i; どっちが高速で分かりやすいかよおくわかんだね
よおくわかんだねってどこの言葉だ?
655 :
644 :2013/10/28(月) 17:08:35.95 ID:???
なるほど、存在している要素に対してのみ作用するmapに対し、 Array(10)で生成すると配列はlengthプロパティが10になるだけですが、 Array.apply(null,Array(10))で生成するとlengthが10になるだけではなく きちんと要素のそれぞれが初期化されるので、うまく動く、と言うことですか。 なんというかトリッキーな仕様ですね。 皆さん回答有難う御座いました。
ES6 var arr = [for(i of Array(10).keys()) i];
最短は多分こうだな var arr = [...Array(10).keys()];
keys も map 同様に存在しないインデックスを無視するような予感
keysのイテレーターはただ0からlength-1までのイテレートするだけ
それはどうかな
どうかなも何もそういうもんだ
bp = Object.create(HTMLButtonElement.prototype) bp.createdCallback = function(){ console.log('testA') } Btn1 = document.register('btn-1', { extends: "button", prototype: bp }) btn = document.createElement('button', 'btn-1') /// log 'testA' bp.createdCallback = function(){ console.log('testB') } btn = new Btn1 /// log 'testA' ↑ここでtestBとなって欲しいのですが Chromeでそうならないのは仕様通りでしょうか?それともバグでしょうか?
どの仕様に載ってましたか?
計画どおり
>>664 どこにも載ってないから何が起こっても仕様どおり、以上。おわり。
すみません 答えてもらえるのはありがたいのですが 本当に真面目に話して貰えたらもっと嬉しいのですが
訳の分からない質問をするのが悪い
じゃあバグってことで
radioボタンのonchangeは 各ボタンにonclickとonfocusを付けるみたいですが もっと簡単にする方法ないですか?
onchangeでOK
674 :
Name_Not_Found :2013/10/30(水) 02:17:41.60 ID:2jQba0nS
フォントの大きさを変更できるようにした時 最小サイズ、最大サイズは何ピクセルにすればいいですか?
モーダルウインドウに設置したフォーム要素にタブキーで移動できません 原因は何が考えられるでしょうか?
モーダルウインドウ制御のためのonkeydownで preventDefaultしていたからでした。 コントロール用のキーは生かしておかないといけないんですね〜 失礼しました
モーダルウインドウ表示時に、 タブキーを押下してもモーダル以外のフォーム部品には フォーカスが当たらないようにすることはできますか?
639 自分:Name_Not_Found[sage] 投稿日:2013/08/24(土) 09:08:37.02 ID:??? タブって、li要素にaタグを入れるケースが多いようですが aタグ必要あるんですか? li要素にid持たせればどこがクリックされたか分かるのでいらないと思うのですが・・ という質問を以前した者ですが、 aタグを設置するのはタブキー移動させるためだと分かりました ありがとうございました
>>678 の件ですが、
モーダルウインドウを表示する時に、
フォーカスを取る要素のtabindexを-1にすることで、
フォーカスを取らないように出来ました。
具体的な要素としてはa,button,input,textarea,selectです
ですが、タブキーを押していると、
ロケーションバーと画面内要素の間に、どこかにフォーカスが当たっているようなのです
しかしそれらしき部分はありません
何に当たっているのでしょう?
ブラウザはchromeです
<a href="#">hoge</a> のような単純なHTMLでも、aタグとナビゲーションバーの間に、1ステップ入ります もしかして「何にもフォーカスしていない状態」が入るということでしょうか?
モーダルウインドウの後ろにキーイベントが突き抜けてしまうので やはりpreventDefaultした上でシミュレートしようかと思います しかし使用頻度がそこまで高くはないと思われるキーボード操作のために そこまでするべきなのかどうか? そこまで気を使ってますか?
自分が知る限りトップクラスによく出来ているtweetdeckでも タブキー操作までは気を遣っていないようです 悩ましい( ´~ `)
Object.createはバグがあるから使っちゃいけないって記事は1つだけ見かけましたが その反論記事はみかけません このスレの先輩の見解を教えてください
そんな誰にも知られていない珍論への反論なんてあるわけないじゃん
仮にどこかの環境でバグがあっても他により良い代替作がないから使わないほうがいいとかはない むしろ挙動が不安定なのはObject.prototype.__proto__の方
>>687 Object.create にバグがあるとはどこにも書かれていない
読解力を養うべき
Object.createは
>>662 みたいに先進的なAPIで活用されるから避けられない
でも継承のために使うのがちょっとアレで__proto__の方が使いやすいというのは確か
そもそもES6からはclass構文を使うのが一番いい
挙動がおかしいのはバグというべきではないでしょうか?
>>691 仕様通りの動作ならバグではない
そんな主観的は定義にしたら人によってバグの判断が変わる
挙動がおかしいのは仕様または実装バグだろ 仕様実装ともにObject.creteがおかしいとは思わんが
>>687 この記事めちゃくちゃだな
そもそもcreateの第2引数はプロトタイプでもprototypeでもないし
普通のメンバ集合オブジェクトですらなくてディスクリプタじゃないといけないんだから
もうやってることがわやくそ
>>687 書いてある事柄の中から正しい事を見つけるのが困難なレベル
つうか記事がめちゃくちゃだと思うなら直接コメントしてこいよ どうせお前らの知識じゃ打ち負かされるから怖くてコメントすらできないんだろうけど
どうして記事がめちゃくちゃだと思うなら直接コメントしてこなければいけないのかね?
>>687 に信用出来ない記事だと伝えるだけで十分では?
もしコメントしたほうがいいと思ったのなら自分がすればいいのにね?変なの
おかしいと思うんだから指摘すれば良いじゃん
とにかく2014年にXPが切れるじゃないですか そうしたらVistaのIE7にあわせないといけませんよね IE6とIE7ってあんまりかわらないですよね 現状はES5を使う必要はあるのでしょうか?
VistaはIE9使えるからXP終わったらIE8以下切捨てでいいんじゃね もうattachEventは寝かせてあげようぜ・・・
xpでもchromeやfirefoxは入れられるんだから 現状でも古いIEになど対応する必要ないよ
JSON.parseは内部でevalを使っているのになぜ素でeval()したときより パフォーマンスがいいのですか?
704 :
Name_Not_Found :2013/10/30(水) 18:20:51.55 ID:X+S/5nds
JavascriptとPHPの混ざる話でどこで質問していいかわからず ここで質問させて頂きます。 PHPの変数をJavascriptに受け渡して使用しようと考えています。 PHP側で $foo = "Hellow world"; としてJavascriptで var hoge = <?php echo $foo; ?>; とすると uncaught SyntaxError: Unexpected token < というエラーがでました。 var hoge = '<?php echo $foo; ?>'; とクォーテーションをつけると エラーはなくなりましたが、console.log(hoge); で表示した際に<?php echo $foo; ?>とそのまま出てしまいます。 何か解決方法はありませんか?
var hoge = Hellow world; これではおかしいだろ
PHPとJavaScriptで変数を受け渡すってなんだ?
あんまりPHPに詳しくないが、無理やりやるならこうか <script><?php echo "var hoge='$foo'" ?></script>
そのまま出てしまうならPHPがパースされてないんだろ JSは関係ない PHPの問題
>>705 が答えだろ?
$foo = "\"Hellow world\"";
これでいいのかな?
var hoge = '<?php echo $foo; ?>'; これでなぜphpが展開されないのかが問題
JavaScript関係ないしPHPスレ行ってくれよ
>>709 答えじゃねーよw
そこも間違っているが問題はそれ以前にある
PHPファイルがPHPとして実行されてないから多分サーバの設定が間違ってる
>>704 自身の後の方ので問題なく展開される。
JSとは関係無いからあとはPHPスレでも行ってくれ。
折角普通の質問が来ても蔑んでしまうようじゃあ 荒らしに居座られても文句は言えんな 他の質問スレはもっと優しくて親切だぞ
他の質問スレでもスレ違いは普通に誘導するわ ほぼ答えも添えてあるだけここの方がマシ
同じ人間とは思えない発言だなそれ
「普通の質問」って何だよw 質問がハイレベルすぎて頓珍漢回答しか出てこないのを 質問者に指摘されたら回答者が逆ギレしただけで 質問自体はもともと普通だっただろ
↑普通じゃない見本の提示 ありがとうございました
JavaScriptと関係ないんでPHPスレ行ってね
HTMLやCSSのことも度々教えるんだし、 スクリプトの書き出し程度は臨機応変にこのスレで扱った方がスムーズだと思うけどな じゃないならWeb板に立ってる意味が無い
プログラマは臨機応変なんてできない ひたすら言われたことをやり続ける奴隷
別に多少のスレ違いなんて気にしないよ 気にするのはD級以下のプログラマーだけ
まあともかく、PHP自体が動作してるのかまず確認すべきだと私も思うな。
ここはPHPで文字列の出力という超基礎的な質問も扱うスレだっけ? じゃあRubyとかPythonとかJavaとかScalaの質問もOKだよな?
ガキの屁理屈かよw
>>725 WebとJSに関係が有ることならなんでもいいよ
WebAPIの仕様とかJSと直接関係してないし、その辺は全部含む
ただし誘導してくれる場合はそれに従ったほうが多いと思うよ
728 :
704 :2013/10/30(水) 23:54:39.97 ID:???
皆さんありがとうございます。 次からはもっと確認してから質問しますね。 PHPは動いていたので原因はApacheの設定で addtype application/x-httpd-php の中に.jsを含んでなかったことでした。
生のJSソースにPHP埋め込むのかよ PHPの世界じゃそんな無茶が普通なのか
動的に書くか静的に書くかの違いでしかない
今日のGoogleのロゴすごいけどこれcanvasだよね? もっと重そうなイメージあるのにこんなぬるぬる動くのか
映像が動くんだからこんなのお茶の子さいさいだろ
公式が作ってないのは確かだな 日本語リファレンスページくらいjquery公式が提供しろよ
>>735 たいして変わらないじゃん
何故ジャップはリファレンスに広告を貼るのか
枯れ木も山の賑わい
>>682 の件ですが、
タブキーでのフォーカス遷移はシミュレート出来ましたが、
エンターキーのシミュレートはどうすればいいのでしょうか?
エンターキーはフォーカスのあるコントロールによって挙動が変わるので
かなり悩ましいです
結局
>>687 の
var prototype = {"f" : function(){}};
var child = Object.create(new Object, prototype);
var other = Object.create(new Object, prototype);
child == other;// -> false
child instanceof Object;// -> true
child instanceof prototype;// -> false
の最後をtrueにしたい場合はどうしたらいいんでしょうか?
>>741 ありがとうございます
でもそのデモページでモーダルウインドウを開いてからタブキーを押すと
フォーカスがどんどん他の部分に移っていきます
chromeですが
モーダルウインドウ上のコントロールにフォーカスがある時には 特定のキーではpreventDefaultしない、で出来たっぽいです ありがとうございました
>>743 Chromeのバージョンは?
上に警告が出てる場合はポリフィルだからそのようには行かないよ
Chrome32で見ればOK
>>737 > たいして変わらないじゃん
目悪いのか?
害悪サイトはjQuery 1.4という古代のバージョン用
Defferdはもとより、今標準で使われており、
jQueryを使うときには必須のon()のことすら書いていない。
そういうことなら何が問題かを先に言えよ 金玉腫れ夫
constructorはどんなときに使うのでしょうか?
オブジェクト名を知りたい時かな
コンストラクタ名だろ
ドフラミングまじ許せねえ!ちょっくらドレスローザ行って来る
752 :
Name_Not_Found :2013/10/31(木) 12:03:36.87 ID:bgsPWM49
チェックされたcheckboxのIDを取得して、そのIDと同じ名前の配列の内容を表示させたいのですがどのように書けばいいのでしょうか・・・ <form name="list"> <label><input id="a01" onclick="pcheck(this.id)" type="checkbox" />a01</label> <!-- チェックボックスはたくさん続きます --> </form> <script type="text/javascript"> var a01 = ['a01の内容','b']; var a02 = ['a02の内容','c','d','f']; // チェックボックスと同じ数だけあります function pcheck(id){ if(docments.getElementById(id).checked){ } } </script>
753 :
Name_Not_Found :2013/10/31(木) 14:26:27.49 ID:bgsPWM49
eval関数で無事表示させることが出来ました。 上記文章でdocumentがスペルミスしていました。お恥ずかしい・・・
Object.createのことがだいぶわかってきました Klass = {prototype:{a:1,b:2}}; inst = Object.create(Klass.prototype) assertTrueinst instanceof Klass) //Error! この時trueにするにはどうすべきでしょうか
756 :
Name_Not_Found :2013/10/31(木) 17:19:44.12 ID:dPmLYeJo
現在、次のようにhogeの値によって表示するURLを変更しています。
-----------------------
<script>
<!--//
if(hoge == 1){
burl = "
http://example.com/1/ ";
}else if(hoge == 2){
burl = "
http://example.com/2/ ";
}
//-->
</script>
<a href="javascript:void(0);" onclick="this.href=burl;">クリックしてください</a>
----------------------------------------------------------------
これをhogeが1の時は「<a href="javascript:void(0);" onclick="this.href=
http://example.com/1/; ">クリックしてください</a>」が表示され
hogeが2の時は「<a href="javascript:void(0)" onClick="window.open(
http://example.com/1/, 'subwin','width=400,height=300');">小窓が開きます</a>」が
表示されるようにしようと思い次のような文を作りました(実際はもっと色々やってみた)が駄目でした。
どのようにしたらよいでしょうか?
-----------------------
<script>
<!--//
if(hoge == 1){
document.write('<a href="javascript:void(0);" onclick="this.href=
http://example.com/1/; ">クリックしてください</a>');
}else if(hoge == 2){
document.write("<a href='javascript:void(0)' onClick="window.open(
http://example.com/2/, 'subwin','width=400,height=300');">小窓が開きます</a>");
}
//-->
</script>
>>747 > そういうことなら何が問題かを先に言えよ
見ればわかるだろ。
トップにニュースとして、jQuery1.4.0リリースって
書いてるの見えないのか?
1つ2つ前ならともかく、これだけ古くてサイトも
更新されてないのを見れば役に立たないとすぐにわかるだろ。
>>754 function Klass() {this.c = 3;}
Klass.prototype = {a: 1, b: 2};
var obj = new Klass;
assert(obj instanceof Klass); // ok
var obj2 = Object.create(Klass.prototype);
assert(obj instanceof Klass); // ok
Object.create(hoge)は{__proto__: hoge}を作るだけ
これはコンストラクタ関数をnewしたときに最初に行われることと同じ
(それがコンストラクタのthisにあてがわれる)
上のコードだったらobjとobj2の違いはcプロパティがあるかどうかだけ
あとinstanceofの右辺はオブジェクトじゃなくて関数(コンストラクタ)ね
if(var i = hoge) みたいな感じに、変数hogeが存在してたらiに入れるという事をif()の()内で一気にやる事は出来ないんでしょうか?
>>758 そういう場合はわかるのですが
Klassを関数にしてしまうとObject.createを使わなくてもnewで良くなってしまうので
関数を呼ぶ必要がない時にKlassをオブジェクトにしてprototypeをコンパクトに収納して
そのときでinstanceofをどう使えばいいのか教えてもらえますか?
>>759 何がしたいのかわからん
もっと具体的に
>>760 コンストラクタがないなら右辺に関数を取るinstanceofは使えないね
代わりにisPrototypeOfを使えばいいよ
var base = {};
var derived = Object.create(base);
assert(base.isPrototypeOf(derived));
もちろんさっきの例でもisPrototypeOfを使える
assert(Klass.prototype.isPrototypeOf(obj));
instanceofは別に関数じゃなくても使える
764 :
Name_Not_Found :2013/11/01(金) 06:10:49.87 ID:u7HFMlqQ
JavaScriptとPHPを使って文字列の暗号化/復元化をしたいと思ってます。 どのようにすればよいでしょうか? ライブラリ等があれば教えてください!
>>750 var a = new Array();
console.log(a.constructor);
これによりaが「Arrayオブジェクト」だと分かる
コンストラクタはオブジェクトと同じ名前というだけで
オブジェクト名の方が本質
はい論破
せやねせやね
preventDefault()はどのタイミングで実行した方がいいですか? 1 ハンドラ処理開始時 2 ハンドラ処理終了時
ケツかアタマならどっちも分かりやすいと思うけど まあそこから関数呼んだりするようならアタマ 短いのならケツが雰囲気いいんじゃない?
>>763 ES6からただのオブジェクトでも良くなったのか
これでプロトタイプベースが捗るな
>>768 デフォルトアクションを無効にしてもいいと判断できるタイミング
>>772 何でキチガイに触んの?
やめてくんない?そういうの
このSDKを使うとデベロッパは、AmazonのS3ストレージサービスを直接呼び出したり、 メッセージキューSQSにリード/ライトしたり、SNSでモバイルの通知を生成処理、 NoSQLデータベースDynamoDBにアクセス、などなどのことができる。 ってクライアントからDBに好き勝手なデータを書き込まれたりしないの?
クライアントでできることは極力クライアントでする ページ遷移も減らして複雑な繋がりを作らないことがコツだね
>>772 だから何なんだw
書き換え可能だからオブジェクト名でないというのなら
コンストラクタ名ですらないだろ
デバッガ起動して変数値を書き換えてDBに書き込まれたりしたら困るじゃん? 向こうにアプリケーションサーバがあるならそこでバリデートできるけど。 どういう仕組みだろう?
>>777 このオツムの弱い奴はもうほっとけ
ここは分かろうとする気があるものに教えるスレだ
ここまでキチガイっぷりを晒せば質問者も流石に察しただろう
それで十分
つまりどういう時にconstructorを使うんですか? オブジェクト名が分からないようなコードを書くことってありませんよね?
コンストラクタを知りたい時 それしか無い
受け取ったオブジェクトのオブジェクト名をロギングしたい時とか
クラス名のことを言いたいんだろう みんな察してやれ
?
!
JavaScriptによるDynamoDBへのアクセスってまじでどういう仕組みなんよ それとも改竄されてもいいようなデータを扱うのかな?
788 :
764 :2013/11/01(金) 11:46:39.24 ID:u7HFMlqQ
どなたかお願いします
>>788 もっと具体的に何をしたいのか書かないと答えようが無い。
>>788 JavaScript側は先端ブラウザならcrypto.subtleで出来る
PHPでも何らかのモジュールで頑張る
URLエンコードでok
多重にネストされた配列があります その最大の深度を知るにはどうしたらいいですか?
if (a[0] === Array){ if(a[0][0] === Array){} }
よく分かりません できればlodashでお願いします
>>792 var MaxDeep = (x, d=0) => Array.isArray(x) ? Math.max(++d, ...x.map(v => MaxDeep(v, d))) : d;
MaxDeep(0) //0
MaxDeep([[0]]) //2
MaxDeep([1,[2,[],3],4]) //3
やっぱりCoffeeScriptって書けるようになったほうが良いですか?
物は試し 質問する暇があったらやってみる
既存の関数を書き換えるのにevalやnew Functionを使う方法がとられることが多いですが それ以外ではなにか方法ってないですか?
文字列上の関数を興したいのならそれらがベストな方法
function a(name){this.name = name;} var test = new a("abcde"); test.name; クラスみたいな感じのこういう風にかけるじゃないですか こういう風に書くメリットってなんですか?
p1 = new Person("Taro") ってすると人のオブジェクト作るんだってはっきり分かんだね
それがメリット
CSって何?クライマックスシリーズ?
それこt・・
808 :
Name_Not_Found :2013/11/01(金) 20:57:44.28 ID:arc8ZcX6
http://example.com/hoge は、任意のタイミングで更新されます。
下記のスクリプトでは、最初に読み込んだ時の情報は読み込めますが、
hogeファイルが更新された時の情報が読み込めません。
hogeファイルの更新に合わせてURLと文言を変えたいのですが、どのようにしたらよいでしょうか?
<script src="
http://example.com/hoge " type="text/javascript" language="javascript"></script>
<script>
<!--//
if(a.hoge == 1){
url = "
http://example.jp/saitama/ ";
document.write('<a href="javascript:void(0);" onclick="this.href=url;">さいたまにジャンプします</a>');
}else if(a.hoge == 2){
url = "
http://example.jp/gunma/ ";
document.write('<a href="javascript:void(0);" onclick="this.href=url;">ぐんまにジャンプします</a>');
}
//-->
</script>
websocket使え
サーバー側でファイルを監視してWSで配信する
lodashのsortByってクイックソートですか?
Array.sortってjsperfでクイックソートより遅かった記憶がありますが 内部でクイックソートで実装すればいいだけでは? しない理由は何ですか?
>>812 クイックソートは安定じゃない(同じ順位の値の順番が保証されない)から。
値が同じ要素の並びが入れ替わることがあるんですか? たしかにそれだと問題があるケースも出てきますね 最大公約数を取ったということか ありがとうございました
lodash lodashうるせえよks 過疎知名度ライブラリの宣伝してんじゃねえよ 作者乙!!!!
過疎知名度ライブラリって 日本語不自由すぎだろ
遅いのは関数呼び出し部分だったんですかー なるほどなるほど ありがとうございました
ECMAScriptで安定ソートするメソッドは定義されないのかな
ECMAの読み方はイークマでいいのですか?
hasOwnPropertyってlodashにないんですか?
ES5にもともとある
824 :
Name_Not_Found :2013/11/02(土) 08:29:03.02 ID:y9w6XlSy
Objectの複製のやり方を教えてください
JSON.parse(JSON.stringify(obj))
_.clone
827 :
Name_Not_Found :2013/11/02(土) 09:10:13.46 ID:y9w6XlSy
出来ましたってw それはトリッキーなだけでいい方法じゃないからやめた方がいいよ
>>824 完全に汎用的な方法は無いからどういうオブジェクトか詳しく書くといいよ
何故(function(){
関数宣言(文)と関数式(式)の違い
CTRL+左クリックでバックグラウンドでリンクを開くことが出来ますよね JavaScriptでウィンドウを切り替えないでリンクを開く方法ありませんか?
なぜかといいますと、 RSSから読みたい記事を一々CTR+左クリックして開いていくのが面倒くさいので ぶっくまーくれっとで読みたいのを片っ端から裏で開いておきたいんです
無いんじゃね その辺ブラウザ、またはOS依存だと思われ
関数呼び出しのコストが高いので getX getY を getPosition にまとめましたが、array生成コストが高くてかえって遅くなりました array生成は関数呼び出しより高いのでしょうか
エンジン次第でJSとは関係ない 答えがない質問はするな ガキじゃないんだから分かるだろ
関数呼び出しより配列生成の方が軽いエンジンがあるとでも? そんなものはないと思いますが?
皆さん昔は必死に書いたJSのコードをパクられないように隠そうとしたことありましたよね?
>>834 ブックマークレットよりかはユーザスクリプトを作る方向でいくほうがいいとおもう。
馬570 84 328
俺より先に 呼び出してはいけない 〜関数宣言
エラーメッセージの中に設定の値を書きたい時がありますがどうやりますか? 「最大階層数は{MAX_LEVEL}です」 みたいなかんじです
>>845 の件ですが、
lodashの_.templateでvariableを使えば設定値を実行時に入れ込めそうです
lodash最高ですね(´ω`)
ありがとうございました
>>845 String.row`最大階層数は${MAX_LEVEL}です`
http://blog.livedoor.jp/dankogai/archives/50816979.html addListener(element, 'click', getUserNameById);
function getUserNameById(e) {
var id = this.id;
// idを処理
}
と書くと、ブラウザー依存コードが出来てしまいます。thisに何が入るかはブラウザーによって異なるからです。
以下のように橋渡しコードを書けば、それが解決します。
function getUserNameById(id) {
// idを処理
}
function getUserNameByIdBridge (e) { // これで橋渡し
getUserNameById(this.id);
}
addListener(element, 'click', getUserNameByIdBridge);
これの違いが分かりません。thisの挙動が変わるんですか?
自己解決しました
setTimeoutと比べたlodashのdelayのメリットって何ですか? まったく同じなような?
オブジェクトをフラグのコレクションとして使いたいと思います 必要なのはキーだけなので、データは何でもいいです 一番メモリ使用の少ないデータは何でしょうか?
整数
booleanじゃないの?
null
・登録した関数を一秒後に実行 ・実行される前に再登録されたら、時間は後ろにずらす ・同じ関数である限り、実行されるまでに何度登録されても、実行は一回だけ こういう処理をしたいのですが、どうするのがいいですか? ライブラリにありますか?
そんなのライブラリにするまでのものじゃないじゃん
lodashにありました\(^o^)/ function hoge(){ console.log("hoge"); } var a = _.debounce(hoge,1000); a(); a(); a(); a(); a(); このように何回呼び出しても一回しか実行されない関数を作れるようです どういう仕組みか分かりませんがlodashすごすぎワロタ
やべえなlodash あなたもわたしも今日からlodash Yeah!!
関数を渡すとラップした新しい関数を返すアプローチが新しい感じがします
lodashの宣伝うぜえ
アンチに効いてるw効いてるw
配列の要素のダブリを無くすにはどうするのがいいんですか?
ダブリの部分をダブリ無しで得る方法も教えて下さい
解決までの時間が短すぎる lodash宣伝の為の自作自演としか思えない質問が多い
NO 宣伝って作者どんだけ日本語に堪能なんだよw
>>866 lodashなら簡単にできる
ドキュメントを読んでね
どこを読んだらいいのか教えてください
var arr = [1,2,2,3,4,5,5,5]
>>864 var uniq = [...new Set(arr)] //[1,2,3,4,5]
>>866 var dup = [...new Set(arr.filter(v=>arr.indexOf(v)!=arr.lastIndexOf(v)))] //[2,5]
そう、loadashならね そう、loadashなら、UVを計測できる そう、loadashなら、無料で写真集を作れる そう、loadashなら、フォトブックを無料で作れる そう、loadashなら、銀行口座やクレジットカードを簡単に管理できる ぼっちでも友達ができる。そう、loadashならね
変な書き方するのやめてください
こっちの方がいいか var dup = [...new Set(arr.filter((v,i)=>i!=arr.indexOf(v)))] //[2,5]
今のJavaScriptで使えない書き方されても困ります 真面目に教える気あるんですか?
Firefoxで普通に使えるがな
FirefoxでもIEでもoperaでもChromeでもSafariでも使えるJavaScriptを 書いてください
866ですが、どこで動くとか拗れた話は置いといてまずはきちんと何がどうなのか説明してくれませんか? どうかお願いですから質問者を置いてけぼりにしないでください 具体的なコードを示してもらうほうがないよりよくて よく分からないコードよりも、分かるアルゴリズム解説のほうがありがたいです
lodashのドキュメント読めって言ってるだろ それでわからんのならプログラマ向いてないから諦めろ
lodasher4ね
いや、マジで天からの贈り物のlodashがあってもできないようならプログラマ失格
少しも頼りにならないので自分でなんとかすることにします ここで聞こうと思ったのが間違いでした どうもありがとうございませんでした
>>880 それじゃ質問スレの意味がないだろ
お前がドキュメントを読んで答えろよ
はい次の方どうぞ〜
最近質問スレ舐めたやつが多すぎないか? ドキュメント読めっていうの禁止ってテンプレに書いといて
>>884 ,886乞食お断り
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
いいから早く教えてください
>>888 (8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。
setTimeoutをするたびにIDがインクリメントされていきますが これが整数で扱える範囲を越えたらどうなるのでしょうか?
仕様通りならbignumなのでInfinityまでいきます
じゃあそこまで行ったらどうなるんですか? また1に戻って再利用されるのでしょうか
>>866 > ダブリの部分をダブリ無しで得る方法も教えて下さい
var a = [1,2,3,1,3,1,3];
どれがいいかねぇ。
var count = _.countBy(a);
var b = _.uniq(_.filter(a, function(num) {return count[num] > 1}));
一行で書いてみる
var b = _.uniq(_.filter(a, function(num) {return this[num] > 1}, _.countBy(a)));
こんな方法
var b = _.compact(_.map(_.countBy(a), function(c, k) {return c > 1 ? Number(k) : null}));
メソッドチェーンで
var b = _(a).countBy().map(function(c, k) {return c > 1 ? Number(k) : null}).compact().value();
アロー関数を使いたいならどうぞ。
var b = _(a).countBy().map((c, k) => c > 1 ? Number(k) : null).compact().value();
もう少しシンプルに書けないかなぁ。indexOf系は遅そうなので却下。
>>892 数に限りはないからメモリを埋め尽くすまで内部数値は常に増えて
JS側は一定以上はずっとInfinity、メモリが確保できなくなるとエラー
これが理想的な実装
どうせlodashの記事書いてるからググって自分のブログに誘導したいんだろ ロダッシャーきめえ
>>893 アンダーバー等のライブラリはなしでお願いします
それこそ俺のライブラリならA(a)でいいよとも言えるわけですし、参考になりません
indexOfはかなり速いよ SMIArrayとかならforループより速い
>>896 うん。だから同じものを実装すればいいよ。
ソースコード公開されてるんだから楽でしょ。
>>897 いや、配列が大きい時、indexOfで検索すると、
例えば値が見つからない時に、
配列全てを走査する必要がある。
その配列走査が1回で済むのならいいけれど、
>>874 のコードでは、配列の数だけ
走査することになる。だから遅い。
forループとの比較の話ではない。
ダブリを見つけるというアルゴリズム自体の話。
>>896 それは、
俺のライブラリを実装する VS すでにあるライブラリを使う
の大きな違いだなw
>>898 意味がわかりません
あなたは分かっているのでしょうが
解答者も最低限再現可能なコードと情報で示してください
それこそググれば分かると言ってるのと変わりません
>>901 ググればわかる。
も適切な答えの一つだからOKじゃね?
「俺のライブラリ」はググってもわからんがなw
>>899 lodashもindexofを使ってるしそれが理論的に最善なんだが
アンチ必死だなw
>>895 どんだけ遠回りかつ不確実な方法なんだよ
>>904 そりゃindexOfを使うのが適切なときは
使うだろうさw
でなくて、ダブリを見つけるアルゴリズムに
indexOfを使うなって話。
何度も言って欲しいのか?
lodashのuniqでも使われてるのか lodasherどうした?嘘つきか?
そりゃあ重複要素がないかはindexOf的仕組みを使うしか無いね 勝手にsortするわけにも行かないし、そんなもんだろうよ
これがlodashのuniqだ。 indexOf・・・どこに? function uniq(array, isSorted, callback, thisArg) { // juggle arguments if (typeof isSorted != 'boolean' && isSorted != null) { thisArg = callback; callback = !(thisArg && thisArg[isSorted] === array) ? isSorted : null; isSorted = false; } if (callback != null) { callback = lodash.createCallback(callback, thisArg, 3); } return baseUniq(array, isSorted, callback); }
>>908 indexOfを潰しても動いたから、
使ってないな。はい論破。
Array.prototype.indexOf = null;
console.log(_.uniq([1,2,3,1,3,1,3]));
>>910 ,911
baseUniqで使われてる
標準のじゃなくて同等の関数を自作して使用してる
その同等の関数ではindexOfは使われてないんだが。 遅いからねw
> 874 名前:hikaru02[sage] 投稿日:2013/11/03(日) 13:29:45.67 ID:??? > こっちの方がいいか > > var dup = [...new Set(arr.filter((v,i)=>i!=arr.indexOf(v)))] //[2,5] 標準のArray.prototype.indexOfは遅いから使うなって話らしいよw
>>915 そんな話の流れになってないのに、必死だねw
何を見てindexOfって言ってるんだろうか? まさかindexOfって関数名を見て実装も見ずに、 これはArray.prototpye.indexOfと 同じだって思ってるのかな。 中をよく読めば、Array.prototpye.indexOfとは 似て非なるものだってわかるはずなんだが。 だからこそlodashはArray.prototpye.indexOfを使わなかったんだよ。
どうせindexOfで開発決めてるから書いたんだろう そうでなければ、態々「遅そうなので却下」なんて書かないだろう 馬鹿であるまいに
例のmapと同じで標準のindexOfはキーの存在も考慮するから ただのループでの実装とは別物だよ 比較すること自体がナンセンス [,].indexOf(undefined); //-1 baseIndexOf([,],undefined); //0
うん、だから最初っから 標準のindexOfは使うなって話なんだが。
> 908 名前:Name_Not_Found[sage] 投稿日:2013/11/03(日) 15:20:05.97 ID:??? > lodashのuniqでも使われてるのか > lodasherどうした?嘘つきか? 使われていませんでしたねw
ここは質問者の質問に答えるスレで屁理屈で駄々をこねるスレではありません
ライブラリ厨は
>>852 の隔離スレに即刻退去しなさい
もはやテンプレ修正論議してる暇はないけど、隔離スレはあるんだから皆でそっちへ 誘導したってください。
テンプレ書き換えたほうがいいのかな 情報不足名質問が多すぎるわ
>>924 そんなこと言っても全く効果ないと思うけど、
自分の思うとおりになってくれないのをみて
ムカついたりしないの?
最近というか結構前からユーザスクリプト使いが増えたのか、JQuery関連の質問減ったね テンプレにもユーザスクリプトならそう書くように明記させた方がいいんじゃね 混乱の元になりそうだ
ユーザスクリプトってなんだ? そういう言葉はあるが、お前違う意味で使ってるだろ?
煽るにしてももっとマシな事言えないのかね 調べようともしないのか
って、書いて思ったけど、質問スレで言う事じゃねーな、ごめん
【JavaScript】下らねぇ質問はID出して書き込みやがれvol.112
ライブラリの話題は荒れるから迷惑かけるがスレ移ってちょうだいな
いやです♪
テンプレにライブラリの話題はよそでと明記する方向で考えたらいいんでないの。 ライブラリの質問来たらそう指摘すれば質問する人が減るでしょ。したら燃料が減るから ご活躍の方も活躍する場面が減るわけで。
冒頭の行を次のように改訂するのでどうですか。 JavaScript を自ら学ぶ人のための質問スレッドです。 ライブラリの話題はよそで。
直線的すぎるw
>>931 勝手にやってるあんたは自治房じゃないわけ?
自分勝手に突っ走っていいなら今後はそうするわ
>>939 直線的なのが今回はいいかと思ったんだけど代案ある?
自治されると困るヒトが自治厨煽りしてるだけでしょ。スルーでいいじゃん。
Math.rand()が0になるってありえる?
>>943 そりゃあるでしょ。非常に低い確率だけど。 1.0になるとしたらバグだけどね。
じゃあ1行目だけ
>>938 のように直すということで?
オブジェクトから値で検索してキーを得るにはどうしたらいいですか?
obj = {a:1, b:2, c:3}; val = 2 key = Object.keys(obj).find(key=>obj[key]===val); //"b"
>>947 keysはIE8で動かないよ
アロー関数は新し目のFirefoxでしか動かないよ。
>>949 それくらい自分の好きに直して
後出し情報で偉そうにするのはNG
_.findKey({a:1, b:2, c:3}, function(num) { return num === 2} ); アロー関数版 obj = {a:1, b:2, c:3}; val = 2 key = _.findKey(obj,num=>num===val); //"b" (比較対象) key = Object.keys(obj).find(key=>obj[key]===val); //"b"
>>951 俺は質問者じゃないよ。
単に問題点を指摘しただけ。
>>949 lodashってそのままだとCSPに弾かれて使いものにならないからCSP対応ビルド使うんだけど
そうするとIE8とかじゃ上手く動かなかったと思う
nextメソッドなどで読むたびに次の要素を返す配列って lodashで作れますか?
CSPって何です?
Web屋ならContentSecurityPolicyくらい知っとけ
ググった所、なんか面倒くさそうです 面倒さを増やすだけのものなんて無視でいいのでは
>>955 なあ、おまえ。
lodashとかがの外部ライブラリを
直リンクで読み込んでんのか?
普通自分のサイトに置いて使うから
自作のjavascriptと同じで、CSPなんか
関係ねーだろ?
CSPが理解できてない奴がいるみたいだが CSPのデフォルトの設定だとeval系が禁止されるから それを使ってるスクリプトは動かない 他所とかそういう問題ではないな
ファッ!?lodashはevalなんて使ってんの?
使われてねえよwww狂言乙w
コスプって足かせにしか見えないんだが? 何が嬉しいの?
いろんな脆弱性への防壁
lodashディスのためにわけのわからんもん持ち出してきたアンチ乙
耳を疑った この板もレベル落ちたんかなあ……
関数が関数の中から自分自身を置き換えることはできますか?
日本語でおk
できる ただし関数名を用いたコールには効果があるが当然参照コールにはない
function hoge(){ var f = function(){ console.log("a"); }; hoge = f; } hoge(); これで出来てるようです ただjsbinで警告が出ます おそらくJSHINTを使っているのだと思いますが 警告を出さないようにする方法ありますか?
一回目のコールで関数オブジェクトのプロパティを初期化 二回目以降は初期化チェックもしない っていうのをしたいです
こうするのが定跡 var MyFunction = function(x) { InitMyFunction(); return MyFunction(x); }; function InitMyFunction(x) { ...... MyFunction = function(x) { ...... } ...... }
ありがとうございます 別関数にしなくてもこれでいけました\(^o^)/ var hoge = function (){ hoge = function(){ console.log("a"); }; return hoge(); };
相談です。 例えば3字ずつ文字列を分割して配列に分けようとしています。 var a=[]; for(var i=0;i<s.length;){ var t=""; for(var j=0;j<3;j++){ if(i<s.length){ t+=s[i++]; } } a.push(t); } ここまで作りましたが、 s = "ab𠮟cdef"; の時など、文字によって化けることがあるものだと知りました。 化かさない方法をご享受ください。
>>976 s = "ab𠮟cdef";
//ES5
s.match(/([\uD800-\uDBFF\uDC00-\uDFFF]?.){1,3}/g)
//ES6
s.match(/.{1,3}/gu);
//["ab𠮟", "cde", "f"]
>>976 var fn = function(str, num) {
var len = str.length,
i = 0,
arr = [];
for (; i<len; i+=num) {
arr.push(str.substr(i, num));
}
console.log(arr);
return arr;
};
fn('test', 3); // ["tes", "t"]
fn('マルチバイト文字列', 3); // ["マルチ", "バイト", "文字列"]
>>975 こういう関数を書き換えるテクニックをオライリーのJS本で読んだ記憶があるのですが
何だったか分かりますか?
>>978 全くうまく行きません。
fn("ab𠮟cdef",3);
>>977 こんなに簡単に!
できましたありがとうございます!!!
せやな そこまでして使ってるっていうんだからむしろ大ファンだろう
CSP対応のビルドって今はmodernビルドのエイリアスになってるよ。
mobileビルドはmodernビルド+Safari5.1未満対応
http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/ > The modern build also includes pre-compiled iteration methods,
>making it suitable for use in environments that enforce the content
>security policy. The csp build, previously recommended for this purpose,
>is now an alias of the modern build.
>The mobile build is based on the modern build, but includes additional fixes for Safari < 5.1.
>These are necessary for compatibility with Mobile Safari on iOS 5.
だからlodashのトップにおいてあるmodernビルドを使えばいいだけだね。
わざわざ自分でカスタムビルドを作る必要はない。
modernビルドがIE8で動かないのは、そもそもES5に最適化したのがmodernビルドだから。
デフォルトはlodash compatビルドだよ。
984 :
Name_Not_Found :2013/11/04(月) 12:29:46.31 ID:+8XA1Gxp
すいません、hoge.js(Answer.hoge)の中身を3秒おきに取得したいのですが、どうやったらよいでしょうか? 現在、下記のようになっており、hoge.jsの中を変えても、反映されません。 <script type="text/javascript" src="hoge.js"></script> <div id="strbiz">このタグの中身を書き換えます。</div> <script> <!--// var INTERVAL=3000; var COUNT_MAX=300; var cnt=0; function callback(value) { if (cnt > COUNT_MAX) { clearInterval(id); return; } if(Answer.hoge == 1){ document.getElementById("strbiz").innerHTML='<a href="javascript:void(0);" onclick="this.href=bizurl;">クリックしてください </a>"cnt"'; }else{ document.getElementById("strbiz").innerHTML='<a href=\'javascript:void(0)\' onClick="window.open(bizurl,\'subwin\',\'width=300,height=300\');">入力が間違ってます</a>'; } cnt++; } var id=setInterval("callback('value');", INTERVAL); //--> </script>
>>984 コードの書き方が古すぎる。
* hrefにjavascript入れるな
* onclick使うな
* setIntervalに文字列を入れるな
まずそこから始めよう
986 :
Name_Not_Found :2013/11/04(月) 12:46:30.58 ID:+8XA1Gxp
>>985 さっそくありがとうございます。自分の情報古いですね。
<script type="text/javascript" src="hoge.js"></script>
の中身を定期的に読み込みに行く処理はどうやったらいいか分かりますか?
わかるけど、コード汚くて読むきしねぇwww
まずは Script要素のtypeとコメントアウトを取ってくれ
>>988 コメントは省略不要だし、type属性もHTML5か不明なのに省略させちゃ駄目じゃないか
意味不、デファクトのコメントアウトがいいんなら 同じくデファクトでtype省略も問題無いだろ 矛盾し過ぎ
>>989 「省略不要」って要るのか要らないのか判りにくいぞ。
>>991 コメントアウトはポリシー次第だからどちらを選ぶかは製作者の自由だけど、何も言わずにコメントアウト不要はないと思った
個人的には古いブラウザを考慮して残すか外部JS化がいいと思うけどね
スクリプトを表示してしまうようなガラケーは ほぼ停波で消えたし考える必要ないな HTMLコメントについては今でもパーサーを新しくしているV8で 他の実装との差について触れられてたりするし 使わないのが何より吉 あと本番では外部ファイルが基本だけど ここに書くときは不要なものは全部取り去って埋めるのでいい それかどこかにあげる
>>990 > 同じくデファクトでtype省略も問題無いだろ
お前は何を言ってるんだ?
周りがやっていたら何でもやっていいと思っちゃうタイプなのか
typeはVBScriptと混在させて書いた時のIEでくらいしか関係ないな
>>992 ,994
何ムキになってんだ?
ただでさえ2chはソースコードが読みにくいから
ゴチャゴチャ書かない方がいいって言ってんだよ
>>987 に乗ってのコメントなの、分かります?
別に人のスタイルやポリシーにまでは口は出さないが
読む人の事を考えてってことだよ言わせんな恥ずかし
>>993 そうなんだよねえ
最近のブラウザならscript要素を理解しないブラウザはないから、という主張も理解できるから強くは反対できない
どちらの主張も理解できるから理由を述べた上で意見するべきだと思うんだよな
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。