+ JavaScript の質問用スレッド vol.104 +
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 中でやるとか。
あれれ、失礼しました。探したんだけど急いでたもので、、、
1乙
8 :
Name_Not_Found:2012/11/10(土) 22:30:12.56 ID:paVDlJuJ
1乙
素人なので申し訳ないのですが、
livedoorの2chのまとめブログのように、
最新記事の横に画像表示するにはどうしたら
よいでしょうか?
自分のブログはfc2ブログです。
CSSで調整できるとたすかります。
ブログやってる奴はまずhtmlからやってこい
Javscriptも入門で、htmlは中学生が1日で扱えるようになる程度だが
ブログはそれ以前
1日で扱えるっつっても、それが業務レベルで即戦力になるかどうかは別。
11 :
Name_Not_Found:2012/11/11(日) 01:23:21.33 ID:hV9GVKiK
1乙
11ゲットロボ(ry
12 :
Name_Not_Found:2012/11/11(日) 01:32:52.48 ID:Vcw++owf
ありがとうございます!
出来ました!
つまりブログやってる奴の知識とかそういうのは
中学生の一日に劣るって事だろ
<html></html>の部分だけで超える事ができるが
ブログって一番上まで戻るスクリプト配布されてから設置してる奴多いけど
要素の位置の取得とか、戻る前の位置を変数に格納する事が出来なくて上に戻るだけになってるのは笑える
HTMLを1日で覚えた中学生にページ作らせてもWeb黎明期の簡素でレガシーなんができるだけ
学校でパソコン使ってる時無限アラートでハッカーを自称してた思い出
ここもゆとりが多くなったなぁ
平成生まれも今じゃ社会人か・・・
口だけは達者でまったく役に立たない事を自覚しておけ
俺ゆとりだけどブロガーはカスだと思ってます
言われたことだけやる平成生まれの性格は
デジタルドカタに最適。
反骨心がなければ、ただの害獣ではなく
歯車の1つにはなるだろう。
へたに主体性を持っても反骨心しか出ないよ
>>19 40代の俺が言う
ゆとりは自由にやらせればプログラミングで遊ぶ
俺の世代は遊べと言われても遊ばない
若さ故かもしれないが、これからの柔軟な発想が必要な時代には適してる
プログラミングってパズルぽい楽しさがあると思うけどね。
割といい遊びでもあるんじゃない?
っていうかいつの時代でも
・趣味でプログラミングやってる奴
・大学で学んで就職してから本格的にやる奴
この二通りだ
趣味でやってる奴は知識がクソ深いし、HTML5が出てきた時も真っ先に飛びついて色々調べる
んだけど就職してからプログラミング必死に学んだ奴は何があってもそんな事はしないで仕事に必要な事しか身につけない
一生データベースに触れる事も無いだろう
富士通だろうが東芝だろうが福島原発だろうが後者の奴は後者のまま
師曰く「之を知る者は之を好くものに如かず、之を好くものは之を楽しむものに如かず」
エロの為。これが全て。
>>23 そういや、友人Kは児童ポルノを収集するためにjavascriptとphpで
画面遷移しない児ポ画像掲示板作ってたな
いつの間にかオレよりjavascriptとphpが詳しくなってしまった友人Kだった
脱衣麻雀の為に麻雀のルールとか勝ち方めっちゃ学んでた奴居たな
26 :
Name_Not_Found:2012/11/11(日) 18:45:55.84 ID:LmbLB7+X
まだ動画とかなかった頃
効率良くエロ画像を収集するためのプログラムを沢山作ったなー
もはや手段が目的を凌駕していたと思う
個人サイトでbmp上げたらキレられ
javascriptもあったらキレられた思い出
たった10年で良い時代になったもんだな
あと10年経過したらネットはリアルタイム的なものになると予想してる
node.jsみたいな
次の目標は嫁ロボ。
>>28 これだから平成は。。。
せいぜいArduinoのシールド合体させて頑張りなよw
うん、がんばるよ(Born in '76)
76年ならPIC16f84が使い慣れているか
昭和最後の63年生まれのゆとり世代のオレ登場
当時小学1年でwin95が初めて触ったパソコンだった。
95の時代ってJavascriptって当時なかったよな?
ほとんど覚えてないけど。
>>31 (・_・;)ナニソレ!?
PC88 とベーマガの思い出しかないわ。
思い出話はもういいよ
javascript勉強しはじめた小4のときはまだajaxとか登場してなくて
フォームの入力チェックと装飾くらいにしか使われていない時代だったから
いまだに今風のjavascriptの使い方に馴染めない
例えば配列をnew Array()じゃなくて[]で表現しちゃうとことか
無名関数を多用することとか
jqueryとか
ベーマガスレで当時好きだったゲームのことを語ったら、
数ヵ月後に作者が現れたのは嬉しかったな
ベーマガって懐かしいな
そんなスレがあるなんて知らなかった
もしかしてI/Oスレとかもあったのかな
>>35 同じだわ。何か取り残された感じだけど、困っていないのが現状。
Perlとかはモジュールバリバリ使っているんだけど、なんかJavaScriptは自分でゴリゴリ書いてしまう。
配列の長さが決まってる場合は、[] よりも new Array() の方が有効なんじゃない?
>>41 長さが決まってれば、引数にその長さが適応できるから、たとえば
var tmp = new Array(5);
for (var i = 0; i < 5; i++) {
tmp[i] = "hoge";
}
みたいにすれば、push を使わなくても配列に値を代入できるから
パフォーマンスが上がるかなと…。
そうですね()
これは為になった
えっ
2レスしか持たなかったか
決まってるからってnew Array使ってたら統一性がないだろ
var arr = []; arr.length = 5; でおk
おかしいなあ、洩れの使ってるブラウザがおかしいの?
<!DOCTYPE html><html><head><title>???</title><body>
<pre><script type="text/javascript">
var t0 = new Date().getTime();
for(var i = 0; i < 1000; ++i) {
var a = new Array(10000);
for(var j = 0; j < 10000; ++j) { a[j] = j; }
}
var t1 = new Date().getTime();
for(var i = 0; i < 1000; ++i) {
var a = [];
for(var j = 0; j < 10000; ++j) { a.push(j); }
}
var t2 = new Date().getTime();
for(var i = 0; i < 1000; ++i) {
var a = [];
for(var j = 0; j < 10000; ++j) { a[a.length] = j; }
}
var t3 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1) + ", " + (t3-t2));
</script></pre></body></html>
結果は「229, 508, 308」ですた。
>>49 ローカルスコープで試したら結果か変わると思う
スコープが深い程顕著に差が出るはず
function test() {
var t0 = new Date().getTime();
for(var i = 0; i < 1000; ++i) {
var a = new Array(10000);
for(var j = 0; j < 10000; ++j) { a[j] = j; }
}
var t1 = new Date().getTime();
for(var i = 0; i < 1000; ++i) {
var a = [];
for(var j = 0; j < 10000; ++j) { a.push(j); }
}
var t2 = new Date().getTime();
for(var i = 0; i < 1000; ++i) {
var a = [];
for(var j = 0; j < 10000; ++j) { a[a.length] = j; }
}
var t3 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1) + ", " + (t3-t2));
}
test();
としたけど 221、514、316 ですた。どれくらい深いスコープに
したら変わるというご主張?
54 :
Name_Not_Found:2012/11/12(月) 18:28:47.16 ID:NK/gCriq
>>52 2 x 2.26GHz Quad Xeon
MacOSX10.6
Firefoxで
466, 769, 555
Safariで
286, 471, 369
Chromeで
40, 72, 130
Chrome速え…で、Chromeだけ
a[a.length] = j が push(j) より遅いですな
>>52 Core 2 Duo 3GHz Vista
Firefox16: 117, 100, 125
IE9: 46, 144, 167
Safari5: 90, 394, 148
そろそろ買い替え時か
56 :
Name_Not_Found:2012/11/12(月) 20:03:05.51 ID:NK/gCriq
57 :
Name_Not_Found:2012/11/12(月) 20:04:30.00 ID:NK/gCriq
>>55 FirefoxとIE9で
3つ目がもっとも遅いのが興味深いですな
結局配列はnew Array()が最速なのか?
これの場合何が最速なんてブラウザによって変わるんで、気にしない。
読みやすさを優先するのが吉だと思う。
a.push(42); // 正解
a[a.length] = 42; // ← 筋が悪い。何やらせてもトロ臭い駄目なタイプ
その程度の速さは0.000000001秒ぐらいだから気にすんな
正規表現もRegEXP使った方が早い早いってリファレンスでも言われてたけど
速度全く変わり無かったし、そんなもん
>>60 前者の方が一目で解るし綺麗だからな
単にpush知らないだけかもしれんが
>>58 だねえ。ちょっと驚いた。ArrayもObjectなので変わらないかと思っていたよ。
長さ指定で生成すると、その範囲内に高速アクセスするメモリが確保されるってことかなあ。
実装次第だろうけど。
まあ、色んな配列やり方試して少しでもパフォーマンス上げるのはいいけど、
ブラウザによっても違うだろうし、それほど変わらないから、
それだったら jQuery 使わないやり方を覚えた方が速さを実感できる。
65 :
Name_Not_Found:2012/11/12(月) 21:11:27.29 ID:LusMrap2
AAA アメリカ → OK
AAA アメリカ → NG
半角スペースでsplitしてそのここの要素が半角英数字であるかの判定をしたんですけど
正規表現でやるしかないですか?
>>65 1文字目だけ見れば残りは見なくても判断できるのだったら、1文字目
だけ取り出して大小比較でもいいかも。でも正規表現の方が結局素直な
気もする。
67 :
Name_Not_Found:2012/11/12(月) 22:06:19.82 ID:LusMrap2
>>66
さんきゅう
正規表現を使います。
以前俺はUTF-8の文字列の容量を調べるので
URIエンコード使ったがそれは関係なさそうだ
Javasriptって如何にグローバル変数を使わずにコーティングするか
を考えるゲーム感覚で組んでるけど、違う?
70 :
Name_Not_Found:2012/11/12(月) 22:40:13.04 ID:NK/gCriq
/^[a-zA-Z]+$/でいいんじゃない
「しかないか」と言われると他のやり方もなくはないけど
71 :
Name_Not_Found:2012/11/12(月) 22:42:25.05 ID:NK/gCriq
ああ、リロードしてなかったすみません…
>>69 あまり多く使われると、コードの見通しは悪くなるわなー
先週末似たようなことを愚痴ったけど、無数のグロ変数を
あちこちの関数から参照されると訳わからんくなる
グローバル変数は名前解決に時間がかかるからその分遅くなるしな
73 :
Name_Not_Found:2012/11/13(火) 02:25:07.63 ID:o0Jd79pv
ほー
やっぱり、スコープチェーンを1個ずつ辿っていくから遅いんですかね?
よく気づいたな。バグ取り得意なほうか?
計ってみました。「451,322」「451,323」「451,319」で、1.5倍は違わない
ようでした。自分の手元の環境では。
<!DOCTYPE html><html><head><title>???</title><body>
<pre><script type="text/javascript">
var x;
function test(n) {
if(n > 0) { test(n-1); return; }
var y; x = y = 0;
var t0 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { ++x; }
var t1 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { ++y; }
var t2 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1));
}
test(0); test(100); test(500);
</script></pre></body></html>
PC環境やブラウザによってぜんぜん違うんだからそれを書かなきゃ意味がない
Mac OS X 10.6.4 2.53GHz Core Duo 2
Safari 5.01
でもどの環境/ブラウザでも「相対的な違いは」そんなもんじゃないですかね?
今時ページなんか作らないでconsoleでやれよ。それと、こんなもん繰り返しの数でその差は
開くんだし、そもそも参照じゃなくてインクリメント主体じゃねえか。そんな調査で
何倍だとか言われてもな。まあ、ブラウザによって実装は異なるんだしバージョンが上がれば
最適化で結果も変わるだろうし、決定的な差が無い限りこの手の調査は無意味だな。全くの無駄。
何も計らないよりはましでしょ。参照がよければ参照に直して計れば
いいんだし。計ってみましたが。
var x;
function test(n) {
if(n > 0) { test(n-1); return; }
var z, y; x = y = 0;
var t0 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = x; }
var t1 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = y; }
var t2 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1));
}
test(0); test(100); test(500);
279, 283 284, 289 285, 284
つまり参照だけにしたら「ほとんど差はない」という結果になりました。
参照なら x; y; だけでいいんだよ。でもこんなものは最適化で削ってしまうブラウザもあるかもしれんし、
毛曲は誤差の範囲なんだから実測値に意味は無い。というか、そのコードでも焦点は基本型のコピーだと思うがね。
こういうケースではよくあるだろ?論理的にはAのほうが速いとかいうやつ。それでいいんだよ。実測値を
持ってきたところで実装に依存する部分が多いし(参照なんて頻繁に最適化の対象にされるから)、
ECMAの仕様に純粋に依るなら 論理的には というワードを用いるしか無い。
それと補足しておくと、ローカルとグルーバル、変数名の解決を実測したいなら
もっと変数を増やすとか、チェーンを連ねるとか、もう少し環境を考えるべきだぞ。そのコードだと
ローカル側は数えるほどしか変数がないじゃないか。
最適化で削られているかどうかは、次のようなコードで試せば
分かるわけで。同環境で確かに時間は増えていますね。
<!DOCTYPE html><html><head><title>???</title><body>
<pre><script type="text/javascript">
var x;
function test(n) {
if(n > 0) { test(n-1); return; }
var z, y; x = y = 0;
var t0 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = x; z = x; }
var t1 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = y; z = y; }
var t2 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1));
}
test(0); test(100); test(500);
</script></pre></body></html>
365, 396 362, 401 362, 397
ちなみに最初の数字は1段の呼び出し、その後は100レベル、500レベルの
呼び出しの中で計測していますが、値はほとんど変わらんようですね。
チェーンを重ねるというのは何をしろというご指摘なのか伺わせて
いただけますか。
まだ計測するかw維持になってるのか!?あなたのいうレベルごとの呼び出しも
まったく意味のないことだよ。値がなぜ変わらないのか、それはスコープチェーンが一緒だからだよ。
変数名の解決とかで調べたらいいんじゃね。今回のテストは目的といい存在価値といい、悪いけど無駄だよ。
入れ子スコープの変数を作ると違うのかと思いやってみました。
404, 323, 322 と、入れ子スコープの変数でも速度は違っていませんね。
もう少し考えてみます。
var g1 = 1, g2 = 2;
function test() {
var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q;
var z, l11 = 1, l12 = 2;
if(1) {
var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q;
var l21 = 3, l22 = 4;
var t0 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = g1; z = g2; }
var t1 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = l11; z = l12; }
var t2 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = l21; z = l22; }
var t3 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1) + ", ", (t3-t2));
}
}
test();
ifステートメントで入れ子w
ましにはなったけど、残念ながらJSのスコープは関数単位だぞ。IFを関数に置き換えればいい。
その関数を何十にも重ねてやればそれだけチェーンが増えるということ。二重程度じゃテスト環境
としては不十分だな。それと変数名は eval を使って動的に大量に作らせたらいい。手動だと
読みにくいし書きにくいし最悪だぞ。
アドバイスありがとうございます、evalですかなるほど。やってみました。
var g1 = 1, g2 = 2;
function test100() {
var l1 = 1, l2 = 2;
var t0 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = g1; z = g2; }
var t1 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = l1; z = l2; }
var t2 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1));
}
var d = "var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;";
for(var i = 0; i < 100; ++i) {
eval("function test"+i+"() { "+d+"test"+(i+1)+"(); }");
}
test100(); test0();
でもどっちも「675, 555」「675, 559」と同じです。何が足りないんでしょ?
意味不明なJavascriptの挙動に出くわした
function sapporo(){
var number=0;
var red=$("input");
for(var i=0;i<$("input").length;i++){
var name="i_"+i;
if( red[i].id===name){
number++;
}
}
return number;
}
inputタグのの中でid="i_0"〜"i_4"の数を数える関数なのですが、
formのid="i_0"〜"i_4"付きのinputタグの他に
<form method="POST" action="test.cgi">
名前: <input type="text" name="NAME"><br>
住所: <input type="text" name="ADDR"><br>
<input type="submit" value="送信">
</form>
と記述すると
red[i].id===nameが正常に動かなくなりました。
formが2つ同じページあると挙動がおかしいのでしょうか?
どっちも同じ結果になるのは、自分が書いた内容を理解していれば明らか。
なんたって、時間を計測して表示するのは test100 だけなんだから、
どっちも test100() の単一呼び出しの結果の数値だからなwww
ああ、ようやく理解しました。つまり、ある関数(クロージャ)内から
外側環境の変数をアクセスしろっていうこと? でもそうすると、今の
ローカル変数より遅くなるだろうから、「グローバル変数の方が速い」
という結論になりそうじゃないですか?
やってみました。やっぱ local < global < 中間ですね。
528, 728, 674, 398 となりました。まだ勘違いあったら教えてくださいませ。
var z, g1 = 1, g2 = 2;
function test() {
var o1 = 1, o2 = 2;
var f = function() {
var m1 = 1, m2 = 2;
return function() {
var l1 = 1, l2 = 2;
var t0 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = g1; z = g2; }
var t1 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = o1; z = o2; }
var t2 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = m1; z = m2; }
var t3 = new Date().getTime();
for(var i = 0; i < 100000000; ++i) { z = l1; z = l2; }
var t4 = new Date().getTime();
document.writeln((t1-t0) + ", " + (t2-t1), ", " +
(t3-t2) + ", " + (t4-t3));
};
};
return f();
}
test()();
tvrockの自動検索予約リストの「予約数」の列を「タイトル・詳細」の左隣に移動させたいのです
単純に羅列したのは動いたのですがfor文で回すにはどうしたいいんでしょうか?
下のやつだと動作しません
var rec1 = document.evaluate('/html/body/table/tbody/tr[2]/td/table[2]/tbody/tr/td[8]', document, null, 7, null);
略
var rec100 = document.evaluate('/html/body/table/tbody/tr[2]/td/table[2]/tbody/tr[100]/td[8]', document, null, 7, null);
rec1.snapshotItem(0).parentNode.insertBefore(rec1.snapshotItem(0), rec1.snapshotItem(0).parentNode.lastChild);
略
rec100.snapshotItem(0).parentNode.insertBefore(rec100.snapshotItem(0),rec100.snapshotItem(0).parentNode.lastChild);
↓
var rec= document.evaluate('/html/body/table/tbody/tr[2]/td/table[2]/tbody/descendant::tr/td[8]', document, null, 7, null);
for (var i=0; i<rec.snapshotLength; i++){
rec[i].snapshotItem(0).parentNode.insertBefore(rec[i].snapshotItem(0),rec[i].snapshotItem(0).parentNode.lastChild);
}
jQueryUIのDialogを使って変な事象に出くわしました。
<body>
jQueryUIのDialogを使って変な事象に出くわしました。
formの中のdivをDialog機能で表示しようとしたのですが、
form部分の下にしか表示されません。
例では省略してますが、実際かなりform部分は記載が多く、
全然想定したところ(真ん中)に出てくれず縦長なformの下に出てしまいます。
formの中に出したいのですが、
ネットで調べてもjQueryUIのダイアログがformの下に出るという事象は見つけましたが、
これと言った解決策は見つけきれてません。
何か対応策ありますでしょうか、それとも別のプラグイン使うかな…。
※
>>95は自分です。書いてる途中でボタン押しちゃいました。すいません。
<html>
<head>
<script>
$(function(){
$("dialogtest").dialog();
});
</script>
</head>
<body>
<form action="AA">
略
<div id="dialogtest">TESTDIALOG</div>
略
</form>
</body>
</html>
>>96の追加
環境はWindows7のIE8です。
IE7でも同じです。FireFoxはまだ試してませんが。
ただIEで動かないと仕事先の事情でどうしようもないのです。
連投すいません。以上、よろしくお願いします。
98 :
Name_Not_Found:2012/11/14(水) 02:10:09.46 ID:7oSL2CqJ
<form>がposition:staticじゃないとか
いや、詳しいことは知らんのだが
>>96 やまかんだけど、 <form>...</form>のすぐ外側を<div>...</div>で囲んでみるとか?
100 :
96です。:2012/11/14(水) 08:38:49.46 ID:???
>>98>>99 ありがとうございます。これから会社行くんで試してみます。
会社で2ちゃん使えないので結果報告が今日夜になっちゃいますけど。
他にも何か思い当たる節がありましたら皆さんよろしくお願いします。
>>96 さっとマニュアル見たところでは、formにidかなんか付けてposition指定するのかな?
<form action="AA" id="formtest">
として
$("#dialogtest").dialog({ position: { my: "center", at: "center", of: "#formtest" } });
とする感じ。
>>89 $("input") が次の順番だったら動かないよね。
[0] <input type="text" name="NAME">
[1] <input type="text" name="ADDR">
[2] <input type="submit" value="送信">
[3] <input id=i_0 ...>
[4] <input id=i_1 ...>
[5] <input id=i_2 ...>
[6] <input id=i_3 ...>
最新のV8ではnew Array()の方が速い、しかし要素が64kを越えるような場合はメモリの関係で遅くなる
誤差を優先するよりも読みやすさの方を大切にしたほうがいいね
最近のブラウザじゃ値の取り出しの早さも
(早い)Array[n] = Array[n][n] >= Obj["key"] = Obj["key"]["key"] > Obj.key(遅い) だしな
それでも1/100000秒の中の2、3〜100倍(Fx)程度の差だし、>59の言うとおり読みやすさで選んだほうがいいんじゃね
function func(){
v1="C"
var v2="D"
print(v1+" "+v2)
}
v1="A"
var v2="B"
print(v1+" "+v2)
func()
print(v1+" "+v2)
//print
A B
C D
C B
グローバルに変数を宣言するとき、varのある・なしは、現在(ecma5)のjsでどういう扱いになっているんですか?
108 :
Name_Not_Found:2012/11/14(水) 19:52:42.81 ID:7oSL2CqJ
どういう答えを期待しているかがわからんけど
>>107に書いたとおりじゃん?
非常にわかりやすいサンプルだと思う
varがあればそのスコープの変数になって
なければチェーンをたどる
a="A"
var b="B"
delete this.a
delete this.b
print(a+" "+b)
var a="C"
var b="D"
print(a+" "+b)
//print Rhino 1.7 release 4 2012 06 18
A B
C D
曖昧なところをMDNを見ながら復習してるんですが、global varについてはes5だとstrictだけで関係ないみたいですね。
しかし上のサンプルだとエラーがでず、しかも変数宣言a,bをまた宣言してるので、js仕様の独特なグローバルスコープでかなり意味不明なサンプルです。
スコープも意味不明ですが、delete this.a or this.b がvarと何か関係しているようですが、英語MDNでも特に説明はありませんでしたが、これらの挙動について解説してもらえませんか?
チェーンをたどるかどうかの指摘は、prototype chainはまだ難しいのでそこまで踏み込んで勉強してません。
>>110 おそらく、
>>107の言っていることは「スコープチェーン」であって「プロトタイプ
チェーン」ではないんじゃないかと思う。
MDNでスコープチェーンの詳細な説明を読んだ覚えがないんですが、varについてはこのスコープ変数チェーンの毎々のインスタンスが関係してるみたいですね。
昔に一ヶ月程度勉強しただけなのでまだ曖昧ですが、jsはやはり(仕様が曖昧のままなので)かなり難しいです。
全部var付けとけよ
deleteで削除されるはずのaがvar宣言巻き上げのおかげで削除されないってこと?
115 :
Name_Not_Found:2012/11/15(木) 00:27:12.29 ID:wFnpbzN3
質問させてください
テキストエリアの文字数チェックをしています
<script type="text/javascript"><!--
function ShowLength( str ) {
document.getElementById("inputlength").innerHTML = str.length + "文字";
}
// --></script>
<textarea cols="24" rows="3" onkeyup="ShowLength(value);"></textarea>
<p id="inputlength">0文字</p>
これを、配列を使って複数のテキストエリアでやりたいのですがどうしたらいいでしょうか?
くだらない質問ですがよろしくお願いします。
配列をどうしたいのかわからんが
関数がいちいち要素を探しに行くのは意味がない
textareaとpを渡す(idでもいいけど)と
textareaにaddEventListenerで
pに文字数を書き込む関数を割り当てる
みたいな関数にして、一回だけたたくようにすれば
何個でもいけるじゃろ
暇だから書いてみよう
飲んじゃってるけど
function momokuro(textarea,p){
textarea.addEventListener('keyup',function(evt){
p.innerHTML = evt.target.value.length;
});
}
あとはこの関数の引数に
お好みのtextareaとpを放り込んだげればよかんべ
よかんべよかんべ
119 :
115:2012/11/15(木) 08:02:23.87 ID:wFnpbzN3
>>117 ありがとうございます。textareaとpはどのように書いたらいいですか?
<textarea cols="24" rows="3" id="momokuro"></textarea>
<p id="momokuro">0文字</p>
これでは動きませんでした。初心者ですみません。
ひどすぎる。もうちょっとは自力で勉強してから来て欲しいと思った。
ここで聞いたらいいのか分かりませんが、HTMLを読み込んだときに画像を読み込まない方法ってありますか?
例えば、HTMLを書く時点で<img>を<noscript>の入れ子にしておいてJavaScriptオフにしている人への配慮をしながら
JavaScriptのスクロールやマウスオーバーなどで<noscript>だけを消すなどの方法は思いつくのですが
<img>だけの元のHTMLには手を加えずにJavaScriptだけで同じことはできないでしょうか。
>>119 まずidは重複してはならんです
一意に要素を特定するためのものだから
で、要素にアクセスするには、DOMを使えば良いよ
getElementByIdとかgetElementsByTagNameとかquerySelectorとかとか
とりあえず、やりたいことを、一度正しく文章にしてみてください
てにをはに気をつけて、5W1Hを正確に
で、書いたことをプログラムに置き換えていけばいい
>>121 サーバ側で、URLに特定のキーがないと返さないようにしてみるとか
そもそも、もっと普通に「AをBに」とか「Aの任意個の並びをBに」
とかはできているの?
めんどくさいからリンク先も画像も見てないけど、AAABBBをBBBAAAにしたいだけなら
"AAABBB".replace(/(AAA)(BBB)/, "$2$1");で出来たけど何がわからんの?
ブックマークレットで正規表現置換を使う方法が分からないんじゃないの。
つーか画像貼らずにテキスト晴れよアホ
/regex/ を先頭につけるものだと勘違いしてる。DEMO B見て真似するんだ
$(function() {
var red;
});
$(function() {略});の中で宣言した変数ってグローバル変数
なのかローカル変数なのかどっちなんですか?
初歩的な質問ですみません
「jQueryで選択した要素にJavaScriptのメソッドを用いることはできない」
という理解は正しいですか?
○) document.getElementById("container").getBoundingClientRect().left;
×) $("#container").getBoundingClientRect().left;
上は大丈夫だったのですが、下は「is not function」とエラーが出てしまいました
初心者からすると下もエラーにならずにやってくれたらいいのにと思うのですが
上記の例がたまたまなのではなくて、全般に言えることなのでしょうか?
>>132 jQueryなしのJavascriptでの文法とjQueryの文法を1文に
混ぜて使えるかってこと?
明らかに文法が違うから動かいさ。
>>133 ありがとうございます
明らかに使えないんですね
>>132 jQueryの$関数は、要素そのものじゃなくてjQueryオブジェクトが返るから無理
jQueryオブジェクトからDOM要素を得るには、$('#container')[0]みたいに
すればおk
136 :
132:2012/11/15(木) 18:41:21.05 ID:???
>>135 ありがとうございます
$("#container")[0].getBoundingClientRect().left;
にしてみたらエラーにならずに済みました
>>120 自力でできたらこんなとこきません。もうちょっと常識で考えてください。
>>122 ありがとう。自力でがんばってみます。
138 :
Name_Not_Found:2012/11/15(木) 19:09:16.10 ID:XX4sdAUu
iPhoneでホームにブックマークして、ホームからアクセスするとJavaScriptが正常に動かなくて困っています。
iPhoneのブラウザからは普通に動作しています。(safariと、chromeでも動作確認できています)
また、PCブラウザからでも問題はなく、デバッカツールにエラーも出ていません。
かなりエスパーさせて申し訳ないのですが、
同じような現象が起きた方はいらっしゃいますでしょうか?
どのように対処したか教えてください。よろしくお願いします。
139 :
Name_Not_Found:2012/11/15(木) 19:37:15.10 ID:3U5aJ24z
>>137 俺
>>117,122だけど、常識的に考えたら
>>1にHTMLはvalidatorでチェックしろって考えてあるんだから
>>120の感想はそんなにひどいもんじゃないよ
あと「こんなとこ」なんて言うなよ
JSはHTMLの要素のパラメータやスタイルをごにょごにょするための言語なんだから
HTMLが正しくなければ、JS以前の問題が起こってしまうのよ
>>138 症状は違いますが、ホーム画面からだと、
オフラインキャッシュしてあるにも関わらず、
ネットワーク接続ができなくて拒否されたりします。
どうやら、色々とiOS側にミスがあるようで。
ID "ユーザー名@pvp.net"
パスワード "AIR_パスワード"
server "chat.na1.lol.riotgames.com"
port 5223
SSLでの接続
resource xiff
これJavascriptで接続するとしたらどうしますか?
コード書いてみてください
やだ
質問なら受け付けるが、丸投げはやめてくれ
それと書いてみてくださいってなんじゃそりゃw
書いてみろや、このボケ!
どうせ書けへんのやろ
書けへんから逃げとるだけやろが、このドアホ!
と、このくらい言わないとここの住民は書きません
間違っても下手に出て
教えてください、困ってます、お願いします
とか言わないように
145 :
Name_Not_Found:2012/11/15(木) 21:19:08.44 ID:XX4sdAUu
>>140 なんだか色々とあるようで開発者泣かせですね・・・
未だに原因がわからずヘコみますorz
他にもスマートフォン用のサイト作ってらっしゃる方で同じような症状にみまわれた方いませんか?
146 :
131:2012/11/15(木) 22:04:04.12 ID:???
やっぱローカル変数ですか?
147 :
Name_Not_Found:2012/11/15(木) 22:16:56.18 ID:B2gtUFVs
["う","い","あ"].sort();と行うとあ,い,う になりますが
[{"name":"う"},{"name":"い"},{"name":"あ"}]の様な配列をnameでソートするにはどうしたらよいのでしょうか。
.sort(function(a,b){return a.name-b.name;});ではもちろん文字列の比較は出来ませんし…
148 :
96です。:2012/11/15(木) 22:44:21.23 ID:???
>>103 遅くなってすいません。
こんな感じのソースで起こりました。<br>タグをたくさん入れるとその分ダイアログが下に行ってしまいます。
positionでセンターとか指定しても全く機能しないです。
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<link rel="stylesheet" type="text/css" href="dialog/jquery-ui-1.9.1.custom.min.css"/>
<script type="text/javascript" src="jquery/jquery-1.8.2.min.js" ></script>
<script type="text/javascript" src="jquery/jquery-ui-1.9.1.custom.min.js" ></script>
<script type="text/javascript">
$(function(){
$("#diag").dialog({
autoOpen: false,
modal : true
});
$("#testbtn").click(function(){
$("#diag")..dialog('open');
return false;
});
});
</script>
</head><body>
<form action="/">
<div id="diag">TESTDIALOG</div>
<input type="button" value="これ押すと出る" id="testbtn" />
<br /> <!-- brの数はもっとたくさん-->
<br />
<br />
<br />
</form>
</body></html>
149 :
96です。:2012/11/15(木) 23:11:00.83 ID:???
>>147 なんで減算演算子使ってるんだ 比較演算子使え
>>147 function(a,b) { return (a.name==b.name)?0:((a.name<b.name)?-1:1); }
153 :
Name_Not_Found:2012/11/16(金) 17:36:15.32 ID:zbhfCoSk
「かつおぶし」や「日本酒」といった日本語を
JavaScriptファイル中に日本語と分からない形で格納したいと思ってます。
しかし、ボタンをクリックする事によりの分からない形だった文字列を
日本語に復元したいと思ってますが、JavaScriptでそんな事は可能なのでしょうか?
ハッシュだと逆変換が出来ないのでどうやろうか迷っています。
>>153 アスキー化したいの?それとも暗号化したいの?
前者なんだったら\uXXXX形式にするとか、charCodeAtするとか。
後者の場合はなんかライブラリ使うのが手っ取り早いかと。
155 :
Name_Not_Found:2012/11/16(金) 18:03:11.25 ID:zbhfCoSk
>>153 単にUNICODEエスケープとかにしとくのがいっちゃん簡単でしょ?
>>153 これってスパム対策用にメールアドレスを暗号化する方法と同じだよね?
ロジックは詳しく知らないが、「メールアドレス スパム javascript」で検索すると色々出てくる。
base64
encodeURIがお手軽で好き
IEにatobが実装されていればなぁ
>>153 PunyCodeやRaceCodeを使う手もある。
<script>
var username = '';
var $username = $('input#username');
var $check = $('button#check');
$username.keyup(function(){
username = $username.val();
});
$check.on('click', function(){
console.log(username);
});
</script>
これで動くのかと思って試してみたら動いてしまいました。
checkボタンをクリックしたらusernameがちゃんと表示されるのはなぜでしょうか?
ブラウザ(のタブ)を閉じるまではusernameは保持されるんですか?
てきとうな要素にdata-username属性とでもして値を持たせておいて、
クリック時に
function(){
var username = $('てきとう').attr('data-username');
console.log(username);
}
として表示するならわかるんです。
最初のコードがどうして動くのか不思議でしょうがありません。
なんで動かないと思ったのか
あと#idの前にもセレクター書くのはおかしい
なぜ動くかは実際その時に書き換えてその時に取りに行ったからとしか言いようが
嫌がらせか
>>165 すみませんbuttonの〜とかinputの〜とかの説明が面倒くさかったので
分かりやすいようにと思ってあんな書き方をしました。不要なのは知ってます。
>>166 >その時に取りに行ったから
これがわかんないんですよねぇ…
変数usernameが生きてる(変な表現ですけど)のは
$username.keyup()のときだけなんじゃないかと思ったのですが。
$check.on('click', function(){});ではundefinedになると思ってました
まあ動くのでよしとしますか…
失礼しました
usernameはグローバル変数だからページ全体で存続してる
>>170 ページ遷移しない限りグローバル変数は存続するということですね
すっきりしました。ありがとうございます!
172 :
Name_Not_Found:2012/11/17(土) 22:32:02.08 ID:l04Lakzm
てて
$("#i").html(<span id="a">ログインフォーム</span>);
とすると
<div id=i">
<span id="a">ログインフォーム</span>);
</div>
とブラウザでなるのですが、
id=aで動作するクリックイベントを記述しても反応しません。
対策として
$("#i").html(<span id="a">ログインフォーム</span><scritp>クリックイベント<\/script>);
ってしているのですが、
何かいい方法はないでしょうか?
$('#a').attr('id','a').click(~~~).appendTo('#i');
みたいにDomを作ってそれにイベント設定して放り込めばよし
$('<a>').attr('id','a').click(~~~).appendTo('#i');
間違えたわりぃ
$('<span>').attr('id','a').click(~~~).appendTo('#i');
間違えたわりぃ
ちがうわ、#iに放り込むんか…
そんな感じで適当にやってくれw
ちゃう、合ってる…落ち着け俺
>>173 クリックイベントをどこにどう記述したかも書いたほうが助言もらいやすいんじゃね?
そっちが変で反応しないのかもしれんし
180 :
173:2012/11/18(日) 20:25:53.48 ID:???
少しわかりにくいですが、こんな感じでです
$("#login_show").html("<a href='#'>
<div id='zet_03'>シャア専用</div>
</a><script>apple.desolate=new nap.Abc('zet_03');
apple.desolate.init4('q03');<\/script>" );
を
$(function(){
apple.desolate=new nap.Abc('zet_03');
apple.desolate.init4('q03');
});
とすると動きません
シャア専用だからシャアにしか動かせんのだよ
182 :
173:2012/11/18(日) 20:35:46.31 ID:???
>>181 いいえ、シャアでなくても動かせるのですが、
$("#login_show").html("<a href='#'>
<div id='zet_03'>シャア専用</div>
</a><script>apple.desolate=new nap.Abc('zet_03');
apple.desolate.init4('q03');<\/script>" );
apple.desolate=new nap.Abc('zet_03');
apple.desolate.init4('q03');
を別のとこに記述すると動かないのです。
その、"zet_03"は04とかなったりするの?
しないなら、スクリプト部分どっかに書いとけば動くはず
書いたのが例で、値渡して変化するのなら(これだけではなんとも言えないけど)
appleとnap二つのオブジェクトのスコープが違って呼べてないか
napオブジェクトだけで
var n=new nap;
var n2=n.Abc(渡した値);
n2.init(渡した値);
で動くかどうか
わざわざそんな書き方してるって事はappleオブジェクトもその時値を渡しながらじゃないと他が動かないとか…
絶対分からんこれだけでは
とりあえず$(function(){ });
で書いてるのを
function(){ }
でHtmlの中に最初から書いといてみたら。それでも動かないとかどうしてもイベント毎に足さなきゃいけないなら分からん
185 :
173:2012/11/18(日) 21:18:49.45 ID:???
$("#login_show").html(中身)
ってやると、html(中身)にタグやidが習得不可能でした。
ごめんちょっと意味が分からない、けど分かったとしても多分問題の方はここからでは分からないわ。
javascriptで音を鳴らす方法教えてくれ。
いま、鬼ごっこのようなものを作っていて、
タッチされたら、音を鳴らそうと思ってるんだけど、
javascript上にはどうかけばいいんだ?
if(collide(x,y)){ //タッチしたら
ここで、音楽を流すコードが欲しい。
}
if文はちゃんと機能しているんだが・・・。
>>173 clickイベントをjqueryのliveで指定してみたら?
$(document).on('click', '#a', function(){
// いろいろ
});
>>187 補足
htmlで、「クリック」したらではなく、
javascript内でif trueだった場合に
鳴らしたいのですが、
関数(?)がわからないので、教えてください。
なんだマルチだったのか
195 :
Name_Not_Found:2012/11/19(月) 09:46:43.81 ID:EOXDGyFI
ツイッターボタンって
data-text=
の属性にシングルクオテーションとダブルクオテーションが同時に混ざってるときはどうかけばいいんでしょうか?
\マークでエスケープしないとhtmlソースとしては成り立たないので構文エラーになるし、
かといって\マークでエスケープするとそのまま\がツイートとして投稿されてしまいます。
アドバイスください
ツイートへの影響は分からんが実体参照にしてみるとか
実体参照にすると
"ってそのまま文字として表示されてしまいます。
199 :
190:2012/11/19(月) 15:44:37.95 ID:???
>>198 あれ?w
出来てますね。。
ちょっと猛一回見直してみます!
ありがとうございました!
>>185 自分で生成した要素にidふって
もう一度クエリセレクタで取りに行くのって、なんで?
>>192 playを使ったところ、
Object on.wav(サウンド) has no method 'play'
とでます
この場合は何が違うのでしょうか?
204 :
Name_Not_Found:2012/11/19(月) 22:15:36.95 ID:4a6dVtKV
てst
こっちの方が質問するのにいいと思うのなら、あちらで「別のところで質問することに
しました。ありがとうございました」といってクローズしてくればOKだよ。
jsonのinとアウトが上手くいかねーっす
ジャバスクリプトってやつはエラーメッセージが不親切すぎる、なめとんのか
とりあえずマイクロソフトのAJAXが雑魚過ぎたからしょうがなくJAVAスクリプトやってんだけど
難しすぎる
みんなデバッグどうやってんの?とくにjsonのインとアウトを上手く視覚的にわかりやすくデバッグするほうほうないもんかね
ブラウザのデバッガでもアドオンでも適当な物使って二度と来るな
お前が二度と来るな
質問です
"aa/b/ccc/d/ee"
という文字列があって、"b"と"ee"が/で区切られた何番目にあるのか?というのを検索できるようにしたいのです
例えばこの場合"b"は2番目、"ee"は5番目となりのですが
正規表現で一発でできるんでしょうか?
もし出来ないのならsplit("/")で区切って
array["aa"]=1
array["b"]=2
とやる方法は思いついたのですが、どうしても長くなってしまうので正規表現とかもっと良い方法あるのではないかな?と
>>209 コード長かろうが、高速ならいいと思うけどねえ
とりあえず、split -> indexOf なら短くなるかな
[a-z]+で全部の位置割り出す
↓
bの位置割り出す
↓
bは何番目か?
ぐらいしかできねーからsplit -> indexOfにしとけ
正規表現だけで位置じゃなく『何番目にあるのか?』とやらを割り出すのは無理
『鉄』と『火』があって『道具』が作れる
var str = "/aa/b/ccc/d/ee/";
var search = "ee";
str.match("/"+ search + "/");
return (!RegExp.leftContext.length ? 0 : RegExp.leftContext.match(/\//g).length) + 1;
一発じゃ厳しいなぁ
213 :
209:2012/11/20(火) 03:47:07.97 ID:???
ありがとうございます
>>210氏のやり方が最適っぽいですね
str.split('/').indexOf('b')
無理な事投げかけてすみません
indexOfって配列にも使えたのか・・
別物
216 :
173:2012/11/21(水) 00:29:31.98 ID:???
html5って結局javascriptにhtml5をイジるAPIが追加されたって
考えていいの?
うん、それでいいよ
初心者質問ですみません
JSでのOS判別について質問があります
下記のようにUA情報を大文字ないしは小文字にしたものを条件と照合してるのをよくみかけるのですが
if (navigator.userAgent.toUpperCase().indexOf('IPHONE') != -1) { }
UAによって大文字だったり小文字だったりするものなのでしょうか?
iPhoneがiPHONEだったりAndroidがandroidだったりすることがあるのですか?
今現在出てる全ての端末がANDROIDで統一されていても
今後のことを考えて大文字に変換するべきだと思うね
220 :
218:2012/11/21(水) 04:55:42.68 ID:???
>>219 なるほど!
将来的にどうなるか分からないからなんですね
それに世の中にどんな端末があるか全て把握できてるとも限りませんものね
221 :
218:2012/11/21(水) 04:59:56.60 ID:???
>>219 すみません、お礼を下記忘れてました
どうもありがとうございました
UAでの分岐はやめろと偉い人が
>>222 それは用途にも依る。
それこそ「偉い人」の言葉を鵜呑みにしてちゃ駄目だ。
224 :
Name_Not_Found:2012/11/21(水) 18:40:01.75 ID:3q4x8r+8
JavaScriptで現在表示しているページのURLを取得するにはどうしたらいいですか?
※jQueryを使っているのでJavaScriptじゃなく jQueryで便利な関数がある様でしたら教えて下さい。
location.href
226 :
Name_Not_Found:2012/11/21(水) 19:06:45.55 ID:3q4x8r+8
>>225 ありがとうございます。
あと、別スレで質問して誘導されたのでこちらでも
質問させてください。
画面上に【ダウンロード】ボタンを設けており、
それがクリックされると、AjaxにてcakePHP上のコントロールが呼び出され
そのダウンロードが完了したら、それをユーザのローカルに保存させたいのですがどうすれば良いでしょうか?
success: function( data, textStatus, jqXHR )
{
var gotten_data = $.parseJSON( data ); ← ここまではOK
//次にどういうコードを書けば xxx.csv としてファイルをユーザに保存させる事が出来るのか分かりません。
}
location.href = "data:application/octet-stream," + encodeURIComponent(texdata);
名前付けて保存させたきゃアンカーのhrefに設定して右クリで保存してもらえ
228 :
Name_Not_Found:2012/11/22(木) 01:11:22.49 ID:WIzc5zy4
>>227 ありがとうございます。
自動でダウンロードはされる様になりました。
ただ、アンカーのhrefに下記を設定したのですが
ファイル名をデフォルトで指定させる事は出来ないのでしょうか?
"data:application/octet-stream," + encodeURIComponent(texdata);
?<a href="data:application/octet-stream,xxxxxxxxxxxxxx">2012年11月分.csv</a>
現在は、 【ダウンロード】という名前(拡張子無し)のファイルがダウンロードされてしまいます。
名前付けて保存させたきゃアンカーのhrefに設定して右クリで保存してもらえ
230 :
Name_Not_Found:2012/11/22(木) 01:22:29.01 ID:WIzc5zy4
>>229 >アンカーのhrefに設定
<a href="data:application/octet-stream,xxx">2012年11月分.csv</a>
xxx には、 "data:application/octet-stream," + encodeURIComponent(texdata) の値を設定しているつもりなのですが
これではダメなのでしょうか?
231 :
Name_Not_Found:2012/11/22(木) 02:24:07.65 ID:WIzc5zy4
サーバサイドでファイルを作って ハッシュディレクトリを作成してそこにリンクをはったら簡単に出来ました。
ただし、セキュリティー的にちょっと心配。
まず32ケタのハッシュ値自体があてられる事自体がまずはないと思いますが。
普通にaタグのdownload属性使うんじゃだめなのかにゃ?
233 :
Name_Not_Found:2012/11/22(木) 19:58:55.14 ID:WIzc5zy4
>>232 そんな方法は知りませんでした。
ただ、調べたらJavaScriptでCSVを作る事自体がダメみたいですね。
普通はサーバサイドでやれ!という事らしいです。
それは今までの常識
これからやろうと思うんならいくらでも可能性がある
235 :
Name_Not_Found:2012/11/22(木) 21:59:47.45 ID:3I0WrM5g
サーバーサイドでやろうと思えるのにどうしてここまで引っ張ったのか
236 :
片山博文MZボット ◆0lBZNi.Q7evd :2012/11/23(金) 14:06:22.69 ID:22PIWy7p
jQueryのプラグインmaxlengthとpassroidsがダウンロードできなくなっているが、どうしたらいいか?
最近小技に凝ってるんですが
例えば数値を文字化するとき
String(str)より ""+str の方が早いとかそういうトリビアが増えてきてこういうの知ってると来年から働く時デキル新人に思われそうなので
皆が知ってるそういうjavascriptの小技とかありますか?
新人
if(!a){
a=2;
}
デキル新人
var a=a||2;
アルゴリズムいろいろ勉強してる時は自作ブラクラを沢山生産したものだ
ブラクラとアルゴリズムの関係をkwsk
JavaScriptのオブジェクト指向は、コンストラクタとか継承とかオーバーライドを駆使して
木構造?を意識しながらプログラミングをしていくことだと思いますがどんなメリットがあるのでしょうか?
上から下の処理に関数があるだけではダメなんでしょうか?
2位じゃダメです。
だって炎の爪とラミアスの剣で攻撃した時
メラとイオの違いしかないから攻撃した後魔法オブジェクトにメラかイオ入れるだけで済むし
>>237 > String(str)より ""+str の方が早い
それらの結果が異なる事を知っている方が重宝されると思うけどな
小技は所詮小技だよ
>>240 お前は長男か。
あまりにも自分本位すぎる。
>>241 JavaScriptに限った話じゃないけどなー
必要でなければ、必ずやらにゃならん訳じゃないよ
それで不便でなければ
ブラクラアルゴリズムwww
javascriptができるようになると彼女できますか?
お前の顔次第
if (window.confirm( 'javascriptができるようになると彼女できますか?' )) {
// 成功処理
}
else {
// 失敗処理
}
>>248「javascriptが使えるようになりました。でも、どうやっても↑が失敗になります。何故でしょうか?」
つまらんコードだな
アンドロイドを動かすコードでも書けばまだ感心してやったのに
252 :
Name_Not_Found:2012/11/25(日) 09:38:50.94 ID:fwANEZ0d
divの中にspanを並べ、クリックした時に、そのspan要素を知りたいと思います。
一つ一つのspanにハンドラをセットするのではなく、
親divのハンドラでクリックを検出したいと思うのですが
そういうことは可能でしょうか?
event.target
>>251 JavaScriptで動いてる彼女型Android(物理)って難易度高いな
イベントドリブンだからこっちが何かしないと動かんぞ
255 :
Name_Not_Found:2012/11/28(水) 05:22:51.48 ID:QkS99wDE
めったと操作されない部分のスクリプトを必要に応じて読み込みたいと考えています。
jQuery.uiのウィジェットなので、jquery.ui.jsとjquery.ui.cssを読み込む必要があります。
スクリプトの適用やウィジェットの初期化に関しては問題ないのですが、
どうも古いブラウザには、後から読み込まれるCSSが適用されないものがあるようです(IE6など)。
ページロード時に読み込んでおけば問題ないため"後から読み込むCSSが適用されない"としましたが、
そもそもこの問題が存在するのか、解があるのか、わかりません。
現在CSSの読み込みはJavaScriptによるlinkタグの生成でおこなっていますが、
なにかやり方があるでしょうか
256 :
Name_Not_Found:2012/11/28(水) 06:09:36.56 ID:QkS99wDE
いろいろテストを書くうち、
>>255の問題は存在しないことがわかりました。
IE6でも後から読み込んだCSSは適用されました。
なにかアプリケーション内の問題で、うまく動作していないと思うんで
質問を取り下げ、なお確認してみますね。
ありがとうです
クラスってたとえばどんなものに使いますか?
どんなものに使うという考え方がよくない
とりあえずクラスがなんたるかオブジェクト指向がなんたるかを勉強したほうがいい
使い回したいものをクラスにするという認識で良いの?
全然良くない
使いまわしたいものは関数だろ・・・
そういう関数を集めてクラスにしてるのかと思ってたw
オブジェクトとしての関連性がないのにクラスにする意味が無い
>>258 せめて例くらい示してあげるべきだな。その上でアドバイスするなら許容できるが。
あんたの回答は子供のあれだよ。認識ってどういう意味?認識は認識!それで回答している
つもりだったらいとんだ痛いやつだ。
いやこれは257の質問に問題ありだろ
この質問では257の知識レベルもわからないし漠然としすぎてて
何をどのように答えればいいのか分からんよ
クラスってのは1組2組とかのクラス同じと思っときゃいい。
ひとクラス男子○人、女子○人、なんとか委員が○人、とか決まってるだろ。それがクラス定義。
で、使う時はその定義、つまり設計図を元に一年一組・一年二組ってコピーがポコポコ出来るだろ。
同じ物をたくさん作る時に便利、クラス
>254ではありませんが、プロトタイプが解りません
A→B→Cと継承して、それぞれがprototype.aを自分の名前で上書きしていた場合
A.aとしてもCと返るのは正しい動作でしょうか?
268 :
Name_Not_Found:2012/11/29(木) 20:55:10.50 ID:qJTEvg6v
>>267 >それぞれがprototype.aを自分の名前で上書き
>A.aとしてもCと返る
このへんわかりやすく
>>264 教えてほしいなら態度を改めたほうがいいよ^^;
>>268 すいません、継承のしかたを間違ってたようです
var A = function(){};
A.prototype.a = "A";
var a = new A;
var B = function(){};
B.prototype = a;
B.prototype.a = "B"
var b = new B;
alert(a.a + b.a); //BB
//B.prototype = a;
a が b の影響を受けないで alert の出力が AB となるようにしたいなら、
B.prototype = a; を B.prototype = new A; にすればいい
参照渡しって難しそうな話ですね。参照以外には何があるんですか?
値渡しと参照渡しは基礎中の基礎だろ。
メモリをいかに効率的に使うかの話だ。
ちゃんと勉強してこい。
そういうのってどこで勉強すんの?
メモリの効率的な使用とか
C言語の本とかで勉強すんの?
サイ本とかには載ってないよね
>>277 仕事でやるんじゃなければ
配列を代入した
→あれ?うまくいかない!!
→理由を調べる
→なるほど、これが参照渡しか
みたいに困る度に調べていけばいい。
>>276 偉そうなわりに参照渡しの定義が間違ってるな。call by reference とcall by object reference
は区別するべきだと思うね。(このあと
>>276 が大爆発するかどうか見ものだな。)
え、でもここで質問してる人ってほとんど仕事じゃねえの?w
進行中案件の情報は出せないから質問用のサンプルはテキトーだったりすんだろうけど
仕事でやってる奴は8割がた仕事の事しかできなくて、HTML5とか知らなければ知る気も無い奴がほとんどだぞ
ここ単なる暇人が多いと思う
参照がどうこうなんていうのは、機械語を勉強すれば自然と身につく。
ワタシノナマエハロボデス
機械語って二瓶勉の世界だとジャックインして無理矢理に会話すると鼻血が出るアレですか
>>277 プログラムをどう書くかではなくプログラムがどう動くか視点の勉強をすればいい
気軽なところで基本情報の勉強(ついでに資格もとればよい)
興味があればアセンブラも(たぶん挫折する)
とりあえず勉強目的でJavaScriptはだめだな
JavaScriptはお遊び程度にしておくべき
Cのほうがより詳しくなれると思うけど勉強ならJavaがいいよ
最初は本が良いと俺は思ってる
>>286 まじでえ
じゃあ栢木先生の本でも読んでみるわ
インタプリターとかアッチョンプリケとか聞いただけで蕁麻疹でてくるよ
>>279 関数呼び出しの話はしてないと思うけど。
>>277 プログラミング言語って用語とか機能が似てるからな、
例えば、C言語にもphpにも「配列」ってあるけど、
Javascriptにも「配列」が存在してる。
C、C++を基本として社会に需要が大きく、
>>286が勧めるJAVA
あとは好みの言語の勉強してると分かってくる。
C、C++はDXライブラリとかOpenCV、OpenGLとかのライブラリの
動かし方の勉強するとかなり面白い。
ちょっと仕事の相談していいか?
俺の会社に新人が入ったんだが、俺の会社は結構自由で色々なモン作るんだけど、ウチは人事部が去年から重役のゴミがやってて
入ってきた新卒は一流大卒なのにJavascriptはjQueryどころかDOM操作もロクにできないような奴で
ウチの会社は個人個人がnode.jsやHTML5の新しい機能趣味で調べて
『こんなもんあったぜ!それでこんなもん作ろうと思うor作った!』ってな感じなんだけど
入ってきた奴は
・プログラミングは作った事のあるモノしかできない
・プログラミングは仕事こなす手段としか考えてない
・自分で新しい情報調べない
ってようなのが5人中3人もいるんだがどうすればいいんだ
興味持て、色々調べろって言ってもそんな興味無いものの情報をこういう所で交換したり知ったりする事ないだろうし
なんか『最近の若いモンは』って言ってるオッサンに聞こえるかもしれんが、俺はそいつらより1つ年上なだけだったり
そんな会社あるんだね いいな
やってみせ、言って聞かせて、させてみせ、ほめてやらねば、人は動かじ。
296 :
292:2012/11/30(金) 05:33:23.66 ID:???
>>295 俺もそれ考えたんだがもう見切りをつけるしかないのかね。
だけど俺も入社2年経たずに辞めるとかって再就職厳しくならないか?
>>292 給料に特に不満がないならそのままで。
新卒は何もできない状態で入ってくるのは普通。
そっから研修して会社で教育して数ヶ月で単体テストできるまで育てる。
そういうのやってない会社なら残念だが、それが本来新卒待遇としては一般的。
最近は教育まで面倒見切れない会社の事情で即戦力の新卒を採用するとこもあるけどね。
ググレカスはネット上じゃ通用するけど、リアルじゃ通用しないぜ。
そこまで出来るほど理解してないから聞いてくるわけで、
ちゃんと自分でググって情報取ってこれるようになるまでは面倒見てやらないとな。
人材ってのはそうやって育てるものだ。
即戦力に中途採用したやつがその状態だった場合はぶち切れてもいいけど、
新卒は生暖かい目で見守ってやれ。
Ajaxアプリケーションにおいて、
var ob={};
ob.only_url=document.chbox2.elements[0].checked ? true: false;
Javascriptから送ったJSONデータob.only_urlは真偽なのに
phpで受け取るとtrueとfalseの真偽値でなく文字列のtrueとfalse
になってのですが、真偽値をphpに送るって不可能なのですか?
>>298 まずはブラウザでtrue/falseを送ってるのか"true"/"false"を送ってるのか確認しろよ
>>300 よく見たら、jQueryを使用する
ライブラリの改造した関数で
JSONデータのtrueとfalseを真偽値でブラウザで送り
php側で文字列"true"/"false"になってました。
使い道がif文で分岐なので
ob.only_url=document.chbox2.elements[0].checked ? 1: 0;
で十分でした。
>>292 ウチの会社は〜部分を仕事内容として組み込めばええよ
他の方法で求めると問題が生じてくるぞ
オブジェクト指向で書くときに、メソッドのthisの参照を保持するために
クロージャの前で var self = this; したり
イベントを受け取るメソッドを〜Handlerと別に用意して明確に分けたりしているのですが
もっと良い方法はないのでしょうか?
すまんが教えてくれ
俺はWEBプログラミングの言語はASP.NET(VB.NET)が大好きだ
JAVA系,PHP,パール,その他CGIが大嫌いだ
なぜなら一通りの言語を経験したが、ASP.NETが最も作りやすく、そのおかげで最も品質が良いものが作れている
でもASP.NET大好きっていうと低レベルに見られる
PHPが最強とか言う奴が結構多い
なんで?PHPとか別に実行速度も開発速度も速くないだろ、LAMPばっかりだからって別に安いわけでもないし
それってJSの質問スレで聞くことなの?
ベーシックって名前が悪いんじゃね?
>>306 うるせーばか、知識がありそうなスレだからここで聞いたんだよ
お前みたいな低レベルは黙っとれ
なにをー
俺の方がバカだぞ!この!この!
なんか和んだ
JAVA系ってJavascriptも一緒にされてんの?
完全にスレチ。てか、おまえの好みなんてどうでもいいわ。
おい、誘導のリンク貼れ
WebProg板での引取もお断りします
このままスルーで
どのスレにもバカが沸くな
やれやれ
教えてー
2ちゃんねるのスレは read.html (本体は read.js )で Javascript を使った表示ができます。
例えばこのスレだと下記のURLで表示できます
http://toro.2ch.net/test/read.html/hp/1352506660/ read.js はこれです。(昔、2chのスレで有志が集まって作った物らしい)
http://www2.2ch.net/snow/read.js さて、自サイトに2ちゃんねる互換掲示板風の連絡用BBSを作ろうと思っています。
2ちゃんねる互換掲示板スクリプトは有名な「ぜろちゃんねるプラス」スクリプトを使うとして、
read.html 表示の方、上記の read.js に NGword 機能を追加するにはどうすればいいでしょうか?
(ぜろちゃんねるプラスには read.html 機能がないので 2ちゃんねるの read.js を参考にして
自作するしか方法がありません。 2ちゃんねるの read.js にはNGword 機能がありません)
たとえば本文中に「馬鹿」「アホ」などの事前に登録しておいた文字が含まれていたら
本文が「このレスは表示できません」という文字列に置き換わるという簡単な仕組みでいいのですが
そういうのはjsでやるべきじゃないと思うが
そこをなんとかjsで。
できればjsにNGword直書きではなく、NGword.txt から NGword を読み込むような仕組みで。
・・・って、質問スレで扱う範疇を超えちゃうかな、、
丸投げもいいところ自分で作りましょうぜ
>>319 どうすればよいかと聞かれれば
データ処理のどこかで、ブラックリストと比較して
該当する項目にフラグを立てる
としか言いようがないのだが、どんな回答を望んでらっしゃいます?
何がわからん?
別にその read.js の表示部分を探して NGword に含まれていたら
置き換えるという、それだけじゃないの。それを別ファイルにしたければ
Ajaxで読めばいいし。どれも普通にやればできるだろ。作ってくれと
いうのなら断るし(w
read.jsいつのコードだよ糞汚ねえな
function sapporo(){
var number=6;
var red=$("input");
for(var i=0;i<$("input").length;i++){
for(var j=0;j<$("input").length;j++){
var name="jack"+j;
if( red[i].id===name){
number+=1;
}
}
}
return number;}
inputタグが300くらいのいっぱいあるとき停止してしまいます。
助けてください。
325 :
324:2012/12/01(土) 18:01:14.83 ID:???
一箇所間違えました
var number=6; はvar number=0;でした
id無いinputがあるんじゃね?
327 :
Name_Not_Found:2012/12/01(土) 20:12:44.42 ID:8pFTxHXD
location.href と document.location.href って後者の方が速くなりますか?
速さを気にするほどの差が出るとでも?
理論上の速さでは後者だが
ブラウザとかの関係で、ブラウザによっては全社が早くなったりする事も
気にしたら負けのレベル、正規表現でもそんな事がしょっちゅーある
なるほどありがとうこざいます。
>>330 理論上、後者が速い理由について詳しく
プロパティ辿らない分、前者がより速いと思ってた
333 :
Name_Not_Found:2012/12/02(日) 00:47:45.54 ID:vU4we/PU
>>332 辿らないんじゃなくて自力で探すんじゃないのか
document.URLでいいんじゃね
335 :
Name_Not_Found:2012/12/02(日) 19:45:42.76 ID:cduz0ypC
こんばんは、質問です。
アクセスを見ると、未だにIE6やIE5.5といった古いブラウザで見てる人がいるようなのですが、
そういった古いブラウザで見た際に最新のブラウザ(他のブラウザも含めて)への切り替えを促すメッセージを出せる
JSのライブラリのようなものはないでしょうか?
何か良いものをご存知の方いらっしゃいましたら教えてください。
>>335 あんまりいい方法ではないけど、
ユーザーエージェントで古いIEならメッセージ出せばいいんじゃない?
今IE6ってのは本人が好きで使ってるんだから、無視すれば
嫌がらせ目的なら条件付きコメントで警告出すなりすればいいと思うけど
>>337 本人が好きで使ってるというケースは多分まれ
XP使ってる企業で勝手にアップデートできないケースが多い
アクセスログ見ると大抵の場合IE6のアクセスは平日に集中している
条件分岐コメントがいいんじゃね
IEだけを狙い撃ち、しかもバージョンも絞れる、
気持ち悪いけど素敵な仕様
好きで使ってる奴なんていないだろw
IEが何かさえ知らない連中だよ
342 :
きら ◆Kira.u9zNc :2012/12/03(月) 00:02:05.04 ID:c3oYzogT
//
>>335のためのJSここから---------------
if (navigator.userAgent.indexOf('MSIE 5.5') > 0 || navigator.userAgent.indexOf(' MSIE 6.0') > 0) {
alert("おまえのあいいーふるすぎ"); }
else if (navigator.userAgent.indexOf('MSIE') == -1) {
alert("おまえのぶらうざあいいーじゃない"); }else{
alert("おまえのあいいーあたらしい"); }
//---------------
>>335のためのJS終了
//アラートじゃ不便だろうから好きなコマンドに変えてね
>>335 余計なお世話だからやめてください
UAを偽装してるブラウザなんていっぱいあります
誰がUAで判断するって言ったよ
余計なお世話であることには違いないな
俺スクリプト開発はまずIEでテストして、他のブラウザでおかしくなってる所を直してる
ウンコで通っるのが一番仕事効率が良い
>>346 そいうことをしないためにjQueryがあるんじゃないか
>>347 俺もそう思ってたが、jQueryで要素での違いとか結構あるんだな
tbodyがどーのこーのそのparentがどーのこーのって事があったりした
jQueryもIEのサポート切るそうじゃないか
>>350 replaceの第二引数を関数にするのじゃいかんの?
JavaScriptで<input type="file">の参照ボタンをクリックする方法が
あったら教えてください。
click
サンクス
>>333 何を知ってるのかわからんが、通常はプロパティアクセス演算子の回数を減らすほうが速い
>>351 そんなことができたんですね
ありがとうこざいます
>>349 ちょちょちょちょっとまて
それはtrueなのか?falseなのか?
さすが。jQueryはわかってる
360 :
あい:2012/12/04(火) 07:02:42.54 ID:???
今日札幌お出かけしようかなぁって思ってます。お天気調べて雨マークでたんですけど、どうしてもいきたい用事があるんです(>_<)
今の状況とか教えてくれたら嬉しいです。(´д`)
なんだIE8までか
どうぞどうぞ、応援するぜGoogleさんと一緒に
IEの使用を法律で禁止すればいい、そのくらいしないと変わらんだろ
アンチウイルスソフトにIEを検出させるとか
違法コピーソフトみたいに企業のPCで従業員が見つけたら通報機関を作るとか
IEでアクセスされたサーバー管理者は被害届を出す→警察が家に来て逮捕とか
でも最後のは罠で冤罪起きそうだな
363 :
Name_Not_Found:2012/12/04(火) 09:56:13.76 ID:2s0GNqLY
IEは他のブラウザと違ってアップデートが大変だったような気がする
別に大変じゃなくね?
勝手にアップデートするのを禁止してる会社が多いってだけで
あとそもそもXPだとIE9インストールできない
そうだった、俺まだXPなんだった…
XP使ってインターネット=IEと思ってる層
これが最も厄介
つまり俺が自宅でIE9にするには、約1万5000円払ってOS買って入れ替えねばならないのか…
これは無茶ハードル高い
セキュリティアップデートすらできない社内パソコンの体制を改善しないとどうしようもない
個人ならまずIE利用をやめるべき
IEは更新間隔が遅すぎるし対応するOSも限られてるし
そうなんだよ
皆がIEを使わないようにするだけで問題は一発解決する
百害あって一利なしのIEは違法にすべきだ
XP/IE6が去っても7/IE8が待ち構えてるぞ
7のやつらは強制的にIE10にアップグレードさせればおk
そういうのはwin7用IE10正式版が出てから言ってくれる?
そういうのはXPでも最新版が使えるようになってから言ってくれる?
375 :
Name_Not_Found:2012/12/04(火) 18:28:38.95 ID:sOuCgzDV
XPって10年前のOSだぞ
いつまで使ってんだこのやろ
閲覧者のPCをハッキングして火狐を起動させればおk
何年使おうが勝手だろ
毎回MSにお布施なんて出来るか
社内システムの専用端末的使い方ならありだと思うんだよね。
外に出てくるのが問題。プロバイダで遮断すればいいな。
せめて確認用にIEを複数バージョンインスコ出来るように作ってくれりゃまだマシなのにな
IEの仕様自体もそうだけど明らかにMSの嫌がらせとしか思えない
>>379 それができない理由の一つが、例の
「エクスプローラとブラウザをシームレスに」というヤツなんだろうな。
誰もそんな要求してないのに、独りよがりもいいところ。
あ、リボンもそうかw
381 :
Name_Not_Found:2012/12/04(火) 22:18:31.44 ID:huauWvCp
永作博美の悪口はそこまでだ
>>379 IE7、8、9なら共存とゆーかIE9の開発者ツールで切替可能
IE6は俺の場合仮想マシンでXP立てて運用してる
383 :
Name_Not_Found:2012/12/04(火) 23:10:28.06 ID:huauWvCp
>>379 アメリカのMSの中の人と喋った時には
「日本のデベロッパてなんでそんなにIE6に気を使うのか不思議!国民性なの?」
ぐらいのトーンで話してたな
デベロッパじゃなくて広告代理店が、だよ。とは言っておいたが
実際MSの要人やマスコミが集まって
数年前にIE6のリアルお葬式が挙げられたわけだが
>>382 そんな機能あったんか・・・
ずっとUtilu IE Collection使ってたわ
>>385 めっちゃ便利だよ、俺もIE9以前はIE Testerってやつ使ってたけどもう要らん
IE9はWebkitやFirebug並の開発ツールも備えたし
CSS3への対応はまだ甘いけど
レイアウトの崩れみたいな根本的な不具合はなくなったので俺はある程度評価してる
387 :
Name_Not_Found:2012/12/05(水) 01:06:54.84 ID:7wPcqw/4
>>386 >Firebug並の開発ツールも
ちょっと褒めすぎかとw
あれ使いづらいじゃん
自分もIE9で「並」まで言うのはちょっと反対かな
IE10はまだ触ってないけどどうなのかしらん
389 :
Name_Not_Found:2012/12/05(水) 10:09:36.60 ID:7wPcqw/4
IE10も開発ツールはあんまり変わってなくてがっかりでした
390 :
Name_Not_Found:2012/12/05(水) 10:10:42.26 ID:vdyoXBkG
Opera Dragonfly最強
386だが。。。
読み返してみると「並」は確かに言いすぎだな
IE789が一度に確認できるのが嬉しくてつい。。。
IE9にすら対応してないページがあってIE10にしたわ
IE使えって表示しといてIE9で正常に動作しないってどうなのよ
393 :
リリン:2012/12/05(水) 13:15:53.77 ID:??? BE:628474098-PLT(45072)
どきゅめんと.クエリーせれくたー()ってなに?
395 :
リリン:2012/12/05(水) 14:13:48.93 ID:??? BE:69830742-PLT(45072)
>>394 あり。こんな質問の仕方で回答がつくとは思わなんだ。
ブラウザベンダーが拡張したDOMの操作とかか。
396 :
Name_Not_Found:2012/12/05(水) 15:39:06.22 ID:7wPcqw/4
いやいやいやいや
セレクタAPIは標準仕様でっせ
397 :
リリン:2012/12/05(水) 17:15:21.75 ID:??? BE:488813287-PLT(45072)
そなのか(・ω・`)
質問おねがいします。
下記の配列alphaから一文字ずつ取り出す時、
普通はcharAt(i)のようにすると思いますが
alpha[i]で抜き出せました。
余りいい書き方ではないと思うのでやはり避けるべきだと思うのですが、
a,b,c,d,e・・・のように解釈してくれた為抜き出す事ができたのでしょうか。
var alpha="abcdefghijklmnopqrstuvwxyz";
var i;
for(i=0;i<alpha.length;i++) {
document.write("<input type='button' value="+ alpha[i] +" onClick='disp(this)'>");
if(alpha[i]=="m") {
document.write("<br />");
}
}
>>398 >>下記の配列alphaから
alphaは配列ではなく文字列が入った変数でした
var alpha="abcdefghijklmnopqrstuvwxyz";
XPathで複数の式を一度に指定するにはどうしたらいいのでしょうか
| と or は試したのですができませんでした
var xpath = "//h1[@class='a']/text() | //h1/span[1]";
alert(document.evaluate("string("+xpath+")", document, null, XPathResult.STRING_TYPE, null).stringValue);
タイトル部分を取り出したいのですが2通りあって
<h1 class="a"><span class="b">1</span>タイトル</h1>
↑が一致しなければ↓
<h1><span>タイトル</span> 1</h1>
>>400 charAtメソッドでなくてもいいのですね。
ありがとうございます!
403 :
Name_Not_Found:2012/12/05(水) 19:41:11.05 ID:7wPcqw/4
>>401 自分はSTRING_TYPEではなくORDERED_NODE_SNAPSHOT_TYPEを使うことが多いんだけど
evaluateの返り値のsnapshotLengthを数えて、当たった方を使えばいいんじゃないかな
>>398 文字列の配列風アクセスは非標準(だっけ?)
ともかくIE7以下だとundefinedになるので注意
誰かGoogleのclosure-library使ってる人いる?
GoogleのWeb検索やMap,YouTube,Gmail,Document,カレンダー,ブロガー...と、言い出したらキリがないくらい殆どのサービスで使われてるんだけど。
はっきり言ってjQueryより良いと思うんだが、いまいち知られてないよね
ブラウザ戦争の記憶がベンダー主導のものを忌避させてるんじゃないか?
407 :
398:2012/12/05(水) 20:57:07.06 ID:???
>>404 文字列の配列風アクセスは非標準なんですね。
IE7以下でも試してみます。
408 :
Name_Not_Found:2012/12/05(水) 22:25:48.54 ID:7wPcqw/4
409 :
Name_Not_Found:2012/12/05(水) 22:27:36.27 ID:7wPcqw/4
>>405 仕事だと使い勝手よりも、使える人が多いことが優先するよなー
jQuery以前から会社で煮詰めてたオレオレライブラリの方が
かゆいところに手が届くこともあったんだけど
410 :
398:2012/12/05(水) 23:46:35.37 ID:???
>>408 なるほど!
split()を使えば文字列から配列風に抜き出すのによさそうですね!
本当に勉強になります。
みなさん優しくてありがとうございます。・゚・(ノ∀`)・゚・。
>>409 そうなんだよ。あまりライブラリに頼ると臨機応変に対応できなくなる。
そのライブラリを使ってもしダメだったときは、問題を回避するためにかかる時間は途方もない。
jqueryの質問です。
次のセレクトボックスがあったとして、
<select name="test>
<option value="A">あいう</option>
<option value="B">かきく</option>
<option value="C">さしす</option>
</select>
jqueryでvalueを選択非選択かかわらず、全て取得する方法を教えてください。
上記の'ABC'を取得したいです。
動的に<option>を増やしたり減らしたりしていて、
イベント発火時にvalueを全て取得したいのです。
お願いします。
こんな感じでどう?
$("select[name=test] option").each( function (i) {
// $(this).val() で値取得
});
415 :
413:2012/12/06(木) 04:44:54.57 ID:???
>>414 うわー、出来ました!!
こんなシンプルなコードで実現出来るとは驚きでした。
本当に助かりました。ありがとうございました。
jQueryやるならCSSセレクタ勉強しとけと言っておく
jquery勉強しようと思ったけど難しすぎ
ねーわ
おれも今度勉強はじめるけどがんばろうぜ。
プログラミングやってないと最初大変だろうけどさ。
毎日ハンズオンだと思うよ
今から勉強するくらいなら
>>405のclosure-libraryにしておけ
臨機応変に対応できなくなるとか言う馬鹿が沸いてるが
Google以上のものを作ってからモノを言え
自分用のなら皆作ってるんじゃね?
俺ですらGoogleAPIを簡単に操作変更できるようなのは作ってるし
なんでAPI?
お前はまず日本語を勉強した方がいい
closure-libraryってグーグルのAPI操作できるのか
>>422 いや、それ以外でjQueryを使わないメリットが全く無いんだが
正直Google依存は馬鹿のやる事だと思う
ClosureLibraryはGoogleAPIを利用するような代物じゃないぞ
利点は色々あるが、
個人的には他のClosure関連のツールと相性良くて便利なのがいいな
複数人で大規模なシステム開発するなら迷わず選ぶと思うわ。まあそんな案件無いんだがな
と、
>>424自ら無知をさらけ出した馬鹿が仰っております
>>426 と、具体的に反論出来ない馬鹿丸出し発見w
またこの流れか
他でやれ馬鹿共
>>428 そういう書き込みが一番いらないんですよw
あーあー、単芝まで生やしてみっともない
>>417 jqueryが分からなかったら終わりだろ
closure-libraryよりjQueryのほうが文字数すくないし何より美味そうだろ
ライブラリなんて邪道
435 :
Name_Not_Found:2012/12/07(金) 18:10:15.52 ID:x8raUp//
チェックボックスの入力チェックをしたいです。
アンケートで、複数回答可の設問でかつ必須項目とかよくあると思うのですが
みなさんはどう対処していますでしょうか。設問数30選択肢数まちまちとか。
PHPで受けるので、チェックボックスのnameは、個別("Q4A1", "Q4A2"...)か
配列("Q4A[]")にしたいです。
できればクラスのメソッドにしたいので、
requiredCheckBox(document.form1.hoge);とかになるといいのですが・・・。
チェックの個数が0か否か、だけじゃん?
>>435 document.querySelectorAll("input[name^='Q4']:checked").length > 0
438 :
Name_Not_Found:2012/12/08(土) 01:46:38.00 ID:jIlSkwR8
<div class="a b c" id="target"></div>
とある場合、classを一覧取得、追加、削除するにはどうしたらよいでしょうか
439 :
Name_Not_Found:2012/12/08(土) 01:49:38.96 ID:jIlSkwR8
classListで取れました。どうも
for(var i=0;i<blue;i++){
var pen="alps"+i;
var a=document.getElementById(pen).style.display;
if(a!=="none"){
red++;
}
}
document.getElementById(pen).style.display
ってjQueryではどうやって書くのですか?
$("#pen").css("display");
442 :
Name_Not_Found:2012/12/08(土) 11:47:08.67 ID:Qi+GBeOt
高さ200px、はみ出た分はスクロールするulがあって
<ul style="height: 200px; overflow: scroll;"></ul>
li要素をたくさんappend()して高さが200pxを越えて
スクロールするようになったとき、appendするたびに
ulのスクロールを一番下に持っていきたいのですが
jqueryでできるのならやりかたを教えていただきたいです
試してないけどdivにmargin設定したらいいんじゃないの
divじゃねえul
と言う事は出来ねえか。忘れて
JQueryは知らんけどJavaScriptでスクロール制御するのはscrollIntoViewとかで
検索したらいいんじゃないだろうか。
htmlを少し変えちゃうけど、
<div id="hogehoge" style="height: 200px; overflow: scroll;">
<ul id="hoge">
<li>なんとか</li>
<li>かんとか</li>
</ul>
</div>
そんでコードは
$("#hoge").append("<li>なんちゃら</li>");
$("#hogehoge").scrollTop( $("#hoge").height() )
これじゃだめ?
448 :
Name_Not_Found:2012/12/09(日) 00:52:05.37 ID:Wd+8mGBH
>>447 日をまたいでid変わってしまいましたが、ありがとうございます!
それでいけそうですね。朝一で試します!
なぜこの二つの式の答えが同じになるのか教えてください
Math.floor(64/3+10+2/3) //32
Math.floor(64/3+11+2/3) //32
>>449 64bitの浮動少数点演算だと、
64/3+10+2/3=32.00000...
64/3+11+2/3=32.99999......
だから、Math.floorで少数点以下切り捨てると両方32になる。
>>449 有効数字10桁くらいで四捨五入をお勧めします。
452 :
Name_Not_Found:2012/12/09(日) 09:50:35.29 ID:Wd+8mGBH
453 :
Name_Not_Found:2012/12/10(月) 01:14:48.45 ID:JrDMl15E
<style>
.cls{
display:none;
}
</style>
<div id="target" class="cls"></div>
document.getElementbyId("target").style.getPropertyPriority("display");
これでnoneを取得する事を期待したのですが、""が返ってきました
classとかstyleとか親要素とか全部ひっくるめて、指定した要素のcssの値を取得する方法を教えて下さい。
jsで取得する方法ですのでこちらのスレで質問させて頂きます。
素のJavascriptをある程度勉強し、そこからJqueryを勉強。
その後さらに素のJavascriptを深く勉強する意味はある?
必要を感じない環境に身を置いているなら意味は無い
>>450,451
ありがとうございます
コンピューターを使った計算では小数点以下の数字の扱いには注意が必要ですね
「小数点以下」という言い方をするようでは、理解できたかどうか怪しい
浮動小数点数の精度は信じちゃダメだぞ
例えば、
floor((0.1+0.7)*10)
これの結果は殆どの場合 7 になる
努々忘れるな
460 :
Name_Not_Found:2012/12/10(月) 11:35:03.43 ID:g4ThKy1x
ポップアップ表示
var htmlsource = window.open(省略);
htmlsource.document.open();
htmlsource.document.write(textcont);
htmlsource.document.close();
でtextcontの中に画像への相対パスがある場合、
Opera(ver.12.10で確認)ではリンク先の画像が表示されません。
Operaは相対パスをすべて絶対パスに解釈しなおして画像の表示などを行っているようですが、
これがポップアップでは相対パスのまま絶対パスとみなされているようです。
なにかうまい解決策はないものでしょうか?
オフライン配布用なのでtextcontの中に絶対パスを書き込んでおくというのは無です。
>>460 何を基準にした絶対パスなの?
URLで書くのはいかんの?
>>461 相対パスなら基準があるけど、
基準がないから絶対パスなんじゃないかな。
463 :
Name_Not_Found:2012/12/10(月) 12:23:45.13 ID:Z6osZzVn
>>461 早速ありがとうございます。
「web制作管理」という板の趣旨には外れるかもしれないのですが…
ある画像資料をオフラインで配布(メディアはおそらくUSBメモリ)するにあたって、
その画像インデックスと閲覧システムをjavascript+HTMLで作成しています。
それぞれ異なる配布先のローカル環境(ディレクトリ)で動く必要があるので、相対パスのみで書きたいのです。
ポップアップ元では
<img src="hoge2/hogefile.jpg>
が正常に表示され(当然)、その画像のプロパティを見ると
アドレス file://localhost/G:/hoge/hoge2/hogefile.jpg
(g:/hoge/はHTMLファイルの置き場所、hoge2はその下の画像の置き場所)となっています。
しかしここからwindow.openでポップアップするウィンドウの内容に同様の記述をすると
画像は表示されず、プロパティは
アドレス hoge2/hogefile.jpg
となっています。
IEやChrome、FireFoxではポップアップでもドライブ以下が補われてちゃんと表示されます。
ちなみにローカルだけではなくウェブにアップしても同様です。
長くなってすみません。
ポップアップへの画像表示なんて基本のキでしょうから何か解決策はあるのでしょうが。
どうぞよろしくお願いします。
464 :
463:2012/12/10(月) 12:31:44.27 ID:???
<img src="hoge2/hogefile.jpg>
ひげかっこ閉じが抜けていますがこれは書き込み時のミスです。
sage進行のようなのでついでにsageます。
466 :
Name_Not_Found:2012/12/10(月) 16:37:40.95 ID:/Sd5VvSK
JavaScriptの関数の頭につける、関数説明のフォーマットでおススメが
あったら教えて下さい。
468 :
Name_Not_Found:2012/12/10(月) 18:12:09.92 ID:/Sd5VvSK
469 :
リリン:2012/12/10(月) 19:26:02.30 ID:??? BE:139661344-PLT(45072)
471 :
Name_Not_Found:2012/12/10(月) 20:10:30.05 ID:4RwFMQDE
472 :
リリン:2012/12/10(月) 20:44:08.71 ID:??? BE:349152858-PLT(45072)
>>470 setVersion メソッド入れてもだめだ。しかも、これ非推奨か廃止?なのか。
なんか根本的にインスタンスがないっぽい。もうちょっと調べるわ。さんきゅー。
473 :
Name_Not_Found:2012/12/11(火) 05:29:22.15 ID:6GD80ssw
var jet = new Image();
jet.src="images/jet.png";
var canvas1 = document.getElementById("canvas1");
var ctx1 = canvas1.getContext("2d");
jet.onload = function(){
ctx1.drawImage(jet,0,0,360,270);
imagedata1 = ctx1.getImageData(0,0,360,270);
for (i = 0; i < 388800; i++) {
if (i % 4 == 0) {
imagedata1.data[i] = Math.floor(1.5*imagedata1.data[i]);
if(imagedata1.data[i]>=255){imagedata1.data[i]=255;}
}
if (i % 4 == 1) {
imagedata1.data[i] = Math.floor(0*imagedata1.data[i]);
}
if (i % 4 == 2) {
imagedata1.data[i] = Math.floor(1*imagedata1.data[i]);
}
if (i % 4 == 3) {
imagedata1.data[i] = Math.floor(1*imagedata1.data[i]);
};
};
ctx1.putImageData(imagedata1,50,0,50,50,260,170);
}
html5ですが質問させてください。
ffとoperaでは画像フィルタがかかるのですが、クロームでは画像フィルタ
がかかりません、何故なんですか?
474 :
リリン:2012/12/11(火) 07:34:03.04 ID:??? BE:392796959-PLT(45072)
475 :
Name_Not_Found:2012/12/12(水) 23:02:31.66 ID:zs1uGmB9
質問です
ページにアクセスした時点で
IEのポップアップブロックを回避しつつ
新しいウインドウを開くにはどうしたらいいでしょうか?
476 :
475:2012/12/12(水) 23:21:23.29 ID:zs1uGmB9
ポップアップブロックは面倒そうなので質問取り下げます
スレ汚してすみませんでした
javascriptの引数はローカルで宣言してくれているの?
明示的に function plus(var a){} がしたいんだけど
どうやら無理みたいだね。
じゃあ、宣言無しの変数としてグローバルになってしまうのか?
そのくせ for(var i = 1; i <= 6; i++){} はできるみたいだね・・・
cやperl(一応フリーソフトやショッピングカート位は作れるレベル)は
一方のルールでちゃんと動いてくれるから心配できいてみた。
まぁ、グローバルでも困らないようには作ってるけど・・・
初めてjavascript使ってみたけどブラウザによって誤作動したのは
びっくりしたよ・・・ieだけなんか違うな、遅いし・・・
ffで作ってて他のブラウザでも確かめたらieだけ違うdocumentを挿しててたまげた。
JavaScriptに変数などない。
すべては連想配列である。
言いたい事がよくわからないけど
下記のdefを実行したら
hoge2,hoge3はどうなって、どのブラウザでも同じなのか?
var hoge = 'hoge';
function abc(hoge){
hoge2 = 'hoge2';
hoge3 = hoge;
}
function def(hoge){
var hoge2 = 'hoge3';
abc(hoge2);
}
abc内と外でのhoge2とhoge3に違いが出てくるのかもね。
あ、defの引数にhogeがあるけど関係ないですね。
varを省略したらグローバル変数
ただし引数はグローバル変数にはならない
試せば分かるけどなんで試さずに断定するの?
さんくす
>ためさずに
”どのブラウザでも同じか?”
なんせ違う動きしたからな。
ちなみに違う動きしたのは上記じゃない。
>>485 >>484 信じられることと信じられないことをはっきりさせたいだけ。
さすがにスコープについてはどれも絶対違う衝動をしないんだね。
お前が信じられない(驚愕)
ブラウザにとよって違う動きするプログラムを信じろと?
初めて使ってこれだからびっくりして仕方ない。
途中で止まるとかはまだ良いけど動作した部分は共通であって欲しい。
本当は動くか動かないかがいいけど・・・
違う動きをする再現コードはよう
コードは万一ばれると嫌。
簡単に説明するとXMLHttpRequestでperlからハッシュを
貰ってキーと値をinputのnameと値に振り分ける
プログラムをつくったんだけど
jsのfor文でハッシュのキーと値s_strに取り込んで
document.fomename[s_str[0]].value = s_str[1]
としたらieだけ違うnameのinputに値が入った。
document.getElementsByName(s_str[0])[0] = s_str[1]
で解決したけどね。
なんとも不可解。
あと、ついでだから教えて。
ieはdocument.**にアクセスすると遅いらしく、
ググって一行で早くなるってやつを見つけたから
実践してみたけど早くならなかった・・・
他のブラウザは殆ど一瞬で計算や取り込みが完了するのに
ie8(ieはこのバージョンのみ)だけ3秒以上かかる・・・
プロファイラーでみたらやっぱりfor文でdocument.**を
いじる時に時間がかかってた。
解決策としてどんな事がある?
別に全部貼れなんていってないだろ
再現できる最小限のコードを作ってこいや
getElementById以外使用禁止
>>493 プログラムやってるならこの説明でわかるとおもうけどなぁ・・・
さらにはplのハッシュ値なんてどっから持ってくるの?
キー数は千超えてるし。
>>494 なんだかそうらしいね。
ちょいちょい修正申し訳ないね。
ie8(ieはこのバージョンのみ)
↓
ie8(ieはこのバージョンのみ試した)
>>495 やってるからこそ最小限の例を出せと言ってるんだろうが
fomenameだからだろ
また地雷か
初心者質問者の方がまだ分かりやすいわ
日常生活困ってないのかな?
>>495 それ読んで書いたコードに再現性があるか分からんし、
いちいち他人のためにコード書くのも馬鹿馬鹿しい。
しかも、別の場所がバグの原因かもしれないから、
自分で本当にバグの原因がそこか確かめるためにも、短いコードを書くべきでは?
原因コード一行まで突き止めてるのに最小限を出せって・・・
jsに詳しいならこれだけでわかるんじゃないの?
要はこれらの明瞭な違いを理解している人いたら教えて。
キーは数字とアンダーバーと半角英数を組み合わせた連番。
値は数字から全角まで幅広い。
下記は最小の再現でキーも値も例え。
textはサーバーからでもちろんもっともっと長い。
text = '1_a1,hoge1:1_a2,hoge2'
以下js
text = text.split(':');
NG
for(var i = 0; i < text.length; i++){
var s_str = text[i].split(',');
document.fomename[s_str[0]].value = s_str[1];
}
OK
for(var i = 0; i < text.length; i++){
var s_str = text[i].split(',');
document.getElementsByName(s_str[0])[0].value = s_str[1];
}
未だにfomenameのままなのか
もちろんtextはNGの時とOKの時で同じ。
ってか、そんなにfomenameがいやならかってに置き換えてくれよ。
ageでいいからID出してくれよ NGに入れるから
途中から読み始め他人のためにもう一度言っておくと、
NGとは違うキーと一致しないnameのinputに値が入って、
全部埋まらずに途中でとまるってことね。
どちらもsafari,ff,chromeでは想定どうり
最後まで動いてくれる。
揚げ足だけはとるんだな。
もういいや、ieのバグで済ましとくよ。
暇があったらmsに言ってみる。
もしわかる人いたら教えて。
あ〜、もう。
違うキーと一致しない
↓
キーと一致しない違う
一言で言えば「IEは非標準」だから
今更、詳しい挙動までほじくりまわすのは無駄だから、
クロスブラウザでDOMツリー弄りたいんならjQueryでも使っとくのが既知
fomenameがformnameだったとして
inputに入れたいっていってるけどformnameがさすものがなんなのか理解してるのか?
>どちらもsafari,ff,chromeでは想定どうり
とか言ってるけど想定どおりになるとはその再現コードを見る限り到底思えないな
なんかもう全員色々おかしなこといってるなwww
とりあえず質問者もっと頑張れよ
これはつまりさ、こんな感じのDOMがあるときに、
<form name="fomename">
<input name="1_a1" type="text">
<input name="1_a2" type="text">
</form>
この2行ができるかって話だろ?
document.fomename["1_a1"].value="hoge1";
document.fomename["1_a2"].value="hoge2";
とりあえずChromeとFirefoxなら動く
>>509 それに尽きる気がしてたまらない。
>>511 とくに510が見当違い・・・
もうがんばれないよw
>>512 変数じゃなくて打ち込みピンポイントはieでも動いたよ。
それは確かめた。
document.getElementById("1_a1").value="hoge1";
document.getElementById("1_a2").value="hoge2";
とすればどれでも動く
もともとvalueを入れてたとこが上書きされないんだろ?
516 :
515:2012/12/13(木) 16:36:25.76 ID:???
途中で書いちまったな
とりあえず1_a1とか数字で始めるのをやめてみろ
517 :
Name_Not_Found:2012/12/13(木) 16:36:53.38 ID:fuC/137X
IEはJavaScriptじゃなくてJScriptなんだよ
よく似てるけど違うインタプリタなんだよ
くわしくはMSのサイトのどこかに書いてあるからよく読んで
省略形にしないでformsなりelements使えばいいだけじゃね
document.forms[fomename].elements[s_str[0]].value= s_str[1];
>>514 idって・・・今そこじゃない。
>>516 一応ざっと調べて特に違反はしていないと思ったけど
その辺もあるのかね。
>>517 もうそれはイジメだなw
>>518 だからな、解決はとっくにしてるんだ。
>>519 ヒントになるかもしれないが今そこじゃないんだ。
>>513 それなら、お前がつぎにためすべきなのはこれだ。
var k1="1_a1", v1="hoge1", k2="1_a2", v2="hoge2";
document.fomename[k1].value=v1;
document.fomename[k2].value=v2;
getelementbyid以外でアクセスする設計がアホだからどうでもいい
冗談はいいから
おれのIE9だと
>>522どころか
>>512の時点でvalueが正常に反映されないな
FirefoxとChromeならうまくいくのに
querySelectorってまだ標準じゃないの?
とにかくIEで動くように作れば
他でも動く
>>522 今日はじめて次につながるかいとうをありがとう。
>>523 そうだよアホだよ〜。
で、事後にそれがアホな理由をきいているんだがな。
で、ByNameもだめなのか?
529 :
522:2012/12/13(木) 17:20:17.63 ID:???
>>528 俺は最初から
>>512や
>>522で試せといってるんだ。
ほんとアホだな。
それで俺がわざわざためしてみると
>>512すら正常に動かないのはどういうことなの?
おまえ、ほんとは試してないんじゃないの?
elementByIdだとかどうとかでなく
アホな理由は態度がデカイからに決まってんだろw
>>529 今バックアップ持っきて試したが動いたぞ。
でも、申し訳ないが違うinput欄にはいってた。
他のキー名で試したら動かない。
欄が多すぎて動いたと勘違いしてた。
どうも変数でなくても文字列で誤作動する。
むしろ使えない指定方法を無理やり
誤作動させたみたいだ。
>>531 欄が多いから正常に動いてるのかどうかも判断できなかったわけだ。
最小限のコードで試せってみんながうるさく言ってた意味を理解できたか?
問題の起こる最小限のコードを作ることが、問題切り分けの一番の近道ってわけだ。
ついでに、クロスブラウザ動作が目的なら、
DOMのアクセスにはgetElementByIdを使うかjQueryみたいなライブラリを使うっていうのも常識なんでそれも理解しとけ。
>>533 最初から読んでくれればわかるけど
間違いを見つけるのが目的じゃないことは理解してくれてる?
ブラウザによって動きが違う言語が信用できないって話なんだよ。
で、実際に実行が出来て、実際に違う動きをしてるんだよ。
「指定できない方法で無理やり動かして、数打ったら
たまたま誤作動で動いた」ってのが今回の問題。
誤作動とか途中まで動くってのはやっぱ嫌いだな。
間違えてるなら動かないで欲しかったよ。
>>534 ありがとう、覚えとく。
そりゃ、共通仕様になってるのはgetelementbyidだけなんだから
仕方ないだろ
>>535 最初から読んでる。
おまえは最初から
>>512や
>>522を試してみて、そのコードと結果を書くべきだった。
そうすれば、
>>534のような答えを即貰えただろう。
それができないからお前はアホ。
document.fomename[s_s[0]].value
がieで動かないはずなのに良く動いたな。
誤作動もするさ。
と一番最初に出ないのが質問掲示板として残念だな。
ブラウザによって動きが違う言語が信用できないってアホかw
なんでこんな奴がプログラミングしてんだ・・・
おい、同じプログラムで同じデータの処理するのに
実行する媒体で違う結果が出てどうする。
javascriptばっか使ってるとこうなるのか?
プログラムなんてOSが違えば動かなかったりするのが当たり前だが?
プラットフォームに依存するのは当然だろ
別にjavascriptに限った話じゃない
環境の相違を他人に押し付けてやっていける奴がうらやましいな
>>541 ”たり”の部分を教えてください。
>>542 相当経験をつんできたんですね。
他言語で実行結果が違う例をください。
544 :
Name_Not_Found:2012/12/13(木) 19:00:32.80 ID:fuC/137X
>>543 例えばC言語
俺が大学生の時に作ったCコンパイラだと、とんちんかんな結果になったぜ
>>543 別に言語とか関係ないよ?
OSのバージョンが上がったらアプリの動作に問題がでるとかよくあること
APIの挙動が永遠に変わらないとでも思ってる?
>>543 printfなんて同じC言語でも出力できる型と出来ない型があるだろ?
つまりそういうこと
>>544 いや、コンパイラ後の産物の実行結果は同じでしょ?
そのコンパイラがieみたいにクソでしたって事はすぐわかる。
>>545-546 動く、動かない、出来る、出来ないの二択は別にいいんですよ。
548 :
リリン:2012/12/13(木) 19:14:04.06 ID:??? BE:549914797-PLT(45072)
しかしブラウザによる違いを吸収してくれるようなお手軽な装置は欲しいなー
プログラムだと中間コードやマネージコードで環境による差を緩衝したり移植のしやすくとかやってんじゃん。
ブラウザ上となるとムズカシイのかなぁ。
549 :
Name_Not_Found:2012/12/13(木) 19:15:46.11 ID:fuC/137X
>>547 Cソース→gccでコンパイル→実行→正しい結果
Cソース→俺コンパイラで→実行→おかしい
JSソース→普通のJSインタプリタ→実行→正しい結果
JSソース→IEのインタプリタ→実行→おかしい
同じことじゃーん
>>547 コンパイルされた後のバイナリが呼び出すAPIの挙動が変わればアプリの動作も変わる。
動かなくなるわけじゃなくて動作が変わることもよくある。
551 :
リリン:2012/12/13(木) 19:16:17.60 ID:??? BE:139661928-PLT(45072)
>>547 C/C++でint32がとる32ビットは処理系依存だよ。2^32の範囲とってくれるとは限らない。
>>544 javascriptで言うコンパイルはブラウザが行ってる訳
わかる?
fomenameのアホが悔しくて話題変えて粘着してるのか
msとかieは無視しろよ
なんとJavaScript自体がどういう風に動いているかすらわかっていなかったというオチか
よく仕事になるな
androidも同じようなことが言えるよ
知識をもとに回答をくれている方には真面目な回答します。
>>549-551 細かい人間で悪いのですが、私の言っている問題とは少し違いますね。
理解と共に作成時に判断できるところがです。
コンパイラ等の処理系の問題は知っていますが、
作成時に知識と共に判断できる周知性がありますよね。
かつクライアントでの実行結果には均一性があると思います。
APIの件はたしかにある意味似ていますね。
細かい部分は良いから、とりあえず今のバージョンにあわせれば直るという
いまいち理解できない対処法方が・・・
ただ、誤作動までに明らかな行程があり、
仕様が変わったという原因があるわけです。
”間違えた構文”で動作し、結果が変わるというのは
言語として均一性において別問題でしょう。
もちろんJScriptやらが標準なのに構文チェックしないieがクソであって、
javascriptが悪いと言うのはお門違いだとは少しおもいますが、
初回でこんなことに陥らせたjavascriptが気持ちの悪い言語と言うのは変わらないですね。
偉そうだなおいw
>>557 そもそもdocument.xxxxxはjavascriptの言語仕様じゃない
DOM APIっていうブラウザにアクセスするためのAPIだ
>>557 javascriptに限らず、異なる環境では明らかに動かないとは言えないけど
動作が微妙に異なって、それが問題になるなんてことは珍しいことじゃない
あんたがそれを知らないのはそういうレベルのものを作ったことがないだけだ
例えばデバイスドライバとかを作ってみればわかる
562 :
Name_Not_Found:2012/12/13(木) 22:09:40.29 ID:fuC/137X
>>557 >初回でこんなことに陥らせたjavascriptが気持ちの悪い言語と言うのは変わらないですね。
「僕ちゃんプログラム書けるから!JavaScript?ブラウザで動くあれだろー?余裕余裕まかせてー」
↓
書き方を見つけて、それがレガシーだと知らずにそのまま使ってドヤ顔
↓
「せっかくやってくれたのに悪いんだけど、IEで動作が…」イラッ
↓
(プークスクス)
↓
「えっ?そんなっ…!!」
↓
「IEでエラー出すって、初めてだとよくあるらしいですね。やっぱり専門の人に…」イラッイラッ
↓
「ちょっ、ちがっ…、まって、まって。確認するから…確認…」
こういうのを想像した
所詮はIT土方だからな
JavaScriptがどうこうじゃなくて、cssだろうとieは気を付けないと
565 :
Name_Not_Found:2012/12/14(金) 00:04:15.58 ID:vYIvVIsG
prototypeについてです。
デフォルトで入っているStringとかを拡張出来るというのは理解しているのですが
String.prototype.x = function(num){
for(var i=0,tmp=[];i<num;tmp[i++]=this);
return tmp.join("")
}
//これで文字列なら全部に.xが定義されて使うことが出来る
a="ass".x(10);
stringとかの型はどの様に調べればよいのでしょうか
例えばhtmlはこうで
<div style="color:red;" id="target">red</div>
<div style="color:cyan;" id="target2">cyan</div>
a=document.getElementById("target").style;
として取得出来る全てのスタイル要素に任意のプロトタイプ
a.testFunction();を定義するのはどうしたらよいのでしょうか?
つまり、一度定義した後ならいきなり
document.getElementById("target2").style.testFunction();
が実行出来る状態にしたいのです
a.prototype.testFunction=function(){alert("OK");}
Style.prototype.testFunction=function(){alert("OK");}
とやってみたのですがダメでした
567 :
Name_Not_Found:2012/12/14(金) 03:08:56.49 ID:q57G3L2K
>>565 文字列だろうとなんだろうと、メソッドを追加するには
そのコンストラクタのprototypeに関数を追加せにゃならん、のはおk?
んで、
console.log(document.body.style.constructor);
/* 要素ノードならbodyじゃなくてもなんでもいい */
とかすると、styleプロパティのコンストラクタがわかる
でもIEが…
jQueryのajaxでsuccess時に
$(html_str).get(0);とするとhtml内にある画像へのリクエストが発生してしまうのですが
これを無くすことってできますか?
ajaxのtypeはhtml、textどちらでも結果が変わりませんでした
追記でリクエストが発生するのはXHTMLの<img src="***">でした。
HTMLのページだと発生しないようです。
570 :
Name_Not_Found:2012/12/14(金) 06:06:54.18 ID:q57G3L2K
>>568 しないか?
$('<img src="hoge.png">');
てした次点で、ロードしない?
んで、逆に言えばhtml_strからsrcの部分を切り取って、とっておけば
ロードはされなくない?
>>570 なるほどロードされてしまうものなのですね
事前に切り取っておきます
ありがとうこざいました
572 :
Name_Not_Found:2012/12/15(土) 13:43:22.61 ID:0A67eZxk
現在、次のような感じで、全てファイルを読みこんだ後にファイル内の関数を利用しています。
<SCRIPT src="f001.js"></SCRIPT>
<SCRIPT src="f002.js"></SCRIPT>
<SCRIPT src="f003.js"></SCRIPT>
if(scn == 0){
f001();
}else if( scn == 1){
f002();
}else if( scn == 2){
f002();
}else{
f001();
}
条件に一致した時のみファイルを読み込ませようとして、次のようにやったのですが、ダメでした。
if(scn == 0){
<SCRIPT src="f001.js"></SCRIPT>
f001();
}else if( scn == 1){
<SCRIPT src="f002.js"></SCRIPT>
f002();
}else if( scn == 2){
<SCRIPT src="f003.js"></SCRIPT>
f003();
}else{
<SCRIPT src="f001.js"></SCRIPT>
f001();
}
出来るだけ読み込むファイルを少なく効率的にしたいのですが、どのようにしたらよいでしょうか?
573 :
Name_Not_Found:2012/12/15(土) 15:36:15.05 ID:Kt2VZ+Qc
クラン:ToricoLour
NaMe:それいけ!万景峰号
上げ部屋であげてたんだけど あいつガチクランだろ?
>>572 >次のようにやったのですが、ダメでした。
それで出来るってどこで勉強したの?
オレルールがダメなたびに聴かれたら困るから
プログラミングするなら、せめて構文とはなにかを勉強してくれ。
>>572 そのむき出しのスクリプトタグはなんだ?
とりあえずスクリプトがheadにあり読み込み同期中と仮定して
document.write('<SCRIPT src="f001.js"></SCRIPT>');
ってしてみたらどう?
それでダメならごちゃごちゃとスクリプト書くことになるから全部読み込ませた方が早い
>>572 わりとめんどくさい
標準では提供されていない
できるだけサーバ側でなんとかしたほうがいいが、ブラウザ側でやるなら、
>>575みたいなのとか、scriptタグをDOMへ挿入するとか、
これは非同期的に読み込みが行われる
jQuery使って$(document.body).append($('<script src="f001.js"/>'))とかすると、
これは同期的に読み込みが行われる
こういう目的のライブラリもけっこうあるから調べてみるのもいいかも
関数の読み込みを同期的に読むか非同期的に読むかとか、
非同期的に呼んだ場合関数がどのタイミングで使えるようになるかとか、
読み込む関数自体も非同期に適当なタイミングで実行できれば良いのかとか、
あとブラウザによっては動かなかったりとか、
いろいろ検討する要素が多い
>575の</SCRIPT>べた書きは駄目だろ
>>572 なんでもいいからデバッガ使ってエラーを理解しろ
話はそれからだ
>>576 >同期的に読み込みが行われる
え?何言ってんのこいつ
質問!
JavaScriptでもjQueryでもいいのですが
簡単に設置できるチャットってありますか?
>>580 x = $('<script src="f001.js"/>')はすぐ戻ってくるけど
その後$(document.body).append(x)やると、実際にf001.jsを読み込んで
それを実行するまでブロックしてから戻ってくるなあ。
サーバ側細工してf001.jsの読み込みを10秒ぐらい遅らせてもきっちり待ってくれる。
以下みたいなコーディングを実際にしちゃっても問題無いってことなのかね?
$(document.body).append($('<script src="f001.js"/>'));f001();
こんな感じに、
stag = document.createElement("script"); stag.src = "f001.js";
document.body.appendChild(stag);
DOMに直接挿入した場合には、appendChildが戻ってきてもまだf001()は呼べないね。
onloadとか設定して監視するとかしないといけないから面倒だ。
584 :
Name_Not_Found:2012/12/15(土) 23:38:47.79 ID:QmJZuDbY
>>583 ajaxの非同期モードでスクリプトを読んで、evalしているみたいだね。
586 :
585:2012/12/16(日) 08:57:27.40 ID:???
非同期ちがう同期や
>>584 jQuery pluginのbxSlider
588 :
Name_Not_Found:2012/12/16(日) 11:40:14.67 ID:uCkBf2CH
>>587 ありがとうございます。
色々派生系あってすごい助かりましたたたたたたたたたたた!
ent=psy-ab&q=%E3%82%A6%E3%82%A3%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%88%E3%80%80SEO%E5%AF%BE%E7%AD%96%E7%84%A1%E5%8F%8C&oq=%E3%82%A6%E3%82%A3%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%88%E3%80%80SEOh=1009
>>583 ちょっと前にあった$('<img ..>')の時点で読み込み始まる話と矛盾してると思って確かめてみた
x = $('<div><img ..><script ..></div>')
$(document.body).append(x)
imgタグの読み込みは1行目で始まって、scriptタグの読み込みは2行目で同期方式で行われる
そして、scriptタグの中身はちゃんと実行されるのを確認したけど、
DOMには<div><img ..></div>の部分しか反映されない
つまり、scriptタグの部分は削除してjQueryで独自に処理、
それ以外のタグ?はDOMに処理をお任せしてるみたい
scriptはブラウザに依らなかったか?
>>591 jQueryがブラウザによって動作を変えてるって意味?
>>590のは要するにscriptタグの処理をブラウザに頼らずjQueryが自力でやってるように見える
とりあえず手元のIE9、Firefox17、GoogleChrome最新で確認した
>>592 できれば、古いjQueryで確かめて欲しい。
ソースのdomManipあたりにそういう処理があるけど、古いのにはないし。
どっちにしろ、ドキュメント化されてないふるまいに依存するのは、危険だと思うけれども。
jQueryがどうかは詳しく知らんけど
ツリーにぶら下がった<script>要素にsrcがあればその次点で読み込み開始
↓
レンダリング停止
↓
読み込み終わると評価開始
↓
評価終了後、レンダリング再開
これだけ覚えとけばなんとかなるじゃろ
>>594 レンダリング停止するのかね?そのへんはブラウザ依存の気もする
jQuery使わないでDOMツリーにぶら下げる場合はいつ評価終了するのかが非同期なんで、
イベントハンドラなりでそれを捕まえる必要があるね
597 :
Name_Not_Found:2012/12/17(月) 19:28:56.23 ID:eDYnu5CB
jQueryのanimateが完了したら、あるプロパティを変更する
また、必要ならメソッドの引数にコールバックを受けて実行する
ということをしたくて、下記のように書きました
function MyObject(){
this.div = $('<div>');
this.stat = 0;
}
MyObject.prototype.show = function(){
var A = this;
var callback = (typeof arguments[arguments.length - 1] == 'function') ? arguments[arguments.length - 1] : null ;
this.div.animate({ opacity : 1 },500,function(){
A.stat = 1;
if(!!callback) callback();
});
};
callbackの部分は「最後の引数が関数だったら」というイメージで書いたのですが
このようなやり方であっていますか?
もし、もっと賢いor定石的なやり方があったら教えてもらえますでしょうか?
B.prototype = Object.create(A.prototype) と継承した場合、Bのプロトタイプ=Aのインスタンスになるので
B.prototype.name = "JS" は、実際はAのインスタンスにnameプロパティが追加されるという認識でいいのでしょうか?
createって新しいオブジェクトを返すんじゃなかったっけ?
Object.create(A.prototype)は、新しく作ったオブジェクトに対してA()の呼び出しをしないnew A()だね
なので1行目は新しく作ったオブジェクトへの参照をB.prototypeに代入してるだけで、
B.prototype.nameはその新しく作ったオブジェクトのnameプロパティになるのは当たり前
その新しく作ったオブジェクトはAのインスタンスと呼んでいいのかは知らん
Aのコンストラクタ実行してないわけだから
602 :
Name_Not_Found:2012/12/18(火) 02:40:27.57 ID:qiygYlj6
失礼します。初歩的なことなのですが、GET変数の渡し方についてご教授願えませんでしょうか。
【環境】Win7 64bit ブラウザ:Chrome
【何をしたのか】ドロップメニューでsubmit
【期待する結果】ドロップメニューでsubmitする時、GET変数に複数の値で受け渡ししたい。
【連携ソフトウェア】WordPress MySQL
【テストページ】
ttp://test.anekipedia.com/ 【質問内容】
FormタグのGET変数の受け渡しでうまく動作しないので質問させていただきます。
テストページ(
ttp://test.anekipedia.com/)にて
ドロップメニューで記事の順番を変更、各listボタンで記事の並び方を変更しています。
GET変数にて複数の値を受け渡しを行なっているのですが、ドロップメニューを変更すると各listボタンで渡していたGET変数が消されてしまいます。
どのようにやればうまくいくのでしょうか?
該当の部分の記述:
<form name="irekae" method="get" id="sort_form5" class="sort_form5">
<input type="submit" value="list1" name="retu">
<input type="submit" value="list2" name="retu">
<input type="submit" value="list3" name="retu">
<select name='narabi' onChange="document.forms['irekae'].submit()" >
<option value="sort1"<?php if(!isset($_REQUEST['narabi']) || $_REQUEST['narabi'] == 'sort1') echo ' selected="selected"';?>>投稿日時が新しい順</option>
<option value="sort2"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort2') echo ' selected="selected"';?>>投稿日時が古い順</option>
<option value="sort3"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort3') echo ' selected="selected"';?>>五十音順(あ〜わ)</option>
</select>
</form>
アドバイスいただければ幸いです。
603 :
597:2012/12/18(火) 02:50:32.64 ID:AVcrTjlV
>>601 必要な部分を切り出したもので
実際にはもっと沢山の要素やプロパティ、メソッドがありんす
で、使うときに
var mo = new MyObject();
としたとして、divのanimateを単体で動かしたい時
mo.show();
animate終了後に別の処理をしたい時
mo.show(function(){
// ごにょごにょ
});
というようにしております
<a href="***?***"...> のhrefをlocation.pathnameに入れて実行するとurlが***%3F***みたいに"?"が変換されてしまうので
escape(), encodeURI(), encodeURIComponent() とか試してみても上手くいいきません。どうすればurlに"?"のまま渡すことができるのでしょうか?
ブラウザーはChromeです。
>>603 showの呼び方がそれならargumentsなんて使う必要は無いのでは?
これで十分かと。
show = function(fn){
...
var callback = typeof fn == 'function' ? fn : null;
607 :
597:2012/12/18(火) 08:22:09.01 ID:AVcrTjlV
>>605 ああ、なるほど
JSでは定義した引数投げなくてもundefinedでいけるんですな
>>600 B.prototype = Object.create(A.prototype).init() みたいな使い方を考えていました
コンストラクタが無い、あるいは実行されない新しいオブジェクトはインスタンスとは呼ばないんですね
ありがとうございました
>>608 何かのインスタンスではあるけど、クラスAのインスタンスと呼んでいいのか?って話でしょ。
chromeでテキストエリア内に<>などをつかったタグをinnerHTMLで書き出したのですが、
その場合はそのまま文字として<>が表示されました。
でもIE9で同じコードで実行すると、タグとして認識されてしまい、文字として書き出されませんでした。
これはIEの仕様ですか?
>>610 いいや、chromeが気を利かせてくれてる。
根本は実態参照化しないやつが悪い。
ie9に怒れないレベルのミス。
>>611 なるほど〜
じゃあ実態参照化した場合はchromeではどう表示されるんでしょう?
もしかして&lt;とかになっちゃうのかな
>>606 できました。ありがとうございました!!
615 :
Name_Not_Found:2012/12/18(火) 22:07:30.59 ID:V3Jbg2Ey
画像URLをタグで囲まずそのまま貼ったら自動で画像として表示される……
そんな夢のようなスクリプトはありませんかね……?
イミフ
貼るってどこに貼るんだよ
はっきりさせろやボケ
>>615 文字として貼るってこと?
なら、http〜.jpg(.pngなど)で検索かけて、imgタグおけば大丈夫。
あまりいい手段ではないけど、知識ないならinnerhtmlでも使っておけ。
619 :
Name_Not_Found:2012/12/18(火) 22:24:20.56 ID:V3Jbg2Ey
バーロー
ヒント:サロンパス
こいつ質問自体がおかしいな
出直して来い
俺はなんかオフライン編集のアルバムか
ビルダーみたいなもんを想像したわ
>>619 その画像URLはaタグに囲まれてるだろ
>>625 2chってURL入れたらリンクになるんじゃなかった?
素直に
>>618やっておけ。
innerHTMLと正規表現調べりゃできるからお手軽。
627 :
Name_Not_Found:2012/12/19(水) 00:37:00.93 ID:nf7mePiB
説明下手で申し訳ない。
ブログのコメント欄とかに画像URL貼られた時に自動的に画像が表示されたらいいなぁ
って思ったんですわ。
>>626さんの言うURL貼ったら自動でリンクになる、っていうのの派生系でそういうのないかなぁ、と
とりあえずinnerHTML調べてみます(`・ω・´)
628 :
Name_Not_Found:2012/12/19(水) 00:43:29.67 ID:nf7mePiB
何度もごめんなさい
イメージタグで囲まずに、ってことですね。
<imag scr="画像URL">で表示させるのが普通だけど、
それを、画像URL、とURLを置くだけで勝手に画像が表示されるといいな、って感じです
>ブログのコメント欄とかに画像URL貼られた時に自動的に画像が表示されたらいいなぁ
そういうのはブログのプラグインでやるのでは?
2chでURLを<a href="">に置き換えるように、同様のことが出来るとは考えなかったの?
とりあえずサーバサイドでやるべきで、JavaScriptでやるようなもんじゃないよ。
630 :
Name_Not_Found:2012/12/19(水) 01:04:03.01 ID:nf7mePiB
>>629 レスサンクス。
URLを自動リンク化、っていうのはjavascriptで出来るんですよ。
だから画像もできるかな、と思ったわけです。
プラグインでは調べたらうちのサービスではできない模様。
javascriptで出来るからってjavascriptでやるもんじゃないって言ってんだろw
どこのブログ使ってんのかしらんけど自作プラグイン使えるところなら難しいもんじゃないよ
632 :
Name_Not_Found:2012/12/19(水) 02:36:58.81 ID:zMy/bt8n
オートコンプリートが利かないログインページ用に、
メールアドレス等を入れてくれるブックマークレットを作ろうとしたんですが、
いくら試行錯誤しても上手く行かず調べても分からずじまいです
どこが間違っているのでしょうか?
サンプル javascript:void(document.all.mail.value="×";);
633 :
Name_Not_Found:2012/12/19(水) 02:50:51.12 ID:JGLRk6Qk
>>630 リンク=<a>要素には出来るのに、なぜ<img>要素には出来んのよ?
634 :
Name_Not_Found:2012/12/19(水) 03:21:44.82 ID:nf7mePiB
>>631 ありがとう。
自作プラグインそのものは使えるらしい……
友達に聞きつつやってみるわ(`・ω・´)
FC2ならアカウント持ってたから作ってやんよ
636 :
Name_Not_Found:2012/12/19(水) 04:19:18.85 ID:nf7mePiB
>>635 本当ですか!
作ってくださるならお願いします(_ _)
ご好意に痛み入ります!
>>636 すまん
見てみたがコメントに割り込むことは無理だったわ
JavaScriptでやるしかないな
エログロ貼られたりしたとき、めっちゃ困らないか
>>633 コメント欄のリンクっぽい文字列を<img src="..." />に置換すれば?
for (var i = 0; i <
この位置のvarは問題なしですか?
何が問題なのかいえよボケ
わけわからん質問すんなしね
ありがとうこざいます
644 :
Name_Not_Found:2012/12/19(水) 10:55:18.16 ID:JGLRk6Qk
>>640 気になるんだったら
var i = 0;
for(; i <
と書いても構わんぜよ
645 :
Name_Not_Found:2012/12/19(水) 11:59:23.82 ID:nf7mePiB
>>637 そっか。でもありがとうございます気持ちだけでも嬉しかったです(・∀・)
>>638 確かにそうだぁあああああああそういうの考えてなかったぁあああああああああ
あれよ2chブラウザみたいに
URL[ボタン]
とかにしてボタン押したら開くとか
ちょい見るボタンとかも設置してそっち押したら
縮小したりモザイクかけたりそんなんで
647 :
Name_Not_Found:2012/12/19(水) 13:21:49.98 ID:5aQ2JioM
外部ページをそっくりそのままページ内に表示したい場合って
今でもiframeタグ使えばいいのかな。
ajax的なやり方だと外部ページのcssとかが反映されない気がするけど。
>>641 駄目な言語があるんだよ
無知は黙ってろ
jsでもパフォーマンス追い詰めたらダメじゃなかったっけ。ループ毎宣言ならないのかな
javascriptの場合には、forでvar宣言しても、その変数のスコープはforの外側の関数全体になるんで、
パフォーマンスには影響しないだろ
コンパイラ言語使ってるとloop.lengthと中についつい書いてしまうな
まぁパフォーマンスとか微々たるもんだけど
>>648 ここJavaScriptのスレだし、他の言語の事情なんぞ知った事じゃない。
>>650 一番わかりやすいんじゃないかな?違いが
javascriptのvarは他言語の変数宣言との違いを強調しとくべきだな。
Cでこれはa=100になるが、
int a=0;for(int i=0;i<10;i++) for(int i=0;i<10;i++) a++;
javascriptのこれはa=10になる。
var a=0;for(var i=0;i<10;i++) for(var i=0;i<10;i++) a++;
つまりどういうことだってばよ
イザナミだ
それ、変数じゃなくてスコープの問題なんじゃ…
658 :
Name_Not_Found:2012/12/20(木) 13:04:46.21 ID:CilJlPcf
var a = 0;
for(var i=0 ; i<10 ; i++){
for(var i=0 ; i<10 ; i++){ // ←このブロックにスコープが有るかどうか
a++;
}
}
JSにはないので
1段目ループの1周目開始
↓
2段目ループが終わった時点でiの値は 9
↓
1段目ループでi++されてiの値は10
↓
1段目ループの条件式i<10が真にならないのでループ終了
>>654が言いたいのはそういうことだろうけど
aの値は9じゃね?
659 :
Name_Not_Found:2012/12/20(木) 13:05:50.37 ID:CilJlPcf
間違えました10です
何を寝ぼけてんだ俺…
for(var i=0;i<10;i++) a++;
これでaが9になるとか大丈夫?
661 :
Name_Not_Found:2012/12/20(木) 13:23:39.54 ID:CilJlPcf
ごめんなさい
ごめんなさい
ごめんなさい
もう古いとか言われることもあるが、このforループの書き方は鉄板だよな
for(i=0;i<n;i++) {...}
i=0〜(n-1)でn回実行、i=nになってループから出てくる。
i=1から始めてるのとか、i<=nとかの条件式を見ると、
これ何回回るんだ?とかちょっと考え込む。
何を言ってるんだ
どういうのが新しい書き方なんだ
イテレータ使えってことじゃないの?w
JSだとちょっと使いにくいがw
イテレーター使えってまさか言わないよなと思ってたが
667 :
Name_Not_Found:2012/12/20(木) 16:53:17.55 ID:CilJlPcf
むりやりですが
(function(i){
/* 処理 */
if(i < n) arguments.callee(i+1);
})(0);
668 :
Name_Not_Found:2012/12/20(木) 16:54:07.67 ID:CilJlPcf
ちがう、こうか
(function(i){
/* 処理 */
i = i+ 1;
if(i < n) arguments.callee(i);
})(0);
669 :
きら ◆Kira.u9zNc :2012/12/20(木) 21:41:18.27 ID:vDzv+wiW
URLデコードすればいいんじゃね
それ以上は何も言えん
広告の読み込み後に実行するよう書けばいいよ
その前に広告を消しても大丈夫か規約を確認しとけ
すみません、getElementByIdで取得したものを変数に入れて
その変数にメソッドつけて実行させるってできないんでしょうか?
var newNode = document.createElement("div");
newNode.setAttribute("id", "hoge");
var hoge = document.getElementById("hoge");
document.body.insertBefore(newNode, document.body.firstChild);
var hogeText = '<p>ほげほげ</p>';
hoge.innerHTML = hogeText;
みたいにやると「hoge is null」ってエラーが出ます
この先、div#hogeに対して色々とスタイルを付けるので
hogeだけで呼べればラクだと思ったのですが、
横着しないでdocument.getElementById("hoge")を何度も書くしかないのでしょうか?
673 :
Name_Not_Found:2012/12/21(金) 00:18:53.24 ID:06lRFr9k
>>672 とりあえずnullになるのは
まだdocumentに<div id="hoge">がぶら下がってない時点でgetElementByIdしてるから
そんな事しなくても、ずっとnewNodeって変数名で使ってりゃいいじゃない
var newNode = document.createElement("div");
newNode.setAttribute("id", "hoge");
document.body.insertBefore(newNode, document.body.firstChild);
var hogeText = '<p>ほげほげ</p>';
newNode.innerHTML = hogeText;
これじゃいかんの?
674 :
Name_Not_Found:2012/12/21(金) 00:20:59.78 ID:06lRFr9k
あと、メソッド付けれるのか、についてはyes
ただ、そういう事するのを嫌う人もいることは覚えておくといいかも
675 :
672:2012/12/21(金) 00:29:02.06 ID:???
>>673 そうか、一度代入してるんだからそれを使い続ければいいんですよね
気づきませんでした
ありがとうございます!
書き方のアドバイスも感謝です!
676 :
きら ◆Kira.u9zNc :2012/12/21(金) 12:44:49.63 ID:nr6lXK9J
setTimeout('(function(){var d=document;
var e=d.createElement('SCRIPT');
e.setAttribute('language','JavaScript');e.setAttribute('src','
http://s6.ql.bz/~mamiya-shou/bm/invalidFloatAd.min.js');
e.setAttribute('charset', 'UTF-8');
d.body.appendChild(e);})();',5000);
こうしても出来ません(本当は一行)
どうしたらいいですか?
うぜぇ
678 :
Name_Not_Found:2012/12/21(金) 13:35:58.81 ID:06lRFr9k
>>676 setTimeoutの第一引数は関数を渡せばいい
>>676 'a' 'b'
というのは文字列が1個だと思う? 2個だと思う?
680 :
きら ◆Kira.u9zNc :2012/12/21(金) 19:05:48.32 ID:nr6lXK9J
つまり、
>>676 の1行目にある 'function...
という文字列は ...Element('
で終わってしまい、その次にある SCRIPT というのは意味不明のゴミに
なっているんでは、ということ。
682 :
Name_Not_Found:2012/12/21(金) 22:31:25.11 ID:06lRFr9k
>>680 >でもどうしてですか?
どうしてもこうしても、そういう仕様だから
文字列が渡されたらそれをJSとして評価するだけだけど
>>676は
'(function(){var d=document;var e=d.createElement('
という文字列がわたってエラって終わる
すみません、サイ本の第6版の日本語訳で勉強しているのですが、
何度読み直しても理解できないところがあるので
教えて頂けないでしょうか?
分からないのはp.268-269 9.9.1 名前空間としてのオブジェクトの部分です
このページには、名前が衝突しないようにするために
グローバル変数をひとつだけ定義して、
その変数のプロパティたちに他の値を格納する方法が紹介されています
で、p.269に
var sets = com.davidflanagan.collections.sets;
とあって、名前空間が長いときはこうやって短くできる的なことが書いてあるんですが、
これはコードの他の部分で気付かずにまた
var sets = hoge;
ってやったら名前が衝突しないようにした工夫が台無しになりますよね?
だったら短くしないようがいいじゃん、って思うのですが、
私は何か運用の仕方とかで勘違いしてるんでしょうか?
>>683 javascriptの変数のスコープを理解してるかな?
ひとつの巨大な関数スコープ内ですべてをやろうとしない限り、問題にならないだろう。
>>684 ありがとうございます
>>683のページに書かれていることは参考にしなくても
ローカル変数だけ使えば問題ない、ということなんでしょうか?
>>685 var sets = com.davidflanagan.collections.sets が問題無いという意味。
なぜなら、スコープ内でvar sets = com.davidflanagan.collections.setsや
var sets = hogeをやる限りは、他のスコープにその影響は及ばないから。
setsをcom.davidflanagan.collections.setsとして使いたい場合は、
スコープ内でsetsを他の値に変更しないように気をつければよい。
スコープを適度な大きさに保つ限りそれで問題無い。
>>686 なるほど!
なんか分かってきたような気がしてきました。
ちょっと色々と試してみます。
どうもありがとうございます。
688 :
きら ◆Kira.u9zNc :2012/12/23(日) 12:19:32.77 ID:xDktfkQz
つまり最初の'を"にすればいいって事ですか?
google.maps.api v3を使ってて、
対応するsubmitボタンを押すとgoogle.maps.event.trigger(marker,'click')で対応するマーカーにクリックイベントを送るようにしたいんですが
どうすればいいのでしょうか?
↓のようにしたのですが出来ません。
・javascript
function set_value(s_val){
document.frmMvPost.onbtn.value = s_val;
}
function View(){
var req_id = document.frmMvPost.onbtn.value;
var tmp=0;
for(var i in markersArray){
if(markersArray[i].title == req_id){
tmp = markersArray[i];
}
}
google.maps.event.trigger(tmp,'click');
}
・html
<form name="frmMvPost" action="" method="post" onsubmit="return View()">
<input type="submit" name="btn" value="表示" onClick="set_value('1')">
<input type="hidden" name="onbtn">
</form>
window.xxx = {
get aaa() {
},
bbb: function() {
},
};
getの書き方を初めてみたんですがどういった違いがあるのでしょうか?
692 :
Name_Not_Found:2012/12/24(月) 17:38:10.19 ID:jtf/MTPu
>>688 うーん、ちがう
クォートのエスケープは超基礎的というか書き方の話なんで
できればググってよそで学んで欲しいんだが
どーーーーーーしても文字列で渡したいのなら、外側をシングル中をダブルにするか
全部シングルで中はエスケープしてくだされ
そんなことより、setTimeoutやsetIntervalは第一引数に関数を受け取れるんだから
JavaScriptのコードをAjaxで文字列として受け取った、とかいう場合以外は
それをわざわざ文字列にする必要はないっつーはなしです
setTimeout系の第一引数に文字列渡すと、実行するたびにいちいちevalするから遅くなるしな
あれは内部でevalしてんのか、勉強になるわ
厳密には eval と違うけど。
const使えるのってfirefoxだけなんだな
いつの間にかGoogle ChromeとOperaも対応してた
Operaはまだvarの別名だったけど
ESのconstってブロックスコープなのか
Google Chromeがstrict modeじゃ使えなかった
tes
JavaScriptでゲームを作ろうとしてるんですが、
canvasで円を描いて、円の中をクリックしたら円を移動させて、
っていう、AIM練習ゲームみたいなのを作りたいんですが、
円をクリックしたら、処理をさせるみたいな、
四角の場合、
window.document.onclick = function(e){
var obj = new Object();
obj.x = e.pageX;
obj.y = e.pageY;
if(obj.x >= 100 && obj.x <= 200 && obj.y >= 100 && obj.y <= 200){処理}
}
円の場合どうすればいいでしょうか?教えてください。
なんでObject使っているのかは分からんけど、円の中心(x0,y0)半径rのとき
点(x,y)が円内にある条件は「(x-x0)**2 + (y-y0)**2 < r**2」だから。
ただし「**2」は2乗を表す(JavaScriptにはない)。
703 :
701:2012/12/26(水) 09:22:55.98 ID:???
教えていただいた条件を、ifの中で使って、円をクリックしたら、
ちょうどぴったり円の中でクリックしたときだけ、
ifの中の処理を実行することができました、
ありがとうございました。
Javascriptの変数定義の順番について教えてください
thisについて色々試していて、下のコードを書いたんですが
変数定義がAの位置かBの位置かで実行結果が変わります
なんでですか?
<script type="text/javascript">
'use strict';
var testWindowFunc1 = function(){ console.log(this); }
window.testWindowFunc1(); // => Window {top: Window, ...}
var testWindowFunc2 = function(){ console.log(this.testWindowVal); }
// window.testWindowVal = "Hoge"; // A
window.testWindowFunc2(); // => Aの行をコメントアウトなら "Hoge", Bの行をコメントアウトなら undefined
// window.testWindowVal = "Hoge"; // B
</script>
> Aの行をコメントアウトなら "Hoge", Bの行をコメントアウトなら undefined
そもそもこうはならないんだが(結果が逆)
すんません逆になってました、というか言葉間違ってた
Aの行のコメント外したらHoge、Bの行のコメント外したらundefinedです
Chromeでやってます
あれ、当たり前のこと聞いている気がしてきた
すみません704は取り消しでお願いします。
なんでこんな質問したんだろう…
708 :
Name_Not_Found:2012/12/26(水) 12:44:44.34 ID:+iKQtizy
JqueryのjScrollbarというプラグインを使っています。
導入すると、オプションでマウスホイールでのスクロールも可能です。
ただこのときに、スクロールバーの範囲内だけでなく、ページ全体も
同時にスクロールされてしまいます。
このプラグインに限った問題ではないのかもしれません。
このページ全体のほうのスクロールを止めるにはどうすればよいでしょうか。
こちらはプラグインのサイトになります
http://demos.myjqueryplugins.com/jscrollbar/ よろしくお願いします。
ホイールの動きを拾っているところで、イベントバブリングを
止めてしまえば良いよ
<script type="text/javascript">
var i=0; ←こっちで定義した変数 i を
</script>
・
・
・
<script type="text/javascript">
alert(i); ←こっちで使うことって出来ますか?
</script>
出来る
firefoxの最新バージョンでIndexedDatabaseのトランザクション処理に
document.writeを使ったデバッグコードを入れると動作がおかしくなるのは仕様ですか?
var YouTube = new Object();
YouTube.rev = 2;
YouTube.SearchDesc = "Youtube by Darby_Crash"; //MOD BY Darby_Crash, original by Xiphirx
YouTube.Name = "YouTube";
YouTube.Search = function (keyword, page){
var result = new Object();
result.bypage = 20;
result.start = (page-1)*result.bypage+1;
var sortBy = "relevance";
var catSpecified = false;
if (keyword.charAt(0) == '$')
{
var keywordBu = keyword;
var kpos = keyword.indexOf(" ");
var category = keyword.substring(1, kpos);
keyword = keyword.substring(kpos+1);
catSpecified = true;
}
if (keyword.charAt(0) == '@')
{
sortBy = "published";
}
if (catSpecified == false)
{
c=GetContents('
http://gdata.youtube.com/feeds/api/videos?q='+escape(keyword)+'&start-index='+result.start+'&max-results='+result.bypage+'&orderby='+sortBy+'&racy=in
}
else
{
c=GetContents('
http://gdata.youtube.com/feeds/api/videos?q='+escape(keyword)+'&start-index='+result.start+'&max-results='+result.bypage+'&orderby='+sortBy+'&racy=include&category='+category+'&v=1');
}
result.total = ext("<openSearch:totalResults>");
result.VideoInfo = new Array();
v = {attr:2};
v.id = 0;
v.Title = "YouTube Search Help";
v.Description = "@query = search by upload date\n$category query = search in a category";
v.URL = '';
result.VideoInfo.push(v);
while(p=c.indexOf("<entry",p)+1){
v = {attr:2};//neither IDA|npp find this string ...0=RD 1= 2=SRD 3=S
v.id = ext("<id>
http://gdata.youtube.com/feeds/api/videos/","</id>");
v.Title = ext("<title type='text'>");
v.Description = ext("content type='text'>")+'\nUploader:'+ext("<name>");
v.CommentCount = ext("countHint='")*1;
v.Tags = ext("keywords>").replace(/,/g,"");
v.LengthSeconds = ext("ds='")*1;
v.RatingAvg = ext("average='")*1;
v.RatingCount = ext("numRaters='")*1;
v.MylistCount = ext("favoriteCount='")*1;
v.ViewCount = ext("viewCount='")*1;
v.ThumbnailURL = '
http://i.ytimg.com/vi/'+v.id+'/default.jpg';
v.SaveFilename = v.id+".flv";
v.URL = 'YouTube.play("'+v.id+'")';
result.VideoInfo.push(v);
}
YouTube.play = function (id){
c=GetContents("
http://www.youtube.com/watch?v="+id);p=0;
var url = unescape(ext('url_encoded_fmt_stream_map','allowscriptaccess'));p=0;
p = url.indexOf(",itag=5&url=", 0); preurl = url.ext('fallback_host=','.c.');
p = url.indexOf(",itag=5&url=", 0); url1 = unescape(url.ext('.c.youtube.com','&type=video')); url2 = url.ext('&sig=','&quality=');
var url = '
http://'+preurl+'.c.youtube.com'+url1+'&signature='+url2; //quality=small
return url;
}
SiteList.push(YouTube);
これでgotubeでyoutubeが見られたんですが 仕様変更で見られなってしまいました
どの変を変えればいいのかさっぱりなんです・・・
716 :
Name_Not_Found:2012/12/27(木) 00:01:47.49 ID:S5V5JykO
>>715 では、まず1行目から読んでいって
わからない部分が出てきたら、再質問してくだされ
javascriptを覚える行程ってどんな感じですか?
プログラミング初心者なんですが
いいサイトありますか?
つドットインストール
720 :
"":2012/12/27(木) 03:49:38.62 ID:???
ぼっち....
この人Zextにはいったんですね 1.3でがちクランは入れるんだ!1.5の俺は神だな
cod?
Crying of Dourteyか
javascriptで、ループのフレームレートをtextに表示したいんですが、
window.onload = function(){
var countFps;
function getFps(){
function gameLoop(){
countFps++;
document.getElementById("text").value = fps;
setTimeout(function(){gameLoop()},100);
}
fps=countFps;
countFps=0;
gameLoop();
setTimeout(function(){getFps},1000);
}
getFps();
}
これでは、フレームレートが表示されるどころか、undifinedになってしまいます、
ブラウザはIE10です、
どうやったらフレームレートが表示させられますか?教えてください。
変数の初期化がされてない
fpsが定義されてない
setTimeout〜getFpsが括弧忘れてる
ありがとうございます、
window.onload = function(){
var countFps = 0;
var fps = 0;
function getFps(){
function gameLoop(){
countFps++;
document.getElementById("text").value = fps;
setTimeout(function(){gameLoop()},100);
}
fps=countFps;
countFps=0;
gameLoop();
setTimeout(function(){getFps()},1000);
}
getFps();
}
教えてくれたことを参考に、
ここまでできました、ですが、countFpsとfpsが、どんどん増えて行ってしまいます。
どうすれば、textにフレームレートが表示させられますか?教えてください、お願いします。
gameLoop何回呼び出してんだよ
727 :
725:2012/12/27(木) 12:22:52.46 ID:???
教えていただいたことを参考に、
gameLoopをgetFpsの外に移動させて、
function()から一回だけ呼び出したら、なんと、
textにフレームレートが表示されました!
お二方、教えてくれて、ありがとうございました。
728 :
Name_Not_Found:2012/12/27(木) 15:25:54.36 ID:S5V5JykO
GreaseMonkey用のscriptを作りたいんんですが、
「href=.*\/status\/(\d+).*\</a\>」
の○桁の数字(\d+)部分を↓に入れて、
「
http://api.twitter.com/1/statuses/show/(\d+).json」
そこの、"retweet_count"要素の数値を取得して
表示を
「href=.*\/status\/(\d+).*\</a\>」+「取得した"retweet_count"の数値」
にするにはどう記述したら良いか教えて頂けませんか?
はちゃめちゃな質問ですが、
よろしくお願いします。
731 :
Name_Not_Found:2012/12/28(金) 18:29:38.81 ID:hhRHyG/d
>>729 replaceの第二引数を関数にすると
その第一引数に全体マッチ、第二以降に部分マッチが入るから
文字列.replace(/href=.*¥/status¥/(¥d+).*¥</a¥>/,function($0,$1){
ごにょごにょ
})
て出来る
あとは煮るなり焼くなり好きなようにすれば良いです
>>730 javascript自体ほとんど分からない状態でして、
重要な部分さえ分かれば
後は他のscriptを参考に見よう見真似で作ってみようと。
>>731 レスありがとうございます!!
>文字列.replace(/href=.*¥/status¥/(¥d+).*¥</a¥>/,function($0,$1){
ごにょごにょ
})
「href=.*\/status\/(\d+).*\</a\>」の部分は $0
「\d+」は $1を使えばいいって事ですよね?
これを手掛かりに何とかやってみます!
出来なかったら、また質問させていだたくかもしれません。
&yen;
735 :
Name_Not_Found:2012/12/28(金) 21:55:01.95 ID:tj8B5+LX
レスのポップアップをしようとしてるんだけどエラーが出るどこを直せばいいか教えてクレメンス
<script type="text/javascript">
function popUp(i) {
// ポップアップの位置を調整
window.document.onmousemove = mouseposition;
function mouseposition(position){
if (window.createPopup){
x = event.x + document.body.scrollLeft; //firefox以外
y = event.y + document.body.scrollTop;
}else{
x = position.pageX ; //firefox用
y = position.pageY;
}
}
ID.style.left = x + 10 ; // 表示するx座標
ID.style.top = y + 10 ; // 表示するy座標
// ポップアップの表示
popuptxt = '<TABLE bgcolor="#666666" cellspacing="1" cellpadding="3"><TR><TD bgcolor="#efefef">' + document.getElementById("res" + [i]).innerHTML + '</TD></TR><TABLE>';
ID.innerHTML = (popuptxt);
ID.style.visibility = "visible";
}
function hidePop() {
ID.style.visibility = "hidden";
}
</script>
736 :
732:2012/12/28(金) 22:00:10.46 ID:???
もう来なくていいに同意
コンソールに出ないってことは </TABLE> が無いとかじゃね?
739 :
qqq:2012/12/29(土) 07:12:36.00 ID:ZRIfs4Nb
質問です。
Google Chrome で文字コードがEUCのページを開くと文字化けするので、
ブックマークレットで対応できないかと思い、↓のようにしました。(スペースや改行は適当に除去してください。)
javascript:(function(){
var meta = document.createElement("meta");
meta.setAttribute("http-equiv", "Content-Type");
meta.setAttribute("content","text/html");
meta.setAttribute("charset","euc-jp");
document.getElementsByTagName("head")[0].appendChild(meta);
})();
でも、これだとMETAタグの追加自体は行えるようですが、肝心の文字コードをEUCにしてブラウザに読み込ませるということができません。
何かよい方法はないのでしょうか?
JavaScriptで、わからないことがあるので、質問します。
var x = 1.2
とか、整数か、小数点数が入ってる変数があります、
変数の中身が、整数のときだけとか、小数点数のときだけに、処理をさせるには、
どうすればいいですか?教えてください、お願いします。
>>741 見てみました、そのサイトの138番ので、
わかりました、やりたいことができました、ありがとうございました!
>>739 Content-Typeを上書きする拡張を使う
ボタンを押したらテキストエリア内にあるタグを入れようと思ってるんですが、
その関数で、
function puttag(){
var tag = "タグ";
var target = document.getElementsByTagName('textarea')[0];
target.innerHTML += tag
}
っていう関数を書いてるんですが、
テキストエリアが空白の状態であれば、指定したタグがテキストエリア内に目に見えて表示されるのですが、
最初に文字が入っている状態でこの関数を実行すると、「テキストエリア内にタグが入っている」のに目に見えて表示されません。
なぜタグが入っていると判断したかについては、タグをinnerHTMLに代入した直後にalertで表示してみると、ちゃんとタグが表示されたからです。
でもブラウザ上には表示されません。
ブラウザ上でも表示させるにはどうすればいいでしょうか?
× target.innerHTML
○ target.value
>>746 うおおおおおおおおおお!
ありがとうございました!!
間違ってライブラリのとこで質問してしまった
ラッパーオブジェクトは不要で混乱を招くから
new Boolean、new Number、new String、new Object、new Array
は使用をさけるべきってgood partsに載ってるのですが、
ラッパーオブジェクトってよくわからないのですが、
やっぱ使わない方がいいのでしょうか?
>>748 Object, Arrayは関係ない。どちらもオブジェクトだから
(とはいえどちらも {}, [] の記法のみ使えばok)
論理値、数値、文字列は基本的にプリミティブ値として使えばよい
プリミティブ値に対して直接メソッド呼び出し・プロパティ参照を行うと、
その都度内部的にラッパーオブジェクトが作られることになってる
var str = 'hoge';
console.log(str.toUpperCase()); // 内部的にnew String(str).toUpperCase()
// 結果的にString.prototype.toUpperCaseが呼ばれ、大文字の"HOGE"を得られる
プリミティブ値をオブジェクトとして作ると独自のプロパティを持たせることができるくらい
var strObj = new String('hoge');
strObj.jp = 'ほげ';
console.log(strObj.jp);
生成コストが高いし、扱いにくいので使われない
'hoge' === 'hoge' // => true
new String('hoge') === new String('hoge') // => false
typeof 'hoge' // => "string"
typeof new String('hoge') // => "object"
750 :
Name_Not_Found:2013/01/02(水) 17:09:30.65 ID:xhOTHjDx
質問です
javascriptで関数の引数にデフォルト値を持たせるってできないんでしょうか?
こんな感じです
testFunc = function(hoge=123){
alert(hoge);
}
試しにやってみるとシンタックスエラーと言われ、実行できないのですが
同様のことをするにはどうしたら良いですか
>>750 古いブラウザを使って試しているんじゃないかね
752がベストだろうけど、パズル的な答えだとarguments.lengthを使ったりとか。
letはChromeでは使ってはいけないんでしょうか?
for (let i = 0; でエラーになります
<img id="myimage" src="images/001.jpg" alt="my image" />
var myimage = document.getElementById("myimage");
if (myimage.addEventListener) {
// IE9, Chrome, Safari, Opera
myimage.addEventListener("mousewheel", MouseWheelHandler, false);
// Firefox
myimage.addEventListener("DOMMouseScroll", MouseWheelHandler, false);}
// IE 6/7/8
else{ myimage.attachEvent("onmousewheel", MouseWheelHandler);}
function MouseWheelHandler(e) {
// cross-browser wheel delta
e = window.event || e; // old IE support
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
var t=myimage.width + (30 * delta);
var x=Math.max(50, Math.min(1200, t));
myimage.style.width = x+ "px";
var y=myimage.height;
//we return false to cancel the standard event which would normally scroll the page.
return false;}
英語のサイトに載ってたマウスホイールでの画像の拡大と縮小
なのですが、画像拡大時にデフォルトのマウスホイールでの動作
(ブラウザスクロール)は無効になるのですが、
画像縮小ではブラウザスクロールもしながら画像縮小してしまします
return false;でデフォルトのブラウザの動作を無効にしているのでは
ないのですか?何故ですか?
>>756 デフォルト動作を無効にするのはevent.preventDefault() (ただしIEのattachEventだとエラー)
return false でデフォルト動作が無効になるのはイベントプロパティ・イベント属性・IEのattachEventのみ
IEは event.returnValue = false でもよい
あとイベントハンドラに渡される引数を優先して e = e || window.event にした方がいい
>>755 Google ChromeはECMAScript6の構文を実装していない
for (i = 0; ...) {
if (i == 4 || i == 8 || ....) {
}
}
4回ごとに if で判定したいのですが簡潔に書くことってできますか?
>>760 for(i=0;...){
if(!i%4){
...
}
}
>>760-761 本当にthen側しかないのなら
for(i = 0; ...; i += 4)
がいいんじゃないでしょうか。
>>761-762 ありがとうございます。<br>を入れたかったのです。
数学に弱いとダメですね> <
if (!(i % 4)) ですね。var i = 0 なら if (!((i + 1) % 4)) でした
greasemonkeyスクリプトで、2ch型の掲示板に機能を追加するスクリプトを書きたく、その一環としてIDをポイントすると同じIDの
書き込みをツールチップで表示するようにしたいのですが、以下を満たすようなツールチップが作れません。
・マウスポインタが"ID"という文字の上、あるいはツールチップ上にあるときはツールチップを表示したままにし、それ以外にあるときは消す。
・ツールチップ内にHTMLを使いたい。
"ID"という文字とツールチップをまとめて扱いたいのでまとめて同じタグに入れてそれにイベントハンドラを設定すればいいのかなと思ったのですが、
それをインライン要素にするとツールチップにブロック要素を入れられず、ブロック要素にすると"ID"が一行になってしまいます。
どうやれば良いのか教えてください。(windows 7 professional/ firefox 17.0.1/ jQuery1.8.3)
display: inline-block とか?
>>767 それでうまくいくっぽいです。ありがとうございました。
JavaScriptって、関数呼び出しをする時は全部apply使う方がよくないですか?
なんで?
thisがわかりづらい?
771 :
Name_Not_Found:2013/01/06(日) 11:59:55.82 ID:sncWD9lL
772 :
771:2013/01/06(日) 12:00:40.42 ID:???
sage忘れました。ごめんなさい
>>771 クラスディレクティブ的な書き方がなく、関数スコープだけでやるから
結果的にthisがグローバルの参照になることがあるので
混乱することがあるかもしれない
けどそれは慣れの問題だと思うんだけどなあ
例えば自分が昔書いた、関数の中に関数を書いてプライベートクラス!と言い張る糞コードがあるんだが
そんなうんこを今読み直しても、thisで混乱することはないのですよ
うん、やっぱ慣れですな
>>773 う〜ん、慣れですか。(分からない用語があって何となくですが)分かりました
変数を関数の外側に探しに行くんでしたっけ。
例えば他のOOPな言語の後にJavaScriptを始める人には
apply,...を使ったやり方から始めた方が良いのかも?と思います。
ちなみにその糞コードみたいなの、この前書きました…w
自分のコードなら慣れで良いけど
他人のコード読むときにいちいち慣れるのはたいへんじゃね?
>>775 そうですね。まあJavaScriptに限らない話になりそうですけど
今後他人に教える/他人と共同作業する立場になるので、その上で
>>769を書いたしだいです。
なかなか難しいなあ〜
なぜそう思うのかも書かずにいきなり
>>769みたいなこと言い出す奴と
共同作業することになる皆様・・・ご愁傷様
結論:JavaScriptは糞。
ECMAScript最強
thisはnewとその場呼び出しの匿名関数とevalとイベントハンドラが例外と覚えておけば混乱しない
さすがにそれは例外が多すぎるだろ
thisが駄目って、今時の言語は相当数が該当しない?
thisは単に動的スコープをもってるに過ぎないだろ
構文スコープと動的スコープの区別がつかない奴が混乱してるだけ
>>783 そのあたりちゃんとカバーしてる初心者向け資料ってある?
thisはそもそも変数じゃないからスコープを持ってるとも言わないんじゃね?
動的に参照できる値が変化するけど
いわゆる動的スコープとは全然違うものだね
通常関数呼び出しするとグローバルオブジェクトが設定されたりするし
applyとcallとメソッド方式の関数呼び出しで指定されたものに変更
普通の関数呼び出しでグローバルオブジェクトに変更
evalは変わらない
thisってこれだけだと思ってたけどこれじゃダメなの?
thisはpenです。
eval(this)
「thisは呼ばれた関数を持っている親オブジェクトを参照する」
じゃいかんの?
>>790 thisは、関数が何処で定義されているかには関係無く、関数をどう呼んだかで変わるだろ?
792 :
Name_Not_Found:2013/01/07(月) 10:32:21.68 ID:abM/ZTW+
>>791 callとapplyは明示的にthisとなるオブジェクトを渡すアレだから別として
他になんかあるけ?
>>792 var f = obj.f;
f();
とかやるとobj.f()の中でthisはグローバルオブジェクトじゃないか
>>790 その考え方だと、あるオブジェクトに所属する?関数の中で定義されてる関数の親オブジェクトは何?
ん?混乱してる人がいるようだな
this値とはどのオブジェクトのプロパティとして呼び出されるかだよ基本的には、かんたーん
例外は
>>780のとおり
コードにはグローバルコード、関数コード、evalコードがあって、
それぞれのコードが呼び出されるときにthis値が設定される
796 :
Name_Not_Found:2013/01/07(月) 11:09:01.97 ID:abM/ZTW+
>>793 thisは呼ばれた関数(window.f)を持っている親オブジェクト(window)を参照する
であってるんじゃないか?
呼ばれた関数はwindow.fではなくobj.fだから親オブジェクトはobjになってしまう
>>796 fがグローバルスコープにある無しに関係無く、
f()とやるとobj.f()の中でthisはグローバルオブジェクトになるぞ?
799 :
Name_Not_Found:2013/01/07(月) 11:29:33.23 ID:abM/ZTW+
>>797 ん?そうなんだ
ずっと勘違いしてたかも
>>795 ただ普通に関数を呼んだときは、どのオブジェクトのプロパティとして呼ばれたことになるの?
やっぱり混乱してるじゃないか(憤怒)
>>795 その場呼び出しの匿名関数を例外にするのは何故?
>>803 んー、他に適切なオブジェクトが存在しないから?
obj.f = function(){ (function(){ alert(this); })(); };
obj.f(); // [object Window]
>>804 普通に関数を呼んだときも、
匿名関数をその場で普通に呼んだときも、
オブジェクトのメソッドを適当な変数にいれてそれを普通に呼んだときも、
どれもグローバルオブジェクトのプロパティとして呼ばれたことになるってことだよね?
>>805 うんグローバル変数なら
グローバル変数xはwindow.xとみなせるからな
function f(){ ... } のfもwindow.fとみなせる
匿名関数も window.(function(){ ... })(); とみなしたい所だけどこれはエラーになるから例外というわけ
書いてから気づいたけどグローバル変数関係なかった
ローカル変数xでもwindow.xとみなせる
>>806-807 function f(){ ... } をグローバルスコープ以外で関数定義したときも、
window.fとみなすということかね
それなら、匿名関数も window のプロパティとみなせちゃうんじゃないのか
関数定義があると実際にプロパティになるのに対して
匿名関数はプロパティにならないから
>>809 ローカル変数xに関数を代入した場合には、実際に window.x() ができるわけじゃないし
グローバルスコープ以外で function f(){ ... } をやった場合には、
実際に window.f() ができるわけじゃないでしょ
そっか・・・実際にと言うとまずいか
かと言って名前解決されて内部で[[Global]].fとして呼び出されるかという説明だとはっきりしない・・・
えー、800超えましたんで、テンプレの改訂で大規模なものがあれば
今どうぞ。しかし最近は特段の意見は出てないかな。
今ちょうど数10レスにかけて盛り上がってるやつを、
誰かわかりやすくまとめてテンプレに追加してちょんまげ
814 :
Name_Not_Found:2013/01/07(月) 17:12:55.66 ID:7LUr0oFP
815 :
814:2013/01/07(月) 17:13:32.60 ID:7LUr0oFP
this簡単じゃ無いじゃん
817 :
Name_Not_Found:2013/01/08(火) 00:31:32.75 ID:Id6bDk+j
なんだろね
ちゃんと理解してからは、まったく難しくないし困りもしないんだけど
説明しようとするとワサワサしてしまうなあ
this
thisは廃止してthatにしよう
thisは
>>787でいいと思うんだけどね
問題は、関数を実際に呼び出してる部分が見えにくい場合がある
つーかちゃんと理解できてるならちゃんと説明できるはず
おまえブルースリーの前で同じこと言える?
いいじゃん
何となく使ってるで><
>>814-815 早速ありがとう。このあたりは小改訂なんで異論ないと思う。また直前になったら
確認するんでよろしくお願いします。
なんとなくじゃなくたってスコープ知らない人に分かりやすく説明するのは難しい
慣れろと言いたくもなる
825 :
Name_Not_Found:2013/01/08(火) 11:50:04.43 ID:HDTWWQ50
告訴の趣旨
被告訴人は、以下に該当すると考えるので、被告訴人の厳重な処罰を求めるため告訴します。
職務経歴書を提示した事前面接を実施 または 偽装請負 または 偽装出向
労働者派遣法第26条(契約の内容等)、職業安定法第44条(労働者供給)に違反
多重派遣・多重出向
労働基準法第6条(中間搾取の禁止)に違反
疎明資料
事前面接日時、場所、出席者、資料のコピー、音声記録
就業場所・就業期間・就業時間
指揮命令
指示を誰が行っているかの記録、音声記録
仕事で使う道具や、資材の負担(所有)のあり方
業務で使用しているパソコン・備品などの所有者
契約書
請負、雇用契約書、出向指示など書面のコピー
刑事告訴ガイダンス
★痴漢も民事でなく刑事事案ですが、裁判所が和解金を被害者に支払わせて解決するのが絶対的過半数です。和解で解決しない事案、つまり公訴までいって判例となる事例を探すほうが難しいことでしょう。
★録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
★告訴状を検察に提出しても受理されなければ加害者側には知られることはありません。不受理の場合は何事も起きてないように粛々と振る舞ってください。
★告訴を取り下げるとき検察に提出した資料は全て返却されます。また検察があなたが提出した証拠をあなたの許可なく裁判の証拠として使用はできません。告訴を取り下げたのちの録音資料には当事者の立場が失われるため証拠能力はありません。
★和解時に告訴した事実は秘匿事項となります。犯罪者が秘密保持契約に違反した場合の損害賠償金は「即決和解」か「公正証書」で最低5000万円〜にしましょう。支払いを拒否すれば強制執行手続きを(裁判不要)してください。
★派遣会社や事業会社が同業者に貴方の情報をリークしたなら同業者(又は競合他社)に弱みを握られることになります。
余程信用のおける相手でなければ、リークはできないでしょう。信頼のおける方にしても、その方の口が軽ければ、いずれ事実は分かります。
★リークの情報を得た事業者のなかには、リークの事実を貴方に教えてくれる方がいるかもしれません。その際は損害賠償金で得たお金の3割程度を謝礼金として渡してください。
826 :
Name_Not_Found:2013/01/08(火) 12:11:44.49 ID:R3w126Fq
827 :
Name_Not_Found:2013/01/08(火) 12:28:52.36 ID:R3w126Fq
>>709 デフォルトアクションならともかく、なぜバブリングを止める必要があるのですか?
event.stopProgagation() でスクロールを抑止できましたっけ。
>>826 event.preventDefault() はデフォルトアクションのキャンセルであってバブリングを止めていません。event.preventDefault() で正しい気はするのですが。
しかし、いくらなんでも2週間前の回答にレスは遅すぎやしませんか?
829 :
Name_Not_Found:2013/01/08(火) 15:13:42.45 ID:R3w126Fq
すいません。年末年始の休暇で、と言い訳になってしまいますが……
目的のスクロールバーのdiv要素に
<div onmouseover="event.preventDefault()">
と入れています。
830 :
Name_Not_Found:2013/01/08(火) 15:47:57.25 ID:Id6bDk+j
googleの証明書乗っ取り事件に乗じて
「古いIEは危険だよ、使うのやめたほうがいいよ」というデマを吹聴したい
832 :
Name_Not_Found:2013/01/08(火) 16:47:58.53 ID:zCWbG1Jj
facebookで画像クリックしたとき画面遷移しないのにURLが書き換わるんですけどあれってどうやってるんですか?
pushState
834 :
Name_Not_Found:2013/01/08(火) 17:02:33.85 ID:zCWbG1Jj
ありがとうございます!
pushState学びます。
ちなみにIEのときはハッシュ使って擬似的にURL作ってますね。
>>830 証明書の問題なんかなくても、IE6, 7, 8 でゼロディ脆弱性真っ最中だし。
836 :
Name_Not_Found:2013/01/09(水) 04:44:01.53 ID:DtwZJv+E
>>835 いやほら、普通の人は知らないじゃんそういうの
そういう意味では「これはチャーンス!」と思うのもわかるじゃん
ゼロディ脆弱性真っ最中という言い方が
なんとも妙に思えてくる。
知ろうともしない素人にはそうなんだろうけどw
なんでこう上から目線なんだろう
>知ろうともしない素人
一般人のつもりでかいたけど・・・
これ以上説明させないでくれ恥ずかしい。
>知ろうともしない素人
これは駄洒落で笑ってほしかったんだろ
言わせんなy(ry
オヤジギャグかよ!
気づかなくてごめんオッサン
842 :
Name_Not_Found:2013/01/10(木) 05:49:37.61 ID:9FFaD3jU
>>843 ありがとうございます!希望通りに出来ました!
感嘆符つけてる暇があるなら「正規表現」でググって使い方くらい覚えろよ
痴漢されない度に質問しに来る気かよ
このド変態が!
>ゼロディ脆弱性真っ最中
ゼロデイってのは知られてない状態のことなんで
真っ最中って知ってる人がいるならそれはゼロデイではありますん
感嘆符にキレてる人はじめて見たわw
> ゼロデイってのは知られてない状態のことなんで
アホ
知ろうともしない素人だから(ドヤ
正規表現はそれだけでひとつの言語みたいなもんだし
JSに限らずどの言語スレでも似たような質問は絶えないんじゃね?
んで、一番詳しいのは、現役でコード書いてる人なわけだし、
ここで聞くのはあながち間違ってない気もする
それとも、テンプレで正規表現道場に誘導した方がいいんだろか?
どしたの急に
ネタをキレてると勘違いしてるんでしょ。
この回答じゃ「*」の意味を理解してないままなんだろうが
これくらい
>>1調べたらすぐにわかることだわな。
ω(|)*
×ゼロデイ脆弱性
○マイナス312デイ脆弱性
理由は脆弱性が悪用されてからベンダーがその脆弱性に気がつくまで、平均して312日もかかっているから。
312日ってのはSymantecの調査報告な。
(*)が閉まんてっく
ベンダが気が付いたって、パッチがリリースされるまではゼロデイなんだが。
世間に認知されてない状態のことだな
本来ハッカーってのは
脆弱性見つけてベンダーに売るか闇の組織に売るか駆け引きする職業
んで闇の組織に売られた場合深刻な被害が起こるというわけです
オレオレ定義なんか訊いてねーし
ハッカーの解釈なんか、漫画の読みすぎだろ
こんばんは、初めて質問させていただきます。
やりたいこと:ニコニコ動画の非公式動画紹介サイトから動画IDをスクレイピングして
ニコニコ動画のマイリスト登録ページでひとつづつ自動で登録すること。
ブックマークレットでの実装。
わからないこと:window.open()で開かれたウィンドウの参照からは、要素がundefinedになってしまうのはどうして?
恥ずかしいソースを晒してみます:
javascript: (function() {
var t = [];
var m = document.body.innerHTML.match(/((sm|nm)\d{1,})/gm);
NextVideo(m);
function NextVideo(m) {
var id = m.pop();
if (id !== null) {
var w = window.open('
http://www.nicovideo.jp/mylist_add/video/' + id, '_blank', 'width=500,height=360');
CheckFrame(w, m);
}
}
function CheckFrame(w, m) {
if (w.box_mylist_add !== null) {
w.focus();
w.box_mylist_add.submit();
NextVideo(m);
} else {
setTimeout(function() {
CheckFrame(w, m);
}, 1000);
}
}
})()
は?なぜ「ゼロデイ」と呼ばれるか調べれば?
>>859 var w = window.open(...);
w.onload = function() { CheckFrame(w, m); };
とりあえずDOM構築完了を待とうぜ。あと
var form = w.document.forms['box_mylist_add'];
質問の際はDOM要素と分かるように、省略なしで書こうぜ。
>>859 ついでに、もういっこ指摘しとくと
undefined !== null // true
undefined != null // false
>>862,863 様
ありがとうございます!他の言語と混乱していたので、とても参考になりました。
勉強不足すぎてお恥ずかしい限りです。
重ね重ね感謝です。
てやんでい、こんちくしょう!
こちとら脳味噌の容量がゼロでい!
おとといきやがれってんだ!
>>865 文脈も理解できないアホは黙ってればいいのに…
img要素の上でスクロールすると透明度が変わったりするの作りたいのですが
onscrollで上手くいきません
window.onload = function() {
document.getElementById("gazou").onscroll = function() {
style変更;
}
}
onscrollってスクロールバーがないと機能しないのでしょうか?
だとしたら良い解決方法とかあるんでしょうか?
870 :
868:2013/01/12(土) 16:04:21.90 ID:???
ありがとうございます
firefoxだけちょっと違うみたいですね
ほんとJavaScriptクソだな
JavaScriptの問題じゃねーだろ・・
何の話だ
やーん、いやなのー
すくりぷとがじゃばじゃばしちゃってるのー
ほら、僕の黒夢もじゃばじゃばしちゃってるよ
Chromeのコンソールは実行したJavaScriptの再編集はできないのか
ログと実行部分を分けてフレーム表示とか
javascriptのアニメーションでwidthを変更する時
$('#hoge').animate({'width':300},500);
ってやるとスクロールバー消えるのは仕様?
max-widthとかだと消えないんだけどwidthだけ消えるのがどうも
消さないでアニメーションさせる方法とかあるの?
JavaScript関係なくてJQueryがどうなってるかだけでしょ。
jQuery使わずに素のJavaScriptで書けばできるんじゃないのかな。
今気付いた
どうやらheight/widthでは意図的にoverflowを消してるみたいだな
これだからお子様javascripterは。javscriptはjavascriptで考えるのが悪いクセだぜ
webデザイナーの俺はそんな問題3年前にとっくに気付いてクリアしてる
CSSのインポタントで解決
$('#hoget').animate().css('overflow', 'scroll');
882 :
877:2013/01/13(日) 18:09:34.53 ID:???
おお、ありがとう
!importantの方が良いのかなこれは
animateで消した後.cssを直してるってわけだから
インポテンツ?
important規則はできる限り使いたくないなあ
場合にもよるけど
なんで?
おいちょっと理由説明しろ
important使うたびにお前のレスが頭の中で引っかかるじゃねーか
こんなことで優先順位いじる必要無いもの
importantが死んでも変わりはいるのも
代わりはいるなも
<div style="width:100px;height:100px;border:solid 10px black;border-radius:100px;" id="mouseOverTest"></div>
border,radiusが指定されている要素の、mouseover mouseoutイベントが発生する境界線ってどこですか?
document.getElementById("mouseOverTest").addEventListener("mouseover",function(){
document.getElementById("mouseOverTest").style.setProperty("background-color","red");
});
document.getElementById("mouseOverTest").addEventListener("mouseout",function(){
document.getElementById("mouseOverTest").style.setProperty("background-color","white");
});
で試したけどなんか仕様が固まってないような…
chrome 24です。
>>886 スレチだからあれだけど
基本的にCSSは
「同等以上のセレクタで最後に書いたもの書いたもの」が有効
っていう認識のもとで使われるじゃん
important規則はそれに対する例外になるから
ドキュメントが徹底されてて、そのような例外が完全に周知されていれば
問題は発生しづらいかも知れないけど、それ自体にコストがかかるし
try - catch - finally のfinallyはcatchが実行されたら実行されないって認識でいいですか?
finally文
filally文は、通常try〜catch文の後に続いて書く。 catch節と違い、エラーが発生しなくても呼び出されて処理を行い、try節で行った処理の終了処理を記述するのが主な用途である。
ただし、次項で説明する様に、throw文が実行された場合だけはその例から外れ、finally節中の処理は実行されない。 ここにfinally節の存在意義がある。
wikiはダメだな
wikiの内容も間違ってるし、
>>895は
>>894を見て、
なぜ実行されないという解釈になったんだ?
throw文が実行された場合だけはその例から外れ、finally節中の処理は実行されない。
だろ
ただの皮肉。
その一文も間違いだし。
短いコードで確かめれば判る。
その処理系が間違っているかも知れないよね。言語仕様がどうかということは
結局標準規格を読むしかないわけで。
処理系が間違ってる僅かな可能性を疑うより前に、まず自分を疑うでしょ。
実際問題として、特定のブラウザが言語仕様から逸脱してる事ってある?
仕様が固まる前の昔とかじゃなく、最近の事例で。
DOM周りの仕様がブラウザ毎に違う事はあるだろうけど。
>>903 火狐だけある条件下(特定できなかったが)でcanvasへの描画が
もう一度canvasへ何かを描画するまで遅れるとか、ちょいちょいあることない?
Math.random()で1.0が返されることがあったのはいつのことだったかな。
それはさておき。900超えたのでテンプレの小改訂の話題あればどうぞ。
800近辺での議論は
>>812-815 にありますんで参照のこと。
906 :
814:2013/01/19(土) 17:26:48.33 ID:bnhLC/mb
907 :
814:2013/01/19(土) 17:30:19.32 ID:bnhLC/mb
908 :
814:2013/01/19(土) 17:30:58.68 ID:bnhLC/mb
909 :
Name_Not_Found:2013/01/19(土) 17:56:18.46 ID:16c9DgT3
soundManager2を使って、音楽ファイルを再生する処理を作っているのですが、サーバではなく、ローカルに持っているファイルを使って再生することはできないのでしょうか?
指定した要素内を相対座標でクリックする方法ってありませんか?
javascriptじゃなくても拡張機能で出来るブラウザがあれば教えてください
>>909 セキュリティ上できるわけないでしょう?
912 :
Name_Not_Found:2013/01/19(土) 18:14:29.02 ID:16c9DgT3
>>911 自分の持っているファイルを、自分のブラウザ(PC)上で再生するだけなので、別に問題ないのではないでしょうか?
html5 の Audio と、File API を使ったら一応できたのですが、細かい再生の制御をしようとすると、ほとんどのブラウザで動かなくなってしまうんですよね・・・。
913 :
910:2013/01/19(土) 18:24:54.23 ID:???
やっぱり取り下げます
>>912 相対パスで指定すればいいのではないでしょうか。
Chromeで外部URL(ここではYahoo)のDOMにアクセスしたいのですが、
thisを見るとしっかり取れているようなんですが、this.contentWindowが空です
どうやって中身にアクセスするのでしょうか?
<html>
<head>
<meta charset="utf8">
<title>test</title>
</head>
<body>
<iframe id="gameiframe" src="
http://www.yahoo.co.jp/" frameborder="0"></iframe>
<script>
var o = document.getElementById('gameiframe');
o.addEventListener('load', function(){
console.log(this);
console.log(this.contentWindow);
}, false);
</script>
</body>
</html>
>>915 セキュリティ上できない
できちゃうと閲覧者の個人情報を取り放題になってしまう
「同一生成元ポリシー」で検索
>>916 要るかなあ。特殊な話題だし。簡潔にまとめると:
(1) apply/callで関数を呼び出した中では、apply/callで渡したもの。
(2) obj[...](引数)、obj.名前(引数)で呼び出した場合はobj
(3) それ以外はすべてグローバルオブジェクト。(1)でオブジェクト以外が渡った場合も同様。
特定の要素とその子要素を除いてその他の全ての要素に指定した属性を追加する方法を教えてください
<body>
略
<div id="abc">
略
</div>
略
</body>
略の部分には不特定多数の要素があります。
#abcはbody直下の子要素かもしれないしまた別の要素の子要素かもしれません。
#abcの要素とそこに含まれる子要素全て
用途は#abcを親要素としてそれ以外の要素を非表示にしないんです
ばつ しないんです
丸 したいんです
えっ?
jQuery使えば?何となくだけど重くなりそうだが
そもそもちゃんとHTMLの構造を決めてからの方が良いんじゃないの?とは思う
>>923 すいませんclassListはここではどのように扱うのでしょうか?
今正規表現を勉強しているのですが、
execメソッドを使って配列と返ってくる値が空文字""の時とundefined
の時があるのですが、どういった時に空文字とundefinedになるのでしょうか?
マッチしなかった時がnullじゃないのですか?
この辺が分かりません
>>926 #abc以外が非表示になるようなCSSを書いておき
body要素のclassList変更で、表示・非表示が切り替わるようにする
929 :
Name_Not_Found:2013/01/20(日) 19:57:23.33 ID:CElW1Rra
この場合、notButtonのテキストを押した時とbuttonを押した時の区別をしたいのですがどうすればよいでしょうか
notButtonは上手く検知出来るのですが、ボタンを押した時、buttonだけではなく#parentのイベントも実行されてしまいます
<div id="parent">notButton<div id="child"><button id="push">push</button></div></div>
<script>
document.getElementById("parent").addEventListener("click",function(event){
alert("parent");
});
document.getElementById("push").addEventListener("click",function(event){
alert("button");
});
</script>
>>921-922 #abc 以外のノードを削除する。
1. <div id="abc">piyo</div> を退避しておく
2. body要素の子要素郡を removeChild
3. 退避した #abc を appendChild
---
どんな構造でも実現するのは不可能だと思う。
>>923 の手法だと下記HTMLの場合に対応できない。
<body>
hoge
<div id="abc">piyo</div>
foo
</body>
規則性のあるHTML構造にしてCSSで切り替えるのが理想だとは思うが。
HTMLの左上の部分のディスプレイの絶対座標を取得する方法はありませんか?
左上とはCSSでtop:0; left:0の箇所の事です
非表示=削除とは限らなくね?
単に全部の要素を非表示にしてabc以下の要素を表示じゃ駄目か?
abcの親要素を非表示にしたらabcが表示できない
つまり、abcの親要素にテキストノードが入ってると無理
ああそかっか・・馬鹿でごめん
>>927 >>931 927 は (XXX)|(YYY) とかでキャプチャされなかった方の返り値がどうなるのか知りたいんでは?
確か FF は空文字列、chrome は undefined を返してきたような
仕様はどうなってんの?
//.exec("A")
=> undefined
/()/.exec("A")
=> ["", ""]
/(X)/.exec("A")
=> null
/(X*)/.exec("A")
=> ["", ""]
/(A)|(X)/.exec("A")
=> ["A", "A", undefined] ※GoogleChrome24
=> ["A", "A", (void 0)] ※firefox18
実装上は、|でキャプチャされなかったのはundefinedか(void 0)で、
空文字列とマッチした場合に""なのかのう
//.exec("A")は[""]が返って来てくれてもいいと思うのだが
仕様書はよくわからんなあ
2chのDATを自動保存してくれるサーバーサイドプログラムってありますかね?
あったら教えてください。
えっとNodeJSの質問ですか?
てか質問してみて思ったが、java単体じゃできないな。すまんこ
>>940 > //.exec("A")は[""]が返って来てくれてもいいと思うのだが
それは単にコメント行として解釈されて undefined に評価されているだけ。
空の正規表現は /(?=)/.exec("A") の様に書いて、この場合ちゃんと [""] が返る。
//
=> undefined
/**/
=> undefined
ああなるほどこういうことなのね
946 :
Name_Not_Found:2013/01/22(火) 12:32:30.26 ID:Z6gXqvs7
日付が2013/01/02だとして、
これをdate関数に代入すると、2013/1/2になります。
月日が1桁の場合、前に0を付けたいのですが
0を付けるようにする関数ってあるのでしょうか?
ゼロパディングで検索しましょう
948 :
946:2013/01/22(火) 13:54:02.56 ID:???
>>947 ありがとうございます。解決策が見つかりました
949 :
Name_Not_Found:2013/01/22(火) 16:50:51.13 ID:QIxhWj62
質問です
var a = [3,8,1,7,6, ... ,4,2]; // ランダムに数値が並ぶ
このような配列から「1,7」と並んでいる箇所を探す
ということをしたいのですが、とりあえず
for(var n=0,l=a.length-2 ; n<l ; n++){
if(a[n] == 1 && a[n+1] == 7){
// n番目に発見!
}
}
としています
もっと効率的な方法はありますでしょうか?
また検索する並びの「1,7」を任意の数、個数で一般化(関数化)するには
if節の箇所を与えられた数の個数でループ的に処理するのが良いのでしょうか?
連結して文字列として検索するとかね。
>>949 Javascript固有の話ではないけど、検索する並びが長くなることが想定される場合には
もっと効率的なアルゴリズムがあったはず
BM法とかでぐぐってみるべし
952 :
Name_Not_Found:2013/01/22(火) 17:58:12.19 ID:QIxhWj62
>>950,951
ありがとう
参考にして勉強します
次スレは975超えたらね。
ジグソーパズルみたいに図形をドラッグして特定の箇所に近付けたらぴたってくっつけるプログラム組んでるけどめちゃむずいな
ifを使えばいいというのはわかるんだが…
933-934お願いします
>>955 >HTMLの左上の部分のディスプレイの絶対座標
これが何を指してるのかいまいち分からない
ブラウザの部品のタイトルバーとかツールバーとかタブバーとかHTML表示エリアがあると思いますが
HTML表示エリアの左上の部分(top:0 left:0)のことです
そこが座標0:0なのですが、タイトルバーとかツールバーとかも含めた座標がほしいんです
無理でしょうか?
何を指してるか聞いておいて良かったなw
すいませんやっぱり取り下げます
960 :
Name_Not_Found:2013/01/24(木) 00:13:52.65 ID:uAuo/bSC
961 :
927:2013/01/24(木) 00:25:10.34 ID:???
execメソッドで空文字とundefinedの例はgood partsのP100の話です。
>>961 全部配列になってるじゃないですか。
ちゃんとコードを読んでますか?
>>957 残念ながら
chromeのプロモーションで作られたやつみたいな、window.openで開いた小窓を重ねて
中身を同期させて動かすようなの(をやりたいかどうかは定かではないけど)は
親窓自体をwindow.openで位置を確定して開いた上で
親窓と小窓のタイトルバー等の大きさが同じであると信じて計算するしかない
もしくは主要なOSとブラウザのウィンドウの大きさをあらかじめ測っておいてすりあわせするとか
965 :
964:2013/01/24(木) 03:19:01.94 ID:d0N8ghlH
ごめん
酔っぱらって変なこと書いた気がする
忘れて
>>962 配列にはnullでなく空文字が入っていたので質問しました
>>966 nullを返すのはマッチしなかった時です。
配列の中は別の話。
>>964 あれなんですよ
window.screenLeftとscreenTopで出来たんですよ
でもOperaでの話です
Chromeだとタイトルバーのところから計算されるので困りましたね
このへんをクロスブラウザで書いてくれてる人が世界のどこかにはいるとは思うんですが
githubとかgooglecodeとかそのあたり探しても見つけられませんでした
970 :
Name_Not_Found:2013/01/24(木) 17:58:42.41 ID:qkHKqiN2
そんなに大量にあるわけでもないし
調べる手間で、自分で書けばいいじゃない
長さ測って
それじゃ意味がない
GChromeにタイトルバーは無いし何のためにそんな値が欲しいのか
学問としてです
Chromeは通常タイトルバーが見えませんが隠しているため見えないだけです
CPUに負荷をかけたときにChromeを立ち上げると運がよければタイトルバーは確認できますね
学問のためなら自分の力で追究してみるのも一興かと
976 :
Name_Not_Found:2013/01/24(木) 19:02:19.89 ID:IzH8FWra
IEのモーダルダイアログでmailtoを使いメーラーを起動させたいのですが、
mailtoのリンクをクリックさせるとmailtoがURLのIEが開き、その後にメーラーが起動します。
mailtoがURLのIEを開かない、または開いた後に即閉じるようにすることは可能でしょうか?
それとJavaScriptはどういう関係があるのか
Windows板池よ
次スレの季節
979 :
Name_Not_Found:2013/01/24(木) 22:30:52.80 ID:IzH8FWra
>>977 モーダルダイアログとmailtoでjavascriptを使ってます。
981 :
Name_Not_Found:2013/01/25(金) 14:25:51.06 ID:oy5BAjcg
キーが0,1,2…と数字しかないオブジェクトを配列に変換する事は出来ませんでしょうか
document.body.classListとか。
forEachとかの配列に便利な関数を使いたいと思いまして。
for inでグリッとまわすのではいかんの?
とりあえずlengthプロパティあればforEachは回るな
Array.prototype.forEach.call({0:"a", 1:"b", 2:"c", length:3}, function(x){console.log(x)});
984 :
Name_Not_Found:2013/01/25(金) 15:39:30.62 ID:oy5BAjcg
ありがとうございます。
どうしてもわからないので、質問させてください。
<script>
window.onload = function(){
var color = ["blue","red","yellow"];
for(i=0;i<=3;i++)
document.getElementById("div"+i).style.background = color[i];
}
</script>
<body>
<div id="div0" style="position:absolute; top:50%; left:50%; margin-left:-200px; background:black; width:100px; height:1px;"></div>
<div id="div1" style="position:absolute; top:50%; left:50%; margin-left:-100px; background:black; width:100px; height:1px;"></div>
<div id="div2" style="position:absolute; top:50%; left:50%; background:black; width:100px; height:1px;"></div>
</body>
ブラウザはfirefox18です。ちゃんとdivにcolorがつくことができるのですが、
コンソールが
TypeError: document.getElementById(...) is null
document.getElementById("div"+i).style.background = color[i];
とかなります。どうすればならないでしょうか?なっても平気ですか?教えてください。
986 :
Name_Not_Found:2013/01/25(金) 17:22:24.06 ID:fT5Lu8JY
987 :
985:2013/01/25(金) 17:27:41.56 ID:???
>>986 教えていただいたように、
forの中のi<=3じゃなくてi<=2でした。
コンソールに先ほどのようにエラーが出なくなりました。
ありがとうございました!
988 :
Name_Not_Found:2013/01/25(金) 17:45:02.22 ID:fT5Lu8JY
>>987 多くの人はi<3って書きますよ
というか3とは書かないで
var len = color.length;
for(var i=0 ; i<len ; i++)
または
for(var i=0,len=color.length ; i<len ; i++)
と書きます
>>984 Array.slice(document.body.classList).forEach(function(item){
console.log(item);
});
>>988 いいやつすぎ
来世はきっと美少女になって、もてまくるにちがいない
乙
ume!
うめ
ume+