Name_Not_Found<><>2011/06/21(火) 22:53:08.42 ID:EPesJzv5<> JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
(2) ユーザの迷惑になるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) メール欄は空欄にすることを推奨します。(質問者を騙って回答者を煽る迷惑な人がいるようです)
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(*1)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
(*1) Windows ならコピット http://www.umechando.com/software/ を利用すると簡単にコピーできます。
<>+ JavaScript の質問用スレッド vol.88 +
Name_Not_Found<>sage<>2011/06/21(火) 22:58:03.79 ID:???<> ■前スレ
+ JavaScript の質問用スレッド vol.87 +
http://hibari.2ch.net/test/read.cgi/hp/1306557072/
■過去スレ全集
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)
http://wing2.jp/~mirrorhenkan/2ch/javascript/ (閲覧のみ)
■関連スレ
ECMAScript デス 3
http://hibari.2ch.net/test/read.cgi/tech/1190160481/
Ajaxでも語りませんか Rigel4
http://hibari.2ch.net/test/read.cgi/php/1166751613/
【誰か】jQueryのここがわからない【助けて】
http://hibari.2ch.net/test/read.cgi/tech/1229881548/
1行javascriptプログラミング
http://hibari.2ch.net/test/read.cgi/hp/1066750037/
WSH(・∀・)スレッド! Part 4
http://hibari.2ch.net/test/read.cgi/tech/1243095768/
Webサイト制作初心者用質問スレ part225
http://hibari.2ch.net/test/read.cgi/hp/1308415898/
CSS初心者スレッド=10th=
http://hibari.2ch.net/test/read.cgi/hp/1306489752/
役に立つ書籍は? 4冊目
http://hibari.2ch.net/test/read.cgi/hp/1172823674/ <>
Name_Not_Found<>sage<>2011/06/21(火) 22:58:18.63 ID:???<> 関連スレ
【CSO】Counter-Strike Online Part141
http://toki.2ch.net/test/read.cgi/netgame/1308276444/
【PHP】下らねぇ質問はID出して書き込みやがれ 107
http://hibari.2ch.net/test/read.cgi/php/1307228162/
[PHP][フレームワーク]CodeIgniter Part2
http://hibari.2ch.net/test/read.cgi/php/1299595202/
Google App Engine 3アプ目
http://hibari.2ch.net/test/read.cgi/php/1267094290/ <>
Name_Not_Found<>sage<>2011/06/21(火) 23:00:19.14 ID:???<> ■各種仕様
Standard ECMA-262
http://www.ecma-international.org/publications/standards/ECMA-262.HTM
ECMAScript 3
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (和訳)
ECMAScript 5.1
http://es5.github.com/
W3C Document Object Model Technical Reports
http://www.w3.org/DOM/DOMTR
JavaScript 1.5 ガイド / リファレンス (Netscape/Mozilla)
http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide (和訳)
http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference (和訳)
JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
http://jsgt.org/ajax/ref/test/json/test1.htm
Mozilla Gecko DOM Reference, Netscape devedge
http://developer.mozilla.org/ja/docs/Gecko_DOM_Reference (和訳)
http://devedge-temp.mozilla.org/central/javascript/index_en.html
MSDN Library JScript / DHTML (現在日本語版は古杉)
http://msdn.microsoft.com/ja-jp/library/z688wt03%28VS.80%29.aspx
http://msdn.microsoft.com/ja-jp/library/cc409720.aspx
<>
Name_Not_Found<>sage<>2011/06/22(水) 00:17:30.51 ID:???<> 勝手にテンプレ変えて何がしたいんだろう? <>
Name_Not_Found<>sage<>2011/06/22(水) 00:20:07.52 ID:???<> なぜにPHPが関連スレ? <>
Name_Not_Found<>sage<>2011/06/22(水) 00:24:40.70 ID:???<> 削除依頼出すべきじゃね? <>
忍法帖【Lv=13,xxxPT】 <>sage<>2011/06/22(水) 00:29:28.84 ID:???<> てst <>
Name_Not_Found<>sage<>2011/06/22(水) 00:30:41.74 ID:???<> 立て直しかな?誰か頼む <>
Name_Not_Found<>sage<>2011/06/22(水) 00:34:35.34 ID:???<> ごめん俺も駄目だった <>
Name_Not_Found<>sage<>2011/06/22(水) 00:59:17.83 ID:???<> 誰か立てるなら立てて
■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/24/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 中でやるとか。
<>
Name_Not_Found<>sage<>2011/06/22(水) 01:02:28.90 ID:???<> LVが足りないとかで立てられなかった <>
Name_Not_Found<>sage<>2011/06/22(水) 01:06:31.24 ID:???<> 俺も <>
忍法帖【Lv=10,xxxPT】 <>sage<>2011/06/22(水) 02:05:59.66 ID:???<> 今日あたりレベルが10になるが重複スレを建てるべきか悩むので俺はパスさせてもらうぜ・・・
恨むなら>>1をうらんでね <>
Name_Not_Found<>sage<>2011/06/22(水) 08:09:45.64 ID:???<> 今テンプレ論議をしておくべきじゃないんですかね。勝手に改変した
人は勝手に改変したのであって、合意あってしたことではないという
ことを確認しておけば次戻せるでしょ。で。洩れの理解では
>>1 → FAQ >>11 → 関連 >>2 (>>3は合意なし) → >>4
これでFA? <>
Name_Not_Found<>sage<>2011/06/22(水) 11:49:45.68 ID:???<> 削除依頼だしても削除されないと思うしそのまま利用すべきじゃないんかね。
テンプレに関しては次建てる時にって感じで。 <>
Name_Not_Found<>sage<>2011/06/22(水) 12:13:57.20 ID:???<> よくあるjqueryのイメージスライダー、例えばjCarousel
http://sorgalla.com/projects/jcarousel/examples/static_simple.html
とかは、みんな<li>要素で動作する。
インライン要素で動くスクリプトってないのかな。↓みたいなhtmlで動くやつ。
<p id="slider_trigger">
<span><img src="image1" /></span>
<span><img src="image2" /></span>
<span><img src="image3" /></span>
<span><img src="image4" /></span>
</p>
jCarouselを改造したら、IE6で動かなくなったぜ。 <>
Name_Not_Found<>sage<>2011/06/22(水) 12:41:18.10 ID:???<> 関連スレにネトゲとか削除だろjk <>
Name_Not_Found<>sage<>2011/06/22(水) 13:17:01.46 ID:???<> 忍者じゃ!忍者のしわざじゃ! <>
17<>sage<>2011/06/22(水) 13:25:44.58 ID:???<> 解決したぜ。スレ汚しスマンのう。 <>
Name_Not_Found<>sage<>2011/06/22(水) 13:29:23.17 ID:???<> 解決したら回答書いてけ厨が出現しちゃうぞ <>
Name_Not_Found<>sage<>2011/06/22(水) 14:06:16.47 ID:???<> 書いてけ!書いてけ!さっさと書いてけ! <>
Name_Not_Found<>sage<>2011/06/22(水) 14:07:12.79 ID:???<> 質問する以上は貢献する気持ちも持とうぜ <>
Name_Not_Found<>sage<>2011/06/22(水) 14:50:50.33 ID:???<> 偽者の可能性もあるし、検索に引っかかった場合のことを考えれば <>
Name_Not_Found<>sage<>2011/06/22(水) 14:55:21.26 ID:???<> ID出してない以上、そういうリスクもあるんだから気にスンナ <>
17<>sage<>2011/06/22(水) 16:02:44.30 ID:???<> マナー違反だったか。すまんのう。
解決というと恥ずかしいんだが、該当する.js内のトリガになっとるタグを置き換えただけだ。
<ul> → <p>
<li> → <span>
これだけ。
元のサンプルは<ul>の幅をpx固定していたから、これを可変幅にしたくて
css内のwidthの記述を削除したらIE6でエラー(スライドしない)が出たってワケ。
じゃあと思って<ul>の幅を%指定にするとスライド幅がおかしくなったから、
javascriptによって挿入される<div>(<ul>のコンテナ的役割)の幅を指定したら上手くいった。
完璧じゃないけどな。
●画像
●画像
●画像
●画像
●画像
ってのがダサすぎて嫌だったんだよ。まあ自己満足だよね。 <>
Name_Not_Found<>sage<>2011/06/22(水) 16:04:32.09 ID:???<> alert(1);で表示されるウィンドウにCSSを適用する方法ってありませんか? <>
Name_Not_Found<>sage<>2011/06/22(水) 16:38:15.11 ID:???<> これはまた難解な・・・ <>
Name_Not_Found<>sage<>2011/06/22(水) 16:54:37.42 ID:???<> ああ、わかった。
答えはshowModalDialogだな。
<>
Name_Not_Found<>sage<>2011/06/22(水) 18:43:56.47 ID:???<> alertに独自関数を突っ込めばあるいは… <>
Name_Not_Found<>sage<>2011/06/22(水) 19:16:21.28 ID:???<> アラート風のものを自分でこしらえるんではだめなのか? <>
Name_Not_Found<>sage<>2011/06/22(水) 20:11:13.02 ID:???<> <alert style="border:1px solid #000"> <>
Name_Not_Found<>sage<>2011/06/22(水) 22:08:03.71 ID:???<> 擬似ダイアログ出せるライブラリがどっかにあるだろう <>
Name_Not_Found<>sage<>2011/06/22(水) 23:34:31.41 ID:???<> <div role="alertdialog"></div> <>
Name_Not_Found<>sage<>2011/06/23(木) 03:30:52.67 ID:???<> Web上の同階層や下階層にある指定ファイルの有無をJavaScriptで取得することはできますか? <>
Name_Not_Found<>sage<>2011/06/23(木) 05:41:20.36 ID:???<> xhrのステータス <>
Name_Not_Found<>sage<>2011/06/23(木) 21:28:29.43 ID:???<> javascriptの勉強をするときはMDCだけ見ておけばIE、Operan,safari,Chromeにも対応できますか? <>
Name_Not_Found<>sage<>2011/06/23(木) 21:30:59.08 ID:???<> >>37
No. <>
Name_Not_Found<>sage<>2011/06/23(木) 21:31:47.76 ID:???<> MDCはみないことにします
ありがとうございました <>
Name_Not_Found<>sage<>2011/06/23(木) 21:33:35.43 ID:???<> MDCとMSDN見とけばだいたいおk <>
Name_Not_Found<><>2011/06/23(木) 21:51:10.93 ID:gzTWqaCX<> 関数の引数が特定の型を要求する場合
関数内で引数の型をチェックしたり型変換を試みたりするコードを入れておくものですか?どう書けばいいですか? <>
Name_Not_Found<>sage<>2011/06/23(木) 22:17:59.65 ID:???<> >>40
それ見ててもsafariには通用しないんじゃ <>
Name_Not_Found<>sage<>2011/06/23(木) 23:11:54.61 ID:???<> >>37,39
何でそうなんのかな
ここだけを見ればいいページはないから君の論理だと見るところがなくなる
ECMAScriptとDOMだけを見ろといってそれらを実装していないブラウザ(主にIE)は他のページも見なきゃいけないでしょ? <>
Name_Not_Found<><>2011/06/24(金) 00:49:37.23 ID:5ng63hwS<> XHRのリクエストでXMLを受け取るのですが、一部のブラウザ(safari/opera)でキャッシュできません。
レスポンスにはキャッシュ関連のヘッダを追加していて(Expires/Cache-Control)
その他の主なブラウザではキャッシュされます。
リソースのURLに日本語(URLエンコード)が含まれているのでその辺を疑ってるのですが
特定できずにいます。何か原因は考えられますか?
※ブラウザのキャッシュは有効になっています <>
Name_Not_Found<>sage<>2011/06/24(金) 01:20:28.10 ID:???<> 原因:コードを晒さないこと <>
Name_Not_Found<>sage<>2011/06/24(金) 01:42:28.73 ID:???<> そういやここ使うってことでいいのか? <>
Name_Not_Found<>sage<>2011/06/24(金) 06:38:09.30 ID:???<> >>41
ケースバイケースではあるけど、色んなとこから呼び出されるもの(ユーティリティ関数とか)は割としっかりやるかな。
プライベートメソッドとか呼び出す箇所が少ないものは省略することも多い。
引数の型チェックに引っかかったらそのままリターンするか例外を投げるかも大事。
自分で投げなくてもブラウザが投げて処理は停止するけど、自分で適切な例外を投げた方がデバッグしやすい。 <>
Name_Not_Found<>sage<>2011/06/24(金) 07:10:06.74 ID:???<> >>45
普通はキャッシュされるよって意味? <>
Name_Not_Found<>sage<>2011/06/24(金) 07:49:36.00 ID:???<> >>46
立てられる人がいないから仕方なく使っている状況
立てられる人がいるならそっちに移ると思うが <>
Name_Not_Found<>sage<>2011/06/24(金) 07:56:05.42 ID:???<> >>46 >>49
重複スレ争いとか削除依頼合戦とかうんざりなんで、この1スレの
間は皆で勝手なことした奴を呪いながら進行するということで
いかが。おい、聞いてるか >>1。 <>
Name_Not_Found<>sage<>2011/06/24(金) 07:58:08.40 ID:???<> まあ、FAQを指したければ >>11 にあるということではあるんで。 <>
Name_Not_Found<>sage<>2011/06/24(金) 08:14:38.51 ID:???<> >>41
型変換で対応することが多いかな
大体は似たようなECMAのメソッドに合わせてる <>
忍法帖【Lv=12,xxxPT】 <>sage<>2011/06/24(金) 08:51:17.07 ID:???<> まぁ速攻で流せばいいよ
元々流れ早いしさらっと使って次で問題ない
というわけで我慢しようず <>
Name_Not_Found<>sage<>2011/06/24(金) 11:55:48.73 ID:???<> 後ろから4文字削除したいのですが
文字列の文字数をlengthで取り出す
↓
その数-4する
↓
0番目からそのー4した部分まで文字列を取り出す
とやってるんですが、どーも効率が悪い気がするんですが他にaiueo...wをaiueoにする方法とかないでしょうか? <>
Name_Not_Found<>sage<>2011/06/24(金) 12:11:17.42 ID:???<> str.slice(0,-4) <>
Name_Not_Found<>sage<>2011/06/24(金) 12:12:20.47 ID:???<> おまえらって簡単な質問には答えるのにちょっと難しいとコード作成依頼乙とか言うよな <>
Name_Not_Found<>sage<>2011/06/24(金) 12:14:30.06 ID:???<> 難しいんじゃなくてめんどくさいケースが多い <>
Name_Not_Found<>sage<>2011/06/24(金) 12:21:21.35 ID:???<> こんな限られたスペースで実行確認&解説なんかやってられるか <>
Name_Not_Found<>sage<>2011/06/24(金) 12:22:32.45 ID:???<> 動作する(問題が起こる)最小のサンプルコードが貼られていると
多少テンプレからはずれていても回答が得られやすいと思う
それでもサンプルコードをベースに加工するだけでは済まないくらい手を加えないといけないほど不十分な場合はスルーされやすい
理由はたぶん>>57 <>
Name_Not_Found<>sage<>2011/06/24(金) 12:32:25.74 ID:???<> 私はそれについての素晴らしい回答を発見したが、余白が足りない <>
Name_Not_Found<>sage<>2011/06/24(金) 12:36:11.82 ID:???<> JavaScriptしかサンプルが貼られてない
→HTMLを想像して書かなきゃならない
→HTMLを想像で書いたら再現しない
→すいません、実際のコードは〜です
→以下ループ
こういうのがよくあるから敬遠しがち
サンプルコードが一式揃っていれば検証する気にもなるんだけどね
あとブラウザ書かれてなくて主要ブラウザ全てをこっちに確認させるのとか
質問者がめんどくさいのはわかるが、こっちに面倒を押し付けられても困る <>
Name_Not_Found<>sage<>2011/06/24(金) 12:39:08.04 ID:???<> for(i=0;i<1000000;i++){
str = 'aiueo...w';
//Firefox4, IE8
//str = str.substring(0,str.length-4);//70ms, 1800ms
//str = str.substr(0,str.length-4); //70ms, 1800ms
//str = str.slice(0,-4); //150ms, 1550ms
//str = str.replace(/....$/, ''); //400ms, 3600ms
} <>
Name_Not_Found<>sage<>2011/06/24(金) 13:18:38.28 ID:???<> >>62
substrの使い方間違えてるのと正規表現リテラルを外に出せ <>
Name_Not_Found<>sage<>2011/06/24(金) 13:21:45.99 ID:???<> window.open("");で新しいタブが開きますが
新しいウィンドウを開く方法はございませんか? <>
Name_Not_Found<>sage<>2011/06/24(金) 13:26:05.22 ID:???<> >>55
ありがとうございます、やっぱり便利な関数あったんですね
javascriptは広大です <>
Name_Not_Found<>sage<>2011/06/24(金) 13:35:10.04 ID:???<> showModalDialogとか?といってもこれもタブで開くウィンドウで開くかは環境次第だから
そもそもウィンドウじゃなきゃダメという仕様の見直しを <>
Name_Not_Found<>sage<>2011/06/24(金) 13:49:04.40 ID:???<> マクロ用としてウィンドウを分けたいんです
たまにそういうページを見かけたのですがurlをメモしてないのでソースコードを見ることも出来ません <>
Name_Not_Found<>sage<>2011/06/24(金) 14:07:53.25 ID:???<> >>63
>正規表現リテラルを外に出せ
replace(/.../, '');
こう書いちゃダメなの?ECMAScript的に? <>
Name_Not_Found<>sage<>2011/06/24(金) 14:20:35.10 ID:???<> >>68
ベンチのとり方の問題、単純に比較条件が同じでない
Firefox3なら正規表現リテラルがstaticだからブラウザ比較もフェアでなくなる <>
Name_Not_Found<>sage<>2011/06/24(金) 14:36:15.38 ID:???<> あ、なるほど。サンクス <>
Name_Not_Found<>sage<>2011/06/24(金) 14:46:25.49 ID:???<> なるほどなー <>
Name_Not_Found<>sage<>2011/06/24(金) 18:07:40.40 ID:???<> <body onload="common();">
<DIV>
<DIV id="box1"></DIV> ←この場合onmousedownを入れたくない
</DIV>
</body>
<body onload="common();">
<DIV id="container">
<DIV id="box1"></DIV> ←この場合のみonmousedownを入れたい
</DIV>
</body>
id:#containerのなかにあるid:#box1のエレメントをcommonから取得し、編集したいのですが
可能でしょうか(IE/Firefox/opera/chrome) <>
Name_Not_Found<>sage<>2011/06/24(金) 18:15:33.51 ID:???<> id指定は1箇所がデフォ
style共有したいならclass使いなさい <>
Name_Not_Found<>sage<>2011/06/24(金) 18:23:02.54 ID:???<> おまいらもっとコード共有サービス使ってくれ。
HTMLとか読みにくくてしゃーない <>
Name_Not_Found<>sage<>2011/06/24(金) 18:23:26.81 ID:???<> >>73
私が作ったHTMLならそうするんですが、みんなルール通りに作ってくれる人たちばっかりじゃなくてorz
var element = document.getElementById("box1");
if(element.parentNode.id = "container")
{
setonmousedown(obj);
}
コレだとIDが2個あった場合動かないよね・・・orz <>
Name_Not_Found<>sage<>2011/06/24(金) 18:28:03.02 ID:???<> >>72
それページ違うから各ページに1つじゃね?
それならdocument.querySelector("#container #box1")で下のHTMLだけ要素を抽出できる。
idは絶対に1つで統一させろ。 <>
Name_Not_Found<>sage<>2011/06/24(金) 18:37:30.87 ID:???<> >>76
jquery使わなくてもそんな検索できるんですね
使って見ますどもです!
ほんと・・・私も統一して欲しいんですがorz <>
Name_Not_Found<>sage<>2011/06/24(金) 18:50:14.13 ID:???<> >>75
それはルールの方を徹底させるべきだと思うけどねぇ
別ページなら規約違反じゃないから>>76が使える
idセレクタは最初の要素を基準にするから1ページに同じidの要素ごあるなら期待通りに動作しないはず
属性セレクタで解決できるけど効率が恐ろしく悪いからお勧めしない
コーディング規約は大事だよ <>
Name_Not_Found<>sage<>2011/06/24(金) 19:35:48.50 ID:???<> >>47,52
どうもありがとうございます <>
Name_Not_Found<>sage<>2011/06/24(金) 19:40:57.32 ID:???<> document.querySelectorはMDCのどこのページにあるかおしえてください <>
Name_Not_Found<>sage<>2011/06/24(金) 19:47:21.56 ID:???<> >>80
querySelector mdc でぐぐる <>
Name_Not_Found<>sage<>2011/06/24(金) 20:43:16.36 ID:???<> queryCerectorてモダンブラウザだけじゃなかったっけか <>
Name_Not_Found<>sage<>2011/06/24(金) 21:40:36.91 ID:???<> どこまでがモダンブラウザ? <>
Name_Not_Found<>sage<>2011/06/24(金) 21:44:57.67 ID:???<> その前にモダンブラウザって何?IE,Firefox,Opera,Chrome,safariしか聞いたことないんだけど <>
Name_Not_Found<>sage<>2011/06/24(金) 21:58:02.02 ID:???<> プログラミング覚えてからマトリックス見ると凄く面白い <>
Name_Not_Found<>sage<>2011/06/24(金) 23:00:22.22 ID:???<> >>74
コードはスレに残ったほうがいいんじゃないの <>
Name_Not_Found<>sage<>2011/06/24(金) 23:03:00.73 ID:???<> 過去ログに消えたら読めないじゃん
ごく一部のひとぐらいだからね●使うのは <>
Name_Not_Found<>sage<>2011/06/24(金) 23:32:28.07 ID:???<> スレで見れたほうがいいな。
過去ログ保存するサービスもあるから大丈夫でしょ。 <>
Name_Not_Found<>sage<>2011/06/24(金) 23:51:14.56 ID:???<> 一人で何役も演じれるから議論するのも無駄かと思うので好きなようにやればいい <>
Name_Not_Found<>sage<>2011/06/25(土) 01:09:57.97 ID:???<> >>72
バブリングを利用すればID重複していても問題ない <>
Name_Not_Found<>sage<>2011/06/25(土) 01:22:25.97 ID:???<> ID重複の問題なのこれ? <>
Name_Not_Found<>sage<>2011/06/25(土) 01:41:38.93 ID:???<> >>74
HTMLがヘタクソ過ぎるだけ <>
Name_Not_Found<>sage<>2011/06/25(土) 02:08:14.32 ID:???<> ページのURLをハッシュ化して
<html id="AE9102819.....">のようにIDを埋め込んでおけば
ページごとのスタイルを書ける、てのがあったな、とふと <>
Name_Not_Found<>sage<>2011/06/25(土) 08:31:31.05 ID:???<> ID重複したらvalidでないHTMLになるでしょ。将来さまざまなプラットフォーム
が出て来たときにvalidでないとどんなデメリットあるか分からないのにそれを
直したくないから今適当に済ませるとかリスク大きすぎと思うけど。
それも自分の選択だけどそんなものアドバイスしてくれる人は限られている。 <>
Name_Not_Found<>sage<>2011/06/25(土) 08:32:08.19 ID:???<> >>75読むとid重複してるように読める
こういうすれ違いはコード共有サイト使えばなくなるから積極的に利用してほしいな <>
Name_Not_Found<>sage<>2011/06/25(土) 09:15:13.15 ID:???<> >>94
ID重複は別に本質的な問題じゃない <>
Name_Not_Found<>sage<>2011/06/25(土) 09:22:10.44 ID:???<> 過去ログにあると思うが、ID重複はcloneNodeであっさり生じる
なら"valid"とはどの時点での、何に依拠する"valid"か
そして、それとイベントフローとは何の関係もない <>
Name_Not_Found<><>2011/06/25(土) 09:43:36.64 ID:H7kHvVxy<> ttp://d.hatena.ne.jp/amachang/20061201/1164986067
ttp://d.hatena.ne.jp/shogo4405/20070206/1170741017
これらは同じ結果ですか?ともにdeferには未対応? <>
Name_Not_Found<>sage<>2011/06/25(土) 10:03:12.62 ID:???<> >>97
cloneNodeで生じても、速やかにそれを解消するコードを書かなきゃいけないんじゃないの? <>
Name_Not_Found<>sage<>2011/06/25(土) 10:08:41.23 ID:???<> @srcがなければ@deferも@asyncも書けない
@srcがあって@asyncがあれば非同期取得&実行
@srcがあって@deferがあればページ構築後に実行
@srcがあって@asyncも@deferもなければその場で取得&実行
脱線だが、例文がHTMLレベルで書けてない(invalid)にもかかわらず
この手の内容モデル・ツリー構造のミスが指摘・修正されることはまずない
イベントフローにもろ影響する、IDなんぞより大きい問題なんだがな <>
Name_Not_Found<>sage<>2011/06/25(土) 10:13:59.45 ID:???<> >>99
もちろんだ
だがフラグメントの子孫を辿って子孫のID修正してるコードなんか
ほとんど見たことない <>
Name_Not_Found<>sage<>2011/06/25(土) 10:49:31.94 ID:???<> 質問の趣旨から外れるけど、ID重複の指摘ぐらいはあってもいいんじゃない?
<>
Name_Not_Found<>sage<>2011/06/25(土) 11:03:07.58 ID:???<> >>101
「見たことがない=やっていい」ではないと思うけど…
イベントフローの話しかしちゃいけないわけでもないし <>
Name_Not_Found<>sage<>2011/06/25(土) 11:07:46.67 ID:???<> cloneNode使ってる実例自体をほとんど見たことないんだけど、
JavaScriptのみで同じような部品を複数生成する場合、cloneNodeを使うメリットってあんまり無いよね? <>
Name_Not_Found<>sage<>2011/06/25(土) 11:08:42.56 ID:???<> function class(){
this.method1=1;
this.method2=2;
}
obj=new class();
alert(obj.method1);
obj=new class(100);って書いてこの100をthis.method1に代入する方法を伝授してください <>
Name_Not_Found<>sage<>2011/06/25(土) 11:24:45.26 ID:???<> >>103
「やっていい」と言った覚えはない、意見の捏造は止めてくれ
ID重複にしろ変な木構造にしろ、イベント設置側からはどうすることもできない場合がある
バブリングを利用すれば、そうした問題をひとまとめに、とりあえず後回しにして考えられる
まさに>>75の抱えている問題そのものだろ <>
Name_Not_Found<>sage<>2011/06/25(土) 11:30:37.74 ID:???<> DOM Level 3にはdocument.strictErrorCheckingとdocument.continuousValidityCheckingがある
if(node.canAppendChild(child)) node.appendChild(child);のように常時妥当性検証する
ID重複もチェックするはずで、強行してエラーになれば"error-handler"が呼ばれる
Firefox4で廃止されたstrictErrorCheckingってのはこれのことな
Webはこれを使わない、つまりエラーをなるべく許容する方向にいったわけだ
ならこっちも通常処理と例外処理をまとめて扱えるようにしといた方がいいだろ?
なんでエラーを許容するかと言えば前方互換性の問題がある
ここでIDが結構厄介なんだが、スレ違いなのでこれ以上書かない <>
Name_Not_Found<>sage<>2011/06/25(土) 12:14:08.18 ID:???<> >>106
あなたの意図がわかりにくかっただけ
>>97や>>101の結論づけだと>>75を擁護しているように読めて気持ち悪い
本当は「イベントフローと関係ないから〜だ」という意見があるわけでしょ?
「関係ない」で終わってるとその後に来るべき結論は読み手によってどうとでも解釈できる
「ID重複すべきではないが、イベントフローと関係ない」ならまず誤解は生じなかった
要するに何を否定したいのかがよくわからんのよ
「イベントフローと関係ない」なんて周知の事実でしょ?
事実だけ羅列して「後は自由に読み取れ」てことなら誤解されることも予想すべきだと思う <>
Name_Not_Found<>sage<>2011/06/25(土) 12:16:07.10 ID:???<> >>105に答えてやってから議論しててくれ <>
Name_Not_Found<>sage<>2011/06/25(土) 12:23:55.58 ID:???<> >>104
ループ処理で毎度ノードを生成する時、cloneNode の方がパフォーマンスがいい
その時、IDも重複するなら当然変えるべきだろう
子孫にわたってID変更するのは勿論だけど、何処に何の要素があるかは決まっているから cloneNode するわけで変えるべき要素も決まっているはず
だからそれほど難しい変更じゃない
「見たことがない」とか悪例を挙げるのは意味がない行為だと思う
悪例があるならそれをどうすれば改善されるかをアドバイスする方がもっと重要なはずだ <>
Name_Not_Found<>sage<>2011/06/25(土) 12:26:16.24 ID:???<> function class(){
this.method1=(0<arguments.length)?arguments[0]:1;
this.method2=2;
}
obj=new class(100);
alert(obj.method1);
>>105はたぶん説明不足だからスルーされてる
一応書いてみたけどこういう意図なのかどうかわからないから
どういう意図なのかとかコード以外の部分まで考えたのに
そういう意味じゃありませんとか言われたら凹む
から俺もスルーしたい <>
Name_Not_Found<>sage<>2011/06/25(土) 12:30:18.51 ID:???<> >>105
classは予約語だから名前を変える
function _class (num) { if (arguments.length > 0) { this.method1 = num; } }
_class.prototype = {method1:1, method2:2};
obj = new _class(100);
alert(obj.method1); <>
Name_Not_Found<>sage<>2011/06/25(土) 12:33:09.04 ID:???<> >>110
悩んだ経験のない奴に、それについてのアドバイスは理解できない <>
Name_Not_Found<>sage<>2011/06/25(土) 12:35:44.21 ID:???<> class A
{
public $method1;
function __construct($n){
$this->method1 = $n;
}
public function view(){
return $this->method1;
}
}
$obj = new A(100);
echo $obj->view();
PHPで書くとこういう事がやりたいのです <>
Name_Not_Found<>sage<>2011/06/25(土) 12:36:15.60 ID:???<> >>111>>112
ありがとうございます <>
Name_Not_Found<>sage<>2011/06/25(土) 12:54:14.87 ID:???<> >>108
ID重複はお前さんのように白黒はっきりできる話じゃないんだよ
ある時点、ある段階でvalidityが決まる、そしてDOMはその境界にまたがる
だから「価値判断」は曖昧にして「事実と対処」のみを話していたわけで
その辺は汲み取ってほしかったがな <>
Name_Not_Found<>sage<>2011/06/25(土) 13:11:32.98 ID:???<> /)
///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ / <>
Name_Not_Found<>sage<>2011/06/25(土) 13:17:13.67 ID:???<> そんな小難しい話をするような問題かな
>>75 http://jsfiddle.net/Z6vGL/1/
>>76 http://jsfiddle.net/Z6vGL/2/
>>90 http://jsfiddle.net/Z6vGL/3/
<>
Name_Not_Found<>sage<>2011/06/25(土) 13:28:54.24 ID:???<> a = parseInt("123,45",10);
これが12345にならず123になってしまいます
.じゃないのに,も小数点として扱われるのでしょうか?
12345にする方法を教えてください <>
Name_Not_Found<>sage<>2011/06/25(土) 13:29:28.94 ID:???<> このスレは話を小難しくしたい奴が多いからな。ある程度は仕方ない。 <>
Name_Not_Found<>sage<>2011/06/25(土) 13:29:39.04 ID:???<> cloneNodeした要素をDOMツリーに挿入した時点でID重複が生じるならそれはvalidではないHTMLである
白黒はっきりしてると思うけど違うの? <>
Name_Not_Found<>sage<>2011/06/25(土) 13:34:06.03 ID:???<> >>119
parseIntの挙動を理解すべき。 <>
Name_Not_Found<>sage<>2011/06/25(土) 13:43:12.35 ID:???<> >>119
れpぁせ <>
Name_Not_Found<>sage<>2011/06/25(土) 13:45:24.22 ID:???<> <td class="area">
<span>1</span>
<span>2</span>
<span>3</span>
</td>
tdのareaクラス内のspanのテキスト部分を3つ取得したいのですが
document.querySelector(".area")ここからがわかりません
どなたかご教示おねがいします <>
Name_Not_Found<>sage<>2011/06/25(土) 13:45:46.26 ID:???<> >>103,106は「ID重複を避けられないパターンがある」といってるみたいだけど本当にそう?
element.querySelectorAll('[id]'); で要素を抽出してID書き換えれば済むような簡単な話に読めるけど <>
Name_Not_Found<>sage<>2011/06/25(土) 13:46:44.42 ID:???<> 挿入してなかったら、ID が重複してても標準仕様的には大丈夫なんでしょうか <>
125<>sage<>2011/06/25(土) 13:54:37.55 ID:???<> ごめん、>>125のレスアンカーは>>101,106の間違いだった <>
think49 ◆bKk/qcAKuM <>sage<>2011/06/25(土) 14:20:51.00 ID:???<> >>126
「ID が重複してはいけない」は XML または HTML の規定から来ています。
http://w4ard.eplusx.net/translation/W3C/REC-xml-20081126/#sec-attribute-types
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/global.html#h-7.5.2
http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-id-attribute
CSS や JavaScript にID重複禁止の規定はありませんが、(X)HTML文書がID重複しないことを前提に仕様が規定されています。
例えば、DOM Level 2 Core 規定の getElementById には "複数の要素がこのIDをもつ場合には,その振る舞いは定義されない。" とあります。
ID が重複しているHTML文書における getElementById はどのような挙動になるかわかりません。
ひょっとしたら何も返さない実装(ブラウザ)があるかもしれませんが、その振る舞いは DOM 規定に反していません。
ですので、DOM Level 2 Core 仕様に準ずるならば意図的に ID を重複させるHTML文書に対して getElementById を使用すべきではないことになります。
http://www.y-adagio.com/public/standards/tr_dom2_core/core.html#ID-getElBId
HTML文書を JavaScript が扱うDOMオブジェクトであらわすと [object HTMLDocument] に相当します。
HTML に準拠しなければならないのは [object HTMLDocument] だけですので [object HTMLDocument] に挿入されていないノードに関しては ID が重複していても問題ありません。
また、複数の [object HTMLDocument] が存在する場合にもそれぞれの [object HTMLDocument] の中でIDが重複しなければ問題ありません。
<>
Name_Not_Found<>sage<>2011/06/25(土) 14:21:59.43 ID:???<> 質問と回答以外は黙っててくれないかな <>
Name_Not_Found<>sage<>2011/06/25(土) 14:28:05.73 ID:???<> >>128
ありがとうございます <>
Name_Not_Found<>sage<>2011/06/25(土) 14:35:09.90 ID:???<> ようやく収束したかな
>>119
a = parseInt("123,45".replace(/,/g, ''), 10); // カンマを取り除けば問題ない
<>
Name_Not_Found<>sage<>2011/06/25(土) 14:36:52.36 ID:???<> >>128
なんかいろいろ違う <>
Name_Not_Found<>sage<>2011/06/25(土) 14:39:02.05 ID:???<> 124も念のためお願いします <>
Name_Not_Found<>sage<>2011/06/25(土) 14:40:28.86 ID:???<> >>124
document.querySelectorAll(".area>span") をforループで回してelement.dataを参照
>>132
詳しく <>
Name_Not_Found<>sage<>2011/06/25(土) 14:41:26.39 ID:???<> >>134
皆あきてるし長くなるから無理 <>
Name_Not_Found<>sage<>2011/06/25(土) 14:45:03.99 ID:???<> 否定するだけで何も言わない人はかなり迷惑 <>
Name_Not_Found<>sage<>2011/06/25(土) 14:49:12.24 ID:???<> 書けば書いたでイミフだの長文うざいだの言われるからな <>
Name_Not_Found<>sage<>2011/06/25(土) 14:52:39.60 ID:???<> >>137
俺はイミフとか長文うざいとか言わないから書いてよ <>
Name_Not_Found<>sage<>2011/06/25(土) 14:55:29.22 ID:???<> ここから>>1000まで多数決 <>
Name_Not_Found<>sage<>2011/06/25(土) 14:56:54.65 ID:???<> >>134
element.firstChild.dataじゃないか?
>>137
内容にもよるが長文NGってわけでもないと思う
要点をまとめて長文になるのは仕方ない <>
Name_Not_Found<>sage<>2011/06/25(土) 14:58:08.79 ID:???<> うざす <>
Name_Not_Found<>sage<>2011/06/25(土) 15:00:31.79 ID:???<> 回答は一段落したしいいんじゃない?
違うなら違うで書いてほしい <>
Name_Not_Found<>sage<>2011/06/25(土) 15:05:15.46 ID:???<> むしろ書かないことでイミフになる件w
<>
Name_Not_Found<>sage<>2011/06/25(土) 15:12:11.58 ID:???<> えーと、あれだ
あきらめたらそこで試合終了だよ <>
Name_Not_Found<>sage<>2011/06/25(土) 15:16:52.18 ID:???<> 仕様を心行くまで語るスレでも作っとけ <>
Name_Not_Found<>sage<>2011/06/25(土) 15:18:13.15 ID:???<> 典型的なダメ出し君であった。 <>
Name_Not_Found<>sage<>2011/06/25(土) 15:23:33.47 ID:???<> 間違いにNOと言えない日本人 <>
Name_Not_Found<>sage<>2011/06/25(土) 15:32:33.19 ID:???<> ここまで俺の自演 <>
Name_Not_Found<>sage<>2011/06/25(土) 15:34:28.67 ID:???<>
for(vari i=0; i<3; i++) {
query = document.querySelectorAll(".area>span");
query.firstChild.data
}
こうしてみたのですができませんでした <>
Name_Not_Found<>sage<>2011/06/25(土) 15:35:07.26 ID:???<> >>148
Noooooo!!! <>
Name_Not_Found<>sage<>2011/06/25(土) 15:41:24.06 ID:???<> Ajaxでテキストログの状況を確認しても
IE9の場合、最初に開いた時の状態しか出てきませぬ
そのテキストファイルを開いてF5とか押して更新確認してから、Ajaxをまた実行すれば最新の状態が出てくるのですが
何かいい対処法がないでしょうか? <>
Name_Not_Found<>sage<>2011/06/25(土) 15:43:21.31 ID:???<> <html>
<head>
<title>aaa</title>
</head>
<body>
<div>
<span>a</span>
<span>b</span>
<span>c</span>
</div>
</body>
</html>
javascript:l=document.querySelectorAll('div span');for(var i=0;i<l<length;i++)alert(l[i].firstChild.nodeValue);
やってみたのですが間違ってる箇所をご指摘ください <>
Name_Not_Found<>sage<>2011/06/25(土) 16:03:12.48 ID:???<> まとめサイトを掲示板とかコメント投稿機能付きのWikiとかにして
脱線する場合は相手をそっちに誘ってそこで心行くまで語り合うというのはどうか
ついでにテンプレ議論もそっちでやってほしい
IP表示にでもして <>
Name_Not_Found<>sage<>2011/06/25(土) 16:08:47.71 ID:???<> 自演が出来ちゃうから議論するときはIP出して欲しいね <>
Name_Not_Found<><>2011/06/25(土) 16:19:07.75 ID:NGbQmjvX<> id出すのは構わないのだが、議論の相手がidなしではこちらだけ複数の相手から対象になるのでやりにくい
お互いにidを出す合意があればいいんだがなあ
idを出す板に移動できないものか <>
Name_Not_Found<>sage<>2011/06/25(土) 16:19:29.69 ID:???<> >>151
キャッシュが原因
IEとサファリはAjaxで引き出したものもキャッシュする
テキストなら
var i=0;
呼び出すテキストのURL
"hoge.txt?fuge="+i
i++
とでもしとき、そうすれば被らない <>
Name_Not_Found<>sage<>2011/06/25(土) 16:22:14.23 ID:???<> 地震があるならはてなの匿名ブログでやりゃあいいよ <>
Name_Not_Found<><>2011/06/25(土) 16:23:17.19 ID:NGbQmjvX<> >>151
今手元に試料がないのでうろ覚えだが、IEはif-modifiedなんとかを指定して回避できたと思う
XHRの仕様にも説明があったはず <>
Name_Not_Found<>sage<>2011/06/25(土) 16:25:23.02 ID:???<> >>156>>158
いろいろ対処法あるんですなー
とりあえずmetaとかでダメだったんで確実性の為に>>156でやってみます <>
Name_Not_Found<><>2011/06/25(土) 16:36:44.65 ID:NGbQmjvX<> >>159
metaじゃなくてHTTPヘッダに指定するんだ
metaはヘッダの代用に過ぎない
http://vird2002.s8.xrea.com/javascript/XMLHttpRequest.html#XMLHttpRequest_Cache-Control <>
Name_Not_Found<>sage<>2011/06/25(土) 16:57:29.85 ID:???<> >>160
なんと!
わざわざありがとうございますッッ!! <>
Name_Not_Found<>sage<>2011/06/25(土) 17:08:01.62 ID:???<> >>128
| 名前"ID"をもつ属性は,ID型ではない
schema-determined ID, DTD-determined ID, externally-determined ID
XPath 1.0の5.2.1節、(Web)DOM Coreの5.6節(Editor's note) <>
Name_Not_Found<>sage<>2011/06/25(土) 18:27:47.23 ID:???<> document.evaluate('id("HOGE GEHO")', df, null, 7, null)は
フラグメントdfに含まれるIDを識別すべきか
df.querySelector('#HOGE, #GEHO')はどうか
// @xml:idと@idが両記されているXHTML5(SVG埋め込み)はどちらを使うか
// getElementByIdはxsd:IDである(属性ではなく)要素を識別できるか <>
Name_Not_Found<><>2011/06/25(土) 18:56:50.52 ID:Vt6T+Q83<> chromeでデバッグしてるんだけど、サーバーに挙げたjsファイルがブラウザ側でキャッシュ使われるみたいなんだけど、
何かいい回避方法ないかな? <>
Name_Not_Found<>sage<>2011/06/25(土) 19:01:13.81 ID:???<> ちょっと前に書いてあるだろ <>
Name_Not_Found<>sage<>2011/06/25(土) 19:12:28.50 ID:???<> キャッシュクリアしとけばいいだろ <>
Name_Not_Found<>sage<>2011/06/25(土) 20:16:21.16 ID:???<> ノードリストやノードスナップショットに配列のメソッドを使いたい場合は
ノードリストをループで回してノードを順に配列に入れ直すんですか? <>
Name_Not_Found<>sage<>2011/06/25(土) 20:26:08.17 ID:???<> >>167
こんな感じ?
var nodeList = element.childNodes,
len = nodeList.length;
while (len) {
len -= 1;
// 何らかの処理
}
Array.prototype.forEach.call(element.childNodes, function (value, index, array) {
// 何らかの処理
});
Array.prototype.slice.call(element.childNodes).forEach(function (value, index, array) {
// 何らかの処理
}); <>
167<>sage<>2011/06/25(土) 21:09:22.40 ID:???<> どうもありがとうございます
配列のメソッドをapplyやcallを使ってノードリストから呼び出す方法が一般的ってことですか? <>
Name_Not_Found<><>2011/06/26(日) 12:00:21.80 ID:XngOLDPg<> 重複せずにランダムで広告を表示させるスクリプトを作ってるんですが、jsの中のjsを実行しようとするとエラーになってしまいます。
【やりたい事:jsの中のjsを実行させたい】
----------------------------------------------------------------------------------------------
<html><head>
<script type="text/javascript" src="http://azlink.sakuratan.biz/js/widget2.min.js"></script>
<script type="text/javascript">
var randObjects=[
'<script type="text/javascript">AZlink.Widget2.sidebar({associateId: 'datweb04-22',node: 'bestsellers/books/10667111',numItems: 10,imageFlags: [ 'AA220', 'CR30,10,160,200' ]});</script>',
'表示2',
];
function randWrite() {
var rr = parseInt(Math.random() * randObjects.length);
document.write(randObjects.slice(rr,rr+1)[0]);
randObjects.splice(rr,rr+1);
}
</script>
</head><body>
<script type="text/javascript">randWrite()</script><br><br>
<script type="text/javascript">randWrite()</script><br><br>
</body></html>
----------------------------------------------------------------------------------------------
どなたか教えてください。 <>
Name_Not_Found<>sage<>2011/06/26(日) 12:03:56.14 ID:???<> jsの中のjsを実行させたい
日本語でおk <>
Name_Not_Found<>sage<>2011/06/26(日) 12:14:52.24 ID:???<> a.html
<script src="a.js"></script>
a.js
document.write('<script src="b.js"></script>');
b.js
document.write('Hello World');
こういうことじゃねーの? <>
Name_Not_Found<>sage<>2011/06/26(日) 12:18:22.54 ID:???<> >>170
実装は様々考えられるけど、基本的にはFunctionオブジェクトで持つのが普通だよ。
今のコードの延長で考えるなら、例えばこんな風に別の関数でラップして持っておいて
var randObjects = [ function(){ AZlink.Widget2.sidebar({...}) } ];
randObjects[0](); // 関数呼び出し <>
Name_Not_Found<>sage<>2011/06/26(日) 13:11:09.26 ID:???<> >>169
用語を使い分けているから知ってると思うが
ノードリストの増減があるときはArrayメソッドをcallで使えない
sliceなり__iterator__なりでいったんスナップショットにする必要がある
どっちが一般的とかではなく、使い分けろ
できの悪いライブラリだとforEachでSparseArrayを扱えないからそれも注意な <>
Name_Not_Found<><>2011/06/26(日) 13:28:25.59 ID:y2LS0ZpY<> >>156でsafariのキャッシュのことが出てるけど
自分の方では逆にキャッシュを利用したいのにうまくいかず困っています。
以下は同じファイルに3回リクエストする簡易な例です
var xhr = new XMLHttpRequest(), cnt = 0, flag = true;
xhr.onreadystatechange = function() {
if (4 === xhr.readyState && 200 === xhr.status) {
console.log("success - " + xhr.responseText);
}
flag = true;
}; <>
Name_Not_Found<><>2011/06/26(日) 13:31:32.53 ID:y2LS0ZpY<> (続き)※本文が長すぎるとかで投稿できないので小分けに・・
var t = setInterval(function(){
if (flag) {
xhr.open("GET","hoge.txt",true);
xhr.send("");
flag = false;
if (++cnt >= 3) { clearInterval(t); }
}
},1000);
ブラウザの挙動はこんな感じです(windows版safari5) <>
Name_Not_Found<>sage<>2011/06/26(日) 13:42:08.73 ID:???<> HTTPクライアントなんだからIf-None-MatchとかIf-Modified-Sinceぐらい使えよ
あと304は200に変換されるからな <>
Name_Not_Found<>sage<>2011/06/26(日) 14:34:23.23 ID:???<> 数字だけじゃなくて名前でもアクセスできる配列というか
プロパティの並び順が決まっているオブジェクトというか
そういうものって作れますか?どうやればいいですか
[{hoge:foo}, {piyo:bar}, {fuga:baz}]
配列とオブジェクトを入れ子にしても名前でアクセスするには配列の番号を知っていないといけないし <>
Name_Not_Found<>sage<>2011/06/26(日) 14:40:41.43 ID:???<> >>178
var index = {hoge: 0, piyo: 1, fuga: 2}; // インデックスを作っておくとか
<>
Name_Not_Found<>sage<>2011/06/26(日) 14:50:09.61 ID:???<> >>178
a = [
{
"a":"1111111111",
"b":"2222222222",
}
,
{
"a":"333333333333333",
"b":"444444444444444",
}
];
alert(a[0].a);
alert(a[0].b);
alert(a[1].a);
alert(a[2].b); <>
Name_Not_Found<>sage<>2011/06/26(日) 14:51:29.32 ID:???<> >>178
javascript:a = [{"a":"1111111111","b":"2222222222",},{"a":"333333333333333","b":"444444444444444",}];alert(a[0].a);alert(a[0].b);alert(a[1].a);alert(a[1].b); <>
Name_Not_Found<>sage<>2011/06/26(日) 14:53:31.92 ID:???<> var src = [{name:hoge, value:foo}, {name:piyo, value:bar}, {name:fuga, value:baz}];
var dst = [ ];
src.forEach(function(o) { this[i]=this[o.name]=o.value; }, dst); <>
Name_Not_Found<>sage<>2011/06/26(日) 14:57:39.43 ID:???<> >>178
hensu = function.prototype.a(){}
hensu.a() = "aaaaa";
hensu.b() = "bbbbbb";
hensu.c() = "ccccc"; <>
178<>sage<>2011/06/26(日) 15:14:47.19 ID:???<> >>179-183
レスどうもありがとうございます
すみません具体的には
var a = {hoge: "foo", piyo: "bar", fuga: "baz"};
↑これの並び順が配列のように決まっていて
a.length = 2;
とすると{hoge: "foo", piyo: "bar"}になったり
var b = a.splice(piyo, 1);
a.unshift(b[0]);またはa.unshift(b["piyo"]);
とすると{piyo: "bar", hoge: "foo", fuga: "baz"}になったり
みたいな
そういう操作がしたいです
>>179-183のどの方法でできますか? <>
Name_Not_Found<>sage<>2011/06/26(日) 15:19:54.55 ID:???<> どの方法でできるかは試せばわかりますよね <>
Name_Not_Found<>sage<>2011/06/26(日) 15:29:04.90 ID:???<> >>184
プロパティに順番はないから
どんな手段でアクセスするかによって順番は変わる <>
Name_Not_Found<>sage<>2011/06/26(日) 15:33:06.10 ID:???<> 自前でコンストラクタ作らないと無理と思う <>
175<>sage<>2011/06/26(日) 22:37:36.16 ID:???<> 連続投稿で排除されてしまい続きが書けませんでした。
safariからのリクエストヘッダに自動でキャッシュを無効にするヘッダがついてしまい
そのことを説明したかったんですが、単にwebインスペクタ(開発ツール)でヘッダを見ていたせいでした。
(トラッキングのためにあえて付加されていた)
その後解決しています。 <>
Name_Not_Found<><>2011/06/27(月) 08:18:38.93 ID:b2vZ/Ec9<> >>184
どこで順番を判断するの?
for-in なら実装依存だよ
length のところは setDefineProperty が必要かな <>
Name_Not_Found<><>2011/06/27(月) 08:22:19.46 ID:b2vZ/Ec9<> Object.defineProperty だった <>
Name_Not_Found<>sage<>2011/06/27(月) 14:46:56.73 ID:???<> <HTML>
<BODY onload="Main();">
</BODY>
<DIV ID="ImgList"></DIV>
</HTML>
1個2M~3Mくらいの画像を20個表示させようと思っています。
1個1個表示させたいのですが、全ての画像が一度に表示されてしまいます。
なぜでしょうか・・・またどうやったら回避できますか? <>
Name_Not_Found<>sage<>2011/06/27(月) 14:52:19.67 ID:???<> function Main()
{
var element= document.getElementById("ImgList");
var img_name_default="img";
var img_name="";
for(var i=1;i<20;i++)
{
img_name=img_name_default+setZero(i)+".jpg";
element.innerHTML+="<img src='"img_name"'><br clear>";
}
}
function setZero(number)
{
var ret="";
if(number < 100)
ret+=0;
if(number < 10)
ret+=0;
ret+=number;
return ret;
} <>
Name_Not_Found<>sage<>2011/06/27(月) 15:36:59.38 ID:???<> >>191
なぜか: 貴方の脳内勝手仕様が現実と違っているから。Main()を
実行するとすべてのimg要素がImgListの中に入る。JavaScriptを
実行中はブラウザは他のことを何もしないので、順番に入れようが
どうしようが関係ない。Main()が終るとブラウザは表示すべき
img要素が沢山あると知り、全部ロードしはじめる。それだけ。
回避方法: 1つのイメージをロードし、その完了を待って次の
イメージをロードし、のように自分で組むしかない。 <>
Name_Not_Found<>sage<>2011/06/27(月) 15:46:28.77 ID:???<> >>193
なるほど
それでいっきに表示されていたんですね
それにしても終わってからロードする時ってどうやったら・・・
なかなか難しいプログラムになりそうですねorz <>
Name_Not_Found<>sage<>2011/06/27(月) 16:36:55.52 ID:???<> >>194
「JavaScript 画像 ロード 完了」とかでぐぐる。単にいまループで
全部やってるのを1回ずつに分けてやるだけでしょ? <>
Name_Not_Found<>sage<>2011/06/27(月) 18:11:21.36 ID:???<> JS切ると何も表示されないアホな設計から見直せ
例えばaのリンクにしておけば好きな画像から見れる
JSが動くなら順次imgに変換してonloadで次の画像を読み込む
それすらできないレベルならJS使わずにHTMLだけちゃんと書いとけ <>
Name_Not_Found<>sage<>2011/06/27(月) 18:22:45.87 ID:???<> >>194
BODYの外にDIV置かない方がいいよ <>
Name_Not_Found<>sage<>2011/06/27(月) 18:36:31.78 ID:???<> >>195 ありがとうございます 調べてみます
>>196 初心者ですみませんがAタグをIMGタグに変換するなんて事が出来るなんて知りませんでした
自分で少し試して見たいと思います。やり方教えて頂きありがとう御座います。
>>197 了解 <>
Name_Not_Found<><>2011/06/27(月) 19:26:23.02 ID:+rfCjWeF<> iframeで、開いたリンクを実行した場合、iframeの枠の中だけで新しいページに移動します。
jquery.jsの
$("#target_load").load("hello.html");
を使うと、親ページ全体が書き換わってしまいます。
一部だけ更新できるように出来ないでしょうか?
<>
Name_Not_Found<>sage<>2011/06/27(月) 19:34:24.78 ID:???<> jqueryを使わなければいいんじゃないの <>
Name_Not_Found<><>2011/06/27(月) 19:38:49.05 ID:dKinyIwi<> 特定のdiv要素だけをリロードさせることってどうすればできますか? <>
Name_Not_Found<><>2011/06/27(月) 19:49:59.30 ID:tDRMi/aw<> 値をreturnする関数で、返す値がない場合、
「return null;」なのか「return false;」なのか、何を返せばいいんでしょうか
「return;」でもいいんですか?
通常返す値が文字列なら「return "";」、通常返す値が配列なら「return [];」、みたいに、
通常の値の型と同じ型の空を返すんですか?
場合によって使い分けるとかですか?使い分け方を教えてください <>
Name_Not_Found<>sage<>2011/06/27(月) 20:01:55.34 ID:???<> >>202
その帰った値をどう利用するかで変わる。
return trueが別の場所にあるなら対としてreturn false;
return 数字ならreturn 0かnull
文字列なら "" か null
ちなみに、return;だとundefinedが帰るよ。各型特有のメソッドを使用する際は注意しないとエラー出るよ。
if(result)で使うなら、空の配列[]やオブジェクト{}はtrueになるからそこらへんはコードで判断してね。 <>
202<>sage<>2011/06/27(月) 20:05:21.98 ID:???<> >>203
レスどうもありがとうございます
> if(result)で使うなら、空の配列[]やオブジェクト{}はtrueになるから
このへんよくうっかりしてしまいます
よく注意して使い分けたいと思います
ありがとうございました <>
Name_Not_Found<>sage<>2011/06/27(月) 21:15:21.39 ID:???<> 男が関数で文字列を返すのは恥と知るべき。
全部エラーオブジェクトのメッセージとして投げるに尽きる。 <>
Name_Not_Found<>sage<>2011/06/27(月) 21:25:38.69 ID:???<> >>206
なんでやねん <>
Name_Not_Found<>sage<>2011/06/27(月) 21:36:19.40 ID:???<> _, ,_ パーン
( ‘д‘)
⊂彡☆))Д´) >>206 <>
Name_Not_Found<>sage<>2011/06/27(月) 23:00:31.55 ID:???<> JSDoc書けない男はコンドームをつけないのと等しい <>
Name_Not_Found<>sage<>2011/06/27(月) 23:19:42.69 ID:???<> >>207
叩くなっ!!!!!!!!!!!!!! <>
Name_Not_Found<>sage<>2011/06/27(月) 23:27:24.50 ID:???<> >>206
安易な再帰はスタックを食い潰すぞ。 <>
Name_Not_Found<>sage<>2011/06/27(月) 23:30:20.24 ID:???<> jQueryなんて女子供のおもちゃじゃ! <>
Name_Not_Found<>sage<>2011/06/27(月) 23:38:35.69 ID:???<> jqueryをバカにするなっ!!!!!!!!!!!!!!!!!! <>
Name_Not_Found<>sage<>2011/06/27(月) 23:41:03.80 ID:???<> newを使う男は早漏よね <>
Name_Not_Found<>sage<>2011/06/28(火) 00:59:56.13 ID:???<> アッーーー
ちょっと鍛えてくる <>
Name_Not_Found<>sage<>2011/06/28(火) 08:05:31.02 ID:???<> >>211
Dojoかprototypeですよねー <>
Name_Not_Found<><>2011/06/28(火) 08:11:07.07 ID:wFeTb9b4<> ライブラリを使う男はいいかげん <>
Name_Not_Found<>sage<>2011/06/28(火) 08:54:34.11 ID:???<> >>201
不可能
<>
Name_Not_Found<>sage<>2011/06/28(火) 10:49:51.86 ID:???<> >>201
何番目のdivか数えて書き換えればおk <>
Name_Not_Found<>sage<>2011/06/28(火) 14:17:59.54 ID:???<> >>215
dojoは開発初期からes仕様を読み込んでた感じで漢だったぜー
prototypeやjqueryは、js触り立ての素人さんが勢いで作った感じ
それをまた素人がもてはやすから、今になって設計ミスがぽろぽろ出てきたなーと <>
Name_Not_Found<>sage<>2011/06/28(火) 14:48:30.83 ID:???<> 設計ミスもなにも、言語自体が設計ミスの塊なんだから仕方ないだろw
その上で、設計どころか常識が狂ってるあのIEに対応させようとすれば、
どんなライブラリだって「一部に目を瞑って実用レベル」か「作者の趣味で役に立たない」か
どちらかにしかならん。 <>
Name_Not_Found<>sage<>2011/06/28(火) 15:42:50.65 ID:???<> JavaScriptを手っ取り早く勉強する方法を教えてください
こう書いたらこう動くってのは本見て分かるけど、
こんな感じにしたいって時にどれをどう応用したらいいのか分かりません・・・ <>
Name_Not_Found<>sage<>2011/06/28(火) 15:47:21.92 ID:???<> その「こんな感じ」をググれ
本を読むよりソース組みまくった方が勉強になる <>
Name_Not_Found<>sage<>2011/06/28(火) 16:12:29.20 ID:???<> 「手っ取り早く」「勉強する」←この2つが既に矛盾してる。
学問に王道なし。 <>
Name_Not_Found<>sage<>2011/06/28(火) 16:14:46.93 ID:???<> 別に矛盾してないだろ <>
Name_Not_Found<>sage<>2011/06/28(火) 16:19:01.01 ID:???<> 自分で試行錯誤もしない奴は結局何も作れんよ。
人に手っ取り早く教えてもらえるプログラムなら、そんなもん自分で作る意味ないし。
そいつの作ったやつそのまま使えばいい。 <>
Name_Not_Found<>sage<>2011/06/28(火) 16:40:52.54 ID:???<> 日本の学校で言う「勉強」には近道があるな。手っ取り早く誰かから
答えを聞き出すか、どこかから答えを丸写ししてくるのが日本式の勉強だからw
その結果、自分で答えを作り出さなきゃならん場合に何も役に立たない人間が出来上がる。 <>
Name_Not_Found<><>2011/06/28(火) 17:33:32.00 ID:RUCL/SaV<> 手っ取り早く教えてアニキ
文字列リテラルの変数展開ってもしやできない?
Rubyで言うところの#{hoge}みたいなやつ <>
Name_Not_Found<>sage<>2011/06/28(火) 17:59:52.75 ID:???<> >>227
できない。全部自分で組み立てるしかない。 <>
Name_Not_Found<><>2011/06/28(火) 18:05:00.85 ID:RUCL/SaV<> >>228
ありがとうございます
今夜は安心して眠れます <>
Name_Not_Found<>sage<>2011/06/28(火) 18:35:44.97 ID:???<> >>219
ああ凄い分かる
dojoが未だにIBMでよく使われてるのも頷けるわ <>
Name_Not_Found<>sage<>2011/06/28(火) 20:18:02.53 ID:???<> >>225
試行錯誤するときの手本が最悪なサンプルだと悲惨だがな
JSに限らないが、特にJSでググってひっかかるのはひどいのばっかだろ <>
Name_Not_Found<>sage<>2011/06/28(火) 21:54:14.00 ID:???<> >>231
最初の勉強の道具がひどいプログラムかどうかは問題にならない。
まともに勉強しようって奴は、そのプログラムを言語仕様とつき合わせて
「このプログラムはいったい何をしてるんだ?」と調べまくる。
それで自然と仕様を覚えるし、それがひどいプログラムなら
「ここいらないじゃん」「こっちの方が簡単じゃん」と、
具体的にどこがダメなのかが見えてくる。
勉強する気のない奴は、仕様もみないで、見つけたプログラムを適当にコピペ改変して
動くっぽい状態にしておしまい。コピペ改変が試行錯誤だと思ってる。
そんな勉強する気のない奴なんて、ひどいプログラムと同じぐらいどうでもいい。 <>
Name_Not_Found<>sage<>2011/06/28(火) 22:12:59.18 ID:???<> >>232
いや大いに問題だね
QA掲示板なんかで初心者の味方を気取る初心者が
とほほレベルの時代遅れコードを拡大再生産しまくってる現状で
何で役立たずの理想論を振りかざしてんの? <>
Name_Not_Found<>sage<>2011/06/28(火) 22:27:48.41 ID:???<> 最初に目にしたプログラムのすり込みって大きいと思うよ
仕様だけの話でなく、コーディングセンス的な意味で
prototypeとthisの使い方を初めて見たときショックだったな
今でも根強いクラスベースに似せた書き方でなく
なんか根本的に発想が違うと思った <>
Name_Not_Found<>sage<>2011/06/28(火) 22:27:49.49 ID:???<> じゃあおまいさんが新時代のソース晒せばいいじゃない
2chで批判するやつより、とほほレベルの時代遅れコードの方がよっぽどマシだと思うが <>
Name_Not_Found<>sage<>2011/06/28(火) 22:33:17.19 ID:???<> >>235
新時代というより、良質のコードって埋もれてると思う
prototypeの使い方を探したとき、ずいぶん前からあったんだなってのと同時に
何でこれが長いこと広まらなかったんだろうとも思った <>
Name_Not_Found<>sage<>2011/06/28(火) 22:39:41.59 ID:???<> >>233
お前の言ってるのは、釘の打ち方もカンナのかけ方も知らない人間が
他人に大工仕事教えることを問題視してるわけだが、そんなの話にならんわ。
子供は親を選べないし、義務教育中の生徒は教師を選べないが、
義務教育外の学習なら生徒は師を選択できる。むしろ選択しないとヘタレまっしぐら。
「ああこいつモノ教えるほどの力量ないじゃん」と見切ったなら、
そんなのとはさっさと別れなきゃいかん。
文句があるなら、その前に、最初のきっかけにいつまでもしがみ付いてる奴の方を嘆いとけ。 <>
Name_Not_Found<>sage<>2011/06/28(火) 22:47:09.82 ID:???<> >>237
その選択した結果とやらが、このスレの回答レベルなんだろ?
お前は自分の力量をずいぶん過信してんだな <>
Name_Not_Found<>sage<>2011/06/28(火) 22:48:10.66 ID:???<> ラッパーなら言いたいことはラップで語ってください。
プログラミングやってるなら言いたいことはプログラムで語ってください。
何が良質なのか、良質なprototypeを使ったサンプルコードをお願いします。
良質かつ意味のある実践的なコードを。
既存のオブジェクトを拡張するような使い方ではなく
外部ライブラリを呼び出さず
そのままで動作するコードで
1レスにおさまる長さで <>
Name_Not_Found<>sage<>2011/06/28(火) 22:51:06.83 ID:???<> 俺が考えた泣けるシナリオソースここまで <>
think49 ◆bKk/qcAKuM <>sage<>2011/06/28(火) 23:13:39.34 ID:???<> >>162
遅ればせながらありがとうございます。
XHTML 1.x でid属性がID型に関連づけられていることを思い出しました。
http://www.y-adagio.com/public/standards/tr_xhtml_mod/abstract_modules.html#s_core_collection
>>128の「XML または HTML」は「(X)HTML」に訂正します。 <>
think49 ◆bKk/qcAKuM <>sage<>2011/06/29(水) 00:09:13.32 ID:???<> >>221
「何をしたいのか」によりますが、『JavaScript 第5版』を理解できるまでに読み込めばある程度は自分の希望通りの機能を実現できるんじゃないでしょうか。
http://www.amazon.co.jp/dp/4873113296
試行錯誤も大切ですが、きちんとした土台ができあがってからの話だと思います。
勿論、土台を得るための試行錯誤は必要ですが、間違った情報に惑わされるリスクを負うぐらいなら多少難しくとも質の高い情報を参考にする方が効率的ではないかと。
土台ができたら>>11のリンク先を読み進めれば、必要な情報を引くための場所に見当がつくようになります。
(仕様書を読むことに敷居の高さを感じるようでしたら、MDC で手を打つのが妥当かなーと個人的には思います。)
あと、「書けるようになる」のと「質の高いコードを書く」は別次元の話なのでゴール(達成目標)をきちんと設定した方がいいと思います。
お勧めはしませんが、「書けるようになる」だけなら初めに見たコードを参考にするだけで十分ともいえます…。
ただし、質が悪いコードに巡り会う可能性は少なからずありますし、質が悪いからこそ非効率だということもできます。
誤った情報を鵜呑みにしないためにもたくさんのコード、文献を読んだ方が長期的には効率的です。 <>
Name_Not_Found<>sage<>2011/06/29(水) 05:45:40.32 ID:???<> >>238
俺と関係ないところで、誰が誰にどんな回答してるかなんて、俺は責任もたないし。
「ああバカげた回答してるなぁ」と思うだけだぞ? <>
Name_Not_Found<>sage<>2011/06/29(水) 06:00:20.26 ID:???<> ・ドットシンタクス、DOM 検索の重複を繰り返す。
・等値演算子で比較を行う。
・コンストラクタ以外の変数の先頭に大文字を使う。
・リテラルを使わず、コードの下部に関数宣言をまとめる。
残念なコードの典型。 <>
Name_Not_Found<>sage<>2011/06/29(水) 06:00:22.25 ID:???<> >>242
>>221にあれを勧めるのは、ハイキングで近くの山に登りたいって人に、
エベレストの登山装備用意するように勧めるようなもんだぞw
趣味である限り、「泥棒を捕らえて縄をなう」でいい。必要になってから必要になったものを調べるだけでいい。
勉強なんて、自分がそれを必要だと心の底から思うことができない限り、絶対に身に付かない。
何の役にたつのか分からん重装備を抱え込んだら、行く前から装備に潰される。 <>
Name_Not_Found<>sage<>2011/06/29(水) 06:07:33.70 ID:???<> >>245
>>242 ではないけど、あんたは読んだのけ?
前半のコアの部分だけでも、読むべきだと思うし、読んで損はないと思うわ。 <>
think49 ◆bKk/qcAKuM <>sage<>2011/06/29(水) 07:41:48.84 ID:???<> >>245
正直、>>221のレベルはよくわかりません。勉強する力はあるものの調べる力に長けていないとも読めますし…。
そういう場合、ぐぐり方や信頼できるWebサイトを複数知っているだけでも違うのでしょうが、情報の正誤を判断する前提となる知識を身につけることが先だと考えています。
初心者向けとしては『DOM Scripting 標準ガイドブック』が読みやすいと思いますが、「何をしたいのか」のかがわからないので『JavaScript 第5版』をお勧めした次第。
初めから全て理解する必要はないですし、少しずつ理解するだけでも大分違うと思います。
http://www.amazon.co.jp/dp/4839922373 <>
Name_Not_Found<><>2011/06/29(水) 08:06:43.98 ID:Cei45owx<> 本を読めば登れるがどの山に登ればいいかわからない <>
Name_Not_Found<>sage<>2011/06/29(水) 08:19:51.82 ID:???<> 今の時期に第 5版を勧めるのもどうかと思うけどw <>
175<>sage<>2011/06/29(水) 08:30:39.72 ID:???<> >>175-176のブラウザの挙動について説明の続きがあるのですが
連続投稿で規制になってしまったため、質問保留にします
※この投稿は投稿の代行スレに依頼しました <>
Name_Not_Found<>sage<>2011/06/29(水) 08:34:45.38 ID:???<> 代行さん乙w <>
Name_Not_Found<>sage<>2011/06/29(水) 10:07:29.73 ID:???<> >>246
読んだよ。あの時はコアJSの章が終わってまだ3分の1しか進んでないどころか、
原書では別のリファレンスまで込みだったことを知って愕然としたわw
少なくとも、読んで理解できるレベルでないと「よく分からん。読み飛ばす」で終わってしまうことだけは確か。
変な話だが、The Good PartsとかJavaScriptパターンを読み飛ばすことなく理解できるレベルでないと意味がないと思う。
どのぐらい意味がないかというと、小学生を大学の図書館に連れてって自習させるぐらい意味がない。 <>
Name_Not_Found<><>2011/06/29(水) 13:22:15.96 ID:KPKJAbOf<> IE8 にあった HTMLDocument が IE9 では無くなっているようですが、これは何故でしょうか <>
Name_Not_Found<>sage<>2011/06/29(水) 14:16:49.60 ID:???<> ページ内のどっかのLINKをクリックして画面が切り替わろうとしたら、
それを取りやめる処理というのはどうすればいいですか?
例えばbody内で onUnload を使えるみたいですが、この中の処理で何かすればよさそうな気もしますが、
上手い方法が思いつきません。 <>
Name_Not_Found<>sage<>2011/06/29(水) 14:20:26.41 ID:???<> >>254
ID false <>
Name_Not_Found<>sage<>2011/06/29(水) 14:53:25.01 ID:???<> innerHTMLで<div>タグの内容を書き換えてもhtmlソースを見ると原文ソースのままになりますが
例えばsubmitしても原文ソースの値が引き渡せると言う認識で正しいですか?
innerHTMLでvalueを書き換えた場合でも原文ソースのvalueがsubmit時に引き渡せるんですか?
<>
Name_Not_Found<>sage<>2011/06/29(水) 15:01:50.78 ID:???<> >>254
onload はキャンセルできない
click なら Event.preventDefault() でキャンセルできる
>>256
原文ソースのままにならないけど <>
257<>sage<>2011/06/29(水) 15:14:18.67 ID:???<> × onload
○ unload <>
Name_Not_Found<>sage<>2011/06/29(水) 15:23:52.02 ID:???<> >>257
ありがとうございます。
クリックして、該当URLへの接続を即キャンセルであればreturn false でいいのはわかるんですが、
接続が開始されつつ、ページが切り替わろうとしたらそれをキャンセルしたいという仕様です。
つまり、接続先にアクセスカウンタがあれば、カウンタは+1されており、かつもとのページを維持。
という仕様を目論んでいます。 <>
Name_Not_Found<>sage<>2011/06/29(水) 15:28:15.90 ID:???<> XMLHttpRequestとか使えばいいんでない?
他人様のページに対してなんかしようとしてるなら知らん <>
Name_Not_Found<>sage<>2011/06/29(水) 15:35:10.79 ID:???<> あれだろ、ランキングサイト等数稼ぎとかだろ <>
Name_Not_Found<>sage<>2011/06/29(水) 15:47:43.69 ID:???<> ページが読み込まれたあとに、aタグを全部spanかなんかに置き換えて
それっぽく見えるスタイルにしとけw <>
Name_Not_Found<>sage<>2011/06/29(水) 15:50:39.57 ID:???<> おっと。書くつもりでわすれてた。
そのspanがクリックされたら、リンク先をnew Image().srcあたりにでも突っ込めば
対象のページにアクセスはされる。ホントに「アクセスするだけ」だが。 <>
Name_Not_Found<>sage<>2011/06/29(水) 16:09:13.75 ID:???<> やはりimage使うしかないのかな。
対象鯖ではimageタグで呼び出されたってのはわかるの? <>
Name_Not_Found<>sage<>2011/06/29(水) 16:16:48.93 ID:???<> まずどういう目的なのか聞こうか <>
Name_Not_Found<>sage<>2011/06/29(水) 16:20:23.20 ID:???<> 仮に分かるとして、分かると何かマズいのか?
問題ないなら気にする必要はないはずだが。 <>
Name_Not_Found<>sage<>2011/06/29(水) 16:52:14.75 ID:???<> >>256
いまひとつ何を悩んでいるかわからない。具体的なコードは?
<div>をsubmitってどういう意味なんだ?
valueって何のvalue?
一般のブラウザは、ソース表示ではサーバから送られた状態の素のHTML
を見せているだけで、動的に書き換えたものは反映されない。そういう
のを確認したかったらFirebugとかInspectorとか使う。
<>
Name_Not_Found<>sage<>2011/06/29(水) 17:53:33.81 ID:???<> 結局imageタグで仕様を実装したのでエニシングおk。
要は携帯ゲーでルーチンワークを自動操作するhtmlページを作りたかった。
但しimageタグで1ページに大量に呼び出しをかけると当然負荷がかかりBANGされる可能性が大なので、
どうにか手動時とほぼ同等の操作で自動化したかった。
手動だとクリックしたあと画面が切り替わる前に次のリンクをクリックするという方法を取っており、
一度画面が切り替わって携帯ゲーの画面になると当然操作は離れる。
そこをどうするかという問題だったんだが、
結局はimageタグのsrcをランダムなインターバルを置いて変えるという手法で、
リクエスト的には手動時と同等な仕様に仕上げた。
これでサーバ側でimageタグからの呼び出しだとわからないのであれば、手動クリックと同一になる。 <>
Name_Not_Found<><>2011/06/29(水) 19:46:12.52 ID:eXHl+kHV<> javascriptをオンラインでコードを実行させるコード共有サイトのURL教えてください <>
Name_Not_Found<>sage<>2011/06/29(水) 19:55:43.94 ID:???<> 1ぐらい読め <>
Name_Not_Found<>sage<>2011/06/29(水) 20:07:01.77 ID:???<> JavaScript(Ajax)でウェブアプリにPOSTして、
そのウェブアプリでセッションを破棄したところ、
なぜかservletでExceptionが発生しました。
何がいけなかったのでしょうか? <>
Name_Not_Found<>sage<>2011/06/29(水) 20:08:37.51 ID:???<> そのエラーを貼り付けないとエスパー伊藤の出番になりますよ <>
Name_Not_Found<>sage<>2011/06/29(水) 20:15:51.49 ID:???<> >>272
すみません。
すでにマシンを落としてしまったので、明日貼ります。
ちなみに、なーんとなく心当たりとか、ありませんかね? <>
Name_Not_Found<>sage<>2011/06/29(水) 20:19:37.97 ID:???<> ちなみに、やりたいことは、
ログイン/ログアウト時にそれまでのセッションを破棄して、
新しいセッションで接続を継続するということです。
セッションを使った攻撃に対処したいのです。 <>
Name_Not_Found<>sage<>2011/06/29(水) 20:46:56.52 ID:???<> 予想できるエラーを挙げてもらって、役にたつと思うか?
たとえば、そのエラーが単にnullオブジェクトのプロパティを参照しようとしてたとか、
そういう(モノスゴククダラナイ)エラーだった場合、書き込まれた情報は
エラー探しで何の役にもたたない。よほど温厚な奴でもキレるか呆れる。
まずエラーログ張れ。話はそれからだ。 <>
Name_Not_Found<>sage<>2011/06/29(水) 20:52:42.01 ID:???<> >>57-61
このへん <>
256<>sage<>2011/06/29(水) 21:11:30.22 ID:???<> >>267
例えば以下のソース
html
<div id="hoge">
<input type="text" value="fuga">
</div>
js
var hoge=document.getElementById('hoge');
hoge.innerHTML=hoge.innerHTML.replece(/fuga/ig,'piyo');
を実行した場合fugaがpiyoに変わりますが、この状態でsubmitした場合
valueはpiyoが送られる。であってますか?
<>
Name_Not_Found<>sage<>2011/06/29(水) 21:26:06.53 ID:???<> >>277>>277
何でそんなものに疑問を持てるのか本気で分からんのだが…。
JavaScriptなど一切使われてないブログがあったとする。
記事投稿、あるいは記事へのレス投稿はformで入力欄が作られてる。
HTMLソースを見れば、そのformにはvalueで初期値が指定されてたりされていなかったりするわけだ。
初期値がある入力欄を、適当な文章に書き換えて送信した時、
サーバに送られるのは初期値なのか書き換え後か、どっちだと思う?
ちなみに、入力欄を書き換えようが何しようが、ブラウザでソースを見れば初期値のvalueは変わらんぞ。
<>
Name_Not_Found<>sage<>2011/06/29(水) 22:05:24.96 ID:???<> 質問とは関係ないけどこの場合valueにセットするのとの違いはresetの動作とかかな <>
253<><>2011/06/29(水) 22:27:41.14 ID:KPKJAbOf<> これは IE9 のバグでしょうか
以下のような対応で大丈夫なんでしょうか
if(typeof HTMLDocument == 'undefined'){
window.HTMLDocument = Document;
} <>
256<>sage<>2011/06/29(水) 22:52:42.68 ID:???<> >>278
ではinnerHTMLでvalueでなくnameやidを変えたら、これは流石にマズイですかね? <>
Name_Not_Found<>sage<>2011/06/29(水) 22:54:50.68 ID:???<> >>277
うん、合ってますよ。
ブラウザで見える値がpiyoになるんだから、そりゃ送信する値もpiyoだよ。
テキストフィールドの値を書き換えるときに、普通は innerHTML.replace()
なんてしないことは覚えておいてね。
<>
Name_Not_Found<>sage<>2011/06/29(水) 22:57:07.29 ID:???<> >>281
nameを書き換えるのは何も問題ない。
idも他のIDと重複しなければ何も問題ない。
フォーム送信は常に最新のDOMの状態で行われる。
<>
Name_Not_Found<>sage<>2011/06/29(水) 23:28:26.45 ID:???<> ああそうか、
ブラウザやらJavaScriptやらが扱っているのはDOMというデータ構造であっ
てHTMLソースはソースに過ぎない
ということを理解してない人はイロイロ疑問に思うのかな。
<>
Name_Not_Found<>sage<>2011/06/29(水) 23:59:19.48 ID:???<> >>275
ソースを思い出しながら脳内トレースしてみました。
すると、HttpSession#invalidate() でセッションを破棄した後に HttpSession#setAttribute(...) で値を設定している箇所がありました。
そんな処理をしている理由は、セッションIDを新しくしてからログイン情報を覚えさせたかったからです。
破棄すれば自動で新しいセッションができると思ったのですが、そんなに甘くはないですね。
しかし、困りましたね。
セッションIDを新しくする方法が見つからないです。
ログイン時はログイン前と同じセッションIDで継続して、
ログアウト時に invalidate() で破棄、以後の接続は新しいセッションIDで、ってのが無難ですかね?
でも、どこかのサイトで、ログイン時にもセッションIDを変更するべきってあったのですよ。
それがちょっち気になります。 <>
Name_Not_Found<>sage<>2011/06/30(木) 00:23:49.83 ID:???<> >>282-284
ああああああ、やっと理解できました
何となくhtmlソースはサーバサイドだからと理解してはいたのですが
innerHTMLはhtmlソースをJSで変えるってイメージがあったので、大きな勘違いをしてました(;´Д`)
すいません、そして御教示有り難うございました。
また1つJavaScriptが好きになりましたw <>
668<>sage<>2011/06/30(木) 01:08:12.55 ID:???<> function menuAco(n){
var i;
if(flgMenu==n){return 0;}
else{for(i=0;i<maxTab;i++){
sty(i,n)}//forの終わり
flgMenu=n;return 0;}//elseの終わり
}//menuAco(n)の終わり
こいうreturn 0の使い方ってありですか?
このときのreturn 0;はreturn;でもreturn nullでも
いいと思うのですがどうですか? <>
Name_Not_Found<>sage<>2011/06/30(木) 06:31:57.90 ID:???<> 戻り値は、その関数を呼び出した側で使うものだ。
呼び出し側が期待するものを返しているかどうかだけが問題。
関数1つ見てどうこうとコメントする意味はない。 <>
Name_Not_Found<>sage<>2011/06/30(木) 06:38:28.98 ID:???<> >>202-203の続き?
return 0 しか返さない関数ではコメントしようがない <>
Name_Not_Found<>sage<>2011/06/30(木) 11:34:52.33 ID:???<> <input type="text" id="hoge">
<div id="fuge"></div>
このテキストに文字を打つたびに文字数がfugeにinnerHTMLで表示されるようにしたいのですが
どうすればいいでしょうか?
document.getElementById("hoge")まではわかるのですが <>
Name_Not_Found<>sage<>2011/06/30(木) 11:37:16.67 ID:???<> >>290
http://www.google.co.jp/ <>
Name_Not_Found<>sage<>2011/06/30(木) 11:46:34.93 ID:???<> value
length
onkeyup
キーワードはこんな感じです <>
Name_Not_Found<>sage<>2011/06/30(木) 11:50:11.09 ID:???<> >>292
ありがとうございます!
textのvalueをlengthしてonkeyupしたときにやるんですね! <>
Name_Not_Found<>sage<>2011/06/30(木) 12:17:00.67 ID:???<> vol82ぐらいに質問したものですけど解決しました <>
Name_Not_Found<>sage<>2011/06/30(木) 12:34:28.03 ID:???<> >>292
onkeyupは全角入力だとブラウザごとにイベントが発生するタイミングが異なるし、
マウスのみでのコピペでは発生しないから、タイマーでやった方がいいんでは?
それと文字数じゃなくて文字列で比較した方がいいと思うんだけど <>
295<>sage<>2011/06/30(木) 12:36:40.66 ID:???<> ごめん最後の一行は無視して <>
Name_Not_Found<>sage<>2011/06/30(木) 13:10:13.22 ID:???<> keyupとsetTimeooutを両方使ったほうが良いな
inputの方がいいけど <>
Name_Not_Found<>sage<>2011/06/30(木) 14:27:04.09 ID:???<> setIntervalじゃない? <>
Name_Not_Found<>sage<>2011/06/30(木) 18:44:53.54 ID:???<> >>294
で、質問内容と解決策は? <>
Name_Not_Found<><>2011/06/30(木) 19:34:25.36 ID:bwgsMk4S<> 初歩的なことかもしれませんがよろしくお願いします。
「var hoge = new String("piyo");」とか「var hoge = "piyo";」ってやって、
「hoge.value」とか「hoge.getValue()」とかじゃなくて「hoge」とするだけで「"piyo"」が返ってきますが、
こういうオブジェクトってどうやって作るんでしょうか。プロパティやメソッドも持っていて <>
Name_Not_Found<>sage<>2011/06/30(木) 19:57:12.60 ID:???<> >>300
まず日本語勉強してJSONでググれ <>
Name_Not_Found<><>2011/06/30(木) 20:14:01.27 ID:23483P+G<> >>300
コンストラクタのことかな <>
300<><>2011/06/30(木) 20:19:02.65 ID:bwgsMk4S<> 説明不足ですみません
たとえば
var hoge = {
value: "piyo",
getValue: function(){ return this.value; }
};
とか
function Hoge(value) { this.value = value; }
Hoge.prototype.getValue = function() { return this.value };
var hoge = new Hoge("piyo");
とかすると、「"piyo"」を得るには
「hoge.value」とか「hoge.getValue()」とかしないといけませんが
「hoge」とするだけで「"piyo"」を得られるようにしたいです
var hoge = new String("piyo");
alert(hoge); //[object Object]じゃなくて"piyo"が表示される
↑
こういうのの作り方が知りたいです
「hoge.length」とか「hoge.split()」とかみたいにプロパティやメソッドも持っていて <>
Name_Not_Found<>sage<>2011/06/30(木) 20:23:39.71 ID:???<> var hoge1 = "piyo";
でhoge.lengthとかが使えるのは
自動型変換とかが入ってたんじゃなかったっけかな?
プリミティブ型とかがどーたらこうたら <>
Name_Not_Found<>sage<>2011/06/30(木) 20:28:35.81 ID:???<> >>303
hoge.toString = function() {return "hoge"}
alert(hoge); <>
Name_Not_Found<>sage<>2011/06/30(木) 20:40:50.09 ID:???<> >>303
getterの話かな。 <>
Name_Not_Found<>sage<>2011/06/30(木) 20:49:33.65 ID:???<> formの値をsubmitボタンでPOSTし、受け渡すphpファイルを作っています
しかし、javascriptで変数aの値が1だった場合submit出来ないようにしたいです
if(条件式)などで条件式がtrueだった場合submit出来ないようなスクリプトは作れますでしょうか? <>
Name_Not_Found<>sage<>2011/06/30(木) 20:51:03.73 ID:???<> ゲッターって名前付けなくてもいけるの <>
Name_Not_Found<>sage<>2011/06/30(木) 21:40:21.02 ID:???<> >>307
submitイベントでpreventDefault <>
Name_Not_Found<><>2011/06/30(木) 21:53:55.46 ID:HzU/vltg<> >>301
JSONについて調べていたらjson2.jsというファイルに辿り着きました
このファイルって、商用・非商用問わずに自由に使ってもよいのですか?
ファイルの頭の方にパブリックドメインとか書いてありますけど?
英語ばっかりで頭痛くなりますね(-_-;) <>
Name_Not_Found<>sage<>2011/06/30(木) 22:00:27.85 ID:???<> 今となってはjson2.jsは携帯用
てかJSON関係あるの? <>
Name_Not_Found<>sage<>2011/06/30(木) 22:38:01.33 ID:???<> JSONに食い付いているのは別の人 <>
Name_Not_Found<>sage<>2011/06/30(木) 23:33:44.49 ID:???<> >>310
見てないけど、良かったと思う <>
Name_Not_Found<>sage<>2011/07/01(金) 00:31:00.59 ID:???<> json2.jsはjqueryの中で使われてなかったっけ <>
Name_Not_Found<>sage<>2011/07/01(金) 00:51:36.89 ID:???<> PDはどこでもだれでもご自由にどんな形態でもOK
だから著作権表示も消してOKだったはず <>
Name_Not_Found<>sage<>2011/07/01(金) 07:18:43.09 ID:???<> >>313, >>315
ありがとうございます。
>>314
JQuery は使っていないです。
そちらのライセンスが気になるので。。。 <>
Name_Not_Found<>sage<>2011/07/01(金) 08:41:43.90 ID:???<> 誘導されて来ました
IE8でjQuery + nivo-sliderにエラーが出ます。http://nivo.dev7studios.com/
if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false)
プロシージャの呼び出し、または引数が不正です。
次になにをしたらいいでしょうか? <>
Name_Not_Found<>sage<>2011/07/01(金) 09:20:17.90 ID:???<> >>307
Formのsubmitボタンをただのbuttonにして、onClickで判別用関数
function hanbetu(){
if (a != 1){
document.hogeform.submit();
}
} <>
Name_Not_Found<>sage<>2011/07/01(金) 09:21:06.48 ID:???<> 配布サイトのデモでエラーが出るなら配布サイトのフォーラムへ <>
Name_Not_Found<>sage<>2011/07/01(金) 09:25:32.07 ID:???<> >>319
ありがとうございます。やってみます。 <>
Name_Not_Found<>sage<>2011/07/01(金) 11:41:00.47 ID:???<> >>309>>318
ありがとうございます、助かりました <>
Name_Not_Found<>sage<>2011/07/01(金) 13:30:49.20 ID:???<> しっかし、時代も変わったもんだよなぁ
昔は迂闊にスクリプトONにするな、とかだったしexeファイルも個人のを迂闊に実行するなだったし
それが今やアプリだウイルスだのね <>
Name_Not_Found<>sage<>2011/07/01(金) 13:45:44.13 ID:???<> 今はWEBやメールもチェックしてくれるウイルス対策ソフトが普及したから、
あまり神経質にならなくてもよくなったんじゃないかな。 <>
Name_Not_Found<>sage<>2011/07/01(金) 13:49:22.07 ID:???<> まぁそういう危機管理を知らない&しない奴等がネットに流れ込んできたから
ウイルス作成罪なんて馬鹿の馬鹿による馬鹿のための法案が出来ちゃったわけで
winnyでけいおん!!08話.avi.exe 21,018Byte開いて被害者面とかもうね <>
Name_Not_Found<>sage<>2011/07/01(金) 14:09:41.03 ID:???<> そのケースは
悪意を持って作成orアップロードしているんだろうから
悪意は罰せられないといけない
ダウンロードした者が著作権を侵しているだとかはまた別の次元なのでそれはそれで処理される <>
Name_Not_Found<>sage<>2011/07/01(金) 14:11:37.12 ID:???<> >>317
再現するソースを貼る <>
Name_Not_Found<>sage<>2011/07/01(金) 14:13:22.67 ID:???<> >>324
確かに古参のユーザからしてみれば、
自分たちのルールが新参者に足蹴にされて肩身が狭く感じるよね。
しかし、一般層が流れこんでくるのは予定調和だし、
そうでなくては儲からないから仕方がないね。 <>
Name_Not_Found<>sage<>2011/07/01(金) 14:13:25.43 ID:???<> 法務大臣が質問をあんま理解してなかったのが痛いな。そんなの全部そうだけど
フリーウェアのバグ放置について「えー、あると思います」って理解してないのに言う辺りがね <>
Name_Not_Found<>sage<>2011/07/01(金) 16:36:31.64 ID:???<> ぴょんっって小さい画面が飛び出てくるやつってどうやるんですか? <>
Name_Not_Found<>sage<>2011/07/01(金) 16:55:13.46 ID:???<> ぴょんっって小さい画面が飛び出てくる動作をするプログラムを作る <>
Name_Not_Found<>sage<>2011/07/01(金) 16:58:38.90 ID:???<> 330 名前:Name_Not_Found[sage] 投稿日:2011/07/01(金) 16:55:13.46 ID:???
ぴょんっって小さい画面が飛び出てくる動作をするプログラムを作る
↑
こいつ最高にアホだwwwwwwwwwwww <>
Name_Not_Found<>sage<>2011/07/01(金) 17:01:17.43 ID:???<> 質問自体が悪いな <>
Name_Not_Found<>sage<>2011/07/01(金) 17:02:21.41 ID:???<> さすがに>>330は素人に見える <>
Name_Not_Found<>sage<>2011/07/01(金) 17:03:59.74 ID:???<> >>330は日本語を学ぶべき <>
Name_Not_Found<>sage<>2011/07/01(金) 17:06:47.98 ID:???<> >>329
alert(1);とかか?
もしくは
http://css-eblog.com/javascript/floating-popup-window.html
>>330は荒らしだからスルーでおk
構うと調子に乗ってまた荒らすから <>
Name_Not_Found<>sage<>2011/07/01(金) 17:10:53.36 ID:???<> javascriptを我流でコード書いて開発するのとjQueryなどのライブラリを主体に開発するのは
企業だと前者が多いのは何故ですか?
やっぱライセンスとかが気になるからですか? <>
Name_Not_Found<>sage<>2011/07/01(金) 17:12:27.39 ID:???<> >>328
あー、これか。もし適用されたら、うっかりプログラムなんか晒せないな。
大変だ!法務大臣いわく「バグ放置」がウイルス提供罪として適用するらしいぞ
http://blog.esuteru.com/archives/3371359.html <>
Name_Not_Found<>sage<>2011/07/01(金) 17:18:32.45 ID:???<> まぁ、みんなそう言うなよ
>>329
ポップアップウィンドウの事かな?
ちょっとポップアップウィンドウで調べてみ、それじゃなかったらそのぴょんっってのがあるURL教えて <>
Name_Not_Found<>sage<>2011/07/01(金) 17:27:38.85 ID:???<> >>329の自演臭いのだが <>
Name_Not_Found<>sage<>2011/07/01(金) 17:44:30.72 ID:???<> >>329が>>330で頭にきて
>>331>>333>>334を自演したように見える <>
335<>sage<>2011/07/01(金) 19:17:45.91 ID:???<> 335だけど331は俺ね
自演認定する暇ある前に文章を読む力をつけましょう <>
Name_Not_Found<>sage<>2011/07/01(金) 19:34:03.23 ID:???<> ネタにマジレスwwww <>
Name_Not_Found<>sage<>2011/07/01(金) 19:51:21.67 ID:???<> >>341
>>329乙 <>
Name_Not_Found<>sage<>2011/07/01(金) 20:11:39.22 ID:???<> まだ夏休みじゃないっすよね <>
Name_Not_Found<>sage<>2011/07/01(金) 21:04:49.63 ID:???<> >>341
自演乙 <>
Name_Not_Found<>sage<>2011/07/01(金) 22:34:41.47 ID:???<> まあ実際は>>330が煽るのが一番良くないよな <>
Name_Not_Found<>sage<>2011/07/01(金) 22:40:25.38 ID:???<> うん、>>330がよくないとは俺も思う
結果がどうであれ最初に煽るのがよくない <>
Name_Not_Found<>sage<>2011/07/01(金) 22:44:36.81 ID:???<> Q.誰が優勝すると思いますか?
A.1位になる人が優勝すると思います。 <>
Name_Not_Found<>sage<>2011/07/01(金) 23:02:20.56 ID:???<> 「下らないネタを披露→マジレス→ネタにマジレスカコワルイ」って時にマジレスする人を嘲笑する風習もどうかと思うんだよな <>
Name_Not_Found<>sage<>2011/07/01(金) 23:08:33.98 ID:???<> >>349
2chで何言ってんだか
嫌ならmixiなりTwitterでやればいいじゃない <>
Name_Not_Found<>sage<>2011/07/01(金) 23:11:17.47 ID:???<> 2chはこういうもんだと決めつけて視野が狭くなってると見える <>
Name_Not_Found<>sage<>2011/07/01(金) 23:16:14.60 ID:???<> 2chっつっても様々だからな
荒れまくりなプログラミン言語質問スレもあれば
ここのような基本マターリな所もある <>
Name_Not_Found<>sage<>2011/07/01(金) 23:18:34.50 ID:???<> 質問です。
innerHTML を間違って innerHtml と書き間違えました。
td_.innerHtml = "aaaa";
この状態で、aaaa とは表示されないわけですが、firefox も IE もエラーを
出してくれませんでした。
VS2008でjavascriptのデバッグ(ブレークポイントは正しく動作してる)を
しかけても同じです。まったくエラーが出ません。
なぜエラーが出ないんでしょうか?
IE8、Firefox5.0、VS2008pro (たぶんSP1)、win7 Pro x64 <>
Name_Not_Found<>sage<>2011/07/01(金) 23:23:59.28 ID:???<> オブジェクトの新規要素の定義の仕方を学べば分かる。 <>
Name_Not_Found<>sage<>2011/07/02(土) 00:57:49.43 ID:???<> スレチでしたらすみません。
以下のPHPで書かれた一行をjavascriptで書き直すとどうなりますか?
foreach ( $society as $person) $person['age']++; <>
Name_Not_Found<>sage<>2011/07/02(土) 01:28:30.24 ID:???<> ここは、JavaScriptを自ら学ぶ人のための質問スレッドです。
こうこう書いてみたけど、上手く動きませんとかならまだしも丸投げはスレチです
$societyが単純な配列ということならforループでjsの配列をぐるぐる回せばOK
PHPのforeachに似たfor-inループもあるけど
PHPと同じ感覚で配列に使うと不具合の元になります
<>
355<>sage<>2011/07/02(土) 02:03:41.43 ID:???<> >>356
一応、for-in文には行き当たったのですが、どう適用させればいいか分からず聞いてしまいました
言葉足らずですみません。
自分自身まだ全体の構文が把握出来ていなかったため出直してきます
ありがとうございました。 <>
Name_Not_Found<>sage<>2011/07/02(土) 06:32:01.43 ID:???<> テキストボックス・テキストエリアの内容が変更されたら
即座に(つまりonchangeのようにblurを待たずに)何か行う、という処理は
やはりsetIntervalで監視するしかないのでしょうか
何となくムダが多いなぁと感じてしまうのですが・・・ <>
Name_Not_Found<>sage<>2011/07/02(土) 10:07:25.37 ID:???<> onkeypressは? <>
Name_Not_Found<>sage<>2011/07/02(土) 10:54:26.39 ID:???<> 基本的にsetInterval系は、ブラウザ上でゲームするとかビジュアル的な効果を狙う、
以外には使いたくないよな。
何もしてないときに一生懸命ぐるぐる動いてるのを想像すると嫌だw <>
Name_Not_Found<>sage<>2011/07/02(土) 11:29:58.45 ID:???<> >>335さん>>338さんありがとうございます
alert(1)で出てきました
ポップアップって単語で調べたらいろいろあって勉強になりました <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/02(土) 13:25:10.40 ID:???<> >>358
DOM L3 Events に textinput イベントがあるようですが、GC12, Fx5.0, Op11.11 が未対応。まだ使える状況にないですね。
http://jsfiddle.net/F9wmc/ <>
Name_Not_Found<>sage<>2011/07/02(土) 14:18:43.82 ID:???<> >>362
inputじゃ駄目なの?
http://jsfiddle.net/HcUKn/ <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/02(土) 15:16:54.94 ID:???<> >>363
HTML5 にあったんですね。
GC12, Fx5.0, Op11.50 でコピペにも反応することを確認しました。便利だなあ!
http://jsfiddle.net/HcUKn/2/ <>
Name_Not_Found<>sage<>2011/07/02(土) 15:31:33.27 ID:???<> >>362
addEventListener('textinput'... じゃなくて
addEventListener('textInput'... な。
<>
Name_Not_Found<>sage<>2011/07/02(土) 16:26:18.29 ID:???<> >>336
企業でも使うとこは普通に使うよ。
最近の新規プロダクトは大体使ってるように思うけど。
独自でやってるとこは何か特殊な事情があって使えないとか、思想や方針に合うのがないとか、jQueryみたいなデファクトスタンダードなライブラリがない頃に実装したとか、そんなとこだと思う。
ライセンスはあんまり関係ない。 <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/02(土) 16:45:40.19 ID:???<> >>365
変更してみましたが、 GC12, Fx5.0, Op11.50 で動作しませんでした。
http://jsfiddle.net/F9wmc/3/
どうやら、2010/09/07 までは textInput だったようで MDC はそちらを参照しているつもりのようですね。(リンクが機能してません)
https://developer.mozilla.org/en/DOM_Events#textInput
http://www.w3.org/TR/2010/WD-DOM-Level-3-Events-20100907/#event-type-textInput
現版では textinput になっています。
http://www.w3.org/TR/DOM-Level-3-Events/#event-type-textinput <>
Name_Not_Found<>sage<>2011/07/02(土) 17:02:17.01 ID:???<> MDNの情報は古いことも多いんだよな <>
Name_Not_Found<>sage<>2011/07/02(土) 17:13:55.50 ID:???<> >>367
Chrome 12.0.742.112でテキストエリアにいくつか入力してみたら
ちゃんとテキストエリアのvalueがConsoleに出力されてるよ? <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/02(土) 17:35:54.85 ID:???<> >>369
ごめんなさい。その通りでした…。
コンソール見てるとどのDOMツリーを見てるか混乱するので、間違えないようpre要素の出力するようにしました。
http://jsfiddle.net/F9wmc/5/
今後は textinput で実装されるでしょうから textinput, textInput の両方を指定してみましたが、両方対応している実装があったら二重に動作してしまいますね。
'ontextinput' in document が効かないのでやりにくいです…。 <>
Name_Not_Found<>sage<>2011/07/02(土) 17:58:05.15 ID:???<> >>358の要件なら input が妥当かな <>
358<>sage<>2011/07/02(土) 21:29:02.18 ID:???<> 皆さんありがとうございました、結局onkeyupを使うことにしました
html5勉強しないとなぁ・・・
ただ、今回は必要ではなかったのですが、
setInterval方式だと入力確定前(enter押す前)でも内容が取れるという利点があるようです
何にせよありがとうございました <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/02(土) 22:06:37.78 ID:???<> >>372
その方向性なら input と keyup を使い分けるといいかもしれません。
http://jsfiddle.net/HcUKn/5/ <>
Name_Not_Found<>sage<>2011/07/02(土) 22:22:36.97 ID:???<> http://www.uproda.net/down/uproda322627.zip
javascriptを使った1行掲示板的なものを作ろうとしたのですが、表示されません。
どうしたらよいでしょうか? <>
Name_Not_Found<>sage<>2011/07/02(土) 22:28:23.36 ID:???<> PHPのimplodeのように配列を文字列として結合したいのですが
a=[1,2,3,4,5];s="";for(i=0;i<a.length;i++)s+=a[i];alert(s);
のようにforで結合するより効率の良い書き方をご教示お願いします <>
Name_Not_Found<>sage<>2011/07/02(土) 22:31:22.43 ID:???<> >>375
Array.prototype.join <>
374<>sage<>2011/07/02(土) 22:33:24.34 ID:???<> http://www.uproda.net/down/uproda322628.zip
間違ったのをあげてしまいました <>
Name_Not_Found<>sage<>2011/07/02(土) 22:34:20.23 ID:???<> >>374
32行目で「Uncaught SyntaxError: Unexpected identifier」
よく見ればわかる <>
Name_Not_Found<>sage<>2011/07/02(土) 22:34:37.71 ID:???<> >>374
なんかもうこの辺りがおかしい
function list(){
document.getEleentById("list").innerHTML = msg;
}
}
<div id="list"></div>
このlistはmsgをid=listの所に入れたいのはわかるが
どこで実行するのか、このmsgは何なのかすらないし <>
Name_Not_Found<>sage<>2011/07/02(土) 22:34:47.11 ID:???<> どなたかご教授下さい
ttp://www.pelicanhotel.com
こちらのメニューリンクのようなマウスオーバーで
文字がスライドするメニューを作成中です。
文字がcloneで二重に表示されていて(cssで隠れています)
それがスライドしてくるようになっているのですが
同じ文字ではなく、違う文字を表示させるにはどのように記述すればよいでしょうか?
mootoolsのリファを見ましたが、cloneを何に変えればいいのかわからなくて・・・
どうか、よろしくお願いいたします。 <>
Name_Not_Found<>sage<>2011/07/02(土) 22:37:17.46 ID:???<> サンプルは>>1にあげられているサイトを使ってくれ <>
Name_Not_Found<>sage<>2011/07/02(土) 22:40:27.80 ID:???<> >>378-379
直したのですがコメントが出てきません <>
Name_Not_Found<>sage<>2011/07/02(土) 22:40:50.54 ID:???<> >>377
;の閉じ忘れがあまりにも多すぎ
getEleentByIdってなんじゃそりゃ
getElementByIdでしょう
それと段落あげるのはスペースじゃなくてTab使うほうが見やすい <>
Name_Not_Found<>sage<>2011/07/02(土) 22:48:08.17 ID:???<> >>377
num = new Array();
num2 = new Array();
↓
var num = new Array();
var num2 = new Array();
にしよう、ソース見たけど突っ込みどころがあまりにも多すぎる
;の閉じ忘れとかはちゃんと確認しよう <>
Name_Not_Found<>sage<>2011/07/02(土) 22:50:57.30 ID:???<> >>376
ありがとうございます
このように書いてみたのですが結合できませんでした
間違っている箇所をご指摘お願いします
a=[1,2,3,4,5];a.join();alert(a); <>
Name_Not_Found<>sage<>2011/07/02(土) 22:56:19.79 ID:???<> >>385
join()は値を返すだけでa自体を変更しない。別の文字列を入れる変数を用意してやればいい。 <>
Name_Not_Found<>sage<>2011/07/02(土) 22:56:45.87 ID:???<> alert(a.join(""))
接着剤としての引数も必要。 <>
Name_Not_Found<>sage<>2011/07/02(土) 22:57:56.46 ID:???<> >>386
ありがとうございます
破壊的なものだと思って勘違いしてました <>
Name_Not_Found<>sage<>2011/07/02(土) 22:58:13.79 ID:???<> アンカーミス
>>386->>387 <>
Name_Not_Found<>sage<>2011/07/02(土) 22:58:30.40 ID:???<> misu
>>386-387 <>
Name_Not_Found<>sage<>2011/07/02(土) 22:58:32.47 ID:???<> >>382
>>377もエラーだらけでまともに動かない
回答するとしてもはっきり言って面倒くさすぎるぞ
もうちょっと自分で頑張れ
http://jsfiddle.net/tPt4w/1/
<>
Name_Not_Found<>sage<>2011/07/02(土) 22:59:18.71 ID:???<> 既読判定についてどなたかご教授ください。
リンクをJavaScript内にで記述してるのですが、
IE8で見ると既読の履歴が残せない状態です。
(クリックした瞬間は既読になり画面をリロードすると未読の青文字になる)
IE6だと既読の履歴がずっと残るのですが、、、
hrefにアドレスを書けば履歴として残るのは確認しているのですが、
functionの中にアドレスがある状態でも履歴として残す方法はありますでしょうか?
function open(){
window.open("リンクのページ")
}
<a href="javascript:open()">Link</A>
<>
Name_Not_Found<>sage<>2011/07/02(土) 23:02:55.69 ID:???<> >>377たぶんこうやりたいんだろうと勝手に解釈して作った、1レスに収まるようにしたから読み安く分割してくれ。ちゃんと何が悪かったか元の見直せよ
<html><head><title>サンプル</title>
<meta http-equiv="content-script-type" content="text/javascript">
<script type="text/javascript"><!--
var m = 0;var num = new Array();var num2 = new Array();
function add() {
var name = document.getElementById('name').value;
var comment = document.getElementById('comment').value;
if (name == ''){
name = "名無しさん";
}if (comment) {
num[m] = name;
num2[m] = comment;
if(m < 31){
m++
}else{
num[m].shift();
num2[m].shift();
}
}var str;
for(var i = 0; i < num.length; i++) {
str = num[i] + ":" + num2[i] + "<br>";
}document.getElementById("list").innerHTML += str;}
// --></script></head>
<body>
<h1>チャット</h1>
<div id="list">teste</div>
<hr><form>
名前:<input type="text" id="name"><br>
コメント:<input type="text" id="comment">
<button onClick="add()">書き込み</button><br>
</form></body></html> <>
Name_Not_Found<>sage<>2011/07/02(土) 23:03:41.53 ID:???<> >>381
http://jsdo.it/81969/pJOT
これで大丈夫でしょうか?
15行目に指定されている部分です
よろしくお願いいたします。 <>
Name_Not_Found<>sage<>2011/07/02(土) 23:06:33.43 ID:???<> >>394
俺が勘違いしてるんでなければHTMLを書き直せば済む話なんだが…。 <>
Name_Not_Found<>sage<>2011/07/02(土) 23:08:30.45 ID:???<> レス番を名前にするぐらいしてくれないか?
どれが誰だか前のレスをいちいち確認しなきゃならん
こんなことテンプレに書くまでもないと思っていたが、やはり書くべきなんだろか <>
Name_Not_Found<>sage<>2011/07/02(土) 23:09:05.14 ID:???<> レスありがとうございます。
すみません、言い忘れておりました
スライド後の文字を変えたくて・・・
たとえばaaaaaをbbbbがスライドしてくるようにしたいんです
これもHTMLで大丈夫なんでしょうか? <>
Name_Not_Found<>sage<>2011/07/02(土) 23:11:08.04 ID:???<> >>396
申し訳ありません
>>380
>>394
>>397 <>
Name_Not_Found<>sage<>2011/07/02(土) 23:12:42.25 ID:???<> >>398
元のレス番号>>380を名前欄に入力すると良いと思うよ <>
380<>sage<>2011/07/02(土) 23:13:34.59 ID:???<> >>399
リロード押したら名前欄が消えて、
規制で書き込めませんでした(TT)すみません <>
Name_Not_Found<>sage<>2011/07/02(土) 23:25:38.95 ID:???<> 配列の値を加工したいのですが
PHPでいうとhttp://php.net/manual/ja/function.array-map.phpのようなものは
どのようなメソッドを使うと出来ますでしょうか? <>
Name_Not_Found<>sage<>2011/07/02(土) 23:30:10.40 ID:???<> >>401
Array.prototype.map <>
Name_Not_Found<>sage<>2011/07/02(土) 23:32:05.81 ID:???<> >>401
https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/map <>
Name_Not_Found<>sage<>2011/07/02(土) 23:36:35.72 ID:???<> >>402-403
小生のために迅速な回答に感謝します <>
Name_Not_Found<>sage<>2011/07/02(土) 23:37:54.08 ID:???<> mapってさブラウザ選ぶんじゃなかったけ?Firefoxしか対応してなくね? <>
380<>sage<>2011/07/02(土) 23:38:19.69 ID:???<> >>380
ヒントだけでも教えてくださる方はいらっしゃいませんでしょうか・・・ <>
Name_Not_Found<>sage<>2011/07/02(土) 23:42:16.85 ID:???<> >>406
アンカーテキストはHTMLに書かれているんだからそちらを修正すべし
<>
Name_Not_Found<>sage<>2011/07/02(土) 23:44:01.95 ID:???<> >>405
散々既出なんだが、MDCは情報が古い
日本語版は特に古い
英語版でさえ古いこともあるが、今回は英語版を読めばわかる <>
Name_Not_Found<>sage<>2011/07/02(土) 23:44:44.53 ID:???<> 今でも同色で文字隠す人いるのね <>
380<>sage<>2011/07/02(土) 23:57:11.78 ID:???<> >>407
度々、ありがとうございます。
アンカーに記述を追加するということでしょうか?
てっきりcloneで文字をもう一回表示させてるはずだから、
それを変えればいいんだー!と、頭の中で思ってました(TT) <>
Name_Not_Found<>sage<>2011/07/02(土) 23:59:05.57 ID:???<> >>406
http://jsfiddle.net/gT7r2/
こういうこと? <>
Name_Not_Found<>sage<>2011/07/03(日) 00:10:09.93 ID:???<> IE9でブラウザのアドレスバーでwindow1=window.open();window1.document.open();window1.document.write("test");
を実行しても実行が停止させられてしまいます
他の主要4つのブラウザは実行できました
IE9で実行するにはどう書くとよいでしょうか? <>
380<>sage<>2011/07/03(日) 00:14:54.05 ID:???<> >>411
現実逃避でガリガリ君食べてたらおそくなりましたorz
わああああ!!こ、これです!!
ありがとうございます(TT)ソース拝見させていただきます!m(_ _)m <>
Name_Not_Found<>sage<>2011/07/03(日) 00:27:16.30 ID:???<> >>412
http://answers.microsoft.com/ja-jp/ie/forum/ie9-windows_vista/b6cab666-ce70-e011-8dfc-68b599b31bf5 <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/03(日) 00:33:17.82 ID:???<> >>412
IE9 はアドレスバーから JavaScript を実行できません。 <>
Name_Not_Found<>sage<>2011/07/03(日) 01:23:10.96 ID:???<> 専門スレのコテハンって大抵煙たがられるものだけど
何だかこの人フツーにいい人だね、最初警戒してたけど <>
忍法帖【Lv=29,xxxPT】 <>sage<>2011/07/03(日) 02:47:29.66 ID:???<> test <>
Name_Not_Found<>sage<>2011/07/03(日) 03:44:57.14 ID:???<> このスレは奇跡だからな <>
Name_Not_Found<>sage<>2011/07/03(日) 08:57:09.84 ID:???<> >>416
このスレで性質が悪いのは一部の無名の回答者だけだよ <>
Name_Not_Found<>sage<>2011/07/03(日) 08:57:55.77 ID:???<> >>414
ページが見つかりません
申し訳ありません。お探しの内容は見つかりませんでした。 <>
Name_Not_Found<>sage<>2011/07/03(日) 09:57:27.55 ID:???<> >>420
IE9 にてアドレスバーに『 javascript: 』をペーストできない - Microsoft Answers
http://goo.gl/3sOIU <>
Name_Not_Found<>sage<>2011/07/03(日) 10:03:10.13 ID:???<> IE9クズすぎ
アドレスバーから実行したぐらいでセキュリティもくそもねえだろが <>
Name_Not_Found<>sage<>2011/07/03(日) 11:35:56.33 ID:???<> アドレスバーから実行する必要性もないから困らないけどね
URLエンコード面倒だし <>
Name_Not_Found<>sage<>2011/07/03(日) 12:52:05.41 ID:???<> そのブラウザが対応するjavascriptのバージョンを取得する方法ってありませんか?
1.5とか1.7とか <>
Name_Not_Found<>sage<>2011/07/03(日) 13:03:51.63 ID:???<> >>424
<script language="JavaScript1.5">alert('JavaScript1.5');</script>
<script language="JavaScript1.7">alert('JavaScript1.7');</script> <>
Name_Not_Found<>sage<>2011/07/03(日) 13:06:13.63 ID:???<> >>425
あり <>
Name_Not_Found<>sage<>2011/07/03(日) 13:11:11.23 ID:???<> languageとかネタでもやめてくれ <>
Name_Not_Found<>sage<>2011/07/03(日) 13:12:34.74 ID:???<> >>422
IE以外もその仕様になるとどこかで見た気がするが <>
Name_Not_Found<>sage<>2011/07/03(日) 14:10:26.47 ID:???<> 画像並べて1個開いたら同じページ上に拡大表示されて
左右のボタンで画像を辿れるようなイメージなんだけど
jQuery使わないコードが頭の中に流れない
jQueryを読み解く気力が湧かないのでどこかにまんま書かれてるようなサイトはありませんか?
jQueryを使うと負けな気持ちになっています <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/03(日) 14:11:37.29 ID:???<> >>424
「JavaScript 1.5」は SpiderMonkey のバージョンですよね?
SpiderMonkey を実装していないブラウザでは正しく機能しませんが、Firefox だけ動作すればいいんでしょうか…。
http://jsfiddle.net/C7xtS/4/
https://developer.mozilla.org/ja/New_in_JavaScript_1.8 <>
Name_Not_Found<>sage<>2011/07/03(日) 14:30:50.41 ID:???<> 他人に丸投げるほうが負けた気持ちになる <>
Name_Not_Found<>sage<>2011/07/03(日) 16:53:29.91 ID:???<> ボタンでdiv要素を追加するとき、idを追加すると思いますが以下ではボタンを押すたびに同じidのdiv要素が追加されますか?
<script type="text/javascript">
function addElement() {
var element = document.createElement('div');
element.id = "id";
element.innerHTML = "hogehoge";
element.style.backgroundColor = 'bule';
var objBody = document.getElementsByTagName("body").item(0);
objBody.appendChild(element);
}
</script>
<button onclick="addElement()">追加</button> <>
Name_Not_Found<>sage<>2011/07/03(日) 16:57:07.84 ID:???<> =じゃ上書きされる
追加だったら+= <>
Name_Not_Found<>sage<>2011/07/03(日) 16:58:52.92 ID:???<> >>432
試せばわかることをなぜ聞く? <>
Name_Not_Found<>sage<>2011/07/03(日) 17:01:21.86 ID:???<> めんどくさいから <>
Name_Not_Found<>sage<>2011/07/03(日) 17:10:10.26 ID:???<> 質問する方が面倒くさいと思うんだがなあ <>
Name_Not_Found<>sage<>2011/07/03(日) 17:21:29.40 ID:???<> <div id="id">hogehoge</div>が大量に並ぶの?
id重複していいの? <>
Name_Not_Found<>sage<>2011/07/03(日) 17:26:01.76 ID:???<> >>72- の繰り返し?重複しちゃダメに決まってる。 <>
Name_Not_Found<>sage<>2011/07/03(日) 17:31:23.28 ID:???<> > ボタンでdiv要素を追加するとき、idを追加すると思いますが
> id重複していいの?
この辺何をいいたいのかわからない
id追加する常識なんてないし、id重複を避ければ済む話なのに <>
Name_Not_Found<>sage<>2011/07/03(日) 17:52:57.31 ID:???<> 目的はこのスレ内の少し前の話を蒸し返すこと <>
Name_Not_Found<>sage<>2011/07/03(日) 17:53:59.75 ID:???<> >>430
これです
http://ja.wikipedia.org/wiki/JavaScript#.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.81.A8.E3.83.96.E3.83.A9.E3.82.A6.E3.82.B6.E3.81.AE.E5.AF.BE.E5.BF.9C.E8.A1.A8
各ブラウザの最新のバージョンが載ってなかったのですが、これのバージョンを調べたいと思ってます <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/03(日) 19:12:30.24 ID:???<> >>441
そのバージョンの変遷は Netscape が作ったもので現在は Firefox に引き継がれているものの標準化されていないと思いますが、間違ってますかね…?
全てに通じるバージョンなら ECMAScript が妥当だと思うのですが…。
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/JavaScript_Overview <>
Name_Not_Found<>sage<>2011/07/03(日) 19:35:06.70 ID:???<> function addElement() {
var objBody = document.getElementsId("sample");
var element = document.createElement('div');
element.id = "id";
element.innerHTML = "hogehoge";
element.style.backgroundColor = 'red';
objBody.appendChild(element);
}
function revElement() {
var objBody = document.getElementsId('sample');
var element = document.getElementsId('id');
objBody.removeChild(element);
}
これを外部に貼り付けて
<button onClick="addElement()">要素を追加</button>
<button onClick="revElement()">要素を削除</button>
<div id="sample">a</div>
これを本体に貼り付ける
動かないんだけど理由がわからない、追加すらされない <>
Name_Not_Found<>sage<>2011/07/03(日) 19:46:57.04 ID:???<> > getElementsId
これ <>
Name_Not_Found<>sage<>2011/07/03(日) 19:51:21.49 ID:???<> メソッド名みれば分かりそうなものだが…英語できないと難しいか <>
Name_Not_Found<>sage<>2011/07/03(日) 19:58:26.44 ID:???<> >>444
ありがとう! <>
Name_Not_Found<>sage<>2011/07/03(日) 20:25:11.93 ID:???<> 見てると名前にレス番入れない人が多いね
>>396はテンプレに入れるべきかな <>
Name_Not_Found<>sage<>2011/07/03(日) 20:31:30.78 ID:???<> だからID出せってさんざん言われてただろ! <>
Name_Not_Found<><>2011/07/03(日) 20:34:53.11 ID:bT+Jn3Bs<> window.foo.bar.bazがあるかどうか、
bazどころかbarもfooもない場合でも例外を返さずに判断する方法があれば教えてください
&&とかでつながず一回で <>
Name_Not_Found<>sage<>2011/07/03(日) 20:46:07.25 ID:???<> >>442
そうでしたか
IE9でmapが対応してるか調べたくてバージョンが知りたかったのですが難しいですね <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/03(日) 20:58:47.08 ID:???<> >>449
「window.foo がない場合」なら 'foo' in window の一回で済みますが、「window.foo がある場合」に一回は無理かと。
上から順番にチェックするので && が必要じゃないかな。
>>450
IE9 なら MSDN を読むのが確実です。
http://msdn.microsoft.com/ja-jp/ie/ff468705.aspx
まとまった情報が欲しいなら compatible table 辺りを利用してみてください。
http://kangax.github.com/es5-compat-table/
http://kangax.github.com/es5-compat-table/non-standard/
<>
Name_Not_Found<>sage<>2011/07/03(日) 21:01:31.86 ID:???<> if ((function(){try {if (window.foo.bar.baz)return false }catch(e){}return false;)()) {
//オススメしない。
} <>
449<>sage<>2011/07/03(日) 21:07:19.82 ID:???<> >>451-452
どうもありがとうございます <>
443<>sage<>2011/07/03(日) 22:09:46.77 ID:???<> function adElement() {
var objBody = document.getElementById("sample");
var tempyn = document.getElementById("id");
if(tempyn.childNodes.length > 0){objBody.removeChild(tempyn);}
var element = document.createElement('div');
element.id = "id";
element.innerHTML = "hogehogehoge";
element.style.backgroundColor = 'blue';
objBody.appendChild(element);
}
idがidのdivがあったらそれを消して新しくidがidのdivを追加して
idがidのdivがなかったらidがidのdivを追加するようにしたかったのですが、
前者はうまくいったけど後者がうまくいきません
何が原因でしょうか? <>
Name_Not_Found<>sage<>2011/07/03(日) 22:25:40.40 ID:???<> >>454
childNodes <>
443<>sage<>2011/07/03(日) 22:32:09.85 ID:???<> >>455
childNodesでif文内に入ってしまって存在していないのを削除しようとしてエラーになってるってこと?
如何すればいいんだろう <>
Name_Not_Found<>sage<>2011/07/03(日) 22:38:43.73 ID:???<> >>456
なかったら null を返す <>
443<>sage<>2011/07/03(日) 22:44:48.57 ID:???<> >>457
そうするとif文に入らないからそのままcreatElementしてくれるんでないの?
if文に入らないとそのまま終わるとか? <>
Name_Not_Found<>sage<>2011/07/03(日) 22:46:33.77 ID:???<> >>458
var hoge = null;
if (hoge.childNodes) <>
Name_Not_Found<>sage<>2011/07/03(日) 22:52:00.66 ID:???<> >>458
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.2.1 <>
443<>sage<>2011/07/03(日) 22:53:34.60 ID:???<> >>459
if文がエラーで吹っ飛んでんの?
どういうif文にすればいいのか想像付かないけど
nullじゃなかったらif文通れでうまくいくのかな?
いろんなブラウザで試さないと <>
443<>sage<>2011/07/03(日) 22:54:54.30 ID:???<> >>460
俺には古文書にしか見えないや <>
Name_Not_Found<>sage<>2011/07/03(日) 23:00:42.54 ID:???<> >>461
(null).childNodes; <>
Name_Not_Found<>sage<>2011/07/03(日) 23:34:21.08 ID:???<> ぬるぬるうっさいやつらだな <>
Name_Not_Found<>sage<>2011/07/03(日) 23:44:50.17 ID:???<> undefinedとnullだけは、メソッド及びプロパティーを取ろうとするとエラーになる。 <>
Name_Not_Found<><>2011/07/04(月) 00:10:33.18 ID:aTnBzz/e<> 質問です
ある文字列の文字数を取得したいのですが、何故か何を入れても1になってしまいます
何が原因なのかよく分かりません
何か思いつく所があれば指摘して下さい
以下コードです
//テキストボックスの入力値を取得(hoge)
hoge = document.age.sage.value;
//入力値から正規表現で一部を取得(hige)
hige = hoge.match(/ごにょごにょ/);
//※ここまでは期待通りの動作をしています
//取得した文字列の文字数を取得(hage)
hage = hige.length;
これで最後の「hage」がいつも1になってしまいます
テキストボックスの文字列「hoge」の文字数は正常に取得出来るので、
正規表現で一部を抽出したのが何らかの原因ではないかと思っているのですが… <>
Name_Not_Found<>sage<>2011/07/04(月) 00:19:04.61 ID:???<> matchの戻り値は配列なんだなこれが <>
Name_Not_Found<>sage<>2011/07/04(月) 00:22:04.12 ID:???<> http://www.dotup.org/uploda/www.dotup.org1758520.txt
コメントを書き込めるものを作りたいのですが、書き込めません。
どうしたらよいでしょうか? <>
Name_Not_Found<><>2011/07/04(月) 00:22:16.13 ID:aTnBzz/e<> >>467
つまり配列の数が返ってきていたわけですね…完全に忘れてました
ありがとうございました <>
Name_Not_Found<><>2011/07/04(月) 09:09:44.66 ID:nehPZ6mQ<> >>468
select? <>
Name_Not_Found<><>2011/07/04(月) 09:10:38.67 ID:nehPZ6mQ<> あ、勘違いした
動いたよ? <>
Name_Not_Found<>sage<>2011/07/04(月) 09:33:56.07 ID:???<> どうでもいい事だけど
commentが空だからといってnonameにする事はないだろう <>
忍法帖【Lv=17,xxxPT】 <>sage<>2011/07/04(月) 13:04:06.10 ID:???<> >>471
ブラウザ変えたらいけました
>>472
commentとnameを間違えてました。 <>
Name_Not_Found<><>2011/07/04(月) 14:16:12.11 ID:0pcDaBCl<> すいません質問です
IE7までは通常に動いていたスクリプトがIE9になったら動かなくなり
表示もされません
デバッグ機能を使ってみたところ
「オブジェクトは 'createTextNode' プロパティまたはメソッドをサポートしていません」
と出ました、FireFOXでは普通に動きます
どういうことなのでしょうか? <>
Name_Not_Found<><>2011/07/04(月) 14:35:02.83 ID:nehPZ6mQ<> >>474
◯◯◯◯.createTextNode("文字列");
みたいな使い方していると思うけど、その◯◯◯◯じゃよ
なんて書いたか晒してみんさい <>
Name_Not_Found<>sage<>2011/07/04(月) 14:35:56.39 ID:???<> 「オブジェクトは 'createTextNode' プロパティまたはメソッドをサポートしていません」
ということでしょう。
そのオブジェクトはdocument?違うなら自分で作ったやつ?そのオブジェクトが何なのか判断できるコードか何かを。
たぶんエラーメッセージと一緒に行番号も表示されているはず。
表示されていないのならスクリプト内を「createTextNode」で検索してそれが使われているオブジェクトを確認 <>
Name_Not_Found<><>2011/07/04(月) 18:53:47.93 ID:FkTd0Ky7<> あるオブジェクトにプロパティが何かひとつでもあるときとないときとで処理を分けたいのですが
どうすればいいですか?
var object = {};
if (object.hasOwnProperty("*")) { //←何かひとつでもプロパティがあれば、みたいなつもり
//あるとき
} else {
//ないとき
}
こういう感じで既存のメソッドとか演算子とかで短く真偽値を返す方法があれば教えてください
for inで回すとかになりますか? <>
Name_Not_Found<>sage<>2011/07/04(月) 18:58:36.79 ID:???<> >>477
こんなの?
http://d.hatena.ne.jp/fyts/20071029/javascript <>
Name_Not_Found<>sage<>2011/07/04(月) 19:04:24.51 ID:???<> >>478
それobj={}でもtrueになるよ
for (var key in obj) {
if (obj.hasOwnProperty(key)) len++
}
<>
Name_Not_Found<>sage<>2011/07/04(月) 19:16:27.73 ID:???<> どうもありがとうございます
やっぱりfor inで回すことになりますか?
ひとつでもプロパティがあればfalseを返してすぐに抜ければいいので(ひとつもない場合はもちろんすぐに抜けられる)
for inでも別にいいんですが
外部関数にするにしても少しかさばるので
配列の場合のlengthプロパティを見るみたいに短く書けたりするのかなと <>
Name_Not_Found<>sage<>2011/07/04(月) 19:26:50.35 ID:???<> >>480
[i for (i in obj)].length <>
Name_Not_Found<>sage<>2011/07/04(月) 19:31:06.88 ID:???<> >>480
一応ChromeやFirefox 4以降ならES5のメソッドで簡潔に書けるかな?
var obj = {};
if (Object.getOwnPropertyNames(obj).length) {
// プロパティがあれば実行
} else {
// プロパティがなければ実行
} <>
477=480<>sage<>2011/07/04(月) 19:37:08.84 ID:???<> >>481
どうもありがとうございます
動きました
この「i」って「var」が付いていないのにグローバルになっていないっぽいですが実際にはなっていますか?いませんか?
グローバルになっていない場合はどういう仕組みなんでしょうか
>>482
ありがとうございます
そういうのができたんですね
chromeで動きました <>
Name_Not_Found<><>2011/07/04(月) 19:44:58.20 ID:0pcDaBCl<> >>475-476
ありがとうございます
document
です <>
Name_Not_Found<><>2011/07/04(月) 20:02:21.89 ID:0pcDaBCl<> ありがとうございました
IE9、documentで検索したら解決できました
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
これが必要だったんですね
IE9は素晴らしいブラウザですね <>
477=480=483<>sage<>2011/07/04(月) 20:03:09.77 ID:???<> 481は配列「[]」が無名オブジェクトになっているからその中にローカル
ってことなんでしょうか
配列「[]」の中の書き方がまったく読み下せません
objのキー(「i」)を元に配列の各要素を作っているという結果は確認できましたが <>
Name_Not_Found<>sage<>2011/07/04(月) 20:42:09.22 ID:???<> Quirksモードでもdocument.createTextNodeは動くけど、>>485はどういうことなの? <>
Name_Not_Found<>sage<>2011/07/04(月) 20:42:34.01 ID:???<> 昔のゴルファーが見つけたテクニックをただ真似てるだけの人がほとんどだと思う <>
Name_Not_Found<><>2011/07/04(月) 22:39:24.36 ID:0pcDaBCl<> >>487
IE9でも互換モードに変更すれば普通に動きますが通常?のデフォルト設定だと
動きません
メタタグを増やしてやるとデフォルトでも動くようになります <>
Name_Not_Found<>sage<>2011/07/04(月) 22:55:39.31 ID:???<> >>489
通常っていうのやめろっ!!!!!!!!!
標準モードといえ!!!!!!!!!!!
互換モードで作るな!!!!!!!!!!!!!
いつも標準モードで作れ!!!!!!!!!!!! <>
Name_Not_Found<>sage<>2011/07/04(月) 23:23:48.36 ID:???<> >>489
IE7互換モードにするならIE9にする意味がほとんどないよ
それは一時しのぎに使うものだ <>
Name_Not_Found<>sage<>2011/07/04(月) 23:33:37.68 ID:???<> しのぎというかただの動作テスト用だな <>
Name_Not_Found<>sage<>2011/07/04(月) 23:41:45.90 ID:???<> >>489
当たり前だが、IE9標準モードだとdocument.createTextNodeは動く
>>484みたいな断片的コードじゃなくて再現するコードを晒してくれ <>
Name_Not_Found<>sage<>2011/07/04(月) 23:59:52.88 ID:???<> document.createTextNodeがないってのは何モードなの? <>
Name_Not_Found<>sage<>2011/07/05(火) 00:03:33.33 ID:???<> Lモード <>
Name_Not_Found<>sage<>2011/07/05(火) 01:03:55.61 ID:???<> PHPのheaderはjavascriptでは書かれますか? <>
468<>sage<>2011/07/05(火) 01:57:01.47 ID:???<> http://www.dotup.org/uploda/www.dotup.org1760029.zip
server-sent eventsを使いたいのですが、うまく動きません
ご教授お願いします。 <>
Name_Not_Found<>sage<>2011/07/05(火) 06:53:20.03 ID:???<> >>481
Chrome で SyntaxError
ブラウザ依存じゃあ使えないなー <>
Name_Not_Found<><>2011/07/05(火) 07:17:41.75 ID:Klp8Cn8X<> 準拠じゃないのは分かるんだけど
プロトタイプチェーンをたどるためのオブジェクト(foxでいうところの__proto__)って
IEでは完全に見えないの?代替になるものはないの? <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/05(火) 07:44:38.29 ID:???<> >>499
ES5 的には Object.getPrototypeOf (IE9+) で十分という判断なんじゃないかな。
あとは、constructor とか…。(__proto__ を置き換えるものではないですけど) <>
497 忍法帖【Lv=18,xxxPT】 <>sage<>2011/07/05(火) 09:25:37.00 ID:???<> http://www1.axfc.net/uploader/Sc/so/252036
ファイル消えたようなので <>
Name_Not_Found<>sage<>2011/07/05(火) 11:30:06.54 ID:???<> zipであげんなカス
<>
Name_Not_Found<><>2011/07/05(火) 13:05:17.67 ID:aenpc/4y<> >>493
全部は長すぎて無理なんですが
tbCalendar.appendChild(trCaption);
var trWeek = document.createElement("tr");
for (i = 0; i<7; i++) {
var tdWeek = document.createElement("td");
with (tdWeek) { appendChild(document.createTextNode(aWeek[i]));}
trWeek.appendChild(tdWeek);
if(i==0) { tdWeek.style.color = "#ff9999"; }
if(i==6) { tdWeek.style.color = "#00bfff"; }
} <>
497<>sage<>2011/07/05(火) 13:28:38.60 ID:???<> http://www.uproda.net/down/uproda323962.txt
http://www.uproda.net/down/uproda323963.txt
テキストで上げました <>
Name_Not_Found<><>2011/07/05(火) 15:23:27.44 ID:/CYNsXR9<> >>503
>>1で推奨されてんだからコード晒しサイト使おうよ…
ちゃんと見てないけど、とりあえず最初のほうで変数名書き間違えてる <>
Name_Not_Found<>sage<>2011/07/05(火) 19:27:17.22 ID:???<> >>505
これでいけますか?
http://jsfiddle.net/YXwvV/ <>
Name_Not_Found<><>2011/07/05(火) 19:35:01.95 ID:APP22478<> 教えてください
function func() {
alert(this);
nested1 = function() { alert(this); }
var nested2 = function() { alert(this); }
this.nested3 = function() { alert(this); }
nested1();
nested2();
this.nested3();
}
var obj = new func();
ローカル変数nested2に代入した無名関数内のthisだけ
どういう理屈でグローバルオブジェクトなんでしょうか? <>
Name_Not_Found<>sage<>2011/07/05(火) 19:40:43.47 ID:???<> 質問です
javascriptで変数宣言する時の「var」ですが
この「var」って何の略なんですか? <>
508<>sage<>2011/07/05(火) 19:46:33.54 ID:???<> 例えば「new」は「新しい」、「Array」は「配列」、「split」は「分けられる」
という意味がありますが、この「var」だけはよく意味が解りませんでした <>
Name_Not_Found<>sage<>2011/07/05(火) 19:47:12.13 ID:???<> >>508
> 変数宣言
ここで質問する前に、変数を英語で何と言うか調べろ <>
Name_Not_Found<>sage<>2011/07/05(火) 19:47:24.15 ID:???<> 急いでるので早く答えてください <>
508<>sage<>2011/07/05(火) 19:48:32.42 ID:???<> >>510
なるほど!
Variableの略なんですね、ありがとうございます! <>
Name_Not_Found<>sage<>2011/07/05(火) 20:38:51.91 ID:???<> >>506
HTMLもセットじゃなかったの? <>
Name_Not_Found<>sage<>2011/07/05(火) 20:43:54.70 ID:???<> あ、ごめん間違えた忘れて <>
Name_Not_Found<>sage<>2011/07/05(火) 20:54:54.02 ID:???<> いや、合ってるよ
動くように書いてもらわなければ検証できないだろ
http://jsfiddle.net/YXwvV/1/
長く続けるなら名前を入れてIDも晒した方がいい
とても追い切れない >>474 ID:0pcDaBCl <>
Name_Not_Found<>sage<>2011/07/05(火) 21:00:18.80 ID:???<> >>515
65行目に全角空白があるね <>
Name_Not_Found<>sage<>2011/07/05(火) 21:02:45.48 ID:???<> >>507
関数ごとに this が生成されるから <>
507<>sage<>2011/07/05(火) 21:20:06.63 ID:???<> すみません、一部表現を間違っていました
×ローカル変数nested2に代入した無名関数内のthisだけ
○ローカル変数nested2に代入した無名関数内のthisはグローバルスコープでもないのに
>>517
ありがとうございます
そうなると、this.nested3に代入した無名関数内のthisはobj自身を参照するというのは、
func()のローカル変数(メソッド)ではなく、objオブジェクトのメソッドだからといった感じなのでしょうか <>
Name_Not_Found<><>2011/07/05(火) 21:33:55.73 ID:/CYNsXR9<> variable <>
Name_Not_Found<>sage<>2011/07/05(火) 21:34:18.25 ID:???<> >>506
IE には HTMLElement.document っていう独自拡張プロパティがあって
IE8 までは HTMLDocument を、IE9 では DocumentFragment を取得するようになってるみたいだ
with (tdWeek) {
style.width = "27px";
style.padding = "0";
style.textAlign = "center";
appendChild(document.createTextNode(aWeek[i]));
}
だからこういう書き方をすると、IE では
tdWeek.document.createTextNode(aWeek[i])
を参照していることになる
DocumentFragment に createTextNode メソッドはないから、エラーになる <>
519<><>2011/07/05(火) 21:37:35.04 ID:/CYNsXR9<> うわリロードしてなかったすみません <>
508<>sage<>2011/07/05(火) 21:38:55.25 ID:???<> わざわざあざっす! <>
507<>sage<>2011/07/05(火) 21:39:33.77 ID:???<> this.nested5 = nested2;
this.nested5();
メンバメソッドとして代入された無名関数nested2()は今度はobj自身を参照しました
関数リテラル内のthisに関しては、var キーワードで宣言された変数への代入なら
グローバルオブジェクトを参照し、あるオブジェクトのメンバ変数への代入なら
そのオブジェクト自身を参照する、といった感じでしょうか
もう少し勉強してみます <>
Name_Not_Found<><>2011/07/05(火) 21:45:33.65 ID:Klp8Cn8X<> >>523
thisってのは「どのオブジェクト」のプロパティとして呼ばれたかの「どのオブジェクト」を指す
だから同じ関数オブジェクトでも呼び出し元が変わればthisが変わる
>関数リテラル内のthisに関しては、var キーワードで宣言された変数への代入なら
その関数をグローバルで呼んだらthisはグローバル
obj.func()とかって呼んだらthisはobj <>
497<>sage<>2011/07/05(火) 22:09:14.63 ID:???<> >>505
どうにかならないでしょうか? <>
507<>sage<>2011/07/05(火) 22:20:31.71 ID:???<> >>524
ありがとうございます
>その関数をグローバルで呼んだらthisはグローバル
"関数 func() 内のローカル変数 nested2 に代入した" 関数リテラル内のthisなので、
func()をコンストラクタとしてオブジェクト化した場合には >>507のコード2行目のthisのように
グローバルオブジェクトではなく、obj自身を参照するものと思い込んでいました <>
Name_Not_Found<><>2011/07/05(火) 23:59:58.67 ID:/CYNsXR9<> >>525
test5.jsはなんなん?node.js? <>
Name_Not_Found<>sage<>2011/07/06(水) 00:57:16.54 ID:???<> <form method="post" name="hoge-form" action="fuge.php">
<input type="text" name="hage">
<input type="text" name="bar">
</form>
<script>
document.hoge-form.submit();
</script>
とやるのですが
このフォームのhageテキストをjavascriptで計算してから送信したいです
hageフォームには数値が入って、その数値を82倍したいのですがどうすればいいのでしょうか?
phpだったら$_POST["name"]で82倍すればいいのですが、どうしても送信する前にクライアント側で82倍したいのです <>
Name_Not_Found<>sage<>2011/07/06(水) 01:18:28.96 ID:???<> >>528
そんな動かないコード平気で貼ってる奴を相手にするもの好きが
いるかどうか。もうちょっと自分で修行してから来たら?
ヒント: 「-」は引き算 <>
528<>sage<>2011/07/06(水) 01:27:08.62 ID:???<> すんません、hoge-formの所はhoge_formで <>
Name_Not_Found<>sage<>2011/07/06(水) 01:47:56.90 ID:???<> formのsubmitイベントに、hageを書き換える関数を登録すればいい
関係ないけどHTML5じゃなければtype属性は必須 <>
Name_Not_Found<>sage<>2011/07/06(水) 02:00:59.49 ID:???<> http://webspace.sakura.ne.jp/ktkk/test/javascript/accordionslider/
ここのインラインで書かれてる var accordion=function(){… の最後の
return{slider:slider}
てどういう意味なんでしょう?
察するに、このaccordionの中で定義してるsliderオブジェクト自身を返しているのかと思いましたが、
上記のreturnの部分の意味がよくわからないです。 <>
Name_Not_Found<>sage<>2011/07/06(水) 02:06:50.71 ID:???<> return {"slider" : slider}
typeof accordion === "object"
accordion.slider === 関数内のslider
使い方はnew accordion.slider();
accordionがオブジェクトなので、色々追加できるのが利点かな。 <>
532<>sage<>2011/07/06(水) 02:24:44.03 ID:???<> >>533
そういうことですか、理解できました。
ありがとうございます。
ちなみにこれって
var accordion = new function(){
this.slider=function(){…
みたいにするのとどう違うんでしょうか?
この宣言の仕方でもaccordionはオブジェクトだし、プロパティも追加できますよね? <>
Name_Not_Found<>sage<>2011/07/06(水) 09:07:35.73 ID:???<> new はベースが同じで一部違うものを複数作るときに使う感じだから、この場合は適さないんじゃないかな。
たしかに、出来上がったものは同じになるけど。 <>
Name_Not_Found<>sage<>2011/07/06(水) 11:14:03.21 ID:???<> ttp://www.mindsfusion.co.jp/
の動くオレンジのスライムみたいなのってどうやるんでしょうか? <>
Name_Not_Found<>sage<>2011/07/06(水) 12:42:22.95 ID:???<> それFlashが使われてる <>
Name_Not_Found<>sage<>2011/07/06(水) 13:22:00.06 ID:???<> まじですか
あきらめます <>
528<>sage<>2011/07/06(水) 13:28:01.81 ID:???<> >>541
なるほどー、getElementでvalueの値を書き換えればいいんですね
ありがとうございます <>
Name_Not_Found<>sage<>2011/07/06(水) 13:59:36.65 ID:???<> flashをhtml5に変えてくれるサービスあったよね。
↓541 <>
Name_Not_Found<>sage<>2011/07/06(水) 14:03:29.57 ID:???<> | ↑
|___| <>
Name_Not_Found<>sage<>2011/07/06(水) 14:11:29.36 ID:???<> >>520
ありがとうございます
でも別の書き方が全く思い浮かびません・・ <>
506=542<>sage<>2011/07/06(水) 14:29:20.52 ID:???<> とりあえず苦し紛れにこう改変したら動きました
with (tdWeek) {
style.width = "27px";
style.padding = "0";
style.textAlign = "center";
}
tdWeek.appendChild(document.createTextNode(aWeek[i]));
trWeek.appendChild(tdWeek);
if(i==0) { tdWeek.style.color = "#ff9999"; }
if(i==6) { tdWeek.style.color = "#00bfff"; } <>
506=542<>sage<>2011/07/06(水) 14:52:19.92 ID:???<> 最終的にこうなりました
http://jsfiddle.net/YXwvV/2/
これは万年カレンダーなのでよかったらみなさんも使ってください
メモ帳にそのままコピペして○○.jsファイルに適当に名前つけて拡張子を変えて
HPのどこかに
<script src="○○.js" type="text/javascript"></script>
書くだけです <>
506=542<>sage<>2011/07/06(水) 14:57:51.41 ID:???<> 上記ですが
<div id="calendar"></div>
もいります
誰も必要としないと思いますがw <>
Name_Not_Found<><>2011/07/06(水) 15:35:08.77 ID:7hBROd9n<> >>544
ところで、ハッピーマンデーって
かならずそのルールで適用されているもの…なのか?
自前で持ってるカレンダーのプログラムは
休日とか、その手のイベント情報は別途データファイルを
用意するようにしているのだが、更新が面倒なんだよな… <>
Name_Not_Found<>sage<>2011/07/06(水) 17:46:24.32 ID:???<> Date.parse()というのはクロスブラウザでバグなどありますか? <>
Name_Not_Found<>sage<>2011/07/06(水) 18:08:28.24 ID:???<> なぜ、今までにwith使うなってレスないんだ。
withでないといけない理由ってないでしょ? <>
Name_Not_Found<>sage<>2011/07/06(水) 18:20:11.20 ID:???<> with(Math){eval(hoge);} <>
506=542<>sage<>2011/07/06(水) 19:48:02.83 ID:???<> >>546
万年カレンダーなので過去までもどって試してみましたが
完璧にあってましたよ
with使うとあんまりよくないんですか? <>
Name_Not_Found<>sage<>2011/07/06(水) 20:30:56.65 ID:???<> IE8までの時点でバグに気付かずにwith使い続けたから>>474になったんでしょう <>
Name_Not_Found<><>2011/07/06(水) 20:55:44.72 ID:7hBROd9n<> >>550
おお、そうなんだ
withの件は遅い、ってのと今回みたいなことがありがちなんで
あんまり使わないなあ <>
Name_Not_Found<><>2011/07/06(水) 21:58:32.05 ID:GCYSS/k7<> 初心者ですみません。 今Cakephpを使用しています。
index.ctpに
<embed src="フラッシュファイルパス" type="application/x-shockwave-flash" width="200" height="160">
として、このオブジェクトをクリックしたときに値(value=1など)をポストしたいです。
その時にどのように記載すれば宜しいでしょうか。 <>
Name_Not_Found<>sage<>2011/07/06(水) 22:09:54.81 ID:???<> >>553
onclickでggrks <>
Name_Not_Found<>sage<>2011/07/06(水) 22:36:05.84 ID:???<> <div>
<div class="left"></div>
<div class="left"></div>
<div class="clear"></div>
</div>
とかを何かボタン押したときにどっかに表示させるJavaScript組むとしたら
構造のためだけに最低でもdocument.createElementでdiv4つ生成する必要があるの? <>
Name_Not_Found<>sage<>2011/07/06(水) 22:39:23.10 ID:???<> ×あるの?
○ありますか? <>
Name_Not_Found<><>2011/07/06(水) 22:48:00.33 ID:7hBROd9n<> >>555
HTMLの話はスレ違いだー!
<div class="clear">がフロートをクリアするためだけにあるんだったら
要らない子だな <>
Name_Not_Found<>sage<>2011/07/06(水) 23:25:16.23 ID:???<> var a = document.createElement('div');
を
appendChildで2回出力したりできないの? <>
Name_Not_Found<>sage<>2011/07/06(水) 23:26:07.45 ID:???<> >>557
ちゃんとJavaScriptの話だよ <>
Name_Not_Found<><>2011/07/06(水) 23:37:07.34 ID:7hBROd9n<> >>558
できない
appendChildはprintじゃない
createElementで生成されたひとつのノードをappendするメソッドだから <>
Name_Not_Found<>sage<>2011/07/06(水) 23:38:09.01 ID:???<> document.createElement("div")は一回だ!
<body>
<script>
var div = document.createElement("div");
div.appendChild(div.cloneNode(false)).className = "left";
div.appendChild(div.cloneNode(false)).className = "left";
div.appendChild(div.cloneNode(false)).className = "clear";
document.body.appendChild(div);
</script>
</body> <>
Name_Not_Found<>sage<>2011/07/06(水) 23:45:05.81 ID:???<> >>561
cloneNodeというのを使えばいいのですね
ありがとうございます <>
Name_Not_Found<><>2011/07/07(木) 02:26:38.28 ID:j7WEvmyM<> オライリーの詳解JavaScript(第三版)で勉強しているのですが、「11.6 静的スコープとClosure」で
var val = 'global';
function f() {
var val = 'local';
function g() {
//f.g = function() {
alert(val);
}
}
f();
f.g(); // 'local' が表示
こんなコードがあったのですが、動かないですよね?
コメントアウトした箇所のようなメソッドへの代入なら可能ですが
古い版だしミスなのかな <>
Name_Not_Found<><>2011/07/07(木) 02:43:52.23 ID:Wiz+ssd0<> 探したけど、エラッタみつからんかったわ
第5版おすすめしておきます <>
Name_Not_Found<>sage<>2011/07/07(木) 04:25:37.21 ID:???<> Netscape4.0あたりで動くそうな
第三版が出たのは1998年
いくらなんでも古すぎるんでないか <>
Name_Not_Found<>sage<>2011/07/07(木) 08:10:55.91 ID:???<> テキストエリアとかから入力された半角の'や"のクォートをエスケープしたほうがいいというのは知ってますが
万が一の為に全角のクォートとかもエスケープしたほうが良いのでしょうか? <>
Name_Not_Found<>sage<>2011/07/07(木) 10:22:33.69 ID:???<> なんでエスケープ処理が必要なのか考えればわかるだろ <>
563<>sage<>2011/07/07(木) 11:13:13.09 ID:???<> >>564-565
ありがとうございます、第5版買おうと思います
// PDF版買ってみようかな <>
Name_Not_Found<><>2011/07/07(木) 11:40:23.09 ID:WRF+jSw6<> <script language="JavaScript">
<!--
function Jump(){
window.open("tumibatu/tumibatu.cgi","tumi","directories=no,location=no, menubar=no, resizable=yes, scrollbars=yes, status=no, titlebar=no, toolbar=no,",true)
}
//-->
</script>
<A href="JavaScript:Jump();" class="tumi">
CGIゲームを起動するウインドウを表示させたいのですが
そのウインドウ内でバックスペースとエンターキーを無効化させるには
どうすればいいでしょうか? <>
Name_Not_Found<>sage<>2011/07/07(木) 14:42:36.00 ID:???<> >>566
必要ない
全角にしたら"も'も\も意味を持たない <>
Name_Not_Found<>sage<>2011/07/07(木) 16:10:23.05 ID:???<> <form method="post" action="https://books.step.rakuten.co.jp/rms/mall/book/bs/Cart">
<div>
<span class="unit">個数 </span>
<input value="1" type="text" size="4" name="units" id="units">
<input value="買い物かごに入れる" type="submit">
<input type="hidden" value="1" name="inventory_flag">
</div>
</form>
↑
これをループさせたいです。
今勉強しはじめたばっかですが、どうやらHTMLタグ自体をJAVASCRIPTでループさせる事は無理っぽいことに気が付きました
上のタグと全く同じ性質を持つjavascriptの関数を自分で調べて見つけて書き直すという作業をしなきゃいけないんでしょうか?
あと、リンク先が(https://books.step.rakuten.co.jp/rms/mall/book/bs/Cart)
「混雑しています。しばらくお待ちください」とかのエラーが出たら上のタグをループさせて
「住所を入力してください」とかの成功メッセージが出たらループを抜けるようにしたいです。
リンク先の状況を元のスクリプトにフィードバックすることは可能でしょうか? <>
Name_Not_Found<><>2011/07/07(木) 17:27:10.59 ID:Wiz+ssd0<> >>569
document.body.addEventListener("keydown",function(evt){
var kc = evt.keyCode;
if(kc == 8 || kc == 13) evt.preventDefault();
},false);
こんな感じで、evtオブジェクトがキーコードってのを持ってるから
それで判別しなはれ。確かBS=>8、enter=>13、だったはず <>
Name_Not_Found<><>2011/07/07(木) 17:30:26.41 ID:Wiz+ssd0<> >>571
ループさせる、の意味がいまいちわからん。
何個も書くのが面倒だ、って話?
後半も良く解らん。
「ループさせる」を出来るだけ一般的な用語で! <>
Name_Not_Found<>sage<>2011/07/07(木) 17:42:06.97 ID:???<> >>573
meta http-equiv="refresh"つかえばいいんじゃね?ってことじゃね?
<>
Name_Not_Found<>sage<>2011/07/07(木) 18:12:47.65 ID:???<> >>573
あれは、ようは楽天のページなわけですよ
で人気の転売商材ってのは何度「買い物かごに入れる」をクリックしても「混雑してます」のエラーがでてくる
で、売り切りになっちます。
だから、「買い物かごに入れる」を自動で何度も押せるスクリプトを自作したいわけです。
javascriptの知識が無いから
for(i=1から10まで)(
<form method="post" action="https://books.step.rakuten.co.jp/rms/mall/book/bs/Cart">
<div>
<span class="unit">個数 </span>
<input value="1" type="text" size="4" name="units" id="units">
<input value="買い物かごに入れる" type="submit">
<input type="hidden" value="1" name="inventory_flag">
</div>
</form>
)
見たいなループができると思ったんだけど、どうやらできないみたいでどうしようかなと <>
Name_Not_Found<>sage<>2011/07/07(木) 18:42:12.84 ID:???<> >>566
テキストエリアから取得した文字列中の引用符って、半角だろうが全角だろうがエスケープする必要あるんかぇ
てかエスケープって何 <>
Name_Not_Found<>sage<>2011/07/07(木) 18:43:30.65 ID:???<> 後、後半はリンク先が
「混雑しています」のメッセージの時,上のfor文を繰り返すようにしたいって事です
楽天の買い物ページに普通につながったら、もう「買い物かごに入れる」をクリックする
必要はないわけだから <>
Name_Not_Found<>sage<>2011/07/07(木) 18:54:31.80 ID:???<> それってF5アタック?
last-modifiedやcontent-lengthなども返さないっぽいからxhrでHEADだけ取得とかもできなさそうだし <>
Name_Not_Found<>sage<>2011/07/07(木) 18:58:36.94 ID:???<> 堂々としすぎだねこれね <>
Name_Not_Found<>sage<>2011/07/07(木) 19:01:28.74 ID:???<> >>578
リンク先のエラーページでf5アタックだと、例えば、リンク先に「買いたい商品の個数の情報」だとかが、
普通に「買い物かごに入れる」をクリックした時のように送信されないんじゃないかという危惧が・・・・
なんか、思ったより、これをスクリプトで自動化するって難しいんですね・・・・ <>
Name_Not_Found<><>2011/07/07(木) 19:35:58.95 ID:pCCab3sJ<> オブジェクト(配列、連想配列)そのものに対しては
コンソールログでは中身(プロパティ)も取得できているのですが
直接プロパティにアクセスするとundefinedが返ってきます
何が原因ですか?
var foo = {}; //まず空のオブジェクトを作り
foo["bar"] = "baz"; //あとからプロパティを追加しています(ループで)
console.log("foo", foo); //Object //各プロパティも取得できています
console.log("foo.bar", foo.bar); //undefined //でも直接プロパティにアクセスするとだめ
console.log("foo[\"bar\"]", foo["bar"]); //undefined //書き方を変えても同じ
プロパティ名は間違っていません
for inしても空っぽで、
Object.keys(foo)もObject.getOwnPropertyNames(foo)も
空っぽの配列が返ってきます
var foo = { bar: "baz" };
こんな風に最初から値を設定してみたらそれは取得できたので
追加の仕方に問題があると思うのですが
オブジェクトそのものをコンソールログで見た場合はちゃんとプロパティも追加されているので
行き詰まっています
自分にとっては初めての出来事なのですが
よくある失敗ですか?
google chromeです <>
Name_Not_Found<>sage<>2011/07/07(木) 20:04:38.03 ID:???<> 何ら問題なく出力されるが・・・?
<>
Name_Not_Found<>sage<>2011/07/07(木) 20:16:08.09 ID:???<> メニューブロックのリンクを押すとリンク先に切り替わらずに
本文ブロックにリンク先の本文を読み込むようにする方法を教えてください。
具体的にはロールスロイスのページのような感じです。
http://www.rolls-roycemotorcars.com/ <>
581<>sage<>2011/07/07(木) 20:22:54.55 ID:???<> > foo["bar"] = "baz"; //あとからプロパティを追加しています(ループで)
の部分でもう少し複雑な処理をしています(オブジェクト「foo」に触れるのは「foo["bar"] = "baz";」の部分だけですが)
Objectを見るとプロパティが追加されているのに
プロパティに直接アクセスすると(またはfor in等で取得しようとすると)undefinedが返るケースの
考え得る原因を教えてほしいです
直接参照できないような特殊な内部属性がセットされているとか・・・
ってそういうのはユーザが作ったものにはセットされないですよね <>
581<>sage<>2011/07/07(木) 20:35:28.21 ID:???<> >>584
> プロパティに直接アクセスすると(またはfor in等で取得しようとすると)undefinedが返る
すみません訂正です
プロパティに直接アクセスするとundefinedが返る
(for in等で取得しようとするとそもそも列挙されない(プロパティがないことになっている)) <>
Name_Not_Found<>sage<>2011/07/07(木) 20:37:50.77 ID:???<> >>583
XHRで内容取得して書き換えてる
書き換えるついでにハッシュも変更して固有のようなURLとしてる
>>584
再現できるコードを
もうちょっとループ周りのコードを書いてくれないとなんとも
<>
Name_Not_Found<>sage<>2011/07/07(木) 20:41:06.20 ID:???<> >>1
>【サンプルコード】現象を再現可能な最小限のコードを書いてください。
<>
Name_Not_Found<><>2011/07/07(木) 20:53:21.80 ID:Wiz+ssd0<> >>577
事情はわかったけど、JSだけでやるのは面倒くさいだろうなあ
そもそも<form>だけ自前で作ってポストするのは
クロスサイトリクエストフォージェリ対策されてそうだし
グリモンとか、Firebugとかのコンソールで
1. <form>のtargetを別ウィンドウにして
2. <form>をpost()する
3. 別ウィンドウの中身を見て
混雑していますだったら2へ、そうでなければ処理終了
ってすればいいかも知れない。繰り返しはforじゃなくて時間あけて再帰な感じで。
相手のサーバに迷惑かからんように間隔開けて
とかどうだろう <>
Name_Not_Found<>sage<>2011/07/07(木) 21:14:39.87 ID:???<> >>588
取り合えず、煮詰まりだったんでアイデアをもらえただけで十分ありがたいです。
さっそく試してみます。 <>
Name_Not_Found<>sage<>2011/07/07(木) 21:30:08.45 ID:???<> >>586
ありがとうございます! <>
Name_Not_Found<>sage<>2011/07/07(木) 21:49:43.59 ID:???<> >>589
あとseleniumとかでも簡単にできそう
グリモンでもいけると思うけどね <>
581<>sage<>2011/07/07(木) 22:11:25.91 ID:???<> 再現可能な最小限のコードを作っていたら原因がわかったっぽいです
引数としてコールバック関数を要求するメソッドで、それが非同期(?)で動作するっぽくて
コールバック関数が処理される前にコンソールログの行が処理されていたみたいです
引数としてコールバック関数を要求するメソッドは実際はaddEventListenerではないのですが
同じような結果が得られました
たとえばこんな感じです
<body>
<script>
var object = {};
window.addEventListener("load", function() {
object["foo"] = "foofoo";
object.bar = "barbar";
}, false);
console.log("object", object); //プロパティ名も値も表示される
console.log("object[\"foo\"]", object["foo"]); //undefined
console.log("object.bar", object.bar); //undefined
console.log("Object.keys(object)", Object.keys(object)); //[]
console.log("Object.getOwnPropertyNames(object)", Object.getOwnPropertyNames(object)); //[]
</script>
</body>
コンソールログでもオブジェクト(配列や連想配列)は参照だけを取得している(?)んですね
あとからログを見たときには中身が入っているので
コンソールログの行が処理された時点でも取得できているんだと勘違いしていました <>
Name_Not_Found<>sage<>2011/07/07(木) 23:57:15.80 ID:???<> >>589
どうでもいいが一度辞書で「煮詰まる」の正しい意味を調べることをお勧めする。 <>
Name_Not_Found<>sage<>2011/07/08(金) 08:11:12.80 ID:???<> 正しくは行き詰まりかな <>
Name_Not_Found<><>2011/07/08(金) 17:55:08.87 ID:ZQ5luLuM<> この場合は手詰まりじゃないかと <>
Name_Not_Found<>sage<>2011/07/08(金) 18:13:10.72 ID:???<> それより迷惑スクリプトじゃないんか <>
Name_Not_Found<>sage<>2011/07/08(金) 23:10:34.95 ID:???<> このレスの住民ってGooglemap作れるレベルくらいなん? <>
Name_Not_Found<>sage<>2011/07/08(金) 23:31:40.04 ID:???<> firebugで開発ってどうやるのでしょうか? <>
Name_Not_Found<>sage<>2011/07/09(土) 00:21:20.52 ID:???<> 使い方は人それぞれ
俺はエラー確認ぐらいにしか使ってない <>
Name_Not_Found<>sage<>2011/07/09(土) 00:25:16.45 ID:???<> >>598
ttp://getfirebug.com/wiki/index.php/Console_API <>
Name_Not_Found<>sage<>2011/07/09(土) 02:00:41.21 ID:???<> function init() {
document.writeln("<form name='form'>");
document.writeln("<input type='button' value='クリック' onclick='s();'>");
document.writeln("</form>");
}
function s(){
alert();
}
のようにして、別の関数を呼び出したいのですが、反応しません。
function init() {
document.writeln("<form name='form'>");
document.writeln("<input type='button' value='クリック' onclick='alert();'>");
document.writeln("</form>");
}
のように直接アラートをいれた場合は反応したのですが、何か制約があるのでしょうか? <>
Name_Not_Found<><>2011/07/09(土) 02:15:02.19 ID:MncHMBsU<> ライブラリのコメントが/*!で始まっているものがありますけど
あれってどういう意味なんでしょうか <>
Name_Not_Found<>sage<>2011/07/09(土) 02:46:47.74 ID:???<> >>601
initをイベントハンドラから呼んでない?
ページ読み込み後はdocument.write使っちゃダメよ <>
Name_Not_Found<><>2011/07/09(土) 11:57:49.30 ID:JGHwCsS4<> //いろいろと省略しています
var string = (function() {
var value;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (readyState === 4) {
value = xhr.responseText;
}
};
return value;
})();
これはonreadystatechangeの関数が処理される前にreturnされるので
stringにはxhr.responseTextの値が入っていませんが、
valueにxhr.responseTextが入ってからreturnさせるにはどうするものですか?
setIntervalとかで定期的に中身を確認して中身が入るまで待つことになりますか?
onreadystatechangeの関数内で次の関数等の処理に移るのではなくreturnさせたいです。
それでいて無駄な待ち時間もなく。非同期じゃなくなってもいいです。 <>
Name_Not_Found<>sage<>2011/07/09(土) 12:48:31.37 ID:???<> >>603
ご察しの通りでした。
ありがとうございます。 <>
Name_Not_Found<><>2011/07/09(土) 13:05:35.71 ID:7GcqlL5z<>
以下のサイトでは、名前や企業名やメールアドレスを打ち込まなくても
メールの署名などを利用して、簡単にフォームに必要事項を記入する
事が可能です。
これはサーバサイドで行っているようですが、JavaScriptで同じような事は出来ませんか?
また、そのような設置例があったら教えてください。
https://www.impressbm.co.jp/cc/add/?mode=init&type=p
<>
Name_Not_Found<>sage<>2011/07/09(土) 13:37:48.77 ID:???<> 必要なところを抜き出して入れてるだけだろ
人名は人名読みみたいな表用意して入力してるだけだろうし
出来んことはないと思うけど <>
Name_Not_Found<>sage<>2011/07/09(土) 14:06:31.37 ID:???<> >>604
> valueにxhr.responseTextが入ってからreturnさせるにはどうするものですか?
同期しかねぇ
> onreadystatechangeの関数内で次の関数等の処理に移るのではなくreturnさせたいです。
同期しかねぇ
> 無駄な待ち時間もなく。
同期は他のもろもろがブロックされるけど必要な時間だし、無駄ってわけじゃない
> 非同期じゃなくなってもいいです。
なら同期で <>
Name_Not_Found<><>2011/07/09(土) 16:45:18.67 ID:+XbBnw2/<> ラジオボタンの代わりに画像を使いたいのですが
選択すると画像がボーダーラインで囲まれるような処理方法は可能でしょうか。
選択/非選択で画像を2種類用意して切り替えるスクリプトは
よく紹介されていてjQueryでもあるようですが、画像1つだけで済ませたいのです。
イメージとしては、ユニクロサイトの商品カラー選択のような感じです。
どうにか教えてください。よろしくお願いします。
<>
Name_Not_Found<>sage<>2011/07/09(土) 16:59:12.04 ID:???<> 普通に CSS ファイルで outline 設定しておいて、class で切り替えればいいと思う <>
Name_Not_Found<>sage<>2011/07/09(土) 19:09:12.61 ID:???<> 『あの日見た花の名前を僕達はまだ知らない』の
エンディングをJavascriptで再現したいです。
長くなりそうなのでこちらで教えていただけたら幸いです。
手とり足とり教えるスレ part3
http://hibari.2ch.net/test/read.cgi/hp/1155395444/193- <>
Name_Not_Found<>sage<>2011/07/09(土) 19:43:46.51 ID:???<> 答えてもらえないからってこっちに持ち込むなよ <>
Name_Not_Found<>sage<>2011/07/09(土) 19:45:02.92 ID:???<> できるやつがネタとしてやるようなことであって
できないやつが他人に丸投げしてまでやることじゃない <>
>>604<>sage<>2011/07/09(土) 19:56:38.91 ID:???<> >>608
どうもありがとうございます
同期以外にいい方法はないってことですか
xhrは同期非同期選べますがxhr以外のイベントハンドラに登録する関数の場合はどうすればいいですか <>
Name_Not_Found<>sage<>2011/07/09(土) 20:56:26.87 ID:???<> >>614
まず、xhr以外で非同期なイベントを明示してください <>
604<>sage<>2011/07/09(土) 21:11:22.63 ID:???<> http://javascript.g.hatena.ne.jp/edvakf/20100227/1267246371
こういう非同期的なものです
コールバック関数を要求するものはどんどん奥に入っていってよく迷子になるのですぐにreturnして戻りたいです <>
Name_Not_Found<>sage<>2011/07/09(土) 21:51:53.51 ID:???<> >>616
setTimeout はともかく他は非同期ではないように見えますが <>
Name_Not_Found<>sage<>2011/07/09(土) 22:16:42.76 ID:???<> >>616
返せるものは返せば良いけど、returnの時点で見えてない値は
どうがんばっても返せないでしょ。
迷子ねぇ。慣れて下さいとしか。 <>
Name_Not_Found<>sage<>2011/07/09(土) 22:25:38.34 ID:???<> asynchronous callbacks問題の対策方法はいろんな人がいろいろ考えているみたいだけどベストな答えはまだ
ttp://www.infoq.com/articles/surviving-asynchronous-programming-in-javascript <>
Name_Not_Found<>sage<>2011/07/09(土) 23:05:33.31 ID:???<> >>616
ttp://cho45.stfuawsc.com/jsdeferred/doc/intro.html
こういうのはどう? <>
604<>sage<>2011/07/09(土) 23:20:18.04 ID:???<> >>620
レスありがとう
今ちょうどoutsider reflexってサイトの記事を経由して見てたところです
コードの行数が多い場合とかネストが増えすぎた場合とかに試してみようかと思ってます <>
Name_Not_Found<><>2011/07/10(日) 07:09:14.84 ID:UECxZbzv<> 別のウィンドウ、タブ、フレーム、iフレーム内で実行すると最近のブラウザはだいたい非同期になるYO! <>
Name_Not_Found<>sage<>2011/07/10(日) 09:44:41.73 ID:???<> 非同期というよりイベント駆動型プログラミングに慣れてないんじゃないかな
イベントとクロージャに慣れる方が先だと思う <>
Name_Not_Found<>sage<>2011/07/10(日) 10:02:09.57 ID:???<> node.jsの非同期コールバック地獄に堕ちるとわかる <>
Name_Not_Found<>sage<>2011/07/10(日) 21:56:02.08 ID:???<> appendChildで追加した要素をフェードインさせるにはどうすればいいですか? <>
Name_Not_Found<>sage<>2011/07/11(月) 00:23:01.90 ID:???<> CSS の opacity プロパティ使えば? <>
Name_Not_Found<>sage<>2011/07/11(月) 02:45:05.87 ID:???<> var memoizer=function(memo,fundamental){
var shell=function(n){
var result=memo[n];
if(typeof result !== 'number'){
result=fundamental(shell,n);
memo[n]=result;}
return result;};
return shell;};
//002フィボナッチ数列を第n項まで計算
var fibonacci=memoizer([0,1],function(shell,n){
return shell(n-1)+shell(n-2);
});
fibonacci(30)で第30項のフィボナッチ数列の値が出る。
Javascript good partsに載っていたのですが、
memoizer([0,1],function(shell,n)は[0,1]でmemoに配列を代入で
fundamentalは関数でshellも関数ということですか?
これってクロージャですよね?くわしく説明してください。
<>
Name_Not_Found<>sage<>2011/07/11(月) 03:15:02.91 ID:???<> appendChildで追加した要素をドラッグさせるにはどうすればいいですか?
<>
Name_Not_Found<>sage<>2011/07/11(月) 11:08:58.34 ID:???<> addEventListenerつかって、mousedownとmousemoveとmouseupにそれぞれイベント書けばおk. <>
Name_Not_Found<>sage<>2011/07/11(月) 12:44:02.81 ID:???<> >>627
> [0,1]でmemoに配列を代入でfundamentalは関数でshellも関数ということですか?
そだね。
> これってクロージャですよね?
fibonacciは生成段階のスコープを保持するね。そこは「クロージャ」ってことでいいと思うよ。
ただ、このプログラムで強調すべきところはそこじゃないっしょ。
shellを表に出したら、何か都合が悪くなるってわけでもないし。
「くわしく説明」とはクロージャのことなのかプログラム自体(再帰)のことなのか
はっきりさせた方がいいんじゃないか。 <>
Name_Not_Found<><>2011/07/11(月) 14:02:42.89 ID:J7AHV8xD<> すみません。以下オブジェクト内の例えば height、colorの参照方法の書式を教えてもらえないでしょうか?
var o = new TR.Widget(
{
width: 'auto',
height: 300,
theme: {
shell: {
background: '#333333',
color: '#ffffff'
}
}
}
);
alert(o.・・・);
お手数ですが、お助け頂ければ幸いです。 <>
Name_Not_Found<>sage<>2011/07/11(月) 14:15:38.51 ID:???<> TR.Widgetの中はどこ行けば見れるのよ? <>
Name_Not_Found<>sage<>2011/07/11(月) 14:41:29.31 ID:???<> facebookかなにか? <>
Name_Not_Found<><>2011/07/11(月) 15:02:01.18 ID:J7AHV8xD<> Twitterウィジェットの一部です。 <>
Name_Not_Found<>sage<>2011/07/11(月) 15:48:01.14 ID:???<> TWTR.Widgetなら o.opts.〜 でいいんじゃないか <>
Name_Not_Found<>sage<>2011/07/12(火) 05:22:14.23 ID:???<> 質問です
そのfunctionを実行したら、次実行させるのには1分間経過しないとできないようにしたいです
もうどんな関数使えばいいのかすらさっぱりです <>
Name_Not_Found<><>2011/07/12(火) 06:30:52.47 ID:pM88wZ8X<> >>636
タイマー使え <>
Name_Not_Found<>sage<>2011/07/12(火) 09:36:53.08 ID:???<> functionの冒頭で、
実行時のタイムスタンプを保存。
次回実行時にタイムスタンプを見比べて、1分たっていなかったら Exit function
みたいな実装が軽くていい。 <>
Name_Not_Found<>sage<>2011/07/12(火) 15:58:20.59 ID:???<> ふむふむふむ
参考になります <>
Name_Not_Found<>sage<>2011/07/12(火) 18:17:47.12 ID:???<> javascriptってexitないけどさ、みんなどうやってんの?
俺は全体do{...}while(false);でbreakよく使ってるけど
try catchの方がいいのかね <>
Name_Not_Found<><>2011/07/12(火) 18:33:23.95 ID:vVO9wX62<> >>640
そのexitは本当に必要なものなのか?
do{}while()でbreakは古のプログラマの一子相伝の技法として好んで使用したらしい(プロジェクトのコーディング規約から生まれた?)と
聞き及んでるが、いまだその技法にたどり着く豪のものが現れようとは。。。 <>
Name_Not_Found<>sage<>2011/07/12(火) 18:33:41.25 ID:???<> クライアントサイドでexitの必要性がわからない <>
Name_Not_Found<>sage<>2011/07/12(火) 18:38:58.49 ID:???<> >>640
function 内で return するぐらいだな
可読性にも影響するから必要なケースはほとんどない <>
Name_Not_Found<>sage<>2011/07/12(火) 21:12:47.87 ID:???<> window.onload = function(){
document.getElementById("XXXX").onmousedown = dragStart;
window.onmousemove = dragProc;
window.onmouseup = dragEnd;}
function dragStart(evt){……}
function dragEnd(){……}
function dragProc(evt){……}
これってどういうことなの?
ドキュメントの読み込み時にIDがXXXXの領域でマウスを押したらdragStart、
マウスをドラッグしたらdragProc、マウスをクリックした後戻したらdragProcが動くっていう設定をしてるの? <>
Name_Not_Found<>sage<>2011/07/12(火) 21:16:25.22 ID:???<> exitが必要な実装を見直せ <>
Name_Not_Found<>sage<>2011/07/12(火) 21:21:14.55 ID:???<> あと、function dragStart(evt){……}の部分はevtに何を入れているのですか?
関数が呼び出されるときには勝手に何か入るような仕様があるのですか?
たとえば上の例以外にonClick="drag()"で呼び出したときに
drag(evt){……}と呼び出される側の関数にevtなどの変数を書いておけば
この変数に何か値が入るのですか? <>
Name_Not_Found<>sage<>2011/07/12(火) 21:23:38.36 ID:???<> そうそう
onClick="drag('マイケル')"だったらevtにマイケルが入る <>
Name_Not_Found<>sage<>2011/07/12(火) 21:23:51.32 ID:???<> >>644
イベントによってdragStart等がよばれる
動作的には質問した動作であってる
evtはイベントが発生した時に設定される(IE以外)
<>
Name_Not_Found<>sage<>2011/07/12(火) 21:24:31.27 ID:???<> マウスイベントを設定するタイミングがonloadのときってこと
evtはマウスイベントを渡してる
そこからイベント発生時の座標とかを参照できるわけ <>
Name_Not_Found<>sage<>2011/07/12(火) 22:00:48.95 ID:???<> 関数名(xxx){}なら関数を呼び出す時雄に関数名(yyy)でもしない限り、
関数名()での呼び出しやマウスイベント時に呼び出すように設定したなどの場合、
マウスイベントがxxxに入るであってる?
関数から関数呼び出すときは何も入らないし関数名(yyy)で呼び出すならxxxにはyyyが入ってる <>
Name_Not_Found<>sage<>2011/07/12(火) 22:10:40.52 ID:???<> >>650
https://developer.mozilla.org/ja/DOM/event <>
Name_Not_Found<>sage<>2011/07/12(火) 22:12:30.37 ID:???<> URL貼るくらいなら猿でもできるんだよボケ <>
Name_Not_Found<>sage<>2011/07/12(火) 22:21:02.40 ID:???<> URL貼る方が情報量多い場合もあるし、文句だけなら猿でもできるよね <>
Name_Not_Found<>sage<>2011/07/12(火) 22:25:18.09 ID:???<> 実際URLの中身見たら理解が進んだ気がしたぞ
ところでevtはevt以外の文字列じゃ機能しないの?aaaとか
中身はeventと同じ? <>
Name_Not_Found<>sage<>2011/07/12(火) 22:26:21.74 ID:???<> 関数と同じなのでevtでもeでもeventでもなんでも良い
<>
Name_Not_Found<>sage<>2011/07/12(火) 22:29:12.90 ID:???<> onload時にdocument.getElementById("XXXX").onmousedown = dragStart; なり
addEventListenerなりでイベント設定するとき
appendChildで追加する予定のIDを設定したらエラーになると思うのですが
appendChildで追加するときに呼び出してあげれば問題なくなるのですか?
appendChildで追加するたびに呼び出されても上書きされるだけだから問題ない?メモリとかたくさん食ったりしない? <>
Name_Not_Found<>sage<>2011/07/12(火) 22:34:13.31 ID:???<> >>654
EventListenerインターフェースに従って慣習的に evt が使われるだけで変数名に制限はありません。
http://www.w3.org/TR/DOM-Level-3-Events/#events-EventListener
>>656
IE7+ でクロスページリークというリークパターンがあります。
http://msdn.microsoft.com/ja-jp/library/bb250448%28v=vs.85%29.aspx <>
Name_Not_Found<>sage<>2011/07/12(火) 23:00:07.86 ID:???<> でもさ、昔の質疑応答なんかが検索で出てきて、回答にURL貼ってたりするの
今見るとほとんどリンク切れでわけわかめなんだよなw <>
Name_Not_Found<><>2011/07/12(火) 23:13:55.02 ID:Kqp9et4I<> DOMの構築は、htmlの上から順にされ
scriptタグが書かれていた場合そこでDOMの構築が一時ストップしますよね
以下のソースの場合だと、jsが実行されたタイミングではid:targetのDOMは構築され
常にエラーが出る事はないと言い切れるのでしょうか?
<div id="target"></div>
<script>document.getElementById("target")</script>
だとすると、スクリプトタグをHTMLの一番下部にかけばDOMContentLoadedイベント等を使わずとも安全といえますか? <>
Name_Not_Found<>sage<>2011/07/12(火) 23:34:43.90 ID:???<> >>641
if判定
処理1
if判定
処理2
if判定
処理3
・・・と割と長々と続く場合ifのネストが深くなるのを避けるには
どういう風に書くのがクールなんですか?
returnしちゃうの?
疑問を感じながらも>>640と同じような書き方をしちゃってますわ <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/12(火) 23:55:53.22 ID:???<> >>659
script要素は少なくともbody要素の配下になければなりませんからHTMLの最下部に置けません。
</body> の手前に <script> を置く場合、html要素、body要素の操作以外は正常動作が期待できます。
html, body はDOM構築がまだ途中なので不具合を誘発させる危険性があります。(確か IE に不具合があったような) <>
Name_Not_Found<><>2011/07/13(水) 00:02:23.72 ID:/xKHmjSE<> >>660
javascriptだとそんなネストもそうそうないと思ったが、
スプレッドシートのキー操作でそんな化け物みたいなやつ書いた記憶もあるなw
まぁ、自称javaのプロフェッショナルさんに書き直されたところによれば、
条件反転してでもcontinue/break/returnで抜けるらしい。
ただ、個人的にはif文の条件は率直に書くことが望ましいと思うので苦々しく思ったものだね。
言語の制約によって条件の意味づけが変わるのはなんともプログラマとして望ましいとは思わんからね。
do{break;}whie(false)はプログラムの意味合いが薄れるから良くないと思うわけで、
if文の山ができたら関数わけできるか検討してみるというのが、一般論法。
javascriptは関数内関数が使えるから一つの関数で意味づけを閉じ込めることができるから自分はそういう検討する。
ただ、速度面で、if文の山になるのもやむなしで実装するのもプログラマの度量次第ですかね。 <>
Name_Not_Found<>sage<>2011/07/13(水) 01:02:45.63 ID:???<> addEventListenerのtypeに指定できる文字列の一覧が見つからない
自分の検索の下手さに絶望した <>
Name_Not_Found<>sage<>2011/07/13(水) 01:06:13.19 ID:???<> っ DOM2 Events <>
Name_Not_Found<>sage<>2011/07/13(水) 06:53:27.98 ID:???<> つ Document Object Model (DOM) Level 3 Events Specification <>
Name_Not_Found<>sage<>2011/07/13(水) 08:32:25.86 ID:???<> 正常系のネストを深くするやつはセンスなさそうに見える <>
Name_Not_Found<><>2011/07/13(水) 08:35:54.70 ID:Ai+nRfO4<> >660
if(a==1){ア
if(b==2){イ
if(c==3){ウ
}else{エ}
}else{オ}
}else{カ}
↓
t:swith(true){
case a==1:ア
case a!=1:カ;break t
case b==2:イ
case b!=2:オ;break t
case c==3:ウ
case c!=3:エ;break t
}
もっと複雑なネストも順番を工夫すればどんなパターンでもif無しで書ける <>
Name_Not_Found<>sage<>2011/07/13(水) 08:44:56.19 ID:???<> さすがにそれはキモイわ <>
Name_Not_Found<><>2011/07/13(水) 08:55:29.60 ID:Ai+nRfO4<> >668
俺も使ったことないし使おうとも思わないけど
あたらめて見るとある意味直感的でいいかもね
もしこうだったらこうして
違ったら抜ける
違わなかったら先にいく
っていうのはifのネストよりもイメージに近くなるかもしれない
上の方で出てたJAVAプログラマの人も多分より直感的にしたかったんだと思う <>
Name_Not_Found<>sage<>2011/07/13(水) 08:57:26.70 ID:???<> うむ、もっともだわな <>
Name_Not_Found<>sage<>2011/07/13(水) 09:04:36.66 ID:???<> ラベルはBASICの頃のgoto文を思い出してどうしても敬遠してしまう <>
Name_Not_Found<><>2011/07/13(水) 09:46:28.30 ID:OTnaUKfv<> リンククリックされたら画面内にポップアップ+ポップアップ内に動的な内容を表示って
どうしたらできますか?
Ajaxというのは分かるんですけど、実装イメージが湧かなくて・・ <>
Name_Not_Found<>sage<>2011/07/13(水) 09:50:26.55 ID:???<> 質問の内容からして実装イメージがわかない云々以前な気がする
とりあえず想像付く範囲でコード書いてみて <>
Name_Not_Found<><>2011/07/13(水) 10:23:36.65 ID:OTnaUKfv<> // ポップアップ用のdiv作成
var pop = document.createElement("div");
// popをポップアップ風にして、かつ動的な内容を入れる?
・・・
// ポップアップを追加
document.body.appendChild = pop;
http://procx.jp/nt/
したいのはこういうサイトみたいにあらかじめHTMLに埋め込まれた
ものを表示するのではなくて、ポップアップを表示するタイミング?で
動的な内容を取得、表示することです <>
Name_Not_Found<>sage<>2011/07/13(水) 10:54:32.94 ID:???<> ajaxを学べばわかるようになる。
要素生成→取得じゃなくて
取得→完了時に要素生成→追加って流れ。 <>
Name_Not_Found<><>2011/07/13(水) 11:01:36.97 ID:OTnaUKfv<> なるほどです。
Ajax通信の一連処理の中に要素生成とか追加も含めるんですね。
生成、取得、追加とかその辺の流れもよくわからなかったので助かります。 <>
忍法帖【Lv=1,xxxP】 <><>2011/07/13(水) 11:05:55.36 ID:5Ddb8K/4<> ajax対応のLightBoxとかのソースを参考にすればいいんじゃないかな <>
Name_Not_Found<><>2011/07/13(水) 11:18:47.07 ID:OTnaUKfv<> こういうの使ってるのか。
ポップアップもLightBox使えばできそうですし、かなりイメージ湧きました。 <>
Name_Not_Found<>sage<>2011/07/13(水) 14:16:44.14 ID:???<> >>662
サンクス、参考になります。
>>667ども。でもそのswitch構文は
ア が通った場合に必ず カ も実行されて抜けちゃうんでは? <>
Name_Not_Found<>sage<>2011/07/13(水) 20:51:24.17 ID:???<> onmousemove でドラッグできねえ
アブソリュート指定しておいた要素のleftとtopの値変えてあげればいいだけなんじゃないの?
ドリームうぃーぱーってじゃばすくりぷとのデバックできないの?
ちくしょう <>
忍法帖【Lv=1,xxxP】 <>sage<>2011/07/13(水) 21:06:26.86 ID:???<> つ http://html5.jp/html5doctor/native-drag-and-drop.html <>
Name_Not_Found<>sage<>2011/07/13(水) 23:24:34.46 ID:???<> 質問。
http://www.webcreatorbox.com/inspiration/horizontally-scrolling-websites-30/
このへんのサイトみたいに横スクロールのサイトで、マウスホイールに対応させるには
JAVAスクリプトを使うんだよね? どうやって作ればいい? サンプルとかないかな。
あとホイール操作ってどこまでいじれる? 例えばホイールを下に回すと右斜め下にスクロールしてくサイトとか作れる? <>
Name_Not_Found<>sage<>2011/07/14(木) 00:55:22.64 ID:???<> っ チルトホイール <>
Name_Not_Found<>sage<>2011/07/14(木) 04:23:47.18 ID:???<> クロージャの質問
function outer(){
var x = 1;
return function (){
alert(x);
x = x + 1;
};
}
outer();//動かない
var f = outer();
f(); // 1
f(); // 2
何故outer();では動かないのですか?
何故var f = outer(); f(); とすると動くのですか?
<>
Name_Not_Found<>sage<>2011/07/14(木) 04:30:47.82 ID:???<> >>684
outer関数の返り値は処理通り無名関数
alert関数は実行されない
何故ならalert関数を実行する無名関数が実行されていないから
よって、
outer()();
とすればone statementで動く
f変数はouter関数が返す無名関数が代入されているだけに過ぎない <>
Name_Not_Found<>sage<>2011/07/14(木) 05:13:28.93 ID:???<> >>685
なるほど関数の実行に()がほしいということですか。
function speak(){alert("hello");return 9+9;}
//document.write(speak());//hello 18
//document.write(speak()());//hello
//document.write(speak()()());//hello
document.write(speak()()()());//hello
という挙動になるのは何故ですか?()が2つ以上になると
returnが無視されるみたいです。 <>
Name_Not_Found<><>2011/07/14(木) 06:39:23.17 ID:cwieDqqx<> returnが無視とかじゃなくて
firebugとかchromeとかデバッグすると関数じゃねぇぞゴルァ!って来てるかと
document.write(speak()())はdocument.write(18())とやってるのと同じ
18を実行してどうするんだよ… <>
Name_Not_Found<>sage<>2011/07/14(木) 06:55:09.21 ID:???<> >667のコスト計算してみたら意外にもほとんど変わらなかった
a!=1で早期に抜ける場合はifの方が2-3倍早いが
a==1,b==2,c==3で奥まで進む場合はswitchの方が2倍早かった
場合によって早いときと遅いときの差がswitchの方がマイルドな感じ
だからswitchの方がいいコーディングなのかも…? <>
Name_Not_Found<>sage<>2011/07/14(木) 07:29:52.77 ID:???<> >>683
いやそういう話じゃなくって。全員ユーザーがチルトホイール持ってるわけじゃないでしょ。
持ってない人のための工夫をしたいってことなんだけど。 <>
Name_Not_Found<>sage<>2011/07/14(木) 08:17:46.44 ID:???<> >>689
可否云々ではなく、標準の動作を書き換えるのはユーザの混乱を招くからやらない方がいいんじゃないかな <>
Name_Not_Found<>sage<>2011/07/14(木) 08:31:37.42 ID:???<> var hash = {
1 : function(){ 処理1 },
2 : function(){ 処理2 },
3 : function(){ 処理3 }
};
hash[(条件式の)変数]();
分岐条件が固定値になる処理ならswitch使うなよ。 <>
Name_Not_Found<>sage<>2011/07/14(木) 08:51:36.89 ID:???<> (function(){
if (!判定1){ return; }
処理1
if (!判定2){ return; }
処理2
if (!判定3){ return; }
処理3
}());
条件が完全にバラバラで統一できないなら、とりあえずこう書いておく。
そのうち個々の処理が大きくなって、それぞれの処理を丸ごと別関数にした方がいいと気づく。
気付いたあと、最初にくだらないテクニック使って最悪なコーディングになってると、
普通のプログラムに書き戻すのがものすごく面倒になってやらなくなる。
スパゲッティのできあがり。 <>
682<>sage<>2011/07/14(木) 09:17:08.58 ID:???<> >>690
標準の動作を変えるならそうきっちりアナウンスすればいいと思うし、
いずれにしても混乱が起こらない形でやるつもりだよ。
まずどの程度の事が可能なのかしりたいんだ。その上でどんな実装をするか考えたいんだよ。
とりあえず>>682教えてくれてもいいんじゃないか。 <>
Name_Not_Found<><>2011/07/14(木) 09:20:16.63 ID:dhyvjj5H<> javascriptでただ5分だけカウントダウンするプログラム書きたいんだけど、ググってもわからないので教えてエロい人 <>
Name_Not_Found<>sage<>2011/07/14(木) 09:28:15.66 ID:???<> >>694
SetTimeOutをしらべりょ <>
Name_Not_Found<>sage<>2011/07/14(木) 09:33:19.81 ID:???<> >>695
setTimeoutも調べたんすけど、現在時間とかも取得しないといけないんすかね? <>
Name_Not_Found<>sage<>2011/07/14(木) 09:36:52.70 ID:???<> とりあえずなんでもいいからソース書いて来い <>
Name_Not_Found<>sage<>2011/07/14(木) 09:39:21.29 ID:???<> >>696
「5分だけカウントダウン」の意味によるでしょ。5分は300秒
だからおおまかでよければ300から1秒毎に1減らして行くという
コードで済ませて現在時刻を取らないというのも可能では。
それでいいかよくないかはアンタにしか決められんよね。 <>
Name_Not_Found<>sage<>2011/07/14(木) 09:40:55.14 ID:???<> aho() {
i = eval(document.myform.hoge.value) - 1;
if (i > 0){
document.myform.hoge.value = i;
setTimeout('aho()', 1000);
}
} <>
Name_Not_Found<>sage<>2011/07/14(木) 09:43:38.44 ID:???<> ↑ちょっと変だった。
document.myform.hoge.value = i;
はif文の前がいいな <>
Name_Not_Found<>sage<>2011/07/14(木) 10:18:24.49 ID:???<> ネタじゃないん? <>
Name_Not_Found<>sage<>2011/07/14(木) 12:01:16.27 ID:???<> >>699
ありがとうございます。夜家に帰ったら試してみます <>
Name_Not_Found<>sage<>2011/07/14(木) 15:57:31.82 ID:???<> DateオブジェクトとsetIntervalの使い方さえ分かれば、9割終わる問題だな。
教科書に載せたいsetIntervalの基本、ぐらいの勢いw
window.onload = function() {
var div = document.getElementById("count_view");
var count = 5 * 60;
div.textContent = count--;
var time = new Date();
var next = time.getTime() + 1000;
var id = setInterval(loop, 100);
function loop() {
time = new Date();
if (time.getTime() < next){ return; }
next += 1000;
div.textContent = count--;
if (count >= 0){ return; }
clearInterval(id);
}
}; <>
Name_Not_Found<>sage<>2011/07/14(木) 17:17:22.34 ID:???<> 何だかんだで宿題スレ化しちゃうのよね <>
Name_Not_Found<>sage<>2011/07/14(木) 18:37:33.54 ID:???<> 上で楽天のアドバイスくれた人ありがとうございました
グリースモンキーで無事組めました
感謝してます <>
Name_Not_Found<>sage<>2011/07/14(木) 19:42:25.24 ID:???<> twitter APIのstatuses/public_timelineをjQueryの$get()で叩いて
テキストを取得したいのですが、具体的にどのような記述にすればよいのでしょうか? <>
Name_Not_Found<><>2011/07/14(木) 19:52:43.95 ID:Xx379buy<> >>705
連打するヤツのこと?
楽天鯖に迷惑かけないように、インターバル時間には気を使ってな
岡崎市立中央図書館事件みたいなことも無くはないわけだから <>
Name_Not_Found<>sage<>2011/07/14(木) 20:06:34.60 ID:???<> >>706
>>1の(1)
つかjQueryなんて習得するの簡単だしそれくらい自分で分かれよ
ttp://api.twitter.com/1/statuses/public_timeline.json
ttp://stacktrace.jp/jquery/api/ajax/jquery.get.html
ttp://stacktrace.jp/jquery/api/ajax/jquery.ajax.html#datatype
これで分からないなら諦めろ <>
Name_Not_Found<>sage<>2011/07/14(木) 21:01:56.48 ID:???<> >>707
常識的に何秒位のインターバルが必要ですか?
人気の商材は本当に数秒で売り切れる・・・・・ <>
Name_Not_Found<>sage<>2011/07/14(木) 21:16:22.03 ID:???<> サーバ側から何かアクションがあるまでは好きなようにやってよし
自分だけアクセス制限が掛かるのか利用者全体へのリロード規制なのかオマワリサンを召喚するのか
どんなアクションがあるかは不明だけど <>
Name_Not_Found<>sage<>2011/07/14(木) 21:23:57.98 ID:???<> >>710
試してみたけど0.25秒あたりが、インターバルの境目っぽいんで、0.3秒くらいの設定でいきます・・・・ <>
Name_Not_Found<>sage<>2011/07/14(木) 21:24:59.02 ID:???<> 素人が適当に組んだスクリプトじゃ
お巡りさんを召喚しかねないな <>
Name_Not_Found<>sage<>2011/07/14(木) 21:25:11.64 ID:???<> リクエストを送信するってのは、相手に手紙を送るようなもんだからね。
相手は内容見て対応を考えるけど、対応しきれない量を一気に送られたら処理しきれない。
具体的にどのくらいが処理しきれない量なのかは、相手による。
ここで重要なのは、相手が処理できるかどうかじゃなくて、相手がイヤがるかどうか。
「このぐらいなら処理できるけど、1人でこの量送ってくるのは業務妨害だな」と判断したら
それが正常に処理されたとしても、おまわりさんがあなたに連絡を取ってくるかもしれない。
相手(楽天)は商売でサーバ(店)用意してることを忘れずに。店先で暴れるのは基本厳禁。 <>
Name_Not_Found<>sage<>2011/07/14(木) 21:29:41.79 ID:???<> じゃぁ、スクリプト組んだ意味ないじゃないですか・・・・・
どうしようかな・・・
一般的にマウスのボタン連打とかでも0.5秒位は反射神経でいけると思うから、それ位かなぁ・・・ <>
Name_Not_Found<>sage<>2011/07/14(木) 21:31:56.93 ID:???<> そりゃ意味ないよ。普通どこでも禁止スクリプトだもの。 <>
Name_Not_Found<>sage<>2011/07/14(木) 21:40:25.12 ID:???<> 迷惑なスクリプトだな。 <>
Name_Not_Found<>sage<>2011/07/14(木) 21:41:01.08 ID:???<> ちょっと考えれば迷惑スクリプトだって子とはわかると思うんだけど、「じゃぁ、スクリプト組んだ意味ないじゃないですか」ってところからして自分のことしか考えてないんだろうな <>
Name_Not_Found<>sage<>2011/07/14(木) 21:53:19.79 ID:???<> まぁ、でも勉強になったから、意味はあったかな・・・・
他に応用できそうだし。
インターバルは1秒にします。
これで、繋がらなかったら、普通に諦めよう。。。。。
繋がれば数万儲かるけど・・・・ <>
Name_Not_Found<>sage<>2011/07/14(木) 21:56:24.14 ID:???<> 自分が該当ページを表示したときにだけスクリプトが走るんだろうからいけるでしょ
目的の画面が取得できるまでの間だけ走るとか条件つけてるだろうし <>
Name_Not_Found<><>2011/07/14(木) 22:26:50.76 ID:Xx379buy<> >>718
ねえよw
最低でも1分にしとけよ <>
Name_Not_Found<>sage<>2011/07/14(木) 22:27:25.49 ID:???<> >>720
いや、長くても30秒で売り切れるんですぜ?w <>
Name_Not_Found<>sage<>2011/07/14(木) 22:29:48.50 ID:???<> 「長期的に在庫が復活してつながる」
とかじゃなくて
「短期的に○時から一斉限定○個販売」
とかだから、普通に手動でやってる奴でも多分2秒位のインターバルでポストしてるはず <>
Name_Not_Found<><>2011/07/14(木) 22:29:52.63 ID:Xx379buy<> 一体何を買ってんだよw <>
Name_Not_Found<>sage<>2011/07/14(木) 22:33:01.93 ID:???<> あぁまた改行厨は池沼の法則が <>
Name_Not_Found<>sage<>2011/07/14(木) 22:44:30.83 ID:???<> 在庫云々は完全にスレ違い。
↓ここから別の質問か、もしくは以前の質問への回答↓ <>
Name_Not_Found<>sage<>2011/07/14(木) 22:59:29.60 ID:???<> ドラッグできないのは何が原因なんだろう <>
Name_Not_Found<>sage<>2011/07/14(木) 23:12:40.57 ID:???<> >>708
すいません。自分で見直して書いてみたのですがいまいち不安だったので
自分で書いた物は以下の通りです。
テキスト取得してエラー、正常でアラートを呼び出すように書きましたが
これをonClickで実行させるように書いたのですがテキストが取得できませんでした。
(IE8)
$.get(
'http://api.twitter.com/1/statuses/public_timeline.json',
function (data) { alert(data[0].text); },
'jsonp'
).error(function() { alert('error'); });
<>
Name_Not_Found<>sage<>2011/07/14(木) 23:28:31.83 ID:???<> >>727
そのコード自体は動いてるみたいだけど。
.error()が書けるのはjquery-1.5+から。動かないならバージョンの確認。
バージョンが足りてるなら、他を見直してみ。 <>
Name_Not_Found<>sage<>2011/07/14(木) 23:51:28.89 ID:???<> appendChildで<div id="a"><div id ="b">あ</div><div id="c">い</div></div>を追加して
document.getElementById("a").onmousedown = dragIn;が書かれた関数呼び出しても
”あ”とか”い”とか書かれた部分押してもdragInって動かない? <>
Name_Not_Found<>sage<>2011/07/14(木) 23:59:16.43 ID:???<> 動くとしてもfunction dragIn(evt)内でevt.tagetを拾ってもaじゃない可能性がある? <>
Name_Not_Found<>sage<>2011/07/15(金) 00:18:29.18 ID:???<> onMouseMoveで画像の入った要素を移動させようとしても、
画像の場合どこかにドラッグすれば画像をコピーできるような状態になっちゃうけどこの状態をOFFにできますか? <>
Name_Not_Found<>sage<>2011/07/15(金) 01:43:22.93 ID:???<> 質問です。
replaceが上手く動作しません
原因は何でしょうか
以下ソースです
<html><head>
<script language="javascript"><!--
function test() {
var value = "hogehogehoge";
value.replace("hoge", "hage");
alert(value);
}
--></script></head>
<body onLoad="test()"></body></html>
上記HTMLファイルを読み込むと、「hagehagehage」というアラートが出てくると思っていたのですが、
全く置換されず「hogehogehoge」がそのまま出てしまいます <>
Name_Not_Found<>sage<>2011/07/15(金) 01:57:03.37 ID:???<> value = value.replace(/hoge/g, "hage");
valueにいれなおさないと <>
Name_Not_Found<>sage<>2011/07/15(金) 01:59:08.80 ID:???<> >>733
入れてるつもりになってました…
先入観って怖いですね…
ありがとうございました <>
Name_Not_Found<>sage<>2011/07/15(金) 08:11:05.42 ID:???<> >>730
event.currentTarget を使えばいい <>
Name_Not_Found<>sage<>2011/07/15(金) 08:17:59.98 ID:???<> しかしここって荒らす人も居ませんし良いスレですね <>
Name_Not_Found<>sage<>2011/07/15(金) 08:31:22.93 ID:???<> そういうのいちいち書かなくていいから <>
Name_Not_Found<>sage<>2011/07/15(金) 08:40:09.19 ID:???<> 俺もそうは思うけど、直にそういう事言われるとリアクションに困って
大抵汚点をレス抽出で見つけて貼る <>
Name_Not_Found<>sage<>2011/07/15(金) 09:24:15.00 ID:???<> var re = new RegExp(str, "g"): // str = クソレス正規表現
while (var i = 0; i < thread_res.length; i++) {
var arr = thread_res[i].match(re);
for (var j = 0; j < arr.length; j++)
console.log(arr[j]);
}
}
問題は、クソレスの正規表現をどう定義するか <>
Name_Not_Found<><>2011/07/15(金) 16:23:08.45 ID:GCrjyMLc<> きっと単体の正規表現ではできない複雑な処理になるだろうから
正規表現でレスを抽出してreplaceで処理したい <>
Name_Not_Found<>sage<>2011/07/15(金) 16:24:00.78 ID:???<> TwitterのiPhone Safari版とか、スクロールが加速してスムーズなんだけど
ああいうのはJSで自作してるんでしょうか。
フレームワークとかで導入できるのはないですか? <>
694<><>2011/07/15(金) 20:20:06.51 ID:Cfry+3Ln<> 694ですが
ソースを書いてみたのですが
function timerset(){
setTimeout("countdown()",1000);
}
function countdown(){
var min = 5;
var sec = 60;
var count = 5*60;
count = count -1 ;
min = Math.floor(count /60) % 60;
sec = count %60;
if(sec < 10) { sec = "0" + sec; }
var value = min + ":" + sec;
document.form1.text1.value = value;
if (count <= 0) {
clearTimeout(timerset());}
}
カウントが止まったままになってしまうのはなぜでしょうか?ご教授お願いします <>
Name_Not_Found<>sage<>2011/07/15(金) 20:24:43.76 ID:???<> >>742
カウントを開始する処理はどこにあるの? <>
Name_Not_Found<>sage<>2011/07/15(金) 20:29:12.74 ID:???<> >>743
開始する処理を書けば動きますか? <>
Name_Not_Found<>sage<>2011/07/15(金) 20:50:39.39 ID:???<> >>744
setTimeoutは1回だけ動く。 <>
Name_Not_Found<>sage<>2011/07/15(金) 21:00:50.78 ID:???<> a:hoverとかあるじゃないですか?
あれをjavascriptでどう書くんですか?
×a:hover.style.color
×a.style.hover:color
とかしてみましたがだめでした <>
Name_Not_Found<>sage<>2011/07/15(金) 21:17:37.72 ID:???<> >>746
mouseover <>
Name_Not_Found<>sage<>2011/07/15(金) 21:21:56.80 ID:???<> >>745
ありがとうございます <>
Name_Not_Found<>sage<>2011/07/15(金) 21:48:24.00 ID:???<> >>747
つまりできないってことですね? <>
Name_Not_Found<><>2011/07/15(金) 21:52:54.01 ID:q5DYW9eS<> >>749
hoverになったらmouseoverイベントが飛んでくるからそこで処理すればいい <>
Name_Not_Found<>sage<>2011/07/15(金) 22:00:17.57 ID:???<> >>750の優しさに泣いた・・・ <>
Name_Not_Found<>sage<>2011/07/15(金) 22:35:46.93 ID:???<> onmouseイベントだとどう考えても遅いし
スタイルシートで指定できたらそうしたいんだろう
ただJavaScriptで指定してる以上・・・ <>
Name_Not_Found<>sage<>2011/07/15(金) 22:47:19.16 ID:???<> JSで動的にスタイルシートを埋め込む。 <>
Name_Not_Found<>sage<>2011/07/15(金) 22:50:15.72 ID:???<> >>752
>onmouseイベントだとどう考えても遅いし
それが体感できるほどの化石PCを使ってんの? <>
Name_Not_Found<>sage<>2011/07/15(金) 22:56:09.77 ID:???<> >>754
いや例えば例だとaだったけど
これがtdの各セルになると結構厳しいぞ
自分がどうとかより訪問者第一に考えないと <>
Name_Not_Found<>sage<>2011/07/15(金) 23:02:25.50 ID:???<> >>755
不特定の訪問者第一に考えるなら、tdにhoverなんて使えねえよ。 <>
Name_Not_Found<>sage<>2011/07/15(金) 23:15:04.08 ID:???<> スタイルシートなら別に問題ない <>
Name_Not_Found<>sage<>2011/07/15(金) 23:15:06.27 ID:???<> >>755
アホか>>754を書いた真意がまだ分からんのか
つかtableの各セルとかそんなの>>746のどこにも書いてないし、そもそも質問した本人でもないのに
横から「JavaScriptは重い」とか的外れなチャチャ入れんなよks <>
Name_Not_Found<>sage<>2011/07/15(金) 23:17:10.89 ID:???<> 何こいつ <>
Name_Not_Found<>sage<>2011/07/15(金) 23:46:01.78 ID:???<> >>742
var timerID = setInterval(countdown, 1000);
/* setTimeout : 設定間隔後に一度だけ実行される
setInterval : 解除しない限り設定間隔で実行され続ける
戻り値はタイマIDで、タイマ解除(clear〜)にはそのIDを使う
タイマ処理で関数を呼び出すだけなら、関数名だけでよい */
var count = 5 * 60;
/* カウント数を入れる変数は関数の外に出さないといけない
でないと値を保持しないし、関数が呼ばれるたびに初期値に戻されてしまう
関数外に出したなら関数内のcount操作部分にはvarを付けてはいけない
関数内でvarを付けると、同名だが別の変数ができて
そちらをカウントダウンしようとしてしまう
検索キーワード : ローカル変数、変数のスコープ */
function countdown() {
count = count - 1;
// 中略(表示処理)
if (count <= 0) {clearInterval(timerID);}
// 設定時に戻ってきたIDを引数として与えてタイマ解除
} <>
Name_Not_Found<>sage<>2011/07/16(土) 01:33:47.82 ID:???<> hoge.attachEvent('click', function(){alert(this)}, false)
addEventListnerではちゃんとhogeオブジェクトを返してくれるのですが、
attachEventではwindowが返ってきます。
attachEventでもhogeを返すにはどうしたらいいですか? <>
761<>sage<>2011/07/16(土) 02:10:57.56 ID:???<> すみません。自己解決しそうです。
メモリリークの心配があるそうですが、クロージャーとやらを使ってなんとかなりそうです。 <>
Name_Not_Found<>sage<>2011/07/16(土) 04:02:05.53 ID:???<> var outer3=function(){
var x = 1;
var jj=function (n){
alert(x+n);
return x = x +8+n;};
return jj;};
outer3()(2);//3
outer3()(2);//3
outer3()(2);//3
var aaf=outer3();
aaf(2);//3
aaf(2);//13
aaf(2);//23
という挙動になりouter3()(2);ではxの値が保持されないのは
何故ですか? <>
Name_Not_Found<>sage<>2011/07/16(土) 04:44:03.81 ID:???<> >>763
>>684の人かな?
「outer3()(2);」ではouter3関数をその都度実行しているから、
xもその度に初期化されて値を保持できない
「aaf(2);」でxの値が保持されているのは、
変数としてのaafに、実行されたouter3関数の状態と共にjj関数が代入されて、
その状態のxがaaf関数に対するレキシカル変数になっているから
「outer3()(2);」で値を保持するなら、xをouter3関数に対するレキシカル変数にしないと
具体的にはouter3関数外でxを変数宣言し、outer3関数内では代入だけに留めてみるとか <>
Name_Not_Found<>sage<>2011/07/16(土) 05:02:50.80 ID:???<> >>764
ありがとうございました。よくわかりました。 <>
694<><>2011/07/16(土) 06:03:50.12 ID:+GNitYfH<> >>760
少し書き直してみたのですが
min = 5;
sec = 60;
count = 5*60;
function timerstart(){
tim = setInterval(countdown(),1000);}
function countdown(){
count = count -1 ;
min = Math.floor(count /60) % 60;
sec = count % 60;
if(sec < 10) { sec = "0" + sec; }
document.form1.text1.value = min + ":" + sec;
if (count <= 0) {
clearInterval(tim); } }
4:59のまま止まってしまうのはなぜなのでしょうか? <>
Name_Not_Found<>sage<>2011/07/16(土) 06:52:49.57 ID:???<> >>766
setIntervalの引数のところ、countdownの直後の丸括弧は要らないです
関数名(関数を参照している識別子): countdown
関数呼び出し: countdown()
というのに注意してください
例)
setInterval(countdown, 1000);
// countdownを呼ぶようにsetIntervalでタイマ設定
// →OK 設定間隔で呼び出される(countdown() される)
setInterval(countdown(), 1000);
// まずcountdown()と呼び出して、その戻り値をsetIntervalでタイマ設定
// →NG countdown自体は戻り値を持たないので動かない
setInterval("countdown()", 1000);
// 文字列に収められたコードをsetIntervalでタイマ設定
// →OK 設定間隔で文字列内のコードが実行される(countdown() される) <>
Name_Not_Found<>sage<>2011/07/16(土) 07:15:10.08 ID:???<> >>767
setInterval(countdown, 1000);
にしてみたのですが、カウントされていかないのは他にダメなところがあるのでしょうか? <>
Name_Not_Found<>sage<>2011/07/16(土) 07:26:31.55 ID:???<> >>767
色々いじってたらカウント始まりました
ありがとうございます。
ただ数字が倍々に減っていくので、もうちょっと調べてみます
ありがとうございました^^ <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/16(土) 08:55:19.07 ID:???<> >>746
CSSの設定をしたいのなら、document.styleSheets から insertRule でOKです。
https://developer.mozilla.org/ja/DOM/document.styleSheets
https://developer.mozilla.org/en/DOM/CSSStyleSheet/insertRule
>>761-762
hoge でOKですが、実際にはイベントハンドラ関数が別個に定義されてるってことでしょうか?
仰るとおり、クロージャと Function#call を組み合わせれば対応できます。
unload 時の処理を入れればメモリリーク問題も解決可能です。
# わかっているとは思いますが attachEvent には第三引数はありませんし 'onclick' でなければ動きませんので、念のため…。
http://jsfiddle.net/hcvJs/1/ <>
Name_Not_Found<><>2011/07/16(土) 08:58:49.93 ID:i4Jg6kyq<> >>769
たぶんデクリメントする処理が
インターバルごとに追加されてる気がする
こんなんでどうだろう
http://jsbin.com/imaviy/3/edit
例えばインターバル時間を1秒として
10回処理を繰り返したときに経過する時間は10秒ではないことに注意 <>
Name_Not_Found<><>2011/07/16(土) 09:02:57.62 ID:i4Jg6kyq<> >>761
event.targetでなんとかなろうに <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/16(土) 09:18:37.23 ID:???<> >>772
JScript の attachEvent なら event.srcElement ですが、これはいわゆる this (event.currentTarget) とは違います。
>>770 のリンク先のp要素部分で click してみれば違いがわかるかと。
まあ、hogeに子要素がない条件であれば同じノードを返すのですが。
# 「event.srcElement から parentNode をたどって判定すればいいだろう」とのことならそれも有りだと思います。
ただ、ラッパー的な発想なら実装依存(DOM Eventsで未定義)な this よりも event.currentTarget を書き換えた方がいいかなーとは思います。
ついでに event.target も書き換えればほぼ DOM Events 形式のコードが書けますし。
http://jsfiddle.net/hcvJs/2/
こだわり出すと重くなるので必要最小限のコードがいいかも。
https://gist.github.com/882821 <>
Name_Not_Found<>sage<>2011/07/16(土) 09:41:20.73 ID:???<> onMouseMoveで座標を変えてあげるだけだと画像をドラッグしようとしたとき
ブラウザのデフォルト仕様?で画像データをドラッグする状態になってスムーズに移動しない状態になります。
これを修正するにはどんな記述をすればいいのですか?画像ドラッグ時の動作を無効化? <>
Name_Not_Found<><>2011/07/16(土) 09:44:54.39 ID:dG9aa+zW<> >>774
イベントキャンセルしていないじゃないの? <>
Name_Not_Found<>sage<>2011/07/16(土) 09:45:38.17 ID:???<> 調べた結果、こんなページが見つかったんですが
これを覚えれば>>774の課題は解消できますか?
http://www2.ocn.ne.jp/~yoochan/decoration/JavaScript/DHTML16.htm <>
Name_Not_Found<>sage<>2011/07/16(土) 09:48:00.16 ID:???<> >>776
全部コードを読んで試してくれ、ってこと?それぐらい自分で試して欲しい。
>>775で解決しないの? <>
Name_Not_Found<>sage<>2011/07/16(土) 09:51:49.93 ID:???<> >>774
https://developer.mozilla.org/ja/DOM/event.preventDefault
http://msdn.microsoft.com/ja-jp/library/cc409956.aspx <>
Name_Not_Found<>sage<>2011/07/16(土) 09:58:36.48 ID:???<> >>775
return falseのことでしょうか?でも、これって該当の課題と関係ないような気がするのですが。
実際の現象はここのサンプルを実行したときに画像をドラッグするときと同じで
chromeで実行すると、青くなって移動するけど移動元は残っててマウスボタンを離したときにその場所に動く動作
(アドレスバーに持っていけば画像を直接開ける状態)です。
http://javascript.eweb-design.com/0806_dim.html
の
http://javascript.eweb-design.com/sample/s0806_1.html <>
Name_Not_Found<>sage<>2011/07/16(土) 10:09:45.72 ID:???<> >>779
Google Chrome なら event.preventDefault で解決すると思うけど。>>778
「課題と関係ない」と自己判断しないでとりあえず試してみたら?
ミスリードする人も中にはいるけど、間違いがあれば訂正する人が現れると思うよ。 <>
Name_Not_Found<>sage<>2011/07/16(土) 10:13:11.05 ID:???<> 回答者の脳みそが高度すぎてよくついていけなくなるな
回答者の脳内で出来上がった答えを質問者が想像できないパターンがありそうだ <>
Name_Not_Found<>sage<>2011/07/16(土) 10:16:29.80 ID:???<> >>781
ついていけない内容を質問すればアドバイスがもらえるんじゃないかな? <>
Name_Not_Found<>sage<>2011/07/16(土) 10:19:10.16 ID:???<> イベントキャンセルはFAQにあるんだな、これが
http://fiddle.jshell.net/vSqKr/24/show/#Q9 <>
Name_Not_Found<>sage<>2011/07/16(土) 10:19:28.09 ID:???<> そもそも画像のドラッグ&コピーのデフォルトイベントはpreventDefaultで解除できるのですか?
window.attachEvent("onmousemove", dragmove);で呼び出している
function dragmove(evt){の先頭に
evt.preventDefault();を差し込んでみましたが特に変化はありませんでした。
img画像の上をドラッグしたらキャンセルされるような気がしましたが気のせいだったのか自分のコーディングのせいなのかすらわかりません <>
Name_Not_Found<>sage<>2011/07/16(土) 10:24:59.63 ID:???<> >>783
そっちは
<a id="nyan" onClick="return addimg('nyan');" href="img/nyan.jpg">img/</a>
でaddimgからfalse返してるので今のところ問題ないです。
今の課題は、addimgで追加したimgを結果としてはドラッグできるけど、ドラッグするときに>>779の状態に陥ります。
>>780を受けて>>784してみましたが変化がありませんでした。 <>
Name_Not_Found<><>2011/07/16(土) 10:30:51.47 ID:dG9aa+zW<> イベントの伝播をとめるstopPropagation()ってのもある
var cancelEvent = function (e) {
e.preventDefault();
e.stopPropagation();
return false;
}
俺はこんな感じで書いて使ってる <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/16(土) 10:31:12.90 ID:???<> >>784
http://javascript.eweb-design.com/sample/s0806_1.html に function dragmove はないようですが…。
デフォルトアクションを抑制するなら onmousedown ですね。
onmousedown="dragOn('img5'); event.preventDefault();" にてGCで動作することを確認しました。 <>
Name_Not_Found<>sage<>2011/07/16(土) 10:34:20.15 ID:???<> >>787
申し訳ありません。
dragmoveは自分のソースから拾ってきてます。
http://javascript.eweb-design.com/sample/s0806_1.htmlは挙動が同じなのでリンクしたページです。
onmousedownの方で試してみます。 <>
Name_Not_Found<>sage<>2011/07/16(土) 10:41:18.61 ID:???<> >>787
>>778です。
自ソースで
document.getElementById("nyanko").addEventListener("mousedown", dragSetIn, false);
から呼び出しているfunction dragSetIn(evt){の先頭に
evt.preventDefault();を差し込んだらうまくいきました。
ありがとうございます。
<>
think49 ◆bKk/qcAKuM <>sage<>2011/07/16(土) 11:24:41.08 ID:???<> >>786
わかって書いてるのかとも思いましたが、やっぱり変なので一応指摘を…。
event.preventDefault を使えない実装のために return false を併記しているようですが、event.preventDefault がなければ TypeError でスクリプトが停止してしまうので return false まで進みません。
あえてそうするなら下記のようになるかと。(stopPropagation も同じで IE8- は TypeError になると思います)
if (event.preventDefault) {
event.preventDefault();
} else {
return false; // IE対策なら event.returnValue の方が扱いやすいかも
}
あと、イベントの伝播とデフォルトアクション抑制は別物なので>>774のケースでは併用する意味がないです。
イベント伝播の抑止(stopPropagation)は親ノードでイベントを受け取りたくない場合に使います。
なぜかその辺混同して一緒くたに説明しているサイトがありますが、信用しないでください…。
>>789
解決して何よりです。
一応、HTMLの onmousedown 属性なら return false; でクロスブラウザできますが、外部スクリプト化するとFAQのように書く必要があります。
return false; は独自実装だったところをHTML5で再定義された「古くて新しい仕様」ですが、実装が追いついていない現状ではあえて選択する理由がないと思います。 <>
Name_Not_Found<>sage<>2011/07/16(土) 12:30:09.71 ID:???<> stopPropagation は使ったことないなあ。有効な使い道が思い浮かばない。 <>
Name_Not_Found<>sage<>2011/07/16(土) 12:43:59.96 ID:???<> if (event.preventDefault) {
event.preventDefault();
} else if(event.returnValue){
event.returnValue();
}else{
return false;
}
こうしておけば良い感じ? <>
Name_Not_Found<>sage<>2011/07/16(土) 12:59:03.55 ID:???<> >>791
複数のユーザがイベント仕掛けるときに変な動きしないためとか
htmlならあんまり使わないかもね
>>792
どうしてreturnValueを呼ぼうと思ったんだ <>
Name_Not_Found<>sage<>2011/07/16(土) 13:04:03.82 ID:???<> <div>
<a id="x001" href="#">x001</a>
<a id="x002" href="#">x002</a>
<a id="x003" href="#">x003</a>
</div>
とリンクを並べたときこれらのリンクのみクリックを検知したい場合、もっとシンプルでスマートな方法はありませんか?
現状は以下のように全パターンセットして同じ関数に飛ばして飛ばした先でevt.targetで拾っています。
document.getElementById("x001").addEventListener("click", clickon, false);
document.getElementById("x002").addEventListener("click", clickon, false);
document.getElementById("x003").addEventListener("click", clickon, false); <>
Name_Not_Found<>sage<>2011/07/16(土) 13:07:16.63 ID:???<> 間違った
event.returnValue = false;だ <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/16(土) 13:44:30.45 ID:???<> >>792,795
mouseover は true でキャンセルするので、万全を期すなら下記かなと。(IE のおかしな仕様を受け継いでます)
http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handler-attributes
if (event.preventDefault) {
event.preventDefault();
} else if (event.returnValue){
event.returnValue = event.type === 'mouseover';
} else {
return false;
}
>>794
document.getElementsByTagName('div')[0].addEventListener('click', function (event) {
if (event.target.tagName !== 'A') {
return;
}
alert('a clicked!');
}, false); <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/16(土) 13:45:47.70 ID:???<> >>796
失礼。return false; は return event.type === 'mouseover'; に置き換えてください。 <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/16(土) 14:01:15.69 ID:???<> すみません、嘘つきました。
if (event.returnValue) は event.returnValue === false の状況で正しく働きません…。
if (typeof event.preventDefault === 'function') { // [[Call]] を持つnativeオブジェクトなら
event.preventDefault();
} else if ('returnValue' in event) { // returnValueプロパティを持っているなら
event.returnValue = event.type === 'mouseover';
} else {
return event.type === 'mouseover';
} <>
Name_Not_Found<>sage<>2011/07/16(土) 14:10:16.44 ID:???<> IEで
if(window.attachEvent){は通るのに
window.attachEventで関数は実行されないの?
document.body.attachEventは動くけど…… <>
Name_Not_Found<>sage<>2011/07/16(土) 14:16:37.10 ID:???<> >>796
ありがとうございます
divにidつけておけばgetElementsByTagName('div')[0]を
getElementById("XXX")でもできそうですね <>
Name_Not_Found<>sage<>2011/07/16(土) 14:21:18.37 ID:???<> >>799
実行されるはずだけど <>
Name_Not_Found<>sage<>2011/07/16(土) 14:26:32.71 ID:???<> >>801
うそん
アラートとか仕込んでも無反応だったよ
バージョンは8.0.7601 <>
Name_Not_Found<>sage<>2011/07/16(土) 15:27:14.20 ID:???<> >>802
実行される
http://jsfiddle.net/DCrUk/ <>
Name_Not_Found<>sage<>2011/07/16(土) 18:49:01.43 ID:???<> thisって未定義だったのか <>
Name_Not_Found<>sage<>2011/07/16(土) 19:11:35.83 ID:???<> 何故俺の環境だとwindow.attachEventが動かないんだろう
何かがおかしいんだろうけど <>
Name_Not_Found<>sage<>2011/07/16(土) 19:15:33.45 ID:???<> >>784
ondragstart="return false;" ondrag="return false;"を仕込んどけ
イベント属性として直接書いた方が都合がいい <>
Name_Not_Found<>sage<>2011/07/16(土) 19:44:20.09 ID:???<> 完全分離を目指してそうだけどどうなのかね <>
Name_Not_Found<>sage<>2011/07/16(土) 20:00:58.34 ID:???<> CSSセレクタのようにパターンと即値が分離されていれば
即値であるノードの変更に影響されることがない
IEのbehaviorやMozillaのXBLはこの点で優れていた
即値である個々のノードに直接ハンドラをぺたぺたくっつけて
何か分離したかのように主張するのは、何かを勘違いしている
ま、dragstartもdragもバブルするから嫌なら祖先にでもつけておけ
いずれにせよイベント属性として書いておけば
document.body.innerHTMLを書き換えるような乱暴なスクリプトを使われても
ハンドラが生き残る可能性が高い <>
Name_Not_Found<>sage<>2011/07/16(土) 22:28:34.97 ID:???<> 800超えたので、「今」テンプレ論議あればどうぞ。次のテンプレ
からはFAQを復活させるということでFA? <>
Name_Not_Found<>sage<>2011/07/16(土) 22:49:31.40 ID:???<> 関連スレ>>3はネトゲも入ってるしチェンジか削除
>>15 <>
Name_Not_Found<>sage<>2011/07/16(土) 23:06:12.45 ID:???<> FAQのナンバーを本スレと別サイトでバラバラなのを直せよ
本スレの1〜9を前にもってきて残りを足せばいいだろ
これ書いた奴頭悪すぎ <>
Name_Not_Found<>sage<>2011/07/16(土) 23:17:07.56 ID:???<> >>811
よし、まかせた
頼んだぞ! <>
Name_Not_Found<>sage<>2011/07/16(土) 23:18:52.88 ID:???<> >>805
>>803も動かないならあなたの環境の問題
そうでないなら再現するコードを>>1紹介のサイトにUP <>
Name_Not_Found<>sage<>2011/07/16(土) 23:21:55.50 ID:???<> >>396でいわれてるけど名前をレス番にするルールも加えたらどうだろう
複数の人が長時間いると対応関係がわからなくなってくる <>
Name_Not_Found<>sage<>2011/07/16(土) 23:44:38.69 ID:???<> あと、IDもだしてくれると分かりやすい気がする。 <>
Name_Not_Found<>sage<>2011/07/16(土) 23:48:37.81 ID:???<> ID出しは消極的ながらも>>1に入ってるんだよなー
強制力がないためか誰も守ってないけど
強制すべきなんだろうか
別件で
http://kangax.github.com/es5-compat-table/
http://kangax.github.com/es5-compat-table/non-standard/
をFAQのリンク集に入れて欲しい <>
Name_Not_Found<>sage<>2011/07/16(土) 23:59:01.97 ID:???<> 難しいところだな
強制することに異論はないが、強制したことで「ID出せやゴルア!」な連中が出てくるのは避けたい
とはいえ、ここは良識ある人が多いからさりげなく指摘してくれるかもしれない <>
Name_Not_Found<>sage<>2011/07/17(日) 00:06:26.42 ID:???<> >>811
おまえは上から目線過ぎ
作った人はバラバラだし更新義務のあるカスタマーサポートでもないんだから <>
Name_Not_Found<>sage<>2011/07/17(日) 00:07:01.34 ID:???<> choromやFirefoxでは動いたのですが、IE8だと動きませんでした。どうしてでしょうか。
window.onload = function(){
if(window.addEventListener){window.addEventListener("mousemove", move, false);
}else if(window.attachEvent){window.attachEvent("onmousemove", move);
}else{window.onmousemove = move;}
}
function move(evt){
var msg2 ="move";alert(msg2);
} <>
Name_Not_Found<>sage<>2011/07/17(日) 00:10:02.69 ID:???<> 善意が前提の上でオナニーを原動力に成り立っております <>
Name_Not_Found<>sage<>2011/07/17(日) 00:12:40.25 ID:???<> 屈折した人だねえ <>
Name_Not_Found<>sage<>2011/07/17(日) 00:14:05.39 ID:???<> こういう人の原動力は悪意だから気にしないのが吉 <>
Name_Not_Found<>sage<>2011/07/17(日) 00:15:23.30 ID:???<> >>819
windowじゃなくてdocumentにつけろ
それとonloadなんて忘れろ、いらん <>
Name_Not_Found<>sage<>2011/07/17(日) 00:27:18.13 ID:???<> (案1) ID推奨、レス番を名前推奨
(案2) ID推奨、レス番を名前強制
(案3) ID強制、レス番を名前推奨
(案4) ID強制、レス番を名前強制
(案2) が妥当かな。ID強制するなら (案4) を推すが守るのが難しそうだ。
1ヶ月で1スレ消費するようだから様子見で試してみる手はある。 <>
Name_Not_Found<>sage<>2011/07/17(日) 00:33:23.26 ID:???<> >>823
もう少し詳しく教えていただけるとありがたいです <>
Name_Not_Found<>sage<>2011/07/17(日) 00:35:07.17 ID:???<> >>816
入れた
http://fiddle.jshell.net/vSqKr/25/show/ <>
Name_Not_Found<>sage<>2011/07/17(日) 00:35:13.61 ID:???<> window.onclick = function(){window.addEventListener("mousemove", move, false);}
ってやって画面をクリックしまくるとメモリ上では何が起きるのですか?
window.addEventListener("mousemove", move, false);を複数回実行してしまうと何か問題がありますか。 <>
Name_Not_Found<>sage<>2011/07/17(日) 00:37:12.24 ID:???<> >>825
document.attachEvent
何で window につけたん? <>
Name_Not_Found<>sage<>2011/07/17(日) 00:42:04.60 ID:???<> >>828
いろんなサンプルを見た結果です。
windowで動かなかったので今はwindow.document.body.attachEventにしてます(これだと動きました)。
上の方にあるできないわけがないよ!って意見やwindowにそもそもattachEvent入ってないよ的な意見をネット上から拾えましたが
そもそも何でIE8で動かないのかという理由に辿りつけなかったため、ここで質問しました。 <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/17(日) 00:43:50.66 ID:???<> >>829
バブリングが上方向に伝播するのは document までです。(DOM L2 Events 規定)
window まで伝播するのは HTML5 規定によるもの。
IE8- は HTML5 を実装していませんので window まで伝播しません。
http://www.y-adagio.com/public/standards/tr_dom2_events/events.html#Events-flow-bubbling-h3 <>
Name_Not_Found<>sage<>2011/07/17(日) 00:53:37.43 ID:???<> >>830
ありがとうございます。現状だとdocumentにつけておけばよさそうですね <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/17(日) 01:09:42.69 ID:???<> >>831
現状というか、将来的にも mousemove を window で待つ意味がないように思えます…。
document ではダメで window でなければならない状況ってあります?
window はそのままで document だけ書き換えるとかいう状況がある…のかなあ。 <>
Name_Not_Found<>sage<>2011/07/17(日) 01:16:35.08 ID:???<> ビューであるwindowと文書木であるdocumentは別空間だから
documentのイベントがwindowに伝播するというのが本当はおかしい
時空を超えてるわけだからな
windowに伝播するのはHTML5というか
ネスケIE時代のwindow.documentの挙動を追認したもの <>
Name_Not_Found<>sage<>2011/07/17(日) 01:32:50.67 ID:???<> ちなみに>>827は複数回登録されて複数回実行されるようなのですが正しいですか?
どっかで読み込んでるときはどっかで消しておかないと不味そうですね <>
Name_Not_Found<>sage<>2011/07/17(日) 01:38:37.56 ID:???<> 何度も仕様リンク出てんだから読んでやれ
addEventListenerは同じフェーズでの同じリスナ登録を無視する
それだけだ <>
Name_Not_Found<>sage<>2011/07/17(日) 02:22:22.64 ID:???<> attachEventは登録されるようだから不要になるタイミングで削除しておけばいいんじゃね? <>
Name_Not_Found<>sage<>2011/07/17(日) 02:27:15.82 ID:???<> window.onloadいらないってのはどういうことだろう <>
Name_Not_Found<>sage<>2011/07/17(日) 04:55:44.69 ID:???<> attachEvent周りの出来事はよくわからないものだらけ
二重登録だのメモリリークになるだの
すでに登録されているかどうかを確認するには配列用意して関数とか登録しておくしかないのかね?
登録する前に削除すればいい?エラーにならない? <>
Name_Not_Found<>sage<>2011/07/17(日) 06:28:52.24 ID:???<> だから何年も前にこのスレで「エセ外人」がたびたび言ってただろ
ほとんどの奴は理解できずに流してたようだが
バブルするイベントはdocumentに一個リスナを取り付ければ十分
この方法で二重登録が生じるとしたら、コードのバグに他ならない
documentはグローバル変数だから、メモリリーク対策にもなる
バブルしないイベントはHTMLの属性で書き、eventを使う
これは>>808のようにinnerHTML対策の他、cloneNode()対策でもある
DOM Events仕様では、ノードを複製してもイベントリスナは複製されないからだ <>
Name_Not_Found<>sage<>2011/07/17(日) 06:32:26.28 ID:???<> 二重登録が生じやすいのは、複製したノードにイベントリスナを付けるとき
IE7ではノードの複製でイベントハンドラも複製されるため
IE7とそれ以外で重複管理を分けなければならないからだ
エセ外人の方針でやれば、この重複管理の手間がいっさいなくなる
クロージャとか面倒な工夫を凝らしてエンバグするより
仕様をベースにシンプルに考えろ <>
Name_Not_Found<>sage<>2011/07/17(日) 06:56:13.85 ID:???<> 自分のコードが他人のコードと共存するのは普通に想定されることだが、
その他人のコードがHTMLをぐちゃぐちゃに書き換えることまで想定しなきゃならんとしたら、
俺は自分のコードがまともに動くことを保証する方をあきらめるだろうな。
document.body.innerHTMLで丸ごと書き換えるような乱暴なコードを許容するほど寛容なら、
window.undefined = 3; とかやられても許容する寛容さも持ち合わせてるんだろうが、
俺はそこまで仏にゃなれない。 <>
Name_Not_Found<>sage<>2011/07/17(日) 07:10:33.53 ID:???<> IDには固執しないほうがいいよ
PHPスレを見てきてご覧
あんな風になる <>
Name_Not_Found<>sage<>2011/07/17(日) 07:27:47.97 ID:???<> \u306f\u308d\u30fc\u308f\u30fc\u308b\u3069
closure compilerでスクリプト中に日本語があると
こんな具合に変換されるのですが
innerHTMLとかの指定でも日本語をそのままJavaScriptにかくのはよくないんでしょうか? <>
Name_Not_Found<>sage<>2011/07/17(日) 08:04:01.37 ID:???<> >>841
ん?二重登録で失敗するのは自分という話だろ?
undefined変数なんて使うのは普通に不用心なだけで、だからどうという話でもない
ついでに、attachEventで登録したハンドラの実行順は(ほぼ)ランダムだから
実行順が必要になるようなシビアなコードを書いたことのある奴なら
エセ外人の方針を応用すれば、かなり簡単になることが分かるはず
どうせキャッシュを使うだろうから、重複チェックはそれでも可能だ
あいつは本当にいいことを言ってたんだが、スレの奴らはほぼスルーだったな <>
Name_Not_Found<>sage<>2011/07/17(日) 08:14:59.76 ID:???<> >>844
イベントハンドラの登録方法をゴリ押ししたいのは分かったから。
そんなもん、理屈を分かってない奴は説明されても理解しようがないし、
サイ本読んでる奴はいちいち「おおなるほどすげえ!」なんて賞賛レス返さない。
スルーされて当然の内容だから。
俺が言ってるのは、自分が操作対象にしてる部分を
他人のコードが無節操に掻き回すなら、
俺は自分のコードの動作保証をしないってことだから。
javascriptの操作対象は多岐に渡る。たとえばCSSだって対象になる。
自分の捜査対象範囲のtableにposition:absolute;つけといて、浮動表示前提でスクリプト書いたら
他人のコードでルールを削除してやがったとか普通にありえる。
イベントハンドラの登録なんていう、ほんの極一部だけ他人のコードを気にしたところで
どうにもならん時はどうにもならないし、ダブリ登録なんてのは
そういった他のコードとの干渉を自分で作り上げてるのと大差ない。 <>
Name_Not_Found<>sage<>2011/07/17(日) 08:17:29.22 ID:???<> 限度を超えて干渉してくる側を修正しなけりゃどうにもならないことを、
干渉される側でどうにかしよう(どうにかできる)と考えるのは無駄すぎだと言いたいわけ。 <>
Name_Not_Found<>sage<>2011/07/17(日) 08:44:48.91 ID:???<> MDCのDOM documentのページのイベントハンドラの項目にはononlineとonofflineしかないから
documentにはイベントはこれらしか付けちゃだめなんだと思ってました <>
Name_Not_Found<>sage<>2011/07/17(日) 08:54:18.05 ID:???<> >>845
DOM Eventsのイベントフローってのが『他人のコードが無節操に掻き回』しても
『自分のコードの動作保証』をするための仕組みを提供しているのに
それを使わないで『干渉を自分で作り上げてる』のは何故だ?
あんた自身が『理屈を分かってない』から、ではないの? <>
Name_Not_Found<>sage<>2011/07/17(日) 08:57:45.11 ID:???<> >>846
あんた自身が言うように、イベントデリゲーションは基礎の応用にすぎない
それだけでいろんな問題を解決できる、と言ってるわけで
『限度を超えて』とか、何でそんな大層な話にしたがるのだろうか
本当はここからノードパターンの識別という話をしたかったんだがな
イベントのバブリングは、実はセレクタと非常に相性がいい <>
Name_Not_Found<>sage<>2011/07/17(日) 09:47:25.62 ID:???<> >>848
提供されてねえよw
Array.prototype.length = 0;
他人の書いたこの1行だけでもプログラムは崩壊する。
こんなのが山ほどあるのに、いちいち対応してられるかよ。 <>
Name_Not_Found<>sage<>2011/07/17(日) 10:17:24.29 ID:???<> >>850
イベントフローの話から、なんでArrayが出てきた?
まあそれならそれで、『崩壊』するコードの例と実行環境を出してくれ
あんた、ひょっとしてプロトタイプチェーンもよく理解してないんじゃないのか?
さっきundefined変数を普通に使ってるようなことを書いてたし、心配してはいたんだが <>
Name_Not_Found<>sage<>2011/07/17(日) 10:20:42.67 ID:???<> >>850
で、俺はイベントデリゲーションのメリットを挙げたが、あんたはデメリットを挙げない
あんたが「自分には必要ないと思っている」のは分かったが、それは俺の主張に対する反論にはならず
俺が『ゴリ押し』している根拠にもならないことは、理解しているよな?
イベントデリゲーションのデメリットは大きく2個あると俺は考えるが
あんたからそれが出てこないということは、大した問題ではないのだろう
さるさんも出てきたし、俺はここまでにするよ <>
Name_Not_Found<>sage<>2011/07/17(日) 10:32:25.38 ID:???<> >>824
その4つの中なら1だなぁ・・・
>>842でも出てるけどほんと悲惨
IDに関してスレに記述した当初はさほど問題は無いけど
そのうち強制じゃなきゃだめだという風にかわってく
<>
Name_Not_Found<>sage<>2011/07/17(日) 10:44:05.23 ID:???<> >>852
横からだけどイベントバリデーションは話の発端となっただけで>>850はイベントバリデーションの話はしてないと思う。
「初心者にJavaScriptの基礎(イベントバリデーション等)を覚えさせるより、初心者がいい加減なコードを書いても動くように上級者が書いた方が手間が少ない」
彼はこれしかいってない。
prototype汚染を回避するために Array.prototype を定義しないのと理由は同じ。
「addEventListener を封印してHTMLのイベント属性を使えば初心者でもわかるだろ」ってこと。
理屈はわかる。裾野を広げればどこまでもルール無用のコードになって保守性が著しく低下するから賛成しないけど。
そもそも、コーディング規約を作って初心者に教える努力を怠らなければ解決できる話。 <>
Name_Not_Found<>sage<>2011/07/17(日) 11:01:13.27 ID:???<> >>853
IDは確かに強制しない方がいいかもね
ただ、レス番を名前は複数人が質問したときにホント困るから守って欲しいんだよなあ
「IDなし、名無しの状況で誰が誰かわかれ」って方が無理があると思う
(案1) ID推奨、レス番を名前推奨
(案2) ID推奨、レス番を名前強制
(案3) ID強制、レス番を名前推奨
(案4) ID強制、レス番を名前強制
(案5) ID推奨、レス番を名前強く推奨
(案6) ID強制、レス番を名前推奨 or ID推奨、レス番を名前強制
(案5) > (案6) > (案2) かなあ
(案6) は複雑すぎるかもしれないけど、強制対象を選択できる自由度はある <>
Name_Not_Found<><>2011/07/17(日) 11:07:10.98 ID:EPI/oGvW<> わざわざ名前欄に番号を入れるのを忘れることはあっても
メ欄を空のままにすればID出るから
と、ここまで書いて、専ブラでsageをデフォにしてるヤツのことを思い出した <>
Name_Not_Found<>sage<>2011/07/17(日) 11:09:25.55 ID:???<> 匿名掲示板で名前を強制すると自演が増える法則 <>
Name_Not_Found<>sage<>2011/07/17(日) 11:14:15.57 ID:???<> (案1)
(3) メール欄は空欄、2回目の投稿時は「前回のレス番」を名前にすることを推奨します。長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(案2)
(3) メール欄は空欄を推奨。2回目の投稿時は前回のレス番を名前にして下さい。長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(案5)
(3) メール欄は空欄を推奨。2回目の投稿時は前回のレス番を名前にすることを強く推奨します。長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(案6)
(3) 「メール欄は空欄」「2回目の投稿時は前回のレス番」のいずれかを守ってください。長い間連続して質問する場合にレス番かIDを明示すれば、質問の流れが回答者に伝わりやすくなります。
<>
Name_Not_Found<>sage<>2011/07/17(日) 11:16:33.02 ID:???<> レス番を入れて貰った方がいいな
IDは日付を跨いだときに質問の流れを追うのが面倒 <>
Name_Not_Found<>sage<>2011/07/17(日) 11:19:48.40 ID:???<> >>857
質問者が自演して何か得することある? <>
Name_Not_Found<>sage<>2011/07/17(日) 11:35:51.47 ID:???<> attachEventのdragとかはdocumentにそれぞれ1個だけつけておいてその中でどの領域がドラッグされただのを検知してやればいいって話?
登録時にgetElementByIdとかで指定するんではなく <>
Name_Not_Found<>sage<>2011/07/17(日) 11:49:47.30 ID:???<> >>851
まず第一に、JavaScriptが操作対象にしてるのは、別にDOMに限ったことじゃない。
document.body.innerHTMLを誰もが操作できるのと同じように、
Array.prototypeも誰もが操作できるし、
そうしようと思えば、誰もが document.addEventListener = null; なんてことができる。
JavaScriptの環境ってのは、そもそもが、カギのかかってない倉庫みたいなもんなわけ。
誰かがdocument.body.innerHTMLに丸ごと干渉するコード、
たとえば丸ごと書き換えるようなコードを書く可能性がある。それ自体は正しい。
だが、それに対する対処として正しいのは、そんなバカげた処理をしないように
干渉するコードを書き直すことであって、そのコードと共存する側のコードが
そんなバカげたコードの存在を前提にして、面倒な処理をするのは無駄すぎる。
標準化されたDOMが提供しているものがあるとすれば、
それは、他者のコードに極力干渉することなくコードを書く手段を提供している。
全員が全員これに従って、お互いに極力干渉しないコードを書けば、
問題が発生する可能性は非常に小さくなる。
だから標準に従うことは重要だし、干渉しないことに注力することも必要。
だが、DOMの実装が、JavaScript内でJavaScriptに普通に従って実装されている以上、
DOM標準に従ってコーディングしたからといって、他からの干渉に完璧に対処して
正常な動作を保証することができるというわけじゃない。そんな優れたサンドボックスは提供されてない。 <>
Name_Not_Found<>sage<>2011/07/17(日) 11:52:03.31 ID:???<> >>860
質問者になりすました第三者が荒らしたりする <>
Name_Not_Found<>sage<>2011/07/17(日) 12:05:51.29 ID:???<> >>863
自演じゃないやん <>
Name_Not_Found<>sage<>2011/07/17(日) 12:09:11.12 ID:???<> 下手にテンプレを大きく変えようとするからおかしくなる
今まで上手くいっていたのをわざわざ変える必要はない
プログラムとおんなじだよ <>
Name_Not_Found<>sage<>2011/07/17(日) 12:16:16.67 ID:???<> クロージャは罪なの? <>
Name_Not_Found<>sage<>2011/07/17(日) 12:17:17.65 ID:???<> ここまで当然のように語られてるから聞くのが怖いのですが
エセ外人さんが言っていたレスはどこまで辿れば見れますか? <>
Name_Not_Found<>sage<>2011/07/17(日) 12:39:37.05 ID:???<> 問題視されてるんだから上手くいってない面もあるんだろう
実際流れがわかりにくい <>
Name_Not_Found<>sage<>2011/07/17(日) 12:59:34.74 ID:???<> JavaScript 第5版
http://books.google.co.jp/books?id=RDqQXFA42-kC&printsec=frontcover
初めてのJavaScript
http://books.google.co.jp/books?id=om2V2n9zw0oC&printsec=frontcover
Head First JavaScript: 頭とからだで覚えるJavaScriptの基本
http://books.google.co.jp/books?id=JxnSxoUdlXEC&printsec=frontcover
ここらへん関連リンクに入れない?
>>858安だったら5だな
強制はどれかをしていない場合テンプレ読めで終わる事が多い
そういう風潮はちょっと残念だし <>
Name_Not_Found<>sage<>2011/07/17(日) 13:04:14.34 ID:???<> (案7)2回目以降レス番を名前推奨
俺これね <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/17(日) 13:50:02.38 ID:???<> >>840
> 二重登録が生じやすいのは、複製したノードにイベントリスナを付けるとき
> IE7ではノードの複製でイベントハンドラも複製されるため
IE9 で修正されたバグのようです。IE8 で未修正であることを確認しました。
http://jsfiddle.net/8nxpa/3/ <>
Name_Not_Found<>sage<>2011/07/17(日) 14:11:02.30 ID:???<> >>869
入れた
http://fiddle.jshell.net/vSqKr/26/show/ <>
Name_Not_Found<>sage<>2011/07/17(日) 14:15:32.65 ID:???<> detachEventしようとしたイベントがないとエラーになるの? <>
Name_Not_Found<>sage<>2011/07/17(日) 14:18:26.72 ID:???<> >>873
試せばわかることを何で聞くの? <>
Name_Not_Found<>sage<>2011/07/17(日) 14:21:13.24 ID:???<> (案1) ID推奨、レス番を名前推奨 // >853 (1票)
(案2) ID推奨、レス番を名前強制 // >824 (1票)
(案3) ID強制、レス番を名前推奨
(案4) ID強制、レス番を名前強制
(案5) ID推奨、レス番を名前強く推奨 // >855,869 (2票)
(案6) ID強制、レス番を名前推奨 or ID推奨、レス番を名前強制
(案7) 2回目以降レス番を名前推奨 // >870 (1票) <>
Name_Not_Found<>sage<>2011/07/17(日) 14:25:41.82 ID:???<> 誰か Vol.87 の過去ログ持ってない?
http://www2.atpages.jp/mirror/2ch/javascript/ にUPしてくれると嬉しい <>
Name_Not_Found<>sage<>2011/07/17(日) 14:39:57.51 ID:???<> した <>
Name_Not_Found<>sage<>2011/07/17(日) 14:42:15.35 ID:???<> うわかぶった <>
Name_Not_Found<>sage<>2011/07/17(日) 14:42:57.27 ID:???<> >>877
ありがとう <>
Name_Not_Found<>sage<>2011/07/17(日) 14:44:42.00 ID:???<> >>878もありがとう <>
Name_Not_Found<>sage<>2011/07/17(日) 15:39:35.91 ID:???<> ここまでのテンプレまとめ
http://codepad.org/CdUhJKNu <>
Name_Not_Found<>sage<>2011/07/17(日) 15:45:56.21 ID:???<> (2) ユーザの迷惑になるスクリプトの質問はご遠慮ください。
↓
(2) 迷惑になるスクリプトの質問はご遠慮ください。
迷惑するのはユーザーだけではなくなってるから変えたほうが良いのかもしれない
<>
Name_Not_Found<>sage<>2011/07/17(日) 17:47:24.16 ID:???<> エセ外人ってか、
やたら「アホ外人が俗に言うイベントデリゲーション」とか書いてた人だろう。 <>
Name_Not_Found<>sage<>2011/07/17(日) 19:17:24.05 ID:???<> >>862
「俺がグローバルにiを使うからお前らは使うなよ」
「いやvarがあるんだから使ってよ、こっちも使いたいんだから」
「そんな馬鹿げたコードの存在を俺は認めない」
「…わかったよ、こっちがvarすればとりあえず回避できるから、君らもそうしな」
「まったく馬鹿げたコードを書く奴は困る」
お前の言ってるのはこういうことだぞ? <>
Name_Not_Found<>sage<>2011/07/17(日) 19:29:01.31 ID:???<> (2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
…とか。
<>
Name_Not_Found<>sage<>2011/07/17(日) 19:44:50.54 ID:???<> (2) 迷惑な質問はご遠慮ください。 <>
Name_Not_Found<>sage<>2011/07/17(日) 19:46:00.57 ID:???<> >>884
862のなにをどう解釈したのか知りたくもないが、
とりあえずカケラも理解できないレベルなんだってことは分かった。
俺の言ってるのは、飲酒運転する車が道路を走ってる場合に、
飲酒運転の車を取り締まれよってことだ。全員が道交法を守れば問題ないと。
ゴリ押ししてる奴の論理は、飲酒運転する車がいることを想定して
歩行者が避けりゃいいと言ってるわけだ。被害者にならないように自衛(笑)しろと。 <>
Name_Not_Found<>sage<>2011/07/17(日) 19:49:07.62 ID:???<> たとえ話は馬鹿っぽいからやめたほうがいい <>
Name_Not_Found<>sage<>2011/07/17(日) 19:54:06.57 ID:???<> >>887
だから、お前自身が飲酒運転の酔っ払いだってことにはよ気づけ
道交法を守るべきはお前であり、直すべきはお前の糞コードなの <>
Name_Not_Found<>sage<>2011/07/17(日) 19:57:04.21 ID:???<> >>887
お前みたいな酔っ払いがいるから
歩行者はちゃんと歩道を歩きましょうと言ってるんじゃねーの <>
Name_Not_Found<>sage<>2011/07/17(日) 20:14:07.14 ID:???<> >>887
グローバル変数を避ける
組み込みオブジェクトのプロトタイプを拡張しない
ホストオブジェクトを上書きしない
これらと同じく、イベントデリゲーションも『道交法を守』って事故を起こさないためなのに
なぜこれだけをやたらと嘲笑しているのか、ちょと意味が分からない <>
Name_Not_Found<>sage<>2011/07/17(日) 20:32:22.68 ID:???<> >>862
Array.prototype ならともかく、 document.addEventListener = null; でも動作するようにはしないと思うんだが
document.body.innerHTMLに丸ごと干渉するコードは方法としてはあり得るが、それで既存のイベントを派がして期待通りに動作しなくなるなら正しいとはいえない
<>
Name_Not_Found<>sage<>2011/07/17(日) 20:49:04.97 ID:???<> その辺のQAサイトを見てみろ
body.innerHTMLや、広範囲のinnerHTML書きかえの回答にベストアンサーが山ほどついてる
単語のハイライトとか、Ajaxで範囲置きかえとか <>
Name_Not_Found<>sage<>2011/07/17(日) 20:58:00.24 ID:???<> 結局なんなの?結論をどうぞ <>
Name_Not_Found<>sage<>2011/07/17(日) 21:01:45.30 ID:???<> ところでaddEventListenerやattachEventはdocument全体にやるのと
getElementByIdなどで個別に追加するのとではどちらがクールなの? <>
Name_Not_Found<>sage<>2011/07/17(日) 21:02:00.32 ID:???<> >>889
酔っ払いを排除するという方針を言ってるに過ぎない俺を排除したとして、
結果はいずれ撥ねられる初心者と撥ねるボケコードが残るだけだが?
>>891
違ってるぞ。
「グローバル変数を避ける」「組み込みオブジェクトのプロトタイプを拡張しない」
「ホストオブジェクトを上書きしない」は、自分・他人のコードを両方とも共存することを保証するためのもの。
で、今回この話の発端は>>808や>>839だが、俺からすれば808の
「ハンドラが生き残る可能性が高い」なんつアホなコメントは前述の3つと全く別次元の話。
共存できることを『保証』できなければ意味がない。
まとめて書き換えられてハンドラが対象にしていたオブジェクトがデタラメな変更されてたら
生き残ったところでデタラメな動作するかせいぜいエラーがオチだ。
>>892
JavaScriptの動作環境は、いかようにもブチ壊せるというたとえ。
いかようにもぶち壊せるのだから、他人のコードに求めるのは、壊さないよう祈るだけにしとくに留めて
それ以上のことをしようとすることの意味はほぼ0だと悟るべきだってこと。
>>893
他人のコードと共存せず、自分のコードだけで動かすならどんな実装だろうが問題なかろう? <>
Name_Not_Found<>sage<>2011/07/17(日) 21:06:56.88 ID:???<> >>895
対象が1つならそれそのものにつけても不便はないし、実装は簡単にできるな。
同じような内容がたくさん必要な場合、たとえば1年間のカレンダーをtableで表示して
1日ごとのセルをクリックで個別処理するなら、tableにでもくっつけて
クリックされたセルで分離した方がメモリなんかも効率がよくなる。
ケースバイケース。確定の回答なんてない。 <>
Name_Not_Found<>sage<>2011/07/17(日) 21:07:07.52 ID:???<> 酔っ払いが「酒に飲まれてはいかん!」と説教しながら飲酒運転するの図 <>
Name_Not_Found<>sage<>2011/07/17(日) 21:15:27.14 ID:???<> >>895
バブリングを使っとけば、例えば表データの行を増やしたときに
ハンドラを付けるか悩まずに済む
クライアント側スクリプトは、1つの文書木を皆が争って使ってる状態なわけだ
自分のハンドラをそういう争いに巻き込ませたくなければ
震源地からできるだけ遠くで監視させた方が良い
であれば、震源地の情報を問い合わせるeventオブジェクトの存在意義が分かるだろ
イベントフローやeventオブジェクトは、そういう必要性から考案されている
まあ、IE4とNN4を単純合成しただけってのもあるけどな <>
Name_Not_Found<>sage<>2011/07/17(日) 21:33:40.35 ID:???<> >>896
俺が『ハンドラが生き残る可能性が高い』と言ったのは、バブリングしないイベント属性の方な
とりあえず、イベントデリゲーションにデメリットがあるなら、まずそれを書け
それとも「イベント属性」が気に入らないなら、俺の主張する「メリット」に反論してみせろ
自衛(別には自衛だけを語ったつもりもないが)が「愚かしい」という
お前の価値観は分かったが、「手法」に対して「価値観」で反論してくんな <>
Name_Not_Found<>sage<>2011/07/17(日) 22:51:12.82 ID:???<> >>900
説明ってのは、説明して理解できる人にならば簡単だが、
そこまで達してない人には非常に困難なものなわけで。
ここまでのやりとりで、既に「とことん低いところだなぁ」としか見えてないわけよ。
「undefined変数なんて使うのは普通に不用心なだけで、だからどうという話でもない」
なんて平気で書いちゃうとなれば、いかに経験不足なのかは自ずと知れる。
そのレベルに合わせるために、できる限りリアルのたとえ話に置き換えてきたし。
ぶっちゃけると、分かるレベルまで引き落として説明できる自身がないw 教師じゃないんでね。
undefinedを使うのが無用心。笑い話すぎるが、反論できるかい?
はっきり言っておくぞ。この1行は、俺は上からモノを言ってる。
俺の上からモノを見て言ってるつもりなら、とりあえずまともな反論見せてくれ。
それで少なくとも上下が分かると思うぞ。 <>
Name_Not_Found<>sage<>2011/07/17(日) 22:53:13.71 ID:???<> 湧いてるなぁ <>
Name_Not_Found<>sage<>2011/07/17(日) 22:56:32.19 ID:???<> 上から物をいってたら議論にならないのは明白だな <>
Name_Not_Found<>sage<>2011/07/17(日) 23:09:07.08 ID:???<> >>901
> そのレベルに合わせるために、できる限りリアルのたとえ話に置き換えてきたし
あー、頼むから『リアルのたとえ話』ではなく「リアルのコード」で説明してもらえると助かる
> undefinedを使うのが無用心
んー、お前がundefinedをどう使ってるのか「リアルのコード」で見せてもらえんかのう
で、順番としてまず「お前の反論」が先な、道交法はしっかり守ろう <>
Name_Not_Found<>sage<>2011/07/17(日) 23:31:17.08 ID:???<> 極力他人のコードに干渉しないようにクールなコーディングをすればいいだけでしょ?
いつまで喧嘩してんの? <>
Name_Not_Found<>sage<>2011/07/17(日) 23:36:00.99 ID:???<> そうなんだが、コーディングそっちのけで上下関係にこだわるゴリラがいる
適当なメスにでもマウントしとけっての <>
Name_Not_Found<>sage<>2011/07/17(日) 23:42:02.49 ID:???<> 議論は構わんのだがIDか名前を出してくれんかのう <>
Name_Not_Found<>sage<>2011/07/17(日) 23:48:41.56 ID:???<> >>904
ああそう。じゃ、先に。
あるデータを別の形式に変換するクラスを設計するとする。とりあえず myConv にでもしておく。
このクラスには set と get メソッドがあって、AAA・BBB・CCC...という複数の形式のデータを受け取って、
任意の形式で返すことにする。
// AAA 形式のデータ data1 を BBB形式にする
var obj = myConv();
obj.set(data1, "AAA");
var data2 = obj.get("BBB");
こういうデータ変換クラスを使うと、特定の形式への変換が多くなるのはよくあることだから、
setやgetに対して引数で形式を指定しなかった場合、デフォルトで AAA 形式を指定したものとなるように仕様変更する。
そうするとsetやgetの内部では、2つの実装方法が考えられる。
1つは arguments.length を見る方法。もう1つは形式であるべき引数がundefinedであるかどうか。
まあ、これだけなら arguments.length を見た方が確実だろう。
追加の仕様変更として、そもそも形式名は特定の文字列なのだから、
形式名をそのままメソッドにして、setやgetを引数に応じて呼び出せたら便利だという要望がきたとする。
つまり data2 = obj.set(data1, "AAA").get("BBB"); は data2 = obj.AAA(data1).BBB(); と書けた方が楽だと。
形式名メソッドの実装は、arguments.lengthを見て、setかgetを区別してそれぞれ呼び出せばそれで済む。 <>
Name_Not_Found<>sage<>2011/07/17(日) 23:49:55.55 ID:???<> さて、さらなる仕様変更として、形式FFFの対応を要求されたとする。
形式FFFは引数にdataだけではなく、もう1つ別のパラメータを受け取る可能性がある。
とりあえず -10 <= param <= 10 となる整数とする。
FFFの呼び出しは obj.set(data1, "FFF", param); data2 = obj.get("FFF", param); となる。
形式名メソッドなら obj.FFF(data1, param); data2 = FFF(param);
これも形式名同様に、省略されたら特定の値をデフォルトとして使いたいとする。
こうなると、arguments.length を見るだけで区別しようとするのはむしろやっかいになってくるのが分かる。
この上さらに、形式GGGを実装し、パラメータを2つ受け取る可能性があり、それぞれデフォルト値がある、
なんてことになると、分岐はいくらでも複雑になる。パっと見では手がつけられないスパゲッティの素となる素質十分。
ここで最初の設計に戻って、そもそもundefinedであるか否かで判断するように仕様変更してしまうと、
この複雑さは全て解消される。
ここまで読んで「パラメータを全部1つのハッシュで指定すればいい」という考え方を持ってる人も出るだろうけど、
それだと obj.set({ data : data1, type : "FFF" /* param指定なし */ }).get({ type : "GGG", param1 : 2, param2 : 3 }); は読めても、
obj.FFF({ data : data1 }).GGG({ data : null, param1 : 2, param2 : 3 }); なんてやられた場合に判断がやっかいになるし、
そもそも形式名でメソッドを作って短縮形にするのは、短く単純に書きたいのだから、obj.FFF(data1).GGG(2, 3); の方が見通しがよく、
クラス利用者のタイプ量も少なくなる。 <>
Name_Not_Found<>sage<>2011/07/17(日) 23:50:55.46 ID:???<> できるだけ小さな例で説明するように頑張ってはみたが、そもそもundefinedを有効利用できるのは、
引数の処理部分が複雑になってくる辺りからだから、どうしても小さな例では説明しきれなかった。
だが、こんな感じで、指定されなかった引数をundefinedで判断することで大きく見通しがよくなるパターンというものが
ちゃんと存在するのは間違いない。大きなプログラムになればなるほど、そういう箇所が増えてくる。
この程度のことも思いつけないのならば、今までずっと小さなプログラムで満足して、価値を知る機会がなかったってことだろうよ。
だからあんな笑い話を平気で書いてしまう。 <>
900,904<>sage<>2011/07/18(月) 00:00:33.87 ID:???<> >>908-910
そこは俺の「イベント関連の手法」に対する反論を書くところだろ……
まあいいや、イベント関連の俺の主張に瑕疵はなかったということでで良いんだな?
この議論はこれで終わり、と。
で、undefined に関してだな
> undefinedであるか否かで判断するように
うん、そうだね
それをどうやって判定するの?と聞いていたのよー
あんた、ホントに議論が下手だなあ <>
Name_Not_Found<>sage<>2011/07/18(月) 00:39:20.07 ID:???<> mousemoveで構造にかかわらず対象の範囲内でドラッグされれば移動するクールな方法はありますか?
たとえば<div id = "xxx">[<p>とか<div>とか状況によって変わり、<div>の中にさらに<div>など階層も変わる]</div>で囲まれている
今はgetElementById("xxx")でaddEventListener or attachEventをセットして
eventが役に立ちそうにもないのでdocument.getElementById("xxx").style.leftで直接要素指定してleftとtopの値を変えている <>
Name_Not_Found<>sage<>2011/07/18(月) 00:49:11.86 ID:???<> >>862
の
>誰かがdocument.body.innerHTMLに丸ごと干渉するコード、
のくだりは、ユーザースクリプトを作る上では正しいと思うけどな。
サーバー側で実装するなら好きにしろという感じ。
<>
Name_Not_Found<>sage<>2011/07/18(月) 04:18:59.37 ID:???<> jQueryだか何だかよく解らないのですが
たまーにサイトで背景が電気を消したみたいに黒くなって
YES or NO みたいなの出るヤツがありますが、アレ知ってる人います? <>
Name_Not_Found<>sage<>2011/07/18(月) 04:31:18.97 ID:???<> ライトボックスっつーライブラリ <>
Name_Not_Found<>sage<>2011/07/18(月) 05:54:29.43 ID:???<> >イベント関連の俺の主張に瑕疵はなかったということでで良いんだな?
よくねえよ。日本語読めよ。
>説明ってのは、説明して理解できる人にならば簡単だが、
>そこまで達してない人には非常に困難なものなわけで。
で
>既に「とことん低いところだなぁ」としか見えてないわけよ。
なんだよ。
お前に説明できるレベルまで落として書こうにも、
if (変数 === undefined) すら理解してないレベルの奴に、
どう考えても5レスじゃ納まらない量の、お前がずっと要求している
サンプルコード書く気力がないよ。 <>
Name_Not_Found<>sage<>2011/07/18(月) 06:00:17.37 ID:???<> >>915
おお、これでした
ありがとうございます <>
Name_Not_Found<>sage<>2011/07/18(月) 06:29:03.96 ID:???<> >>912
よくわからないからサンプルコードを掲示して <>
911<>sage<>2011/07/18(月) 06:55:13.76 ID:???<> >>916
>if (変数 === undefined)
よし、やっとこれが出てきたな
でだ、undefined=1される危険性を知りながらtypeofもvoidも使わないのは何故だ?
また、>>909の例なら==nullでも十分だが、「わざわざ危ない橋を渡っている」理由は何だ?
そして、あんたの日本語読解力のために言っておくが、俺はundefined「変数」を問題視していることを確認せよ <>
Name_Not_Found<>sage<>2011/07/18(月) 08:27:50.62 ID:???<> >でだ、undefined=1される危険性を知りながら
そんなもん単純だろうってか、もう何度も書いてるじゃねーかーーーーーーー!(苦笑)
「そんなもんを気にするようなバカげたコード書く奴は頭冷やせ。
JavaScriptの実行環境は、言語が安全な提供を保証するべきことまで簡単にブチ壊せる。
カギのかかってない倉庫だ。誰もが簡単に道具を持ち出し、偽の道具を置くことだってできる。
そこを気にするヒマがあったら、そうならないよう注意深くコードを書くことを周知徹底しろ」
これだけの話だ。
大きなプログラムになるほど他者のコードと干渉するかもしれない部分が増えてくる。
極力干渉しないコーディングをすることだけに注力するとしても、どれだけ努力してもまだ足りない。
くだらない誤魔化しテクで醜いコード書いて自惚れるようなチャチなプログラマがいても別にかまわんが、
それを知ったかして他人に広めようとすんな。
変数が undefined であることを比較するなら変数 === undefined が最もわかりやすい。
こういうところをバカげたくだらないテクニックでコーディングする奴は
極力干渉しないコーディングをすることだけに注力することが全くわかってない。 <>
Name_Not_Found<>sage<>2011/07/18(月) 08:29:00.36 ID:???<> >>912
例えば、イベントターゲットがセレクタ #HOGE ~ div #xxx の文脈にあるか調べる
function handleEvent(e) {
for (var context = [], n = e.target; n; n = n.parentNode)
if (n.id === 'xxx') for (context.push(n); n = n.previousSibling; )
if (n.nodeName === 'DIV') for (context.push(n); n = n.parentNode)
if (n.id === 'HOGE') {
context.push(n);
context.reverse(); // 0=#HOGE, 1=div, 2=#xxx
}
} <>
921<>sage<>2011/07/18(月) 08:33:19.54 ID:???<> セレクタの後方から順に、上方探索と前方探索でマッチングを行う
これはCSSの結合子仕様に書かれている方法で、各単純セレクタにマッチしたものも全部わかる
このマッチング自体は、どのノードでイベントを監視するかに左右されない
documentだろうがdivだろうが#xxx自身だろうが、全く同じ文脈マッチングを適用できる
イベントデリゲーションが嫌でも、どうせ文脈確認は必要になってくるだろうから <>
Name_Not_Found<><>2011/07/18(月) 08:35:57.85 ID:QreuXFBs<> >>920
俺もこう思う
言語的にundefined=1出来るのはいいけど
undefined=1をする状況がよく分からんし、素人でもするかな
undefined==変数を間違って書いているかもしれないけど、この書き方はなんか気持ち悪いw <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/18(月) 08:56:51.75 ID:???<> undefined は [[Writable]]: false なので ES5 を実装しているブラウザなら書き換え不可能です。Fx5 はこの規定に従っているようですね。
http://es5.github.com/#x15.1.1.3
undefined = 1; // 評価値は1
undefined; // 評価値はundefined (書き換えられてない)
書き換え可能な実装に対しては undefind を初期化し直すか、ローカル変数 undefind を定義すればいいのでは?
(function () {
if (typeof undefind !== 'undefined') { // undefined でなければ undefined で初期化し直す
undefind = void 0;
}
})();
function の中を複数人で共有しているなら「undefined を書き換えない」というコーディング規約をあらかじめ取り決めておくのが普通だと思います。 <>
Name_Not_Found<>sage<>2011/07/18(月) 09:04:16.23 ID:???<> >>920
もう一度言うが、「手法」の話に対して「価値観」で反論すんな
この意味は分かってるか? 分かってないんだろうが、まあいい、次
と行こうと思ったら、>>924に先書かれちまったよ
まあつまり、undefinedを書き換えられる心配なんぞ、するだけ無駄ってこったよ <>
Name_Not_Found<>sage<>2011/07/18(月) 09:09:40.34 ID:???<> おっと、>>925は俺(>>911,>>919)な
ついでだが、『大きなプログラム』ならプリミティブの数値・文字列・真偽値と
オブジェクトのNumber、String、Booleanとを区別する判定が必要になることも多い
何だかんだでtypeofは使うことになるんだがな <>
ssig33<>sage<>2011/07/18(月) 09:17:13.12 ID:???<> くだらない論議かましてる割に
生産性にかけてるなあお前ら <>
ssig33<>sage<>2011/07/18(月) 09:18:37.76 ID:???<> rubykaigiすらでてないとか本当にかわいそうだなあ
かわいそう <>
Name_Not_Found<>sage<>2011/07/18(月) 09:22:55.50 ID:???<> ここは Ruby スレじゃないよね <>
ssig33<>sage<>2011/07/18(月) 09:24:20.81 ID:???<> 別に関係なくないかあ?
だってお前らもRuby使ってんだろ
jsの連中もきてたが、ああ お前らはステルスアマノの腰ぎんちゃくかあ。 <>
ssig33<>sage<>2011/07/18(月) 09:33:34.94 ID:???<> まあ地方の愚民どもはrubykaigi出れなくて当たり前だよな
カントー地方くらいか東京周辺
お前たちってある意味悲惨だよね <>
Name_Not_Found<>sage<>2011/07/18(月) 09:34:12.58 ID:???<> 可哀想な人… <>
Name_Not_Found<>sage<>2011/07/18(月) 10:27:25.06 ID:???<> C++とJava使いなんだけど <>
ssig33<>sage<>2011/07/18(月) 10:28:50.09 ID:???<> それ昭和スタイルじゃん
時代遅れ
いまさらRubyくらい使える用紙他方がいいんじゃないかな <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/18(月) 10:31:24.99 ID:???<> >>924は typo でした。(undefind → undefined) <>
Name_Not_Found<>sage<>2011/07/18(月) 10:36:05.98 ID:???<> >>935
俺もよくそのtypoするわw <>
Name_Not_Found<>sage<>2011/07/18(月) 10:39:58.20 ID:???<> >>924のローカル変数はvar undefined;だけでいいんじゃね
判定する意味はないような <>
ssig33<>sage<>2011/07/18(月) 10:40:06.58 ID:???<> なんだこのクソコテ
ぶっこ すぞ <>
Name_Not_Found<>sage<>2011/07/18(月) 11:03:41.77 ID:???<> >>921
地道に.parentNodeで辿るしかないですかね?
>>918
いろいろ省略する(IE対応箇所とか座標計算とか)けど
document.getElementById("xxx").addEventListener("mousedown", draga, false);
document.addEventListener("mousemove", dragb, false);
document.addEventListener("mouseup", dragc, false);
function draga(e){dragObj.flag = true;//idがxxxのとき限定でtrueにする}
function dragb(e){if(!dragObj.flag){return false;//flagがtrue出なければ抜ける}
document.getElementById("xxx").style.left = event.x;//xxx上でのみ通過する前提なのでxxx要素の座標を直接変更
document.getElementById("xxx").style.top = event.y;}
function daragc(e){dragObj.flag = false;}
聞きたいことは直接変更箇所を指摘しなくてもeventなどから変更すべき箇所でのドラッグかを判断するにはどうすればいいですか?
そもそもmousedownをdocument.addEventListener("mousedown", draga, false);のみで記述できませんか?
getElementById("xxx")で動く箇所を制限しちゃうのは正道ですか?正道でない場合の記述法はどんなものがありますか?
document.addEventListenerで反応する関数内に通過する前提で式を置くのはやばいですか?(他との干渉など)
上記の結果としてのクールなコーディング例はどんなものがありますか? <>
Name_Not_Found<>sage<>2011/07/18(月) 12:45:51.87 ID:???<> こいけりくwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwww
こいけりくが2chwwwwwwwwwwww
wwwwwwww
ww
おい、小池いい加減にしろよ小池wwwwwwぶっとばすぞ小池 <>
Name_Not_Found<>sage<>2011/07/18(月) 12:49:31.90 ID:???<> ssig33=小池陸
http://twitter.com/ssig33
真性キチガイのRuby使い(rails)
Rubykaigiのトイレで、親指の腐った肉を洗い流すなど血をばらまくなど
衛生害テロをやったキチガイ
奇声をあげるなどキチガイ行為
挙句の果てに、Perl使いのOと大喧嘩して殴りあいになって、警備員に追い出されるざま
Perl使いにパッシング浴びて退場
そのあとツイッターで反省無し
こいつRubykaigi一生立ち入り禁止だってさ <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/18(月) 14:20:36.50 ID:???<> >>937
それも考えましたが、今回の争点となりそうな [[Writable]]: false の性質が消えてしまうのであえてグローバル変数 undefined を残す実装にしてみました。
http://jsfiddle.net/3DS2v/1/
>>939
イベントバブルを利用するなら parentNode を辿るのがいいんじゃないですかねえ。
以下、スマートに見えて効率は良くないです。(未検証なので参考程度に)
function handleMousedown (event) {
var target = event.target;
if (!Array.prototype.some.call(event.currentTarget.querySelectorAll('#a *'), function (element) { return target === element; })) {
return;
}
// 処理
}
document.addEventListener('mousedown', handleMousedown, false);
<>
Name_Not_Found<>sage<>2011/07/18(月) 14:47:01.84 ID:???<> var scope = document, dragObj = {target:null};
scope.addEventListener('mousedown', drag, false); scope.addEventListener('mousemove', drag, false); scope.addEventListener('mouseup', drag, false);
function drag(e) { var c; switch (e.type) {
case 'mousedown': c = e.target; do if (c.id === 'xxx') break; while (c = c.parentNode); if (c) dragObj.target = c; break;
case 'mousemove': c = dragObj.target; if (c) { c.style.left = e.clientX + 'px'; c.style.top = e.clientY + 'px'; } break;
case 'mouseup': dragObj.target = null; break; }} <>
Name_Not_Found<><>2011/07/18(月) 16:33:06.79 ID:QDgLkaxz<> カウンターを増やしていきたいのですが
function hage(){
var poo = document.getElementById("text1").innerHTML;
var boon = document.getElementById("text2").innerHTML;
if(poo<boon){
HP = parseInt(poo) + 1 ;
document.getElementById("text1").innerHTML = poo;
}
else if(poo> boon){
clearTimeout(timerID);
}
timerID = setTimeout(hage,1000);}
途中で止まったりするのですが、どこがいけないのでしょうか? <>
Name_Not_Found<><>2011/07/18(月) 16:35:29.14 ID:QDgLkaxz<> <<943の訂正です
カウンターを増やしていきたいのですが
function hage(){
var poo = document.getElementById("text1").innerHTML;
var boon = document.getElementById("text2").innerHTML;
if(poo<boon){
poo = parseInt(poo) + 1 ;
document.getElementById("text1").innerHTML = poo;
}
else if(poo> boon){
clearTimeout(timerID);
}
timerID = setTimeout(hage,1000);}
途中で止まったりするのですが、どこがいけないのでしょうか? <>
Name_Not_Found<>sage<>2011/07/18(月) 17:05:47.09 ID:???<> 945は944でした( ´Д`)y━・~~ <>
Name_Not_Found<>sage<>2011/07/18(月) 17:08:29.39 ID:???<> ( ´Д`)y━・~~ じゃなく( ; ; )でした <>
think49 ◆bKk/qcAKuM <>sage<>2011/07/18(月) 17:20:21.87 ID:???<> defineProperty を使用すれば意図的に [[Writable]]: false な undefined を定義できるようです。
http://jsfiddle.net/3DS2v/5/ <>
Name_Not_Found<>sage<>2011/07/18(月) 21:05:14.77 ID:???<> 議論こそID出すか名前にレス番入れるかしてほしい <>
Name_Not_Found<>sage<>2011/07/18(月) 21:51:47.23 ID:???<> とりあえずテンプレ議論は終わり?
結局
(案1) ID推奨、レス番を名前推奨 // >853 (1票)
(案2) ID推奨、レス番を名前強制 // >824 (1票)
(案3) ID強制、レス番を名前推奨
(案4) ID強制、レス番を名前強制
(案5) ID推奨、レス番を名前強く推奨 // >855,869 (2票)
(案6) ID強制、レス番を名前推奨 or ID推奨、レス番を名前強制
(案7) 2回目以降レス番を名前推奨 // >870 (1票)
これとかどーすんの?
とりあえず最新っぽいテンプレ用サイト>>872
<>
Name_Not_Found<>sage<>2011/07/18(月) 22:24:53.57 ID:???<> >>945
「text2の数までカウントアップ」を意図してるのなら、動作すると思います。
http://jsfiddle.net/S5keM/
ただ、カウントアップは止まってもhageの繰り返しは止まりません。
hage内で setTimeout で繰り返しなわけですが、
hage内で clearTimeout では間に合わずに繰り返されてしまいます。
(945のままでは clearTimeout まで到達しないので else if (条件) {...} を else {...}にしていますが、
到達しても止まるわけではありません)
setTimeout での繰り返しの場合、繰り返されるコード自身に止めさせたいなら
「条件次第で clearTimeout する」のではなく、「条件次第で setTimeout しない」処理が必要です。
どう書けばよいかは難しくないと思うので、ご自身で考えてみてください。
setInterval の場合と同じように止められない理由は長くなるので、次のレスに分けます。 <>
951<>sage<>2011/07/18(月) 22:31:34.34 ID:???<> * リファレンスに書いてあるようなこと
setTimeout / setInterval は、
引数として与えられたコードと、実行までの間隔と、
set〜 がキャンセル用に生成するIDとを、
実行キュー(実行順番待ちの列)に設定します。そしてIDを返します。
このIDは、setTimeout / setIntervalするたびに新しいもの(連番)が生成されます。
clear〜は、指定したIDのコードを実行キューから外します。
実行キューに収めたコードの実行が始まってからそのIDでclear〜しても
その回の実行が中断されるわけではないことに注意してください。
* 繰り返しを止めるには
setInterval で指定間隔での繰り返し実行が出来ますが
実際のところ実行キューに入るのは次の1回分のみです。
繰り返しになるのは、コードを実行するとともに
同じコード・間隔・IDで自動的に再設定されるものだからです。
つまり一度設定すれば同じID再利用で繰り返しなので、
実行されるコードの中からであっても clearInterval にそのIDを与えてやれば
次回分は実行キューから外され、繰り返しは止まります。
実行されるコードの中に setTimeout を書いて繰り返しさせる場合には、
実行されるコードの中で clearTimeout しても繰り返しは止まりません。
IDは使い捨てだし、clear〜するタイミングが遅すぎます。
「繰り返しを止めたいところでは次回分の setTimeout しない」ように書く必要があります。 <>
Name_Not_Found<>sage<>2011/07/18(月) 22:50:34.20 ID:???<> プログラムの良し悪しなんて全部価値観なのにな。
もちろん、動作しないのは論外だけど。 <>
Name_Not_Found<>sage<>2011/07/18(月) 23:48:06.97 ID:???<> >>953
方法の良し悪しは目的の達成度で測れるから、価値観が入り込む余地はない
「コードを破壊されない」が目的なら、より「破壊されない」方法が「正しい」に決まっている
目的を批判するのは価値観にもとづく
「コードを破壊されるのは仕方ない」から「破壊されない方法を求めるのは無駄」と主張することはできる
だが「var、prototype には注意」し、「undefined はどうなっても良い」のなら、一貫性に欠ける
目的ではなく価値観で方法を採用するから、こういうチグハグなことになり、バグを生む <>
954<>sage<>2011/07/18(月) 23:50:38.27 ID:???<> 例えば「打鍵コストを下げる」という目的で「undefined には目を瞑る」と言うなら、まだ一貫性がある
「保守する」という目的で「自分に理解できないものは使わない」と言うなら、正直で好感が持てる
だが価値観の話を延々とされた所で、そいつの目的が分からなければ、方法の是非など議論できるはずがない
まして、そいつの目的が単に「相手の論破」であるなら、そいつの価値観の話なんぞ付き合うだけ無駄だ
方法の是非だけを問えば良い、どうせそいつには答えられない <>
Name_Not_Found<>sage<>2011/07/18(月) 23:54:37.92 ID:???<> ここは質問用スレなんだから
チラ裏日記なら他所でやれよ <>
Name_Not_Found<>sage<>2011/07/19(火) 00:35:23.28 ID:???<> http://blogs.wankuma.com/kacchan6/archive/2008/01/28/119508.aspx
にあるクロージャの動作、というか関数定義のタイミングがよく分かりません
window.onload = function(){
for(var i = 1; i <= 3; i++){
var button = document.getElementById("button" + i);
button.onclick = function(){
alert(i);
};
}
};
これはbutton.onclick=以降の関数定義時のスコープに、ループカウンタの変数iが入っているので
それに対する参照を持ってしまうのは分かりますが、
window.onload = function(){
for(var i = 1; i <= 3; i++){
var button = document.getElementById("button" + i);
//もう一つ関数で囲む
(function(n){
button.onclick = function(){
alert(n);
};
//iを渡す
})(i);
}
};
これが前のものとどう違うのかがよく分かりません。
iを引数として渡しているので、それを参照してもよさそうな気がするのですが・・・
button.onclick=…を匿名関数でくるんだときにスコープが変わるのでしょうか?教えてください <>
Name_Not_Found<>sage<>2011/07/19(火) 00:41:39.21 ID:???<> >>957
上のはiを直接参照してるからループが終わった後の値を参照する事になる
下のだと個無名関数でスコープを作ってるからiと切り離せて参照できるためループが関係なくなる
<>
Name_Not_Found<>sage<>2011/07/19(火) 02:09:23.07 ID:???<> >>958
下のは無名関数にわたされてる引数の i がループカウンタの i を隠してるって感じですか?
関数定義のタイミングと変数定義のタイミングが違うから・・・とか変なこと考えてましたが、これは全然関係ないっぽいですね・・・ <>
Name_Not_Found<>sage<>2011/07/19(火) 06:21:29.86 ID:???<> >>959
下でやってるのはこれとだいたい同じ
window.onload = function()
{
for (var i = 1; i <= 3; i++) {
var button = document.getElementById("button" + i);
setButtonClick(button, i);
}
};
function setButtonClick(button, n) {
button.onclick = function() {
alert(n);
};
}
for内で呼ばれたsetButtonClickは、ループごとに n がそれぞれ別の値になっている。
alertは、onclickが実行された時点で引数を探しにいって、nをみつけて表示している。
よって、alertはそれぞれ別の値になっているnをみつけて表示できる。
>>957の前者では、alertが実行されてiを探しにいった時点で、iはループを終了して3になっているから、
どれを実行しようとも3が表示されてしまう。 <>
Name_Not_Found<>sage<>2011/07/19(火) 07:45:13.86 ID:???<> 3じゃなくて4だな <>
945<>sage<>2011/07/19(火) 08:39:27.74 ID:???<> >>951
ありがとうございました <>
Name_Not_Found<>sage<>2011/07/19(火) 11:18:11.59 ID:???<> 書き忘れてる所があったらアラートで教えてくれるようなの作ったんですが
アラートってもしかして嫌われたりしてますか? <>
Name_Not_Found<>sage<>2011/07/19(火) 11:26:57.99 ID:???<> なにを書き忘れてて、どういうタイミングかにもよる。
多分フォームのこと言ってるんだろうけど説明足りなすぎ <>
951<>sage<>2011/07/19(火) 12:20:29.06 ID:???<> >>962
肝心なところを見落としてました。
例えばidが text1 の要素を 0 、text2 の要素を 10 とかにしてあると、
text1 のほうは 2 までしかカウントアップしません。
innerHTMLでpoo には文字列 "0" 、boon には文字列 "10" が入り、
if (poo < boon) が、数値としての大小ではなく
文字コード順を比較するものになってしまっています。
text2の数値までカウントアップなら、 poo boon ともに parseInt などで
数値に変換しておいてから比較しないとダメでしたね。ごめんなさい。 <>
Name_Not_Found<>sage<>2011/07/19(火) 13:14:35.70 ID:???<> うわ速いね。次スレ975超えたら。テンプレ案は http://codepad.org/CdUhJKNu
これで? IDは持ち越し? <>
Name_Not_Found<>sage<>2011/07/19(火) 13:48:12.33 ID:???<> >>882,885-886
テンプレ議論はここらへんが残ってるな
IDに関しては完全に持ち越しだな
あほみたいな議論を長々とするから・・・ <>
Name_Not_Found<>sage<>2011/07/19(火) 14:59:28.54 ID:???<> >>963
個人的にだけど、submitのタイミングならむしろ分かりやすいと思う
blurとかfocusで発動したら発狂する <>
945<>sage<>2011/07/19(火) 15:10:30.57 ID:???<> >>965
わざわざありがとうございます。もう少しがんばってみます <>
Name_Not_Found<>sage<>2011/07/19(火) 15:31:39.84 ID:???<> >>963
<input type="text" required /> <>
Name_Not_Found<>sage<>2011/07/19(火) 17:10:45.09 ID:???<> HTML5でname属性って必須じゃなくなったんだっけ? <>
Name_Not_Found<>sage<>2011/07/19(火) 17:11:35.79 ID:???<> mjd? <>
Name_Not_Found<><>2011/07/19(火) 17:25:31.84 ID:yjnQvp1X<> ajax初心者です。ajaxでDBから取得した情報を特定のdivの中に反映させたいと思っているんですが
取得した情報(多次元連想配列)を任意の形にレイアウトするのはどのタイミングでやるべきなんでしょうか?
$.post(
"/ajax/aaa.php",
{var:val},
callbackfunc()
)
上記の書式でaaa.phpにアクセスして以下のような形で返ってきた値を
array(
array('tag'=>'dog', 'val'=>'1'),
array('tag'=>'cat', 'val'=>'2'),
…
)
以下のようにcheckboxのフォーム要素としてレイアウトしたいと思います
<input type="checkbox" name="pet" value="1" />dog
<input type="checkbox" name="pet" value="2" />cat
このレイアウト(html化)はaaa.phpでやった上でreturnするのか
配列を受け取ったあとのjs(callback関数?)でやるのか、わかりません
どっちがいいんでしょうか?
.postメソッドの理解も不十分なので変なことを書いていたらすみません <>
Name_Not_Found<>sage<>2011/07/19(火) 18:09:23.06 ID:???<> 普通はcallback内で必要なデータだけ取得してレイアウトする
PHPでレイアウトもやっちゃう場合もあるだろうけどね(テンプレートとか使う場合等) <>
945<>sage<>2011/07/19(火) 18:13:48.17 ID:???<> >>965
今書き直したらおもい通りに動きました。
if の前にparseIntを置いたら大丈夫でした
ありがとうございました <>
Name_Not_Found<><>2011/07/19(火) 20:42:39.80 ID:CH4oI7ck<> ライブラリを使わず
フォームの各コントロールの選択された/入力された値を
まるっと簡単に取得する方法を教えてください
multipleなselect要素とかname属性の値が同じのラジオボタンとかチェックボックスとかが
ほかと違うので面倒くさくなってしまって <>
Name_Not_Found<>sage<>2011/07/19(火) 21:47:37.08 ID:???<> そのためのライブラリだろ <>
Name_Not_Found<>sage<>2011/07/19(火) 21:51:14.82 ID:???<> ここまでのテンプレまとめ
http://codepad.org/12WcThLA <>
Name_Not_Found<>sage<>2011/07/19(火) 21:51:59.85 ID:???<> >>976
querySelector <>
Name_Not_Found<>sage<>2011/07/19(火) 21:55:05.01 ID:???<> >>974
ありがとうございます
つぎはjavascriptでの配列操作などを勉強してみます <>
Name_Not_Found<><>2011/07/19(火) 22:42:53.20 ID:IvPy3ovO<> http://ifav.jp/item/B004GJ337I
このサイトのPVを探すとこみたいに
YouTubeの埋め込みシステムを作りたいのですが
どうすればいいでしょうか? <>
Name_Not_Found<>sage<>2011/07/19(火) 23:48:41.80 ID:???<> スレ立て人ですが、やっぱLv不足で立てられません。どなたかよろ。
テンプレは >>978 であってると思われ。 <>
忍法帖【Lv=37,xxxPT】 <>sage<>2011/07/20(水) 00:11:26.09 ID:???<> >>982
すまんレベルは足りてるはずなんだがホストのせいで立てられなかったわ <>
忍法帖【Lv=34,xxxPT】 <>sage<>2011/07/20(水) 02:30:15.75 ID:???<> どれどれおいちゃんがスレ立てにチャレンジしてみようかな <>
忍法帖【Lv=34,xxxPT】 <>sage<>2011/07/20(水) 02:42:11.60 ID:???<> おいちゃんの立っちゃったよ
+ JavaScript の質問用スレッド vol.89 +
http://hibari.2ch.net/test/read.cgi/hp/1311096825/ <>
Name_Not_Found<>sage<>2011/07/20(水) 08:16:03.09 ID:???<> ありがとー <>
Name_Not_Found<>sage<>2011/07/20(水) 12:23:24.15 ID:???<> >>985 多謝!
ぶじ平常に復帰してめでたい。テンプレテロのアンタ、残念だったねー(笑)。
2ちゃんらしい煽りでした。 <>
Name_Not_Found<>sage<>2011/07/20(水) 15:26:10.26 ID:???<> 次スレ
http://hibari.2ch.net/test/read.cgi/hp/1311096825/ <>
Name_Not_Found<>sage<>2011/07/20(水) 20:38:20.72 ID:???<> 旧スレの余り、もったいない。リンクがついてないから誰もいないし。 <>
Name_Not_Found<>sage<>2011/07/20(水) 20:57:11.14 ID:???<> 居たりはするが
埋めでいいだろ <>
Name_Not_Found<>sage<>2011/07/20(水) 21:44:03.27 ID:???<> function ume(){
while (thread.length <= 1000) {
thread.write("埋め");
}
} <>
Name_Not_Found<>sage<>2011/07/20(水) 22:11:37.51 ID:???<> 梅子 <>
Name_Not_Found<>sage<>2011/07/20(水) 23:25:57.08 ID:???<> ume(); <>
Name_Not_Found<>sage<>2011/07/20(水) 23:42:55.46 ID:???<> function ume(){
while (thread.length <= 1000) {
alert("埋め");
}
} <>
Name_Not_Found<>sage<>2011/07/20(水) 23:52:33.19 ID:???<> onload = ume; <>
Name_Not_Found<>sage<>2011/07/21(木) 00:15:45.32 ID:???<> var ume = function(){
while (thread.length <= 1000) {
thread.write("埋め");
}
} <>
Name_Not_Found<>sage<>2011/07/21(木) 00:36:59.73 ID:???<> setTimeout(ume, 10); <>
Name_Not_Found<>sage<>2011/07/21(木) 00:46:01.23 ID:???<> 次スレ
http://hibari.2ch.net/test/read.cgi/hp/1311096825/ <>
Name_Not_Found<>sage<>2011/07/21(木) 00:51:01.17 ID:???<> おいちゃん1000とっちゃうぞー <>
Name_Not_Found<>sage<>2011/07/21(木) 00:51:34.72 ID:???<> 1000とったら <>
1001<><>Over 1000 Thread<> このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 <>