+ JavaScript の質問用スレッド vol.84 +
【質問を書く上で】
1)「何を、いつ、誰が、どこに、なぜ、どのように」動作させたいのかを
簡潔に説明してください。ただ「動きません」ではわかりません。
脳内おれおれ用語は混乱のもと。一般的な用語を使うようにしてください。
2)調べたこと・試したことを書いてください。
OS、ブラウザ、バージョンを必ず明記しましょう。
質問箇所(行数、エラー内容)を簡潔に。
何のエラーかわからなければ、エラーメッセージをコピペ。
各ブラウザのJSコンソールを活用しよう。
3)うまく説明できない時は、ソースを貼ると回答されやすいです。
要点を整理して、エラーが再現するソースを貼ってください。
1レスで収まらない場合は、アップロードしてください。
http://jsbin.com/ や
http://jsdo.it/ なども活用してください。
4)閲覧者の迷惑になる質問は回答されません。
別窓を多数開く、閉じる・戻る・クリックを妨害、画面占有、など。
「分かんねえの?」と煽っても無駄です。
5)「初心者なので」「初心者だから」「初心者ですみません」とか
書かない方が無難です。
知らない、できない、わからない、まちがい、は誰にでもありますから。
【FAQその1】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが… A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。 Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。 Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。 Q6. DOMでtable要素にtr要素を追加しても表示されないのですが… A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。 tbody要素はtbodyタグを書いていなくても自動的に作成されます。 またはtable.insertRow()/tbody.insertRow()を使いましょう。 Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A8. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 Q9. Aタグのonclickで動作指定してるのですが時々動きません… A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
【FAQその2】 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。 IEでは要素オブジェクトのプロパティcurrentStyleを使う。 Q11. 100*1.15の結果が114.999…998となってしまうのですが… A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0") を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。 Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません… A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。 Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが 「"...this..."」とか「function(){...this...}」ではうまく行きません。 A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中) Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが… A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、 offsetがマッチした位置、sが置き換え前の文字列全体になります。
【FAQその3】 Q16. input type="file"の値を設定(参照)できないのですが… A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。 Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが… A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。 【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
テンプレここまで
いやー相変わらずテンプレ長いなw
スレ建ておつかれ様でした、ありがとうございました。
ではさっそく。(1)テンプレ廃止(
>>1 のみにする)案に賛成の人、
(2)何らかの整理をして減らす提案のある人、ぜひご意見を。
個人的には
>>2 が簡潔になったので、次はFAQ類(
>>3-5 )を整理
してできれば1レスに減らしたいと感じる。
11 :
Name_Not_Found :2011/02/25(金) 07:14:50.24 ID:qoYLfFul
>>10 むしろ
>>2 が最初でいいかもしれんね
こんなこと言うと怒られそうだけど
>>1 はちょっと説教くさい気が…
連投規制に引っ掛かったから少なくとも
>>1-5 までにまとめてほしい
FAQは@wikiでも借りてそこにうつすとかする? するんだったら自分がwiki借りてきます
どうせ誰も読まない
15 :
Name_Not_Found :2011/02/25(金) 17:42:35.11 ID:+Y3UglGU
すいません JQUERYを、ダウンロードしたいです サイトいって、ダウンロードを、クリックしたのですが、ソースコードが、でます。 ダウンロードをできません。 どうしたらよいでしょう?
ダウンロードできないならコピペすればいいじゃない
>>15 いや、JavaScriptファイルはただのテキストファイルだし
コードが表示されてるならそれで十分なわけだが。
コードが表示されたならCtrl+S(ページを保存)を押せば良い
19 :
Name_Not_Found :2011/02/25(金) 17:54:24.52 ID:+Y3UglGU
なるほど。 しらなかった 恥ずかしい
思ったけどFAQをテンプレとして貼るのって無駄だよね 全部網羅するのは不可能だし、たった17個しかないから役に立ってるのか疑問
テンプレは
>>1-2 と
>>7 の関連スレだけでいい気がする。
リファレンスやFAQは随時更新されるものだから、余所にあっても問題ないし。
23 :
21 :2011/02/25(金) 19:31:43.73 ID:???
あとFAQの内容が更新されてないから内容が古すぎる、 IEでは不可とか書いてあるけどIE7以降は可だったり(Q13)するからバージョンも併記しないと勘違いの元
>>20 jsbinいいな、編集できるし、コードもアップできるし
と思ったが、テキストがエンティティ化されとる…
25 :
20 :2011/02/25(金) 19:39:59.04 ID:???
>>24 すまん。なんとかしたかったんだが、日本語を入力すると化けるんだ。
document.documentElement.outerHTML でコード出力して編集させるとか面倒だよな…。
26 :
20 :2011/02/25(金) 19:45:02.77 ID:???
みんなjavascript作るとき、何かソフト使ってる? 自分はメモ帳使ってるんだけど、何かいい補助ソフトあるか探してます
28 :
Name_Not_Found :2011/02/26(土) 00:26:59.66 ID:jifL/jd7
わざわざ乙です なんかいい方法が見つかるといいな ただjsbinがマルチバイト対応してないとなると 質問や回答でも困ることがあるやも知れんね
30 :
Name_Not_Found :2011/02/26(土) 00:39:01.02 ID:jifL/jd7
>>27 普段使いのテキストエディタはmi、EmEditor、vim
JSだけの開発じゃないときはeclipseも使うなあ
ちょっとした色分けと、入力・インデント支援があった方がいいと思う
メモ帳やテキストエディットだと、ちょっと使いづらい
というか、ながらく使ってない
色分け、支援があるとイージーミス減るからな
eclipseって補完機能ある?
33 :
20 :2011/02/26(土) 01:02:34.26 ID:???
34 :
20 :2011/02/26(土) 01:18:37.04 ID:???
関数とかにリンク当てたいけどいじっても大丈夫なのこれ
元のは削除されないしいいんじゃない
バージョン管理されてるのかありがと
FAQを別サイトに置いたら絶対今よりメンテしなくなると思うけど、
とりあえず2〜3スレくらいの間試すのもいいかと思う。個人的には
1レスに圧縮したFAQなら入れておいていいと思うんだけどな。
>>1 をやめて
>>2 を
>>1 にするというのはどうなんだろう。
今のはJavaと区別つかない人や自分で書く気がない人に
「よそへ行け」というのに便利だけど。
>FAQを別サイトに置いたら絶対今よりメンテしなくなると思うけど これは100%そうなる、断言する。 過去スレ全集をあげてるのもここ1年以上俺一人だけで しばらく放置してても誰一人あげようとしない。 てことで今から83まであげてきます・・・(´;ω;`)ぶわっ
てことで79〜83まで補完完了。 誰でもできるから気づいたらアップロードしてね!
これは乙じゃなくてポニーテル
44 :
Name_Not_Found :2011/02/26(土) 12:39:40.04 ID:hfiQkurk
45 :
Name_Not_Found :2011/02/26(土) 14:03:46.18 ID:p66DJRdR
よろしくお願いします 更新するたびにランダムでテキストが表示されるJavascriptを 外部の.jsから読み込んでいます var msg = new Array(); msg[0] = ''; msg[1] = ''; msg[2] = ''; msg[3] = ''; msg[4] = ''; var no = Math.floor(Math.random() * msg.length); document.write(msg[no]); この項目を100とか500に増やしたいんですが、 そこまで増やすと処理が重くなってしまいますか? 大して問題ないでしょうか?
なぜやってみない……
環境によるとしかいいようがないが、500程度なら気にしないな
項目分メモリ消費量が増えるだけだろ・・・
更新するたびにって考えると無駄が大杉 いっそHTMLに書いて、選択すべし
FAQ、プレーンテキストみたいで味気ないよー。 Web制作板なんだからもうちょっと装飾してよ。
カラフルにしよか
もともとテンプレに入れていたFAQなんだから別にそのままでいいと 思うよ。FAQをテンプレから削りたい人は色とかつけて元に戻せなく したいのかも知れないけど。
>>46 自分の環境だけでは何とも言えないので・・・
こういう処理が一般的に負荷がどの程度のものなのか理解してないので
質問させていただきました
>>47 気にしなくて大丈夫そうですか
body内にbody書くなよw
リビジョン8の時にあった関数リンクが9には消えてる・・・ 複数人同時編集はまずいな
>>45 まだ半人前なので的外れな回答かもしれないけど、msg1.txt、msg2.txt・・・とメッセージ毎の
ファイルを作って、Ajaxで目的のメッセージファイルをロードするのとかはどうかな?
57 :
20 :2011/02/26(土) 19:59:14.67 ID:???
>>38 をベースに更新した。(rev10, 11 でバージョンダウンしている感じなんだが、どんな意図で編集されたかわからなかったので保留した。)
http://fiddle.jshell.net/vSqKr/13/show/ ・コード部分をシンタックスハイライトさせて、サンプルコードをいろいろ追加してみた。
・サンプルは一応、循環参照しないコードにしておいた。
・mootools.js (未使用) を include していたので解除した。
>>35 ,38
乙です。document.write のリンクがおかしいのと Q13 が消えていたので直しておきました。
>>50 俺はデザインセンスがないので、センスある人が着飾ってくほしい。言い出しっぺの法則でよろしく。
58 :
20 :2011/02/26(土) 20:11:17.85 ID:???
配色は好みがあるので何ともいえない(ライブラリのでフォルの配色から変えてない)が、CSS で決めているのでセンスある人がいじればいいと思う。 HTML に手を入れなければ修正は簡単だろうし。
ええね、乙
それでこの20さんはずっと管理できるの? 作るだけ作って放置するならないほうがマシだよ
一人で管理できるわけないだろう。誰でも編集できる場所にUPした意図がわからない?
いや、だから誰でも編集できるから悪戯に改変できるでしょ それを元に戻したり規制したりするのが管理者の役目なわけだ それを継続できるのかって話、わかる?
wikiでもそうだけど 誰でも書き換えられる=管理者がいない わけじゃないからなw
使えなくなるまで使えばいい、wikiなんかそんなもんだし
65 :
20 :2011/02/26(土) 22:40:50.69 ID:???
ちょっと待て。いつの間に俺が管理者ということになってるんだ。
>>62-63 は「始めに書いた人が永続的に管理する義務を負う」イメージがあるようだが、
>>3-4 を書いた人だって定期的にここに来てFAQを管理しているわけじゃないだろう。(実際、情報が古すぎると思った)
始めに書いた人と更新する人が別だっていいし、現実的に一人の人が更新し続けられるとも思えない。
Wiki だって管理する人がいるから成立すシステムなのはわかるが、同じ人が永続的に管理する義務を負わないと思う。
もし同じ人が更新し続ける義務を負うなら、Wiki にしないで一人の個人サイトを公開する方が信頼性が高いだろう。
それでも Wiki にするのは俺がそうであるように一人で管理し続けられない人が集まっているからだと思う。
更新=管理じゃないってば 根本的な管理が継続できるのかって話 それができないならわざわざ外部のサービスに頼る必要もないでしょ 本スレにいままでどおり載せればいいだけ
思いつきだけでやって
>>41 みたいに放置になるだろうなw
FAQを別サイトに置くと今までよりも既出質問に対するレスをする手間が増えると思うんだが
そこまで固執する意味は何?
datファイルをアップロードするだけでも何ヶ月も忘れられる現状を見ると、たしかにFAQでも外部サイトはどうなんだろうと思ってしまうね。 ファイル1つアップロードするよりFAQを編集する手間の方が遥かにかかるだろうし。
何が言いたいのかよく分からないがスレを消費するぐらいの頻度でFAQを編集するつもりなのかい?
アクセス解析握ってるやつが管理人 これ常識
テンプレてこのスレでは結構重要な部分だと思うけどな たとえば2chは機能しててテンプレサイトが見られないor機能してないって状況も この先必ず発生するだろうけどそういうリスクも考えた? そういうことも考えられないならプログラマとして致命的だよ
72 :
20 :2011/02/26(土) 23:22:02.97 ID:???
FAQ を別にしてみたのは「テンプレ長い」という意見が散見されたので試してみただけ。 実際やってみて現状維持を良しとする人が多数派だったのは意外だったが…。 ほとんどの人が求めていないようなのでもう止めることにする。 ただ、現在の FAQ が管理できているとは思わない。そこで打開策を求める展開を少し期待してた。
数レスに収まる程度のFAQなんて範囲狭くてほとんど役に立ってないし、無いほうがマシ 保守気取ってるつもりなら自分でFAQ更新してスレ立ててくれ
いつまでも長引かせて質問が流れるから帰って迷惑だったな そういうのはこっそり作ってこっそりテンプレに追加しとくもんだ
理解してる側からしたら不要だろうね だが回答するときに安価ひとつで回答できるのはありがたい 未だにというか今後も同じような質問が繰り返されるからね
上で管理しないものは不要といわれているが、
>>3-5 も管理されている感じはしないな。
誰も更新しようとしてない気がする。
おい、そこループさせてんじゃねーよ てめーはバグか
>>79 Σ(゚Д゚) おまえが俺たちをプログラムしたのか
面白いスレだなここ
過去スレ全集を見れば分かるように、FAQは更新/メンテされているよ。 数スレ〜10スレに1回くらいの頻度かと思うけど。 というか、過去スレ全集見ればすぐ分かるのになぜ確認しないのかと…
83 :
Name_Not_Found :2011/02/27(日) 09:37:59.75 ID:qZaQmnAw
きっとあなたが過去スレ見てくれると信じてた
popstateって何をしたら発生するイベント?
10スレに1回の更新でメンテされてるっていえるん?
質問です。 インラインフレームの中に作ったメニュー画面内で、 ページ移動先にある[戻る]ボタン押すと直前のページ位置に戻るようにしたいのですが <input type="button" value="戻る" onclick="self.history.back()"> のようにしてhistory.backを実行させるとIE, Opera, Safariでは期待通りの動きをするのですが、 Firefoxでは何の反応もしません。何故でしょうか?
87 :
Name_Not_Found :2011/02/27(日) 13:46:40.68 ID:Zr9/E6nS
まだやってたのか
他の人の反応見てれば自明だろ。誰も関心がないから内容が古い。ようするに不要。
この部分が古いから書き直しましたって言って貼ってくれれば、次スレから更新されるよ どうせ問題が発生するまで誰もいじらないんだから、不満があるなら黙ってパッチを送ればいいんだよ
>>92 そういうことじゃなくて今まで管理できていなかったんだから、今後も管理継続できる見込みがないだろう、という話。
>>62 と同じ。
wikiのシステムと勘違いしてないか
簡単に改変できるわけではないが、更新されなかったのは事実だな
正直、指摘できる点はいくつかあるんだが、「おまえがメンテしろ」といわれたら断る。他の人も同じなのかもね。
テンプレ議論が進まない理由はそれか
更新すればするほど文字数が増えて1レスに収まりきらなくなって分割されてどんどんスレ立てが面倒に
この際、まず現在のFAQの各項目で残すもの削除するものを 皆で投票するとかどうだろうか。
それFAQっていうのか…
下記手順の4と5で結果が異なる理由と、 5にも変更を反映させるための方法(3のスクリプト)を教えて下さい。 IE6, FireFox3.6ともに以下結果となってます。 1.下記のような構成のページを作成し、 全てのページを表示してブラウザにキャッシュさせる。 2.default.cssの内容を変更する。 3.main1.htmlの中で location.reload(true)を呼び出す。 → default.cssに対する変更が反映される。 4.main2.htmlを表示(アンカータグクリック)する。 → default.cssに対する変更が反映される。 5.main3.htmlを表示(アンカータグクリック)する。 → default.cssに対する変更が反映されない。 main1.html(フレームなし) default.css main2.html(フレームなし) default.css main3.html(フレームあり) frame1.html default.css frame2.html default.css
ヘッダにCache-Control: no-cache付けたらいいと思うよ
>>102 すみません。記載が足りませんでした。
目的ですが、
通常はdefault.cssをクライアントキャッシュに格納し、
更新の発生したタイミングでキャッシュに反映しようとしてます。
フレームでないとできるのに、フレームだとできない状況です。
104 :
Name_Not_Found :2011/02/28(月) 09:11:16.37 ID:/kwXhIuG
jqueryXMLでの結果を配列に入れたくて hairetsu = new Array(); function xmlParser(xml) { $(xml).find("data").each(function () { hairetsu.push ($(this).find("name").text() ); }); } このようにしたのですがOSXのsafariではちゃんと入ったけど winのFFやIE、safariではうまくいきません。 どうすればhairetsuにデータを入れることができますか?
FAQの整理案を作ってみたのでご意見を。 Q1、Q2→統合(似た内容なので1つで書けるかと) Q3→削除(そんな質問めったにないし説明も簡単) Q4→短く(クリアされることまで言えば十分) Q5、Q6→統合(関連した内容なので1つで書けるかと) Q9→削除(あまり無い質問だと思う) Q10→残す Q11→削除(あまり無い質問だと思う) Q12→短く(今ならXHRでぐぐれで十分では) Q13→短く(複数呼びたいとかは不要ではないかと) Q14→循環参照リーク云々を削除して短く Q15→削除(あまり無い質問だと思う) Q16→残す Q17→残す これで9項目1レスにできないかなと。いかでしょ。
続きはwebでみたく併用したらいいんじゃねの、
108 :
Name_Not_Found :2011/02/28(月) 15:23:43.77 ID:ijXD6pjr
>>104 とりあえず
・XMLファイルが読めていないのか
・読めてはいるけどパース出来ていないのか
・パースも出来ているけどhairetsuにpush出来ていないのか
に切り分けてみようよ
多少
>>105 と変えたけどFAQ
>>3-5 を9個に整理してみますた。
【主要FAQ】(全部は
http://fiddle.jshell.net/vSqKr/13/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がそこまで読まれてない。onload中でやるとか。
110 :
Name_Not_Found :2011/02/28(月) 17:23:23.36 ID:aeImGtQ0
<script src="jquery.js" type="text/javascript"></script> <script src="script.js" type="text/javascript"></script> </head> <body> <div id="abc"><p>abc</p></div> </body> 以下script.js $(function($){ var abc = document.getElementById("abc"); alert(abc.width); // undefined alert($("#abc").width()); // 0 }) div要素のwidth,heightの値を取得したいのですが、undefinedや0と表示されてしまいます。 jQueryで出来ればそちらでもいいのですが、どのようにすればwidth,heightを取得できるのでしょうか? 宜しくお願いします。
>>109 自分はそんな感じでいいと思う、
>>110 $("#abc").css("width")
SafariのdefaultViewはwindowと違うものだけどFirefox,Opera,Chrome,IE9のdefaultViewはwindowなんだね。 ややこしい
>>6 の E4X (ECMAScript for XML)
これ何に使われてるのか分からない
Chrome, IE9でもサポートされてないし載せる意味あるん?
>>108 XMLファイルは読めています。配列Aの名前を変えると1.2.3とも表示されないので配列にも情報は入っている?と思いますが
入っているなら3.でも表示出来そうなものですがよく分かりません・・・
<script type="text/javascript">
hairetsu = new Array();//A
function xmlParser(xml) {
$(xml).find("data").each(function () {
hairetsu.push ($(this).find("name").text() );
document.write(hairetsu);//1.欲しい情報は出てきますが何度もリピートしループしています
});
document.write(hairetsu);//2.本来の欲しい情報が出てきます。
}
document.write(hairetsu);//3.何も出てきません
</script>
javascriptには「ブロックスコープが存在しない」と書いてあるサイトもあるし
jqueryが特殊なのか?OSXサファリだけで何故うまくいったのか?とか
クロージャというのが怪しいと思い色々やってもうまくいきませんでした
2,3は同期・非同期についてぐぐれ 1はようわからん。
>>116 誰でも編集できるけどwikiと違って最新のものが表示されるわけではないから、荒らされても問題ないし
>>62 、
更新は過去ログ上げるほどの頻度でする必要もないし
>>68 、
装飾ができる、文字数を気にせず書けるからむしろ更新しやすいし、使いやすい
>>67 は
>>77 で
>>70 はブログか何かと勘違いしてるだけだし
ぶっちゃけどーでもいい
もはや手段が目的化しとるな
>>119 全くその通りだと思うが、なぜあの時にいってやらなかったんだ…。そういう俺も同罪だなw
>>109 趣旨はわかるけど、FAQ は回答の手間を省くためだよね。
そのぐらいの量なら普通に回答しても手間が変わってない気がするんだけどどうだろう。
「別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。 」が「Q1 を嫁」に短くできるぐらいの変化しかない。
だったらいっそのことリンク集だけにした方がURLを探す手間が省けていいんじゃないかな。
125 :
124 :2011/02/28(月) 20:56:16.22 ID:???
前スレで質問させて戴いた事についてなのですが、また分からなくなりました。
変数名として使おうとするとエラーになる2バイトコードの記号が結構多く見受けられます。
使える場合と使えない場合の切り分けはどこにあるのでしょうか?
Example: FirefoxとIEで幾つか試した限りでは動作の可否は同じでした。
Δ=1;∠=1 // Pass
∇=1;∀=1 // Error: illegal character
前スレ
>438 Name_Not_Found sage 2011/02/06(日) 13:02:46
>トリッキー上等で質問させて下さい。
>(使用フォントはUTF-8で)
>変数名に2バイトコードを使えてしまうのは、偶然ですか?それとも必然ですか?
>439 Name_Not_Found sage 2011/02/06(日) 13:08:22
>2バイトコードが使えないなんて制限あった?
>日本語変数とかJS初心者講座サイトとかで昔からよく見てきたけど
>440 Name_Not_Found sage 2011/02/06(日) 13:11:57
>仕様
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.6 >441 Name_Not_Found sage 2011/02/06(日) 13:14:28
>仕様なんですか、ありがとうございました。
乙。すっきりしてるね。
個人的には、FAQ読まずに質問する奴にFAQは読めというため だけにでも1レス分のFAQはあった方がいいと思っている。 でないと何人もが同じよくある質問してきていちいちそれに 回答することになる。FAQ読めというのはその一人だけに言って いるわけじゃなく、そのレス付近を目にする複数の人に言って いるんだと思うがいかが。
>>128 1にはFAQとかへの安価があったほうがいいと思う
ここって、Androidとかのタッチイベントを使う質問をしても大丈夫かな?
大丈夫と思う。
JavaScriptって定数宣言はどのように行うのでしょう? Firefoxではconst修飾子で行うようですが 統一された定数の宣言方法はないのでしょうか?
どうでもいい突っ込みだけど「大文字」は「uppercase」で largeじゃないよね。大文字をラージというカルチャーが あるのかとびっくりしたのでつい。
>>137 そういや、なんでupper/lowerなんだろうね。
upperならdowner、lowerならhigherが対語になりそうなのに。
upper/downerには名詞として別の意味の反意語になっちゃうし。 メソッド名(動詞)としてupcase/downcaseはあるみたい。 lower-case/higher-caseでも意味は通じるみたい。 語源を考えるとhigherだと手が届かないくらい高そうで違和感。知らんけど。
"caps"自体が"capital letters"の略で大文字という意味だが (キーボードのCAPSキーを参照)、"large caps"でも同じく大文字を指す。 "case"はもともと印刷関係の用語かな? 「活字ケース」のことを指すらしい。 なぜそこで相対的な「上下」関係を指す"upper/lower"が使われるのかは知らん。 活字セットを上下に分けて整頓するのが一般的だった、とかかも。
こういうイメージからの派生形かな、と漠然と思っていた UpperCamelCase : ^\/\ (頭を上げたラクダ) lowerCamelCase : _/\ (頭を寝かしたラクダ)
>>128 A3, A5, A6 にIEのバージョンを記載した方がいいと思う。
このコードを実行すると、見た目に変化はありませんが、selectタグが増殖します。firebugsで確認しました。 innerhtmlで出力したhtmlをすぐに変更することはできないのでしょうか。 sleepのコメントを外せば問題ありませんでした。sleep以外の解決策があれば教えてください。 <html> <head> <script type="text/javascript"> function todo(){ document.getElementById("tmp").innerHTML = "<select id=\"tar\"></select>"; // sleep(1); var val = document.getElementById("tar"); val.disabled = true; } </script> </head> <body> <span id="tmp"></span> <input type=button value="button" onClick="todo()"/> </body> </html>
sleepの中身は?
>>145 > sleepのコメントを外せば問題ありませんでした。
ちょっと信じられないんだけど、コメントアウトされた sleep(1); が呼び出されるの?
コメントなんだからどっちにしても挙動が変わらないはずなんだけど…。
JavaScriptでsleep()って無かったんですね。 勝手にあるものだと思って、コーディングしてました。 つまり、sleepの中身はないのですが、これで動いてます。 コメントを外すと、ボタンを押すたびにselectタグが増殖します。見た目は変化ないですが、内部的に増えていて、postで渡す際に支障があります。
>>149 > sleepのコメントを外せば問題ありませんでした。
> コメントを外すと、ボタンを押すたびにselectタグが増殖します。
どっちが本当?
後者なら、
>>148 の検証がまるっきり無駄だったことになる。
>>140 これは簡単で、タイプライタではシフトキーを押すと活字ハンマー全体を
上に持ち上げて大文字の活字が紙に当たるようにしていた。なので持ち上げる
からupperなんだと思うよ。
IE8で、thisの指す内容を無理やり書き換えることは出来ませんか <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>foobar</title> </head> <body> <div id="foobar">foobar</div> <script type="text/ecmascript"> var foobar = document.getElementById('foobar'); foobar.attachEvent('onclick', function(){ this = event.srcElement; this.firstChild.data = 'IE'; }); </script> </body> </html>
>>152 Function.prototype.call を使えば出来る。
すみません。コメントを外すとokで、コメントのままだとngです。 firefox3.6.13で、Webサーバはtomcat6.0.32です。
>>154 sleep(1); を呼び出した(コメントを外した)場合。
http://jsbin.com/olope4/2 期待通りに動かない。セレクトボックスが選択できてしまう。
Firebug でも select が増殖しているようには見えなかった。代わりに "sleep is not defined" が増殖する。
156 :
152 :2011/03/01(火) 17:46:17.80 ID:???
>>153 ありがとうございます。上手くいきました
var foobar = document.getElementById('foobar');
foobar.attachEvent('onclick', function(){(function(){
this.firstChild.data = 'IE';
}).call(event.srcElement)});
>>156 素朴な疑問なんだが、
document.getElementById('foobar').attachEvent('onclick', function (event) {
var element = event.srcElement;
element.firstChild.data = 'IE';
});
これでダメな理由は何なんだろう?
function () { this.firstChild.data = 'IE'; } を既に定義していて、addEventListener と attachEvent の両方で使いたかったに一票。 this と event.srcElement は対応しないはずだけどね。
159 :
152 :2011/03/01(火) 18:41:50.69 ID:???
>>157-158 すみません。実際に使わせて戴いた部分は
>>158 の通りです
Element.prototype.addEventListener = function(type, listener, useCapture){
var target = this;
target.attachEvent('on' + type, function(){
listener.call(target, event);
});
};
>>159 そのコードを書いた気持ちはわかるんだが、addEventListener と互換性が取れてないのが気になる。
・>157 にもあるが attachEvent は第一引数で event を取れるから、window.event を使わなくていい
・this は event.currentTarget と等価 (event.target じゃない)
・this も書き換えるなら event も書き換えた方が後々楽になると思う。 event.target と event.currentTarget を定義するだけでも大分違う。
・attachEvent は onload 時に event.srcElement が null なので、対処を
161 :
160 :2011/03/01(火) 19:09:28.62 ID:???
重要なことを書き忘れていた。 何よりも、>159 が拙いのは detachEvent 出来なくなること。 Element.prototype.addEventListener の引数 listener は書き換えられているので、元々の listener では detachEvent することが出来ない。 この問題に対応するためには元々の [this, type, listener, useCapture] をキャッシュしておき、removeEventListener 時に照合するしかない。
162 :
140 :2011/03/01(火) 20:32:47.18 ID:???
>>151 なるほど、タイプライターも上下で分けてるね。
歴史的な順番としては印刷技師の職業習慣が先になるのだろう。
スレチだけど勉強になりました^^
>>137 ラージって言わないんだ
デカルチャーだわ
アッパーケースって言うのが普通なのか…恥ずかしい
例えば新人が定数変数をロウで書いてたら、アッパーケースで書き直して。って言い方で指示するの?
labelは何て呼んでる?
レーベルだよねw流石にラベル何ていわねーわなw
ラベル(´・ω・`)
JavaScriptってバイナリファイル扱えますか?
JavaScriptでバイナリエディタみたいなものを作りたいのですけど
試しに画像ファイルを読み込み16進ダンプしてみたのですが
手持ちのバイナリエディタと比べると異なるものになってしまいます
画像ファイルはXMLHttpRequestで取得し
renponseTextに
http://phpjs.org/functions/bin2hex:361 こちらのbin2hex関数をかませて16進ダンプを行いました
prototype.jsを使用したコードですが
new Ajax.Request("test.png",{
method: "get",
onComplete: function(req){
document.write(bin2hex(req.responseText));
}
});
こんな感じになります
どこを手直せばいいのかそもそも不可能なのかご存知の方アドバイスお願いします
>>163 日本語ではラベルです。
レーベルでも通じるけどラベルのことねと返されるでしょう。
GAIJINにはレーィボーと言いましょう。
日本語を使えよ。大文字でいいじゃん。ラベルも日本語といや日本語。 レーベルというのはレコードやCDの1つのブランドを表す日本語。 カルテもカルタもカードもトランプも日本語。
168 :
Name_Not_Found :2011/03/02(水) 00:19:16.37 ID:I7q9Ab18
>>148 のサイトでも増殖します。
Firebugs開いて、htmlタブでソースを開き、
<span id="tmp">の左の「+」でソースを展開しておくと、
ボタンを押すたびに、<select id="tarの行が一行ずつ増えませんか?
document.querySelectorAll("#tar").length で確かめたらずっと1だったから問題ないと思うよ。 Firebugsがおかしいって可能性は?
>>170 おお、増えませんね。
やはり、innerHTMLが悪さをしてるんでしょうか。
先のコードはサンプルで、実際のselectタグには、
Ajaxを利用してサーバから持ってきた情報をもとに出力するので、
単純には行きませんが、どの辺が問題なのでしょうか。
それとも、FireBugsの問題で、
>>169 のとおり、実際には問題ないのかな。
172 :
165 :2011/03/02(水) 02:34:55.95 ID:???
http://d.hatena.ne.jp/k12u/20061216/p1 こちらを参考に自己解決しました
一応コード出しておきます
new Ajax.Request("test.png",{
method: "get",
onCreate: function(req) {
req.transport.overrideMimeType("text/plain; charset=x-user-defined");
},
onComplete: function(req){
var bytes = [];
var res = req.responseText;
var len = res.length;
for (var i = 0; i < len; i++) {
bytes[i] = res.charCodeAt(i) & 0xff;
}
document.write(bin2hex(String.fromCharCode.apply(String, bytes)));
}
});
>>167 大文字って言い方だと新人によっては2バイト文字で書く奴が普通にいるから困る
かと言ってupperCaseで書けと言っても理解出来る筈もなく
>>173 コンピュータの素養がある者が、
大文字を2バイト文字と解釈するって?
それはその個人の問題であって、一般的な問題とは思えない。
175 :
Name_Not_Found :2011/03/02(水) 11:50:58.12 ID:I8rydRFi
Javascriptで数値からバイナリを作ることはできますか?例えば52→R、81 83→<などのように。 ググりましたがバイナリ作成に関する情報は見つけられませんでした htaでもおkです
>>175 String.fromCharCode(0x52); // R
ドラッグ&ドロップでファイルをアップロードさせるコードを書いています。 addEventListener('drop',function〜でドロップイベントを拾って、e.dataTransfer.files[0]で一つめのファイルのオブジェクトを拾って それをバイナリで読み込んで、そこからXMLHttpRequestでsendする値を書いて、postする流れです。 が、バイナリをアップしてみてもファイルが壊れてしまいます。例えば30kbの画像を送信したら50kbになる。バイナリを見てみると 最初の1kb位は同じ所がありjpegっぽいヘッダーが出ているのですがそれ以降は全く違う値になっています。 最初の方は一部同じ、序盤以後は全く違うと、文字化けしているような症状になっているのですが、何故文字化けするのでしょうか。 readAsBinaryStringで読み込んでいるので文字コードの変換処理が入る箇所が無いように思えます。 サーバーサイドはphpでバイナリをいじくる処理は一切していませんし、普通にjsを使わずinput type=fileで送信したファイルは当然そのまま保存されています。 以下がコードの箇所です dropobj.addEventListener('drop',function(e){ e.preventDefault(); console.log(e.dataTransfer.files[0]); var reader = new FileReader(); filename=e.dataTransfer.files[i].name; filetype=e.dataTransfer.files[i].type; reader.onload=function(e2){ upload(filename,filetype,e2.target.result); } reader.readAsBinaryString(e.dataTransfer.files[i]); },false); ここまででファイルをブラウザのfilereaderで読み込んでいます。続きます。
続きです
function upload(filename,type,value,mode){
var func_makeboundary1session,senddata="";
func_makeboundary1session=function(name,filename,contenttype,value,boundary){
var res="";
res+='\r\nContent-Disposition: form-data; name="'+name+'"';//"
if(filename!=""){res+='; filename="'+filename+'"';}//"
res+="\r\n";
res+="Content-Type: "+contenttype+"\r\n\r\n";
res+=value+"\r\n";
res+="--"+boundary;
return res;
}
if(mode==false && loading==true){return;}
var httpoj = new XMLHttpRequest();
httpoj.open("POST","index.php",true);
httpoj.onreadystatechange = function(){
if(httpoj.readyState==4){alert(httpoj.responseText);}
}
var boundary ='----MultiPartFormBoundary' + (new Date()).getTime();
senddata+="--"+boundary;
senddata+=func_makeboundary1session("file",filename,type,value,boundary);
senddata+="--";
httpoj.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);
httpoj.send(senddata);
}
func_makeboundary1sessionでmultipart/form-dataを作成し送信しています。サーバーのphp、html、jsファイル全て文字コードはUTF-8です
multipart/form-dataの情報は
http://adiary.blog.abk.nu/012 http://www.kanzaki.com/docs/html/htminfo32.html を参考にしました
https://github.com/blueimp/jQuery-File-Upload/wiki/Options これを使おうと思いもしましたが、ファイルのアップロードと同時に別のフォームのテキストとかも送らないといけないので諦めました
ブラウザはchrome、OSはvistaです 以上です。よろしくお願いします
jsでファイルをアップロードする一番簡単なのはFormData使う方法だけどHTML5だからFirefox4、Chromeぐらいしか対応してないんだよね
http://ideone.com/FwufK FormData使わずにやるならbase64でエンコードしてから送ったほうがいい、
getAsDataURLでbase64の値が取れるからサーバーサイドで戻すのが確実
>>179 どうも。FormDataは知らなかった。
>>176 できた!全角の問題が厳しかったが自力でできたよ、ありがとう
>>181 XMLHttpRequest.sendAsBinaryで出来るかもしれない。
>>187 いいね。
目次で見ると Q14 が結構長いな。他に合わせて
Q14. setTimeout() やイベントハンドラ関数に設定するコードに this を含めたいのですが…
でいい気がするんだけど、どうだろう?
191 :
190 :2011/03/02(水) 18:06:57.03 ID:???
すまない、被ってしまった。
>>189 を採用してくれw
乙
質問です。
サイトにTwitterのコメントボックスを設置しようとしています。
ボックスにデフォルトで表示される文面(defaultcontent)は、以下のように
「location.href」としてページごとのアドレスが来るように指定しています。
twttr.anywhere(function(twitter) {twitter("#tweetBox").tweetBox({
defaultContent: " " + location.href});
このアドレスを「bit.ly API」を用いた短縮アドレスに置き換えたいと考えています。
以下のサイト様を参考にしていますが、リンクボタンとして説明されている方法を
テキストボックスに応用するにはどのような手順が必要でしょうか?
ttp://ringoon.jp/2009/10/16/bitly-api-javascript-twitter.html
195 :
Name_Not_Found :2011/03/02(水) 20:31:31.32 ID:oCi0vbPB
>>194 そのページで言うところのtweet関数を実行すればいいと思うよ
Faceboxライブラリで手前にHTMLを表示したいのですが、画像は普通に表示できるのに、htmlファイルは指定してもうまく表示出来ません やり方もしくは参考になるサイトをご存知でしたらご教授ください
>>195 ありがとうございます。
どうしても解決しないため、更に恥を承知でお聞きできればと思います。
この場合の関数の実行は
twttr.anywhere(function(twitter) {twitter("#tweetBox").tweetBox({
defaultContent: " " + tweet(); });
で可能なのでしょうか。
実行されないどころかツイートボックスが消えてしまうため
相当基礎的な知識不足だとは思いますが宜しくお願いします。
FAQの目次はもうちょっと行間あけるべきだな。見辛い。
改行厨が気分で3行も4行も空けかねないので意見は正確に。
200 :
Name_Not_Found :2011/03/02(水) 21:45:46.48 ID:oCi0vbPB
>>197 tweet関数を叩くと、実質的にcallback関数が実行される
なんでそうなるのかは、JSONPでおググりください
んで、callback関数の引数bitlyResponseに
bitlyからのレスポンスが入ってるから、それをテキストボックスに書きこむように
callback関数を改変すればいいよ
もちろん、余分な部分は削るんだよ
201 :
Name_Not_Found :2011/03/02(水) 21:51:44.11 ID:l+RU8Xmf
selenium使ってる人います? スレチは承知です。本スレ過疎だったのでマルチです JavaScriptの配列の値a1,a2,a3,a4...を順次field1,field2...に入れるにはどうしたらいいですかね どうも上手くいかない
質問流れるから自重するか あぼんするから名前にテンプレ議論ってつけてよ いちいち更新のたびに貼らなくてもいいからさ
安易に更新しすぎ 更新するときは相談しましょう
>更新の度にリンク貼らなかったら、更新があったことがわからないんだからしょうがない。 そもそも通知する必要はない 質問を加筆したとかならまだわかるけど 特に行間を広げたとか配色を変えたとかアフォかと
配色は知らんけど、行間は>198を取り入れただけでは?
>>205 質問がある人がくるスレなのにその質問者にNG強要してどうすんだよ
ほんと身勝手な奴おおいな
別に強要はしてないだろ。
見たくなければURLをアボン対象にすればいいと
>>205 は言ってるんだろ?
テンプレ議論の流れになる度に否定的な意見がつくな。 質問が流れるのが嫌なら議論も嫌ってことだろうから、テンプレ不要とはっきりいえばいい。
いやいつまでもグダグダやってるから突っ込まれるだけ スレが落ちそうなころにまとめてやっとけばいい 新スレになってからグダグダはじめるのは問題だと思うわ
>>212 >スレが落ちそうなころに
その頃に始めて、まとまらなかったから次のスレで...って繰り返しがどれだけ続いたと思っているんだ
欠点は固定のうrlで最新版が覗けないってことかなー
>>213 続いてないだろ
次スレまでにまとまらなかったら現状維持できっぱり終わらせるのが今までの流れ
だいたい200までグダグダやってたのは記憶にない
テンプレ議論は850からで次回にまとめたのを反映。 議論がまとまらなかった場合次回に持ち込まない。 暗黙でこんな感じだったんじゃないのか?
>現状維持で きっぱり終わるどころか、グダグダで始まってすらない
ようは不要ってことだろ もう反映続けてるやつは黙ってコッソリやっとけや 次スレにテンプレに入れとけば見たいやつはアクセスするだろ
一人で更新するならともかく、共同でこっそり更新する方法なんかないだろ
くだらないことで議論しないで欲しい。 テンプレ更新してくれる人は粘着してる奴よりよっぽどこのスレに貢献してる。
自演でそんなこと言われても・・・
function open_sure() { window.open("index.php", "", "resizable=yes, width=600, height=400"); } <form method="POST" action="index.php"> <input type="hidden" name="hoge" value="sakana"> <input type="submit" value="魚"> </form> とフォームデータを送って、そのファイルをポップアップで開くというのをやりたいのですがどのようにしたらよいのでしょうか?
>>200 丁寧な回答ありがとうございます、方向性が定まり大変助かりました。
しかし色々と試してみたのですがどうしても定義に失敗します。
短縮URLをツイートボックスに書き込むよう指示するcallback関数の構文について、
どなたかお知恵お貸し頂けると幸いです。現在は次のように思考錯誤しております。
function callback(bitlyResponse) {
var url = '
http://twitter.com/home/?status= '
+ encodeURIComponent( ' '
+ bitlyResponse.results[location.href]['shortUrl']);
document.getElementById("tweetbox") = url}
ツイートボックスは以下のようになっております。
<div id="tweetBox"></div><script type="text/javascript">
twttr.anywhere(function(twitter) {
twitter("#tweetBox").tweetBox({
label: "コメントする",
defaultContent: " " + tweet()
>>171 Firebug が原因だと思う。Firebug を更新してから再現した&>169も再現したから。
ただ、innerHTML は信頼できるものでもないから、Ajax を扱うなら XML か JSON の方がいいとは思う。
>>225 ありがとうございます!
スクリプトを後に記述してるのはそっちの方がいいからですか?
>>226 jsbinの仕様です。
formにtarget属性指定してsubmitする直前にtargetで指定した名前のウインドウを開くだけだから書き方は自由。
>>227 おお、くだらない質問でしたがありがとうございます!
229 :
Name_Not_Found :2011/03/03(木) 02:24:38.21 ID:VGgOXRXk
別スレでも聞いてしまったのですが、こっちで聞かせてください Chromeで時計っぽいものを簡単につくろうと思っています。 一秒間に一回-webkit-transform:rotateを6度ずつ増やしていこうと思っているのですが 回転してくれません <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>回転</title> <script> var tmrID; //タイマーID var sec = 0; tmrID = setInterval( "interval()", 1000 ); // 時間ごとの処理 function interval(){ sec ++; document.getElementById("rotate").style.-webkit-transform="rotate("+(sec*6)+"deg)";//ここでエラーになります。 } </script> </head> <body > <div id ="rotate" style="position:absolute;left:10em;top:10em;">↑</div> </body> </html> よろしくお願いします。
-webkit-transformをWebkitTransformにしたら動くと思うよ
231 :
Name_Not_Found :2011/03/03(木) 02:52:38.72 ID:VGgOXRXk
233 :
232 :2011/03/03(木) 06:34:48.61 ID:???
すみません補足です、ブラウザはfirefox3.6です。 IE8ではうまくいっているみたいです。
if (window.ActiveXObject) if (typeof window.ActiveXObject != "undefined") とかある関数やオブジェクトが存在するかしないかを調べる時細かい書き方がいくつもありますが どういう方法がいいのでしょうか?
235 :
Name_Not_Found :2011/03/03(木) 08:59:36.63 ID:aA+dcTXA
var a = 10; for (var b in window) { document.write(b+" "+window[b]+"<br>"); } このコードのvarを片方消したり両方消したりして色々みてみた結果 aのvarを外してbのvarをつけると b→aの順番に表示されます aはvarを外そうが外さまいが表示されますがbのvarを外すと表示されません 基本的なことで申し訳ないですがこれはどういうことなのでしょうか? よく聞くスコープ汚染とかそういうものと関係してるのでしょうか?
>>234 どのパターンがよいとかでなくて、前後の文脈で必然的な条件式になるんじゃないのかね。
緩くしておくときもあれば厳密な評価が必要とか、良し悪しは前後の文脈でかわると思うけど。
>>236 それぞれどういう文脈で使うの?
if(window.ActiveXObject)
if("ActiveXObject" in window)
とか違いがわからず適当に使ってます
>>238 in演算子、typeof演算子、IfStatementでぐぐれば幸せになれるんじゃないかな
>>238 違いくらいは調べてよ。
ActiveXObjectは持ってるか持ってないかだけ見ればそれでいいんじゃないの。
効率のいい方を使えば。緩くていいと思うよ。
function hoge(arg1, arg2, callback, ... ) {
...
if (typeof callback === 'function') callback();
...
}
前後の文脈では厳密な評価が必要になってくる場合があるってことです。
typeofは別だとわかるけど if(window.ActiveXObject)とif("ActiveXObject" in window)の違いがよくわからない
プロパティがあるかないかを調べるんだからinを使うべきじゃね window.ActiveXObjectだと[[Get]]とToBooleanが呼ばれて非効率的な気がする
そんなのコーディングスタイルによって変わる 効率を取るか理解しやすさを取るかだ
>>225 JSBINって使った事ないからわからないんだけど
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "
https://ssl. " : "
http://www. ");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-1656750-13");
pageTracker._trackPageview();
</script><script src="/js/render/edit.js"></script>
の部分って明らかに不要だよね?
これは構築する時付いてくるモノなのかな?
使ってみろよ
>>244 仕様。
仕方がないと言っちゃ仕方がない仕様
>>242 window.ActiveXObject なら null や undefined の場合に拒否できる。使い方次第。
そんなの探す暇あるなら答えてやりなよ
煽ってる暇があるなら答えてやりなよ
たまーにヤフー知恵袋でも聞いてるってのあるけど、俺は別にかまわないとおもう こっちで満足のいく回答が得られなかったからヤフーで聞いてるワケだろうし ちなみに俺はツイッターやった事ないからよくわからない
HTMLの方で質問してみたんですがどうやらjavascriptの事だったらしいです <FORM> <TEXTAREA rows="4" cols="40"></TEXTAREA> <input type="submit"> </FORM> とあるのですが、この送信するのをボタンではなく <th>〜</th>のエリアにしたいのですがどのようにしたらいいのでしょうか? <th onclick()>〜</th>でサブミットする感じで
テーブルにフォームつけたいってことかい <form action="" method="post"> <table> <tr><th><textarea rows="4" cols="40"></textarea><input type="submit" /></th></tr> </table> </form> ふつーにHTMLだよ
いえ、近いのですが submitってsubmitボタンを押して実行するじゃないですか? ソレをtableの<th>〜</th>で囲まれたエリアをクリックするとsubmitが実行されるっていう感じに
そんなことしたら textarea に入力できなくなる
thは見出しを記述するところだからtdにね。 あと、キーボードでフォームを送信出来なくなるから使いづらくなるしjs切ってたら動作しないからお勧めしない <form action="index.php" name="test"> <table> <tr> <td><textarea rows="5" cols="40" name="text"></textarea></td> <td onclick="document.forms['test'].submit();">Click ?</td> </tr> </table> </form>
<form action="" method="post"> <table> <tr> <th><textarea rows="4" cols="40"></textarea></th> <th><input type="submit" /></th> ←ココ </tr> </table> </form> コレをinput type="submit"じゃなくて <th onclick="submit()"></th>こうしたいんじゃね?
>>256 そういう感じです!ありがとうございます!
259 :
232 :2011/03/03(木) 17:41:13.23 ID:???
>>232 D&Dをやめる事にしましたので質問は取り下げます
> if(window.ActiveXObject) これをFirefoxでやると、内部で未定義の値を参照したというWarningになるので 出来たら避けた方がベターかと
なら if(window["ActiveXObject"]) とかやりゃいい
それをするぐらいならin使えよ。 もしくはtypeof使って確認しろよ。
はいin使います typeof使って確認します 怒らせてしまったようで本当にすみませんでした なんとお詫びしたら・・・ 申し訳なくてただただ猛省するばかりです 二度とここには来ませんのでどうかそれでお許し願えれば幸いです
hoge.on〜=function(){this.〜}; と hoge.on〜=function(){hoge.〜}; ってどう違うんですか?
thisは呼び出し方によって変化する ほとんどの場合は影響ないが document.body.onclick = function(){ alert(this); }; クリックする → [object HTMLBodyElement] document.body.onclick(); → [object HTMLBodyElement] setTimeout(document.body.onclick); → [object Window] document.body.onclick.call(); → [object Window] document.body.onclick.call("こんにちは!!"); → "こんにちは!!"
>>264 thisでなければ参照できない場合もある。
function foo () { alert(this); }
function piyo (hoge) { hoge.onclick = foo; }
>>266 function piyo (hoge) { hoge.onclick = foo; }
piyo(hoge)のhogeってpiyoを実行する引数?
引数だけどhogeを生成してるのでしょうか?
(´;ω;`)ウッ…わけわかめ
foo = handler piyo = setHandler これならわかるか?
>>267 piyo(document.getElementById('hoge')); // これでわかるかな?
270 :
267 :2011/03/04(金) 08:21:35.48 ID:???
今フィーチャーフォン(iモードブラウザ2.0)向けにHTML5のAPIを移植できないか思考錯誤してる geolocationはiframeとbutton.clickで簡単にできた Canvasは多角形と円まで ただしinline-blockで構築してるから100x100くらいが実用的に限界 それでも現在α値合成にトライ中 Canvasが普通に動く環境がないから本当にちゃんと出来てるかはわかないけどね
ブログでやれ
273 :
Name_Not_Found :2011/03/04(金) 13:54:28.27 ID:NTSxsUAI
ソース読んだらいいと思うよ
マッチした回数を取り出す方法ってありますか?
すいません事故解決しました
すいません、解決していませんでした
splitで区切ってから配列数を数える
String#match
280 :
Name_Not_Found :2011/03/04(金) 17:20:45.41 ID:NTSxsUAI
ソースをみせながら、ボタンをおすと、アラートで、helloworldをだすプログラムです。 <textarea> alert('Hello, JavaScript'); </textarea><input type="submit" value="Run" onclick=" try{ eval( this.previousSibling.value ); }catch(e){ alert(e); } "> ブログに、これをうったのですが、動きません どこをなおすべきでしょう?
ブログ・・・?
>>280 <input type="button" value="run" onClick="alert('hellow world');">
酷いスクリプトだな
酷いコメントだな
285 :
280 :2011/03/04(金) 20:09:52.04 ID:NTSxsUAI
ヒントをあげるから考えなさい ・入力エリアの文字列を取得する ・evalでそれを実行する
eval is evil
eval de ibaruna
demo eval benri
初心者がdankogaiを参考にすることに無理がある
下のプログラムは何をする物なんですか? また、window.opera?4の?って何ですか? javascriptで?の〜ってよく使うんですか? // _bro: 1=NN6+, 2=NN4, 3=IE, 4=Opera, 0=others _bro=(window.opera?4:(document.all?3:(document.getElementById?1:(document.layers?2:0)))); // _ie5: true=IE5+ _ie5=(navigator.appName.indexOf('Microsoft Internet Explorer')>=0 && document.getElementById)?true:false; // _mac : true = macintosh, false = other os _mac=navigator.userAgent.indexOf('Mac')>=0;
三項演算子
>>291 コメントが書いてあるだろう、Operaなら4が代入される。?演算子ぐらい基本だから勉強しとけ。
?演算子に突っ込もうかと思ったがやめておこう
295 :
Name_Not_Found :2011/03/05(土) 14:27:02.20 ID:lFFOEPx2
A? B : C if ( A ){ B; } else { C }
291 ググってきました ?は三項演算子でショートコーディングという手法なんですね ありがとうございました
オンクリックイベントを拾って実行するコードを以下のようにしていたのですが、 onClick="hoge()" function hoge(){処理} 知り合いに↓のようにイベントをfalseにして終了するようにすべきだと言われました。 onClick="return hoge()" function hoge(){処理 return false;} hrefを設定した要素に対し、javascript有効時はhrefが読まれないようにイベントをキャンセルするとかならわかるんですが、 そういう理由が無くても、とにかくonClickは最後にfalseして終了するのが基本だと言われて混乱しました。 一応、理由を聞いてはみたんですが、 「構文上の理由。業界の決まりごと。onClickは必ずreturn falseしないと笑われるよ」としか言われず、 何故それが必要なのかはわかりませんでした。 onClickを毎回falseにしないとどういう問題が起こるのか教えて下さい。
問題ないからそんなことわざわざしない
そうですか・・・。やっぱどう考えても無意味ですよね。 いじめられてんのかな俺。
ちゃんと意味はあるが。 returnを書いた場合と書かない場合の差を勉強した方が良い。 というかFAQにもあった気が。
301 :
Name_Not_Found :2011/03/05(土) 21:50:47.24 ID:69jGAvKc
注意した奴もなぜ必要なのかが解ってなかっただけだろ。
303 :
Name_Not_Found :2011/03/05(土) 22:26:03.86 ID:xSv4fAGF
>>300 >>3 のQ9のこと?
>>297 は
>hrefを設定した要素に対し、javascript有効時はhrefが読まれないようにイベントをキャンセルするとかならわかるんですが、
>そういう理由が無くても、とにかくonClickは最後にfalseして終了するのが基本だと言われて混乱しました。
って言ってるんだからFAQのことはわかった上で聞いてるんでしょ。
spanとかpタグにつけるonclickに意味もなくreturn falseなんて付けたことないから
知り合いの言いたい意味がわからん。
>>303 ごめん。とばし読みだったのでhref属性がある要素に対してと思ってた。
href無いな要らないね。結局の所
>>302 って事でしょ。
>>297 何でもかんでも、return false付けてたら、お前が笑われるよって言ってやれよ。
divとかに付けてたら、ギャグだと思うぞ
その時きちんと言い返せなかったんだからどっちもどっちだわ
信念を持つことと疑問を持つことは別物。盲信したいなら止めないけど。
hrefでもわざわざreturn false入れんのは麺毒背絵
DOM 挿入順序リーク というのは、現在のブラウザでもまだ改善されていないのでしょうか?
例:
http://stackoverflow.com/questions/1577840/ var root = document.createElement("DIV");
var child = document.createElement("DIV");
// THIS IS WRONG
root.appendChild(child); document.body.appendChild(root);
// THIS IS CORRECT
document.body.appendChild(root); root.appendChild(child);
今まではパフォーマンスが良さそうなので、前者のWRONGって書かれている方で記述していたのですが。
311 :
Name_Not_Found :2011/03/06(日) 19:01:05.69 ID:Kv+YZhco
プログラム板のほうに書いてしまいましたので こちらにおたずねします 複数の(大量の)トグルスイッチがあって、idをふらずに個別操作したいのですが 方法はありますか? <div class="tgl"> <button>more</button><div class="more">text 1</div> </div> <div class="tgl"> <button>more</button><div class="more">text 2</div> </div>
あります。 はい、次。
>>309 パフォーマンス気にするなら、DocumentFagment作ってから、そんなかでDOM組み立てて、一気にappendした方が速いと思うけども。
>>313 >
>>309 >パフォーマンス気にするなら、DocumentFagment作ってから、そんなかでDOM組み立てて、一気にappendした方が速いと思うけども。
おっと、Fragmentだ。
315 :
309 :2011/03/06(日) 20:10:04.51 ID:???
ご返答ありがとうございます。気にしているのはリークの方なので、 肝心の、リーク自体は改善されているということで正しいでしょうか?
>>315 記憶では IE7 まで残っていたリークパターンだが、ソースは見つけられなかった。
意図的に極端なリークパターンを作ってテストするしかないかも…。
DOMツリーに appendChild してから attachEvent() すれば回避できるパターンなのでどっちにしてもパフォーマンスは気にならないんじゃないかな。
よくcreate-Fragment内にappendChildした方が早いと聞きますが iモードブラウザ等NFではcreate-Element("span")内にappendChildした方が僅かに早いか同じくらいになります どうしてでしょうか? また、このような結果になるのでブラウザ別に処理を分けた方がいいのでしょうか?
そんなわずかな差を気にするほどの大きなことをやってるのか? 携帯は特に実装によって差が有るだろうから、気にしなくていいと思うぞ。
既存のソフトの対応サイトを自力改造で増やしたいのでjavascriptを読めるようになりたいんですが お勧めのjavascriptの文法書みたいなのってありませんか?
読めるだけならgoogleで十分だと思うんだが・・・・
for in 構文でのイテレート順って仕様で既定されてるんですか? fx3 で試すとキー作られた順に取り出されて、値の更新をしても順序が 変わることはなかったんですけど、そう期待したコード書いて良いのか不安です・・・
>>320 特定の単語の意味とかでなくて
文の構造を順をおって解説してる感じのやつがほしいんです
Firebugとかでステップ実行できるよ
>>319 JavaScript 第五版。英語でよければ第六版かな。
今時はJavaScriptはコピペして持ってきて使うものなのかな? それとも自作するもの?
GreasemonkeyからunsafeWindowを使わずにwindow.exampleを取得したいのですがどうしたらいいですか
328 :
Name_Not_Found :2011/03/07(月) 17:30:10.37 ID:MmIoQuMq
webサイトをjqueryを使って制作していますが 例えばページA.htmlで、指定したタグに.clickイベントやaddClassでクラスを付加させた状態で そのままページB.htmlに移動すると、ページAで付加していた.click要素等は全部勝手に消えていってくれるのでしょうか? それとも、別ページに移動する前にそのページで付加したイベントやaddClassしたクラス等は全部消して戻しておくべきでしょうか?
いちいち消すとかめんどくさすぎだろ そんな欠陥言語じゃないから心配せずに放置しておけ
>>328 作法としては removeEventListener した方がよいといわれる。IE6のリークパターンはそれで回避する手法を提案されているし、この手のリークパターンは形成されやすいらしい。
jQueryは自動でリスナ解除するよ
332 :
328 :2011/03/07(月) 18:45:48.06 ID:???
>>329-331 jqueryのイベント等はそのまま移行で問題なし
javascriptでaddEventListenerしたらremoveEventListenerしておく
という認識でいいんですかね。ありがとうございます!
>>321 そんなバグの元のようなプログラム書かない方が
自分の精神衛生上にもいいんじゃない?
数字文字列を数値型にするやり方は色々あると思いますが 一般的なデファクトスタンダードはperseIntですかね? '1234'-0は邪道?
少なくとも品質は最低だな
perseIntなら分からなくてもぐぐればすぐでるから他の人に優しいんじゃね。
Numberが関数分からない人にやさしいかな。単語を知ってれば理解できる
Numberの方が構文解析しない分、高速だしな
submitした後、ページが全く切り替わることなく、 帰ってくる結果を変数に格納する方法はないでしょうか? 例: <form method="post" action="/htmlTest.html"> お名前:<input name="yourName"> <input type="submit" value="送信">
form使わない。 XMLHttpRequestとか new Ajax.Request(prototype.js)とか $.ajax(jQuery)
>>343 やはりそっちの方法しかないですか。
サンクス
345 :
336 :2011/03/07(月) 23:36:09.10 ID:???
>>339 成る程!
>>341 Number使うようにします!
perseIntは10進数以外の時、-0は邪道で低品質で頭がどうかしてるマジキチって事ですね
parseInt("011") // 9 parseInt("011", 10) //11 parseInt("0x11", 10) //0 parseInt("0x11", 16) //17 Number("011") // 11 Number("0x11") //17 それぞれ使いどころはある。 Stringにmatchさせればこちらが想定したやつはすべて正しく変換出来る。
347 :
Name_Not_Found :2011/03/08(火) 00:13:50.64 ID:McdxT2hH
オブジェクト指向っぽくアクセサ作っても Klass.prototype.getHoge = function(){ return this.hoge;} みたいにhogeをパブリックにしないといけないから、結局隠蔽できないって認識は合ってる?
new Class().hogeでアクセス出来るね。 function Class(hoge){ this.getHoge = function(){ return hoge; }; } ってすればおk
jQueryXMLで、 <AAA> <id>BBB</id> <name>CCC </name> </AAA> こんなXMLファイルからAAAのidを出すには function xmlParser(xml) { $(xml).find("AAA").each(function () { ($(this).find('id').text()); これで出来るのですが、BBBが分っていてそれからnameを探し出すにはどうやるのですか? $(xml).find("BBB").each(function () { ($(this).find('name').text()); これではうまくいかなかったです・・・
>>348 それだとインスタンス毎にgetHogeにメモリが割り当てられてメモリ効率悪いから、
getterを作るためだけにprototype使わずに
this.getHoge = function(){...}
ってするなら、パブリック変数でいいやって認識は正しい?
parseIntは、"2px"とかを扱う時に便利
353 :
336 :2011/03/08(火) 10:30:17.66 ID:???
>>346 あーそうだった
ユーザ入力箇所とかの制御はperseIntのがいいね
てか処理速度だけで見るとstring-0がダントツで早いじゃまいか
美しい書き方じゃないけどね
減算じゃなく除算でやる奴は意味不明だけどね
要はcase by caseで使い分けるのがいいね
>>349 それだとこんなのを探してる事になるんじゃない?
<BBB>
<name>CCC </name>
</BBB>
355 :
336 :2011/03/08(火) 10:43:05.72 ID:???
>>351 これは知らなかった
ありがとうございます!
やっぱperseIntですよねww
Number()涙目wwwざまぁあww
減算「速度には自信があります!」
perseInt「柔軟性には誰にも負けません」
Number「可読せぃ」
面接官「帰れ!」
除算「速度にはそれなりに」
面接官「君まだいたの?w」
こんな感じでウッボー?
考え方次第。末尾に余分なものがついている場合にさっさと エラーにして止めたい場合はparseIntの方が不便かも知れない。 parseIntの「0で始まると8進」というのはうっかりすると 結構罠になるのでparseFloat使ったりする(初心者に説明が楽)。
356の頭の悪さに閉口
'1234' - 0 は +'1234' と同じだが 後者のほうがパッと見て分かりやすいだろ
CSSの%lengthは小数を含むんだから使うならparseFloat parseFloat(' 1234.56()&%$"#$');みたいにいい加減にパースしていいならという制約付き。RegExp#test()でチェックしなきゃまともに使えない。
parseInt使うなら基数をちゃんと指定すればいいだけの話じゃね
parseInt は末尾の文字列を削り取る。末尾の文字列は決めうちで使っているようないいかげんなコードをよく見る。 var fontSize = parseInt(element.style.fontSize, 10); element.style.fontSize = (fontSize * 1.5) + 'px'; せめて元々の単位を保持しておけよ、って思う。 var fontSize = element.style.fontSize.match(/^(\d+)(px|e[mx]|pt)$/); // 面倒なので全部の単位を調べてないけど、必要最小限でも制限した方がまだマシ
実際にCSSで使われてる単位はin cm pc mm pt em ex px deg grad radぐらいかな 音声スタイルでms s hz khzとかもあるけど。
parseInt("10.5px") === 10; parseFloat("10.5px") === 10.5;
px em %ぐらいしか使わない 昔はptも使ってたけど
emで指定しててもpxで吐き出してくれるのなかったっけ?
>>366 computedStyle のこと?
px を返す実装が多いけど実装依存だよ。
>>362 俺がparseIntで単位を削除する時は自分でCSSも書いてる時だな。
divはほぼpxで指定してるからそういう自分で制御できる時でなければparseIntで削除したりしない
369 :
Name_Not_Found :2011/03/09(水) 00:10:03.46 ID:fH9u6phT
div.outerHTMLが <div>foo</div> のとき、 div.className = 'bar'; を書くとdiv.outerHTMLは <div class="bar">foo</div> になりますよね。 このouterHTMLのように、他のプロパティに影響を受けて変化するプロパティは、どのように作るのでしょうか。
プロパティにこだわるならgetterとかsetterとかか
>>368 要らぬお世話かもしれないが、後任者がCSSだけいじって不具合が発生したとかGreaseMonkeyで element.style が改変されていたとか、一部でも想定している環境と合致しないと期待通りに動作しなくなる。
本当にいいコードは自分の期待する環境の幅を広くとっているものだと思う。
>>369 Object.defineProperty (Fx3 は __defineGetter__ と __defineSetter__)
JScriptでcatchブロックの下にあるfinallyブロックを使い、 ソースコードを定期的かつ自動的に実行したいのですが どのように記述しするべきなのでしょうか? ちなみにfinallyブロックはこのように記述されていて、 IEブラウザが勝手に閉じてくれます finally{ ie.Quit(); }
>ソースコードを定期的かつ自動的に実行したいのですが タスクスケジューラじゃだめなの? JScriptやったことないからよく知らんけど駐留型のプログラム? 定期的かつ自動的といったらsetInterval関数ではないだろうか しかしなぜにfinallyで定期処理をするのかしら? 正常に終了までリトライし続けるとかなんかなのかな
鼬害です
>>374 タスクスケジューラというものがあったんですね!
ありがとうございます!それを使用してみたいと思います
>>371 グリモンは影響デカイけど
流石にユーザ側の自己責任じゃね?
難しい所だけど
>>373 そもそもスレ違い
タスクスケジューラって起動しっぱなしじゃないと、実行してくれないんですか?
そりゃそうよ 具体的に何やりたいのかしらないけどクライアント側でやりたいんじゃないの?
_mac=navigator.userAgent.indexOf('Mac')>=0; alert("_mac="+_mac); をwinで実行すると_mac=falseがアラートで出てきます _mac=navigator.userAgent.indexOf('Mac'); alert("_mac="+_mac); とすると_mac=-1がアラートで出てきます。 >=0の意味が分かりません。何ですか?
----- javascript ----- function check() { alert(window.event.srcElement);/*Firefox用は省略*/ } ----- html ----- <div onclick="check()">foo<span>bar</span><b>baz</b></div> divをクリックした時にdivに対してイベントが起こり、div内の子要素をクリックした時は、 divの子要素ではなくdivに対してイベントを起こすっていう事をしたいのですがどうすればいいでしょうか? 上記のコードの場合はdivをクリックしてもspanやbをクリックしても表示されるのは"divElement"という感じにしたいです。 よろしくお願いします。
function check(e) { alert(e.target) }
>>381 onclick="check(this)"
htmlに埋め込むならthisいいんじゃないか。
thisで取れないって話は聞かないし、無難だと思うけどね。
385 :
Name_Not_Found :2011/03/09(水) 15:11:08.63 ID:LTgPF1p2
>>380 navigator.userAgent.indexOf('Mac') ≧ 0 なら真
としか言いようがないんだが…
indexOf( needle )は、needleがあれば、その位置(何文字目)を
なければ-1を返すメソッドよ
386 :
Name_Not_Found :2011/03/09(水) 15:12:16.73 ID:z9tgyAo4
jsファイルの関数間で共通に参照できる変数を使いたくて jQueryを使用しているので、まだ知識も曖昧ですが$..extendで変数名と値を設定し、$.変数名から値を参照するという方法をとってみましたが これはjQueryの扱い方としては問題無いのでしょうか より良い方法があればどうか教えて下さい またこの$.extendは、javascriptでprototypeに追加してインスタンスの値として扱うタイプではなく 直接オブジェクトに追加する形でメモリをそのまま圧迫してしまうというタイプでしょうか?
単にwindowに変数入れればいいだけでは?
グローバル変数使えよ
>>387-389 ありがとうございます
グローバル変数を使用するのは推奨しないような内容の解説があったので避けていました
windowに入れる方法や教えて頂いた方法も調べて考えてみます。
new Date()/1e3|0 こんなコードがあるのですが どなたか解説していただけませんか? new Date()の返り値が Wed Mar 09 2011 20:31:16 GMT+0900 ということまでしかわかりません
Dateはミリ秒単位だから1000で割って秒単位にしてる
393 :
391 :2011/03/09(水) 21:01:20.75 ID:???
>>392 ありがとうございます
確かに1000で割って小数点をきったら同じ数値になりました
1e3|0にはそういう意味があったんですね
指数表記が使えるんですね知りませんでした
|0は小数点を切るという意味なんでしょうか?
new Date()+0をしてもnew Date()の文字列が返ってきて
数値加算と除算でなんで返り値が違うのか不思議でしたが
文字列結合にも使う+演算子を使ったのがいけなかったんですね(-0ならいけました)
394 :
Name_Not_Found :2011/03/09(水) 21:48:11.36 ID:LTgPF1p2
>>393 「 | 」は整数として計算する論理和だから結果として整数に
関係ないけど、getTime使わないとなんかモヤモヤする〜!
395 :
391 :2011/03/09(水) 23:28:49.14 ID:???
>>394 なるほどーどうもありがとうございます
parseInt(new Date().getTime()/1000)
のほうが多くの人にとって分かりやすいと思うしいいですよねタブン
整数化するのってMath.floorとかが一般的じゃないの parseIntだと数値→文字列→数値ってなりそう
このスレでも最近話題になっただろ 少し前のやり取りぐらい読めよ・・・w
少し前のって整数化とは関係ないんじゃないの 数値化する関数の比較の話だと思ったけど
処理に掛かる時間の話だろ
400 :
380 :2011/03/10(木) 09:19:09.72 ID:???
>>384 >>385 >=0とすると_mac=-1が
_mac==falseというように_macにfalseを代入したわけでもないのに
falseが何で出てくるということが知りたかったんです。
-1が0以上でないからfalseが返ってくるってことですか?
> -1が0以上でないからfalseが返ってくるってことですか? そういうこと。 >=などの関係演算子、==などの等価演算子の評価結果は 比較対象の型がなんであれ、trueかfalseのどちらかと決められてる。 演算子つーのはそれだけで、ごちゃごちゃといろんなことを中でやってるのだよ。
402 :
Name_Not_Found :2011/03/10(木) 11:16:40.59 ID:8RYvhoI/
>>400 よく
if(a >= 0){ ごにょごにょ }
って書くでしょう?この時の「>=」と全く一緒
比較演算子の返す結果は真偽
403 :
380 :2011/03/10(木) 12:06:57.05 ID:???
>>402 そのとき
a=-8の場合はif(a >= 0){ ごにょごにょ }でa=falseと
コンピューターで解釈されるということですか?
>>403 >a=falseと
そうではない。 a >= 0 が false と解釈される。
皆の迷惑になるから、JavaScriptの仕様書かせめて入門書ぐらい一通り読んでから質問しろよ。
どうでもいいけど >= キモい <= 使ってくれ
406 :
Name_Not_Found :2011/03/10(木) 12:59:39.35 ID:8RYvhoI/
>>403 ちがう
a >= 0 の演算結果がfalse
多分なにか勘違いしていると思う
「>=」は「≧」のこと
≧は+とかーとか×とか÷とかと同じように、演算子のひとつ
a + b を演算すると、結果はaとbの和(数値)
a × b を演算すると、結果はaとbの積(数値)
a ≧ b を演算すると、結果はaがb以上であるかどうか(真偽値)
>>380 ,403
var a = -1
var b = (a >= 0);
alert(b); // false
if文では比較演算子の評価値(true/false) を見て処理を分けてる。
>>405 みたいな馬鹿は
(0 <= a) みたいに書いてんの?
そっちのがキモイわw
409 :
Name_Not_Found :2011/03/10(木) 19:32:23.75 ID:8RYvhoI/
べつにキモくないけど、普段何気なく見てる「<=」「>=」を こうやって意識させられると、ゲシュタルト崩壊する
getElementByIdで取得先の要素が更新して、新しい値になった場合でも 前のキャッシュが残っていて前の結果が取られるのですが、 ページリフレッシュせずにこれを解決するにはどうすればいいのでしょうか。
取得先の要素を更新しても更新されずにキャッシュがって状況がよくわからない それって更新してないだけじゃないの? 具体例を見せてほしい
innerHTMLとかで丸ごと書き換えてるとかでしょ
live だと思ってるんじゃないの。 var element = document.getElementById('hoge'); // ページの更新処理 alert(element); // element が古いまま
>>408 常に右辺が大きくなるような書き方にすると可読性が上がる
リテラル値がどっちかなんて考える必要もないしな
415 :
410 :2011/03/10(木) 20:14:25.65 ID:???
>>413 そうです。
おとなしくjquery使っておけという事でしょうか。
416 :
Name_Not_Found :2011/03/10(木) 20:32:52.04 ID:8RYvhoI/
>>414 言わんとすることはわからんでもないが
0 <= x && x < 100
みたいに書く時しかしないなあ
比較の主体になる方を左、対象になる方を右に、って書いちゃう
>>415 更新したら、もういっかい getElementById() を呼ぶ必要があるだけだよ。
あれ 大なり小なりって どつちがどっちだ
低レベルなレスはしなくてよろしい
420 :
Name_Not_Found :2011/03/10(木) 21:36:51.30 ID:eJR+lZ3V
javascriptのプライベートメソッドはどのように定義するべきなのでしょうか。 検索してみたところ、以下の方法が最も良いのではないかと思うのですが、もしより良い手段がありましたら教えてください。 var MyClass = function(){}; MyClass.prototype = (function(){ var privateMethod = function(){ //プライベートコード }; return { publicMethod : function(){ privateMethod.call(this); } } })();
>>420 var MyClass = function(){
this.privateMethod = function(){}; // プライベートメソッド
};
>>421 プライベートメソッドと言いつつ丸見えな件について
423 :
410 :2011/03/10(木) 21:54:06.79 ID:???
>>420 var MyClass = function(){
function privateMethod (){}
this.publicMethod = function publicMethod () { privateMethod.call(this); }:
};
426 :
Name_Not_Found :2011/03/10(木) 22:06:41.33 ID:eJR+lZ3V
>>424 ということは、javascriptでプライベートメソッドをエミュレートするときの慣習というか、常識となっている方法は名前規約なのですね。
回答ありがとうございました。
privateにしようとしてソースコードまでプライベートにしたら意味がない
429 :
Name_Not_Found :2011/03/10(木) 22:15:36.20 ID:eJR+lZ3V
>>425 リロードせずに見落としていました。こういうことですよね?
function MyClass (){
var privateMethod = function(){
alert('hoge');
};
this.publicMethod = function () {privateMethod.call(this);}
};
その方法はたしかに読みやすくプログラミングしやすいと思うのですが、そのメソッドはインスタンスごとに生成されてしまわないでしょうか。
メモリの観点からみるとprototypeを使って
>>420 よりも読みやすい方法があるといいのですが……。
JavaScriptはクラスベースじゃありますん
>>429 privateMethod を共有していいのなら、privateMethod を外に出せばいい。
function MyClass (hoge){ this.hoge = hoge; return this; }
(function () {
function privateMethod (){ alert(this.hoge); }
MyClass.prototype.publicMethod = function publicMethod () { privateMethod.call(this); };
})();
new MyClass('foo').publicMethod();
432 :
Name_Not_Found :2011/03/10(木) 23:17:20.20 ID:eJR+lZ3V
>>431 なるほど!Callオブジェクトの中に閉じ込めるんですね!
そんな使い方ができるなんて……とても勉強になります。
ところで、そのコードで1点わからないところがあります。
MyClassで自身を返している(return this)のはなぜなのでしょうか?
削ってみても動くようなのですが、どんな意図があるのでしょうか。
new MyClass().methodA().methodB()な使い方をしたいんじゃない?
どう読んだらそうなるんだよww
435 :
Name_Not_Found :2011/03/10(木) 23:39:35.11 ID:eJR+lZ3V
>>433 言いたいことはわかります。
jQueryによくある感じで、ドットでメソッドをつなげていくことを意識したのでしょうか。
ともかく回答してくださった方々、どうもありがとうございました!
2000年頃に流行ったreturn thisは VisualBasic畑のよくわかってない外人がmsdnのコラムで書いていたのが コピペで広まったもの
プライベートはグローバル変数と同じ、気にし過ぎる方がどうかしている どうしてもやりたきゃ適当なインスタンスを隠蔽してそいつに委譲しろ つーかそれを自動でやるのがprototypeなんだがな
javascriptでprivateはいらないな… constは欲しいけど
>>434 Test = function(){
this.hello = function(){
alert("hello");
return this;
}
this.world = function(){
alert("world");
return this;
}
}
new Test().hello().world();
こんなのを想像したが
JavaScriptでJavaみたいな書き方をする必要がないしそういうふうにできてない 他言語から来た人はもっと柔軟性をもたないと とくにオブジェクト指向といってもクラスベースとプロトタイプベースでは 根本的な概念が違うしクラスにこだわらずプロトタイプでの実装を学ぶべき
method1、method2、method3はどう違う? var MyClass = function() { var method1 = function() {} method2 = function() {} function method3() {} }
何もかもが違う
443 :
431 :2011/03/11(金) 01:47:34.09 ID:???
>>439 それもあるが、明示的に return する方がわかりやすくて好み。
この場合は違いがないので各々のスタイルで書けばいいと思う。
コンストラクタはプロパティのスナップショットをとるのにも使う return thisなんて書かなきゃならんほどグダグダ書かない方がええ どうしてもメソッドチェーンが好きならイニシャライザを分けろ
447 :
Name_Not_Found :2011/03/11(金) 11:12:42.83 ID:YPM5kKwN
1から10までの画像を全て裏で読み込んでからjavascriptを実行する方法ってありませんか? 裏で読むって無理ですかね?
すまん裏で読むってどういうことだ? 画像が読み込まれる前にじゃヴぁすくが実行されるとこまるト言うケースならわかるが、
訂正 誤 if(img.length <= ++counter) { 正 if(images.length <= ++counter) {
>>444 > コンストラクタはプロパティのスナップショットをとるのにも使う
ぐぐってもわからなかったんだけど、どういうこと?
452 :
369 :2011/03/12(土) 02:02:40.61 ID:NtVuiHyZ
onClickで文字を1px右や左に移動するスクリプトくれ
お願いします。 var str = "Hi, my name is Mike."; のような文章をまずstr.split(" ")で配列にし、 最後の文字が","か"."で終わるものを探したいのですが、うまくいきません。 ----- var lastChar; for (var i = 0, len = array.length; i < len; i++) { lastChar = array[i].charAt(array[i].length - 1); if (lastChar == "," || ".") { alert(true); } else { alert(false); } } このコードだと全てtrueになります。 if (lastChar == ...)の箇所に","か"."のどちらかひとつだけ指定すると、 それぞれ"Hi,"、"Mike."がtrueになり他のものはfalseになります。 "." || "," と、二つ指定すると全てtrueになってしまうのは何故でしょうか? よろしくお願いします。
lastChar == "," || "." の評価は、 lastCharが","だった場合 true、 違う場合"." → ifの中ではtrueと評価される つまりこうしろってこと lastChar == "," || lastChar == "." もしくは正規表現で /[,.]$/.test(array[i])
457 :
380 :2011/03/13(日) 09:07:43.80 ID:???
ajaxの質問ってここでしていいですか? 以下のプログラムはwebサーバーソフトでlocalhostに アクセスしなくても動くのは何故ですか? <html><head><title>XMLHttpRequest()の基本</title> <script type="text/javascript"> function loadTextFile() {httpObj = new XMLHttpRequest(); httpObj.onload = displayData; httpObj.open("GET","data.txt",true); httpObj.send(null);} function displayData(){ document.ajaxForm.result.value = httpObj.responseText;} </script> </head> <body> <h1>XMLHttpRequest()の基本 (IE以外)</h1> <form name="ajaxForm"> <input type="button" value="読み込み" onClick="loadTextFile()"><br> <textarea name="result" cols="40" rows="5"></textarea> </form></body> </html>
続き IE用ではwebサーバーソフトでlocalhostにアクセスでないと動きません。 これはXMLHttpRequest()とActiveXObject("Microsoft.XMLHTTP") の違いですか? <html><head><meta http-equiv="content-type" content="text/html;charset=shift_jis"> <title>XMLHttpRequest()の基本(Win IEの場合)</title> <script type="text/javascript"> function loadTextFile() {httpObj = new ActiveXObject("Microsoft.XMLHTTP"); httpObj.onreadystatechange = statusCheck; httpObj.open("GET","data.txt",true); httpObj.send(null);} function statusCheck() {if ((httpObj.readyState == 4) && (httpObj.status == 200)) {displayData();}} function displayData(){ document.ajaxForm.result.value = httpObj.responseText;} </script></head><body> <h1>XMLHttpRequest()の基本 (Win IEの場合)</h1> <form name="ajaxForm"> <input type="button" value="読み込み" onClick="loadTextFile()"><br> <textarea name="result" cols="40" rows="5"></textarea></form></body></html>
そりゃサーバを通さないでimg srcで画像が表示されるのはなぜですか?と同じだわ つこうてるプロトコルが違うからやで httpじゃなくてfileプロトコルつこうてるんや
URI の scheme 部のことか? file protocol ってどこで規定されている?
jQueryで、要素をjQueryオブジェクトにして格納した変数に 別の要素も対象範囲に追加する方法はありますか? <p id="id1">aaa</p> <p id="id2">bbb</p> <p id="id3">ccc</p> $(function(){ var t = $("#id1"); t.append($("#id3")); t.css("background", "#00FF00"); }) こうしたらaaa,cccの背景色は変わりましたが、p要素の順番が上からaaa、ccc、bbbになってしまい駄目で t.add()をしてみてもcccが追加されないのかaaaしか背景色は変わりませんでした
本来はこっちの板だと思う。。。
>>461 var t = $("#id1");
t = $(t.selector + ", #id3");
t.css("backgroundColor", "#00FF00");
$("#id1, #id3").css("backgroundColor", "#00FF00");
と何も変わらないけどね
> t.append($("#id3")); p要素を子にしちゃいかんだろ。 var t = $("#id1"); t[t.length] = $("#id2")[0]; t.length += 1; t[t.length] = $("#id3")[0]; t.length += 1; t.css("background", "#00FF00"); 当たり前のことを言うようだけど、tはjQueryオブジェクトであって配列オブジェクトじゃない。 生成したインスタンスにDOM要素を追加したいなら地道にやるしかない。
>>464-465 どうもありがとうございました!
考えていた方法では、if文を使ってid3のような一部の要素をid1要素との一斉処理する対象に含める/含めないの処理をしたかったんです
とても勉強になりました!
>>462-463 ここはJavaScriptのスレだから、個人的にはjquery固有の質問は避けて欲しいなあ
個人意見なら無視でいいな
その理屈でいくと「無視でいい」も無視することになるわけだが。
すればいいよ みんな書きたいことかいてればいい
アホのperl忍者が住み易いスレになる訳ですね
jQueryに文句は言えんな、いちおうスレチではないし
jQueryの質問は専用のスレにしたら?
自治厨氏ね
>>467 板はここってだけで
jQueryはスレチ
板とスレッドの区別ついてるか('A`)?
jQueryもJavaScriptだろ、池沼は黙ってろよ
jQueryの質問が多くなって一般の質問と分けたくなったら その時はjQueryスレを建てて独立させればいいんじゃないの。 今のところ混ざっていてもよさそうに思えるけどいかが。 jQueryもJavaScriptだ、というのはちょっとまずいんじゃないの。 ありとあらゆるJavaScript用ライブラリの話題があふれてきて 分けたくなった時にも同じことを言うわけ?
将来の仮定なんか今関係ないだろ
それはあなたの意見ですね。まあ、今分けなくてもいいという 結論が一緒なら別にそれでいいのでは。
自分の意見が一番でないと気に食わないというお子ちゃまが いるようだな。おお、2ちゃんらしい煽りだ。
両方使えばいいか
そのスレが必要であり続けるのなら制作板の方が良さそうだね。 自分には興味ないんでそのスレの人たちで決めたらいいんでないの。
そのスレも一応チェックして解答したりはしてるけど いつたったスレの事を言ってんだよって話 しかも単発っぽい奴が立てたスレだろ 再利用してるだけまだましじゃないか
iframe(同一サーバ内)が複数あるページで、 個々のフレーム全てにイベント設定をするにはどうすればいいでしょうか? 例えば、フレームの名前が一意に指定されている場合は、以下で動きます。 window["HOGE"].document.onmouseup = hoge; しかし、ページ内に存在する全てのiframeタグにイベントを指定...以下では動きません。 var fs = document.getElementsByTagName("iframe"); for (var e in fs) {e.document.onmouseup = hoge;} 複数のフレーム内への指定の仕方が根本的に間違っているのかと思いますが、 正解がわかりません。どのように記述したら良いですか?
var fs = document.getElementsByTagName("iframe"), i; for(i = 0; i < fs.length; i++){ fs[i].contentWindow.document.body.onmouseup = hoge; } 根本的に間違ってますね
487 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/14(月) 19:21:30.80 ID:YWstjSDD
俺Perl忍者さんほどレベル高くないから無理だわ 一杯勉強していつか手伝いたい
俺はwindowsだからやめとくわ
javascirptなんて知らない
>>486 ありがとうございました。framesを使ってできました。
FirefoxではcontentWindowが使えませんでしたが、良いヒントにはなりました。
>>491 contentWindowはFirefoxでも使えると思ったけど俺の勘違いなのか
var xhr = function(url){
var req = new XMLHttpRequest();
req.addEventListener("load", function(e){
parse(e, url);
}, false);
req.open("GET", url, true);
req.send(null);
}
var parse = function(e, href){
var fragment = document.createDocumentFragment(), base = document.createElement("base"), block = document.createElement("div");
base.setAttribute("href", href);
fragment.appendChild(base);
fragment.appendChild(block);
block.innerHTML = e.target.responseText;
fragment.querySelectorAll("a"); // このhref属性が欲しい
console.log(fragment);
}
xhr("
http://example.com/test2/ ");
階層の異なるURLから取ってきたHTMLに含まれた相対URLを階層を考慮して解決させたいのですが
どのようにしたらいいのでしょうか。
>>492 contentWindowはDOM2 HTMLには含まれていない→IE専、らしい。
自己解決しました
document.baseURIはdocument.write時にのみ設定可能なようでiframeを使って文書を作り要素を追加してます
innerHTMLでパース済みのa要素はリンクが解決済みで使えないので要素を作り直すようにしました
var parse = function(e, href){
var fragment = document.createDocumentFragment(), block = document.createElement("div"), iframe = document.createElement("iframe"), links = [];
fragment.appendChild(block);
block.innerHTML = e.target.responseText;
document.body.appendChild(iframe);
iframe.contentDocument.open();
iframe.contentDocument.write("<base href='" + href + "' />");
iframe.contentDocument.close();
links = Array.slice(fragment.querySelectorAll("a[href]"));
links.forEach(function(e){
var a = document.createElement("a");
a.setAttribute("href", e.getAttribute("href"));
iframe.contentDocument.body.appendChild(a);
});
iframe.contentDocument.getElementsByTagName("a"); // OK!
document.body.removeChild(iframe);
};
>>494 絶対URLも混ざっていて、相対URLの処理も完全に処理しようとすると非常にコードが長くなってしまうので使用したく無かったのです。
>>495 他の草案にあるから調べろ
>>496 GeckoならresolveURIのような何かがあった気がしたが
>>496 あとXHTMLならxml:baseを突っ込むだけでいい
見たところHTML(5)っぽいから候補外だろうが
Urchin Tracking Moduleだから広告配信とかで使うトラッキングだろう
JavaScriptでスタイルファイルをページをリロードさせることなく読み込ませる方法を教えてください スタイルファイルは時々書き換えられます
document.styleSheets等から辿れるCSSツリーを書き換えれば勝手に変わる
503 :
Name_Not_Found :2011/03/16(水) 08:52:18.11 ID:sX0fPbIu
id属性がElementObjectとして、iframeのname属性がWindowObjectとして 勝手に変数に組み込まれるのは仕様なんですか?
>>502 CSSツリーを書き換えたら自動的にスタイルファイルが再読み込み
されるってこと?
聞く前にやって味噌
jqueryを覚えた場合でもjavascriptを覚えたほうがいいですか?
必要になったら必要なことをやる これ原則
jqueryなんか覚えたうちに入らん
501です document.createStyleSheet(url)でできました でもこれIEだけですよね? 他のブラウザでもできるようにするにはどうすればいいですか?
function appendStyleSheet(src) { var style = document.createElement("link"); style.setAttribute("rel", "stylesheet"); style.setAttribute("type", "text/css"); style.setAttribute("href", src); document.getElementsByTagName("head")[0].appendChild(style); } appendStyleSheet("./style.css"); こんな感じで
512 :
Name_Not_Found :2011/03/16(水) 14:29:04.48 ID:sUxyuyZP
ie9を落とせる所ご存知でしょうか
日本以外全国
>>512 「ie9 url download」でぐぐってください
515 :
Name_Not_Found :2011/03/16(水) 17:54:55.35 ID:SAXHFflg
firebugでdomに登録されているイベントを参照したいんですができますか? できるのであれば方法を教えてください。
517 :
Name_Not_Found :2011/03/17(木) 01:12:38.15 ID:xxmXYMYf
javascriptって柔軟な書き方ができて楽しいんですが、 勢いで書いてしまうと、とても人が読めるコードではなくなってしまいます。 みなさんが「可読性が高いコード」を書く時に参考にしている記事などあったら教えてください。
good parts
jquery以外
みんなjslintとか使ってる?
使ってると言われて使ってるといったら何かが変わるなら使ってるっていってやんよ
使うメリットがあれば使う 使う必要がなければ使わない
理解出来ないものは言葉遊びで貶める レベル低いスレだなぁ
しょうもないこと聞くなと読み取れないお前が低レベル
何かにJSLintを使えるか試して、いろんな意味で使えねーと思ったな 何だったかな
validatorは整合性チェック lintはバグになりうる曖昧な記述の検出 目的が全然違う
上にコンストラクタでthisを返す云々があったが そもそもnew Baka()でBakaのインスタンス以外が返ってくるとしたら、newの意味が完全に崩壊する それなりにJSに親しんだ人間ならそんなケースはまずないことを知っている それなのに、コンストラクタでわざわざreturn thisを書くのは その中でthis以外を返すかもしれないレアケースであることを暗示している 仮にそういうレアケースだとしても、ならばコンストラクタを隠蔽し createBaka()のような関数を用意して生成手順をミスらないようにするだろう そうすれば、間違ってコンストラクタを関数呼び出しすることもなくなる つまるところ、JSでのオブジェクト指向を理解している奴としてない奴で 可読性の意味する所が全然違うだろう 可読性とは、同じレベルの者同士でしか共有しえない!
概ね同意
531 :
517 :2011/03/17(木) 22:42:42.86 ID:oWmeM+da
どれも参考にさせてもらいました。
>>528 まだ初心者なので、これを参考に丁寧に書いてみようと思います。
>>519 jQueryのコードのどの辺が読みづらいか教えていただけるとありがたいです。
再帰関数が分かりません。説明してください。
再帰関数の何がわからないのかがわかりません。説明してください。
再帰関数が何のことかわからない 仕組みがわからない 使い方がわからない 意味がわからない どれだよ
自分自身を自分で呼び出すってのが分からないんだろ
function a(){ a() } ↑これです、自分で自分を呼ぶんです
フィボナッチ数列を求めるプログラム var fibonacci=function (n){ return n<2 ? n: fibonacci(n-1) + fibonacci(n-2); }; for(var i=0; i<=10; i+=1){ document.writeln('//' +i+':'+fibonacci(i)+'<br>'); } これを例に動作を説明してください。for文で0〜10回の間に 453回fibonacciが呼び出されるのが分かりません
>>531 別に
>>519 は読みづらいとは書いてないと思うが
まぁ俺もjQueryのコードで良いと思ったものはほとんどない
無駄がありすぎてむず痒くなる
自称上級者きましたー
>>537 fibonacci(i)で引数が2以上ならその中でまたfibonacci(i)を呼ぶだろ
だからforで10のときならfibonacci(10)のなかでfibonacci(i)呼んだとき
引数はn-1とn-2のがあるけどn-1の方だと引数が9だからfibonacci(9)が呼ばれる
その中でまたfibonacci(i)呼んでまた……
ってなる
それで結果的に453回呼ばれてる
何を書けばいいんだ?
>>537 フィボナッチ数列のn番目の数はn-2番目とn-1番目の数を足して求める。
n-2番目を求めるにはn-4とn-3番目が必要
0番目と1番目だけ最初に数値与えて、後はフィボナッチ関数呼び出してそれを足してる。
4番目の3の求め方(0,1,1,2,3)
・4番目ってことは2番目(?)と3番目(?)が必要
・・2番目は0番目(0)と1番目(1)が必要
・・3番目は1番目(1)と2番目(?)が必要
・・・2番目は0番目(0)と1番目(1)が必要
階層的にはこんな感じ。
jQueryのソースの良さがわからない人はレベルが低いだけだと思うな
せめて
>>537 のコードの駄目な所を言えるぐらいじゃないと理解は出来ない
だから俺が言ってるのはjQueryそのものではなく jQueryを使っている奴のレベルが低い、ということなんだが ここまで持ち上げられているのは気持ち悪い
誰かが公開してるプラグインには確かにうんこなのは多いな 本体ソースは読んでないので知らん
レベルが低いとか無駄があるとか具体的なことを何も書かない意見は参考にならん
複雑なことにはjQuery使いたくないしなあ 単純なのを楽に書くためにjQuery使ってるんじゃないの? 画像を動かすのとかさ それをレベル低いとか言ってるんだろどうせ
>>549 だから具体的なコードを書けっつたじゃねえかよ
CSSセレクタの使い方、一時変数へのキャッシュ、ループ回数の減らし方、無名関数の減らし方
衝突しないプラグイン、jQuery自体の重たい部分を回避する方法
だいたいメソッドチェーン自体が割と重いんだよ
jQueryを使ったというだけで自分のレベルが上がったとでも勘違いしてんの?
jsonとかのデータからsocial graphを生成するjavascriptのライブラリありませんか?
なるほど、jQuery自体のソースが問題なんじゃなくてjQueryによって書かれているソースがダメなのか。
それで
>>542 か。わかりにくいよw
>>546 >>537 のダメな所か。
document.writelnかnが整数以外を考慮してないことかなぁ?
整数以外渡さなきゃいいだろ
>>552 勉強にはなったが、あんたが無駄と思ったコードを第三者が知るわけないだろ…。
「おまえレベルの低いjQuery信者だな。よし、俺がレビューしてやるから具体的なコード書けよ。」と要求したつもりなのか。
あーこれは駄目だな
>>552 程度で勉強になったと言ってるアホ共、今すぐjqueryを捨てろ
普通にjavascript書いてればわかることばっかじゃん
相変わらず何言ってるのかわからない
jquery批判が許されない雰囲気があるよね
エクセルを仕事で使うような職場で マクロを使ってさくっと終わらせると周りから「あいつはまじめに仕事をしていない」とみられるような感じとよく似てる
だがそのマクロが間違っていたら?
責任とらなきゃ
責任取るのは上の仕事
じゃあ謝るだけでいいか
568 :
Name_Not_Found :2011/03/18(金) 08:27:58.75 ID:rWQY4znE
>>544 再帰函数の話題とは関係のない話だが、フィボナッチ数列は一般項から求めたほうが早い。
>>568 フィボナッチ数列の一般項って知らない。教えて頂けませんか。
自分が知っている一番速い方法はN番目を計算するのにO(log N)
の計算量のやつ。一般項だとO(1)だから絶対的に速そう。
jQuery批判するやつはカス 今すぐ消えろ
ビネの公式でググれ
なるほどありがとう。ただ√5とか使ったら正確な整数の結果は 求まらないですね。まあ用途によりますけど。
>>537 fibonacci(0)の計算
* fibonacci(0)自体で1回『呼ばれる』
よって、fibonacciは総計1回呼ばれる。
fibonacci(1)の計算
* fibonacci(1)自体で1回『呼ばれる』
よって、fibonacciは総計1回呼ばれる。
fibonacci(2)の計算
* fibonacci(2)自体で1回『呼ばれる』
* fibonacci(1)を1回『呼ぶ
* fibonacci(0)を1回『呼ぶ』
よって、fibonacciは総計3回呼ばれる。
fibonacci(3)の計算
* fibonacci(3)自体で1回『呼ばれる』
* fibonacci(2)を1回『呼ぶ』 - これによってfibonacciは小計3回呼ばれる
* fibonacci(1)を1回『呼ぶ』 - これによってfibonacciは小計1回呼ばれる
よって、fibonacciは総計5回呼ばれる。
fibonacci(4)の計算
* fibonacci(4)自体で1回『呼ばれる』
* fibonacci(3)を1回『呼ぶ』 - これによってfibonacciは小計5回呼ばれる
* fibonacci(2)を1回『呼ぶ』 - これによってfibonacciは小計3回呼ばれる
よって、fibonacciは総計9回呼ばれる。
・
・
・
fibonacci(0)の計算〜fibonacci(10)の計算を足して、fibonacciは全部で453回呼ばれる。
学校の教科書かよ
>>562 時間かけた方が仕事してるって風潮未だにあるよね
徹夜自慢とか、仕事出来ないってのをカモフラージュしてるだけだし
車輪は利用してナンボ
>>538 無駄のないjQuery作ってください。
>>576 お前レス読み返してこいw
jQuery自体が無駄とは誰も言ってない。
いい加減、低レベルな批判はやめろよ。見ていて痛々しい。
580 :
Name_Not_Found :2011/03/18(金) 16:13:50.82 ID:ip2VWfM3
>>532 がわりと置き去りな件w
再帰関数のことわかったのかな?
532=537=551だぞ
>>580 532=537
再帰関数でフィボナッチ数列、トリボナッチ数列、階乗の計算が
できること分かりました。
学校でC言語しか習わないので、10数冊の本とインターネットでを使って
Webプログラミングを独学してます
>>582 > 再帰関数でフィボナッチ数列、トリボナッチ数列、階乗の計算が
> できること分かりました。
普通に使ってたら再帰関数の使い道はそういうところにはないよ
HTMLの中から特定の条件を満たすタグを全部抽出とか
whileループでできないようなことをするのに使う
アルゴリズム系の本を買えば詳しく載ってるよ
リカーシブはただのテクだから無理して使う必要はない コードがスッキリすること以外何もメリットはないから 特に理由がなければプログラムが遅くなるだけだから使わないほうがいい
複数段にまたがるファイルリストでも作れば理解出来るんじゃね?
でも再帰使わないで再帰表現をするのはまた別の高度なテクニックだぞ 必要なときにすぐ書けるのが再帰のいいところ
変数のスコープについて質問です $.ajax メソッドの success 内で以下のように書いているのですが success: function(data, dataType){ var a = $('#x'); var b = a.next('ul'); var c = b.children('div'); b.css("display","block"); b.html(data); if (a.attr('class') == 'y'){ b.children('.z').css('width', 120); } } if 内の b のところでこけます ちなみに if 内を少し変更して success: function(data, dataType){ var a = $('#x'); var b = a.next('ul'); var c = b.children('div'); b.css("display","block"); b.html(data); if (a.attr('class') == 'y'){ a.next('ul').children('.z').css('width', 120); } } とするとうまくいきます いろんなサイトを見て回ったのですが function 内で宣言した変数は、 function 内のどこからでもアクセスできると書いてあります わかる方いらっしゃったら教えてください
588 :
Name_Not_Found :2011/03/18(金) 19:36:50.26 ID:ip2VWfM3
こけるときのエラー調べてみたら? 多分b.html(data);でjQuery的に予想してないことが起きてるはず。
590 :
Name_Not_Found :2011/03/18(金) 20:09:24.37 ID:3/HlRLdS
twitterにいけ。
592 :
Name_Not_Found :2011/03/18(金) 21:54:07.91 ID:oJ34+48S
スマフォ用のライブラリって、結局どれがいいの?
537です フィボナッチ数列を求めるとき537だと不要な動作が含まれるので メモ化しました。 var fibonacci=function (){ var memo=[0,1]; var fib=function(n){ var result=memo[n]; if(typeof result !=='number'){ result =fib(n-1)+fib(n-2); memo[n]=result;} return result;}; return fib; }();//←の()が分かりません for(var i=0; i<=10; i+=1){ document.writeln('//' +i+':'+fibonacci(i)+'<br>');} 質問します。var 名前=function(){関数の内容}();と var 名前=function(){関数の名前};の2種類があるのが分かりません ()の意味が分かりません()は引数を入れるもの?ぐらいしか認識が ありません。
()は関数呼び出し 前者は関数の内容で得られた値を代入 後者は関数そのものを代入
JavaScriptをきちんと学習したい人はJavaScript第5版を買ったほーがいいよ ネットで手探りで学習するなんて効率悪い
JavaScript第5版ってAjaxいついて書かれていますか?
載ってるけどそこ読んでないからどれくらい詳しいかまでは知らん
jQuery クックブックもオススメ。 552がご高説している事も網羅しているしJavaScript自体の事もよく書かれている。 AjaxもjQueryをつかう前提だけど理解を深めるにはいいと思うよ
もはや再帰関係なくなった。 var fibonacci = function () { var memo = [0, 1]; var fib = function (n) { var result = memo[n]; if (typeof result !== 'number') { for (var i = memo.length; i < n; i++) memo[i] = memo[i - 2] + memo[i - 1]; result = memo[n] = memo[n - 2] + memo[n - 1]; } return result; }; return fib; }(); fibonacciには後ろの関数が実行されてreturn のfibが入る。 var a = function(){/*1*/}; var b = function(){/*2*/}; var c = a; こういうこと?
これ実行すればわかるはず var a = function(){ return true }(); var b = function(){ return true }; alert(a); alert(b); alert( b() ); //alert( a() ); ←実行するとエラーになる
フィボナッチ数列なんか再帰いらないだろ
ていうか再帰は使うべきでない 勉強にはいいかもしれないけど実践では使えない for (i=0, j=1, k=0, fib=0; i<50; i++, fib=j+k, j=k, k=fib){ document.write("Fibonacci ("+i+") = "+fib+"<br>"); }
フィボナッチ数列は再帰を説明するときに使われるだけで 実際にフィボナッチ数列が必要な人なんかいないし、いても一般項使うだろうな 実際に使うのは ファイルシステムやマトリューシカみたいな構造体へのアクセスが一番多いと思うわ フラクタル画像を描くときなんかは再帰がないとちょっときつい
子孫ノードから特定のnodeTypeを持つノードを得るときにも再帰使うかな。 再帰使わない方法も出来ると思うけど即座に思いつかない。
末尾再帰はループで除去できる 階乗とかフィボナッチ数列とかはこれ 中間の再帰はスタックを使う でもライブラリ実装者とかでもない限り 再帰のパフォーマンスが問題になるケースなんて滅多にないと思うなぁ
608 :
Name_Not_Found :2011/03/19(土) 02:50:45.13 ID:QAnjXEom
String str = 'aaa'; str.toUpperCase(); document.writeln(str); AAAと表示されないのですがもしかしてimutableクラスですか? Javaで言うところのStringBuilderだかBufferだかに当る物ってありますか?
document.writeln(str.toUpperCase());
610 :
Name_Not_Found :2011/03/19(土) 03:07:50.90 ID:QAnjXEom
んなあこたあわかっとる
少なくとも俺は聞いたこと無いな。 自前で作るならこんな感じ。 function StringBuilder(A){ this.str = String(A); } StringBuilder.prototype = { append: function(A){ return this.str += String(A); }, toUpperCase: function(){ return this.str = this.str.toUpperCase(); }, toString: function(){ return this.str.toString(); } } a=new StringBuilder("abc"); a.toUpperCase(); // まとめて移植。問題あるかも。.nameとか。 // いや、すべて返り値になるのが問題だなw for (var method in String.prototype){ if (typeof method === "function"){ StringBuilder.prototype[method.name] = function(){ return this.str = method.apply(this.str, arguments); }; } }
まとめて移植は動かんかったわ。ごめん。 このスレか前スレぐらいにArrayのラップクラスのコードがあったからそれ見れば出来るはず。 おやすみ。
613 :
Name_Not_Found :2011/03/19(土) 03:28:57.45 ID:QAnjXEom
何て言うか、imutableかどうかが一番知りたい質問かな。 Numberにしたって、 var num = 123.456789 num.toFixed(3); document.writeln(num); では駄目で、 document.writeln(num.toFixed(3));とか num1= num.toFixed(3); document.writeln(num1);とかしないといけないし。
document.writeln(str.toUpperCase()); document.writeln(num.toFixed(3)); としないといけないというだけで十分じゃないのか? 仕様書読めば確実
immutable、mは2つね。
JAVASCRIPTクイックリファレンスのStringの項みたら不変って書いてあるな 英語でかっこつけてる癖に基本的な参考書も持ってないとか恥ずかしい
そもそも数値型がmutableな言語なんて存在したっけ? あるのならぜひ知りたい。
C言語…とか……
変数は書き換え可能だけど数値という値は書き換え可能じゃないよね。 num.toFixed(3) みたいなことはC言語でどうできるって? 文字列にしてしまえばmutableだからできるのは分かっているけど。
ECMAScriptにImmutableクラスなんて概念あった? String.prototype.toUpperCaseは非破壊的でFAだと思うけど。
だからクラスという概念が無いから。もっとも書き換え可能/不能は クラスとは独立した概念なので、オブジェクトの種類ごとに どのような仕様になっているかをチェックすることはできると思う。
623 :
621 :2011/03/19(土) 15:27:14.44 ID:???
624 :
Name_Not_Found :2011/03/19(土) 19:32:22.98 ID:NaPFqQUQ
すみません >503の質問どうかよろしくお願いします
相変わらず回答きても放置する質問者が多いな
2chなんてそんなものでしょ お礼でも期待してるの?
628 :
Name_Not_Found :2011/03/20(日) 01:45:50.01 ID:ZHGMOSW3
生ダコがくいてえええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ
>625 ありがとうございました 英語のサイトは半分くらい読めないので今年英語を頑張って来年くらいにまた読みます >626 すみません… 自分は使えるネット環境は携帯しかなく、その携帯もアクセス制限をかけられていて ibisというアプリブラウザの一日5ページのお試しを使って書き込んでいるので1日1か2レスしかできないのです 大変すみませんでした
2つの変数を文字列として連結するために、 str = "" + a + b + "です"; というように、先頭に "" を付けた式を JSLintにかけると以下のような警告が出ます。 Problem : Expected 'String' and instead saw ''''. 警告される意味が理解できないのですが、 何が問題であって、どう書けばいいと言ってるのでしょうか。
ダブルクオートをシングルクオートにしてみたらどうだろう
>>631 それはやってみましたが、違いは無かったです。
空文字列で怒られてるんじゃね String(a) + String(b) + "です" とかできなかったっけ?
a.toString() + b.toString()
>633 そうかもしれないね 「文字型が帰ってくることを(toStringで明示せずに)期待している。それとシングルクォーテーション4つに見える」 っていってるみたいね。
<form method="post"> <input type='submit' name='hoge' value='1' accesskey='1'> <input type='submit' name='hoge' value='2' accesskey='2'> <input type='submit' name='hoge' value='3' accesskey='3'> </form> 上記のようなボタンが3つある時、「1」のボタンをクリックする書式を教えてください この並び方なら document.getElementsByTagName("input").item(0).click() で大丈夫なのですが、順番が入れ替わった時にどうすればわかりません itemにvalue='1'を入れると押すことは押すのですが正しいボタンを押してるわけではないようです もしくはこの書式に詳しい解説サイトありませんか?
>>635 > シングルクォーテーション4つに見える
それってどういう意味(どういうロジックでそう見えるの)でしょうか?
こうすれば、エラーが出なくなりましたが
str= String("") + a + b;
奇妙に見えますが、これでも正しいですか?
だったらstr=String()+a+b って書くわ
そもそも何故そんなにわかりにくくて見にくい書き方してるのかがわからない
>637 ごめん、あんまりjslintには詳しくないけど たぶんjslintは文法的な事だけじゃなく、 スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり) とかのコードの見た目のチェックしていると思う。それで紛らわしいのは警告を出してるじゃないかな 変数strが文字列であることを保証したいなら>634さんみたいにa,bを先に文字列に明示的に変換しておいたほうがいいと思う 638さんの式だと変数aかbに数値が代入されていると、期待した値にならないと思う。
>>641 >たぶんjslintは文法的な事だけじゃなく、
>スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり)
>とかのコードの見た目のチェックしていると思う。
そういうチェックはやってないと思うよ。
>642 ごめん、予想でかいちゃった。 じゃあ何なんだろう、型のキャストは明示的に行えってことかなぁ
>>642 やってるよ。というかそこにこだわった人が作ってるlintだから
オプション次第だと思うけど
>>644 ああ、意図的にオプション設定すれば警告するようになるのか。
==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
オブション設定で外せるようにしてくれたらいいのに。
>>645 逆逆
標準はほとんど警告出る
> ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
> オブション設定で外せるようにしてくれたらいいのに。
まさにそういうとこにこだわりまくった人が作ってるわけで
javascript the good partsとか読んで共感した人だけが使うためのツールと思った方がいい。
そうじゃなきゃ重箱の隅つつくような指摘されてかなりストレスたまると思う
>>646 >標準はほとんど警告出る
いや、標準で
>>642 で言ってるような警告は出ませんよ。
>> ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
>> オブション設定で外せるようにしてくれたらいいのに。
>まさにそういうとこにこだわりまくった人が作ってるわけで
そういう柔軟性が無いから、そのこだわりに賛同できない人にとっては
使えないツールになってしまうんですよね。
lintの目的わかってないんじゃねーの 堅牢なソースコードを作るためのこだわりを無駄というなら最初から使うなよ
堅牢なソースコードを作るためには、++ も -- も continue も使ったらいかんのですかいな
++, --は他の要素と組み合わさったとき副作用が生じる可能性がある continueは意図しない制御の流れを作る return文だって関数の末尾以外で呼び出すことはよくないとされている 堅牢なソースコードの意味わかってないんじゃないか 生産性よりも保守性を重視するってことだぞ
lintはメッセージをうまく選別してバグ探しできる人向け
++や--を使う人=堅牢なソースコードを作るこだわりを持って無い人=jslintを使うべきでない人
ってことですか。
そこまで言うんだから、もちろん
>>650 は++や--は使わない人なんですよね。
半分Yes 長期的にお世話になりそうなコードではそうする 規模の小さい、短期間しか使わない、二度と弄らないようなコードではlint自体使わない
「オブション」ってなんでやねん。 カナタイパー?
ケータイとかiPhoneとかなんじゃね いや知らんけど
657 :
Name_Not_Found :2011/03/20(日) 19:55:33.06 ID:7gvvnl5n
StringをArrayみたいにpush・popできるように拡張したいんですが var a = "abcdefg"; a.push("h"); alert(a); // a,b,c,d,e,f,g,h ↑こんな感じ とりあーやってみると、 String.prototype.push = function(item){ this = this + item; //エラー } thisキーワードは参照は出来るけど、変更できない(?)んですが、 上の例のString.prototype.push内で変数aそのものの値を操作する時はどの様にしたらいいんでしょうか?
>>657 string.split(/(?=.)/) で配列化するとか。
Srtingをpush popっておかしくね? add delとかが妥当
661 :
657 :2011/03/20(日) 20:22:28.62 ID:7gvvnl5n
すいません、657の例、間違えました。申し訳ないです。 var a = "abcdefg"; a.push("h"); alert(a); // abcdefgh となるようにです。 配列がどうとかではなくて、prototype内でStringオブジェクトの値そのもの(例だと"abcdefg"という値)を変更する方法が知りたいんです。
662 :
657 :2011/03/20(日) 20:48:34.26 ID:7gvvnl5n
>>659 Array.shift()、Array.push()、Array.pop()
みたいに
var a = "abcdefg";
a.push("h") // a:abcdefgh
a.pop() // aがabcdefgに 戻り値がh
a.shift() // aがbcdefgに 戻り値がa
てな風にしたくて、感覚的に付けたんでpush・popと書きましたが、確かにadd・delでもいいですね
>>660 無理ですか。。。
続けて申し訳ないんですが、
Arrayがpush・popが出来るのはjavascriptエンジン側が対応しているからなんでしょうか?
Chromeの開発者ツールに出てくる「ネイティブコード」ってそのエンジンの事を指してるんですかね?
javascriptの形で記述されてる何らかのコードなら覗いてみたいんですが、どうなんでせう?
チクショー リロードする前に作って損した。 var a = "abcdefg"; String.prototype.push = function(pushStr){ var strArray = []; for(var i=0,tl=this.length; i<tl; i++){ strArray.push(this.charAt(i)); } strArray.push(pushStr); return strArray; } var b = a.push('h'); for(var i=0,bl=b.length; i<bl; i++){ document.write(b[i]+'<br>'); }
664 :
657 :2011/03/20(日) 20:57:52.27 ID:7gvvnl5n
>>662 String には自身を書き換える手段がないし、Stringオブジェクトにしてもプロパティとプリミティブ値が連動していないから無理。
var str = new String('abcdefg');
str[7] = 'h';
str.valueOf(); // "abcdefg"
str[7]; // "h"
どうしてもやりたいなら StringMod など独自のコンストラクタを作るしかない。
> Arrayがpush・popが出来るのはjavascriptエンジン側が対応しているからなんでしょうか?
そうだけど、ECMAScriptの範囲で出来ないこともない。
Array.prototype.push = function (item) {
this[this.length] = item;
return this.length;
};
var a = ['a', 'b'];
a.push('c'); // 3
a; // ["a", "b", "c"]
668 :
657 :2011/03/20(日) 22:34:45.51 ID:7gvvnl5n
>>662 ArrayやらStringやらごちゃごちゃいじってみましたが
Stringには自分自身を書き換える手段がないというのがしっくりきました
皆さん返答ありがとうござんした。
672 :
Name_Not_Found :2011/03/21(月) 15:17:55.89 ID:ye0va7fy
通常、<body onload = "..."> で指定したスクリプトは、 画像などの画面の要素を全部読み込み終わったあとに発生します。 そうではなく、そのページの画像読み込み開始『前』に実行する処理をする方法を探していて、 jqueryで実現する方法を見つけました。 jqueryのjsを宣言し、以下の文を書きこむだけです。 // HTML読み込み完了直後、画像などの読み込み開始前に実行する処理 $(document).ready(function(){ //処理 }); しかしこの方法だと、IEでフレーム内ページの処理で正しい処理順序が実現できません。 Firefoxの場合、およびIEでフレームを使わない単独ページとして読み込んだ場合の処理順序 【1】HTML読み込み完了 【2】$(document).ready(...)実行 【3】画像読み込み開始 【4】画像読み込み完了 【5】body onload のJavascript実行 IEで、フレーム内ページとして読み込んだ場合の処理順序 【1】HTML読み込み完了 【2】画像読み込み開始 【3】画像読み込み完了 【4】$(document).ready(...)実行 【5】body onload のJavascript実行 前者のようになることが期待動作なのですが、何か解決方法は無いですか?
jqueryでなければいくらでもやりようがあるが、jqueryは普段使ってないから知らん。
画像をLazyImageにすれば? 根本的に解決したいならready部分のソースにIE&フレームでの条件分岐いれてどうにかする。
IEをハブる
677 :
Name_Not_Found :2011/03/21(月) 16:05:29.78 ID:ye0va7fy
>>673 jquery以外の方法あったら教えてください
onload以外でやれ
>そのページの画像読み込み開始『前』に実行する処理 これがなんでbody onloadだの$(document).readyつー話になるんだ? <script>処理</script> <img src="..."> で済む話しじゃないのか。
<script type="text/javascript"> <!-- function test(btn){ alert(document.getElementsByName("button")[1] == btn); } --> </script> </head> <body> <form action="post"> <input type="button" name="button" value="button1" onclick="test(this);"> <input type="button" name="button" value="button2" onclick="test(this);"> </form> 同名のボタン(btn)のインデックスの取り方教えてください。 button1を押したら1、button2を押したら2を返したいです。
>alert(document.getElementsByName("button")[1] == btn); ↓ >alert(btn.value); にしてみると何か分かるかもしれない。 あとscriptタグの中をコメントアウトするのは今どき完全に無駄なんで要らないと思うよ。
>>681 俺なんかスクリプト処理禁止で使うことがよくあるから、
コメントアウトは有ったほうがいいよ。
>>680 これならbuttonのnameとかvalueがそれぞれ同じでもいける
function test(btn){
var a = btn.parentElement.tags("input");
alert(function(){for(i=0; i<a.length; i++)if(a[i]==btn)return i+1;}());
}
>>681 >>683 dクス!!
test(btn)はちょっと適当にテストしてた残りだったんだけど、
やっぱり回さないと、同名のインデックスって取れないのかな・・・
本当にやりたいのは10個の同名のオブジェクトなんだけど、
例えば、これが100個、1000個になった場合は回さないで取れれば良いんだけど。。
何を作りたいのかは知らないが配列の順番に依存してる点で設計が悪い
<script type="text/javascript"> <!-- function test(btn){ var index; index = ここでボタンのインデックスを取得 document.getElementsByName("text")[index].value = "hoge"; } --> </script> </head> <body> <form action="post"> <% for(int i = 0; i < 100; i++){%> <input type="button" name="button" value="button" onclick="test(this);"> <input type="text" name="text" value=""> <% } %> </form> </body> やっぱり分かりづらかったので、書き直します… よろしくお願いします。
>>686 form.elements.button で多少効率がよくなると思うけど、name も value もユニークじゃない設計にする必要あるの?
btn.nextSibling.value = "ほげ";とかは? htmlに依存するけど。
html側にname以外で識別子の代わりになるものを仕込んだりすれば楽にできる 汎用性のあるスクリプトにしたいなら無理だけど 結局は設計次第だな
<!--//-->がいらないとかフィーチャーフォン無視するの?
<!--//-->入れて問題が出るケースってあるんですか?
<script type="text/javascript"><!-- // HTML4 var i = 0; i--; // コメント内に "--" は書けない! i -= 1; // "-=" は書ける //--></script> <script type="text/javascript"><!-- // HTML5 // HTML5 では "-->" でコメントを閉じても良い --></script>
結局for文で回すのがよさそうです。。 ご教授ありがとうです。
同階層のindexを直接返すプロパティがないからなー
>692 コメント中に--が禁止されてるのは実装がより複雑になって不具合を起きることがないようにするための配慮であるが 既にどのブラウザも複雑な実装によって使っても問題なくなってる そういう中でHTML4では使えないと言って何になるんだい? もっと本質的な意味を考えた方がいいよ
>>695 本質的な意味ってんなら、SGML、XMLともに構文違反だ
XHTML 1.0で--なんか書いたらXMLパーサが受け付けない
HTML 4.0をSGMLパーサ処理することはないだろうから
こっちははなから眼中にないがな
データの保存性、相互運用性ではなく
今あるブラウザで動けばいいなら素直にHTML5に移行しろ
そんな奴がJavascriptについては堅牢性だの保守性だの語るわけだから
ちゃんちゃらおかしいわな
配慮であるが(笑)
>>695 仕様と実装は本質的に意味が違う。
自分の観測範囲のブラウザでだけ動作保証できればよく、相互運用性を度外視していいのなら仕様を無視すればいいと思うよ。
しかし、script要素に対応せずコメントに対応する全ての実装を知っているとは凄い自信だな。
699 :
Name_Not_Found :2011/03/22(火) 13:11:50.51 ID:pvys0qeG
Google Chrome 10.0.648.151 で XMLHttpRequest を使うと 読み込みが完了するまでタブのローディングアイコンが回り続けます IE、Firefox、Opera では問題ありません ロングポーリングをしたいのですが、Chrome においてこの問題を解決するにはどうすれば良いでしょうか <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>foobar</title> </head> <body> <script type="application/ecmascript"> var req = new XMLHttpRequest(); req.open('GET', './example.txt', true); req.send(); </script> </body> </html>
JavaScriptの例外処理について教えてください。 try { } catch (e) { alert(e.description); } でエラーの詳細が取得できますが、エラーの発生行数を 取得することはできないでしょうか? ご存知のかたがおられましたらお願いいたします。
JavaScriptには行という概念はない デバッガ使えばわかるけど
window.onerrorでできました。 失礼しました。
>>695 お前innerHTMLしか使ったことないんじゃね
XHTMLソースをとってきてHTMLDocumentを作るとか、サーバのXMLパーザーに渡すとか
ちょっとでもそういう経験があれば、整形式違反なんか絶対にできない
自分に経験がないからと言って、仕様を全否定する奴がHTML界隈に多すぎだろ
みんながみんな仕事でやってるわけじゃないんだよ HTMLやJavaScriptなんて趣味でやってる奴のほうが圧倒的に多いでしょ 自分のおかれた環境=常識としてしか捉えられない人には辛いかもね
趣味でやってんならなおのこと本質なんて言葉使うなって話じゃね 話について行けてないけど、俺
原理主義を気取るなら徹底せよ、と。
HTMLの文法を知らずに今までやってこれたから ちょっと指摘されると必要ないと開き直る人は多い スレ違いか
textareaタグで、 内容の末尾にフォーカスを設定する方法あります? ちゃんとまとまったのが見つからない…。
>696 言ってることはわかるが 構文違反だからってのは別に本質的ではない 本当は構文違反だから実装によっては使えない問題があるからってのならより本質的 しかしその本質的な問題は現状では皆無ではないのか? >697 言ってることが良くわからないが 例えばフィーチャーフォンだとコメント中に--を使用しても スクリプト対応の機種も非対応の機種も問題なく表示される >703 いやいや 自分が言いたかったのはたんに まるでコメント中に--があったら構文違反でスクリプトが全く動かなかったり、 スクリプト非対応のブラウザでコメントが効かないような言い方をされてるように感じたから それに反発しただけだ 特にHTMLでね DOMを操作したりするとこまでは話してない とりあえず自分が言いたかっのはコメントは旧フィーチャーフォンのためにつけとけ ↓ そのときにスクリプトで--が使われてても基本的に問題ない ってことだ
>>697 →>698の間違い
ちょっと自分の立場をまとめる
フィーチャーフォン向けにコメントを入れろと主張する
↓
その場合--を使用すると構文違反だと言われる
↓
それなら旧フィーチャーフォン等の配慮をした場合は--が使えないなんて不便なことが起こるのか?と考え
実際どの実装でもちゃんと動くんだから本質的にはいいじゃないかと主張
ってことだ
確かに自分が言ったのはお遊びレベルのスクリプトだけで
もちろん、よくわからないがDOMを操作したりXHTMLがどうのこうになるとマズイのはわかってるつもりだ
まあそれ以外のスクリプトを特にモバイル環境向けで使う場合はできるだけコメントしてくれ
>>709 問題を分散させんな、面倒くさい
まずお前の言う『より本質的』の意味が全く分からん
例えば、これをJSONに置き換えてみよう
文字列リテラルには二重引用符しか使えないが、単引用符も使える寛容なパーサがあったとする
お前はJSON仕様を知らず、単引用が使えるものだと思い込んでいる
そして普通のJSONパーサでは使えないデータをまき散らした挙げ句
『実装によっては使えない問題がある』と主張する
滑稽だろ?
SGML/XMLの『本質』は長期保存性と相互運用性にある
>>703 も言ってるが、その土台になる構文部分の違反を
お前の狭い経験だけで『本質的な問題は現状では皆無』などと軽々しく言うな
と言うのは、はお前も受け入れるんだな?
なおHTML5は、今後はブラウザ専用のデータ形式となり
ブラウザのバージョンアップと連動してバージョンアップすることで保存性と運用性を担保する
したがってバージョン番号もなくなり、ただ「HTML」と呼ばれることになる
お前が望む世界はこちらだろう?
HTML 4.0は、仮にもSGML適合を目指した最後のバージョンなんだ
HTML5ブラウザの常識を当てはめて、HTML 4.0データ自体を壊すような真似は止めてくれないか
ゆっくり死なせてやれ
今後はXMLとWebが乖離していくことになる
>>710 次に、コメントアウトは『旧フィーチャーフォン』のためというもの
つまりXHTML Basicですらない独自形式の俗称HTML向け、というわけだな
そんなもん、好きにしろ
アレに相互運用性も何もあったもんじゃない、特殊なノウハウの要る世界だ
だが、--を避けること自体は、別に面倒でもなんでもない
要は、知っているか知らないかの知識の問題
あるいは知らなくても逆ギレしないかの人間性の問題だ
仕様によって保証されてなくて、 マイナーな実装や将来の実装でどうなるか知らんけど、 たぶんおそらくだいたい今のところ実用上問題ない事こそ本質なのです!
とりあえず、XHTMLを書いているつもりの奴は全員、拡張子を.xhtmlまたは.xmlにしてチェックしろ DOMParser、createDocument()に渡せるかどうかの根本的な問題なんだから Ajaxマンセーな奴ほど『本質的な問題は現状では皆無』なんて言えないはずだ エラーが出て、エラーの直し方も分からない奴は、そのままHTML5に移行しろ そうすりゃ『旧フィーチャーフォン』でもまず問題ない 実装にあった形式、形式にあった実装を選ぶのも実力のうちだろ
>>709-710 あなたの主張する「本質」が見えてこない。
「仕様を守る」のが本質ではなくて「例え仕様に違反しようともデファクトスタンダード(既存の実装)に合わせるのが本質」といいたいのか?
実装が仕様を守っていないことは多々あるが、
>>692 は仕様を守ることが困難な状況とも思えないのだが。
>>708 末尾にフォーカス、って意味が分からない。カーソルが末尾にあるってこと?
718 :
Name_Not_Found :2011/03/23(水) 20:12:35.10 ID:KSrmDKTC
微妙にJS関係ないかもなんですが テキストフィールド(input type="text"とかtype="number"とか)に カーソルがある状態で、エンターキーを押すと、 一番最初に登場するボタン(input type="submit"とかbutton要素)の クリックイベントが発生するのは、仕様なんですかね? FirefoxとSafari(ipadも)は試しましたが、そうでした。
>>718 onclickとかでやってないか、addEventListenerなら発生しなかったぞ
721 :
Name_Not_Found :2011/03/23(水) 21:11:40.85 ID:KSrmDKTC
>>720 こんなかんじで
http://jsbin.com/oyiru3/2/ formとinput type="submit"とbuttonにIDつけてあって、
formはsubmitされたら、input type="submit"とbuttonはclickされたら
自分のIDとevent.typeをコンソールに出すようにしてます
722 :
708 :2011/03/23(水) 22:14:55.34 ID:???
>>716 そうそう、focusした時にカーソルが末尾にあるようにしたい。
>>717 ああ、こういうのです。
focusみたいに関数1個でスマートにできるのは、
デフォルトで無かったのか…。
地味だけど無いのが不思議だ。
719で作ったコードですが、以下を書き換えてセンタリングできるでしょうか。
<script type="text/javascript">
var win = new Window({className: "alphacube", width:750, height:650, top:290, left:0, zIndex: 0, resizable: true,
title: "ああああ", url: "
http://www.hogehoge ", showEffect:Effect.BlindDown, hideEffect: Effect.SwitchOff,
draggable:true, wiredDrag: true})
win.show();
</script>
>>717 Firefoxで見たけど、カーソル末尾にスクロール表示されない
できます。
うちはFFはOKだけど、Chromeで動いてくれないな。 FF3.6.13 CR10.0.648.151 beta
>>725 有り難うございます!
やり方を教えて頂けないでしょうか。
よろしくお願いします。
var iroha = parent.document || document; if (iroha !== document && !pd.getElementById('hoheto')) この部分がサッパリなんですが、これどういう意味なんでしょうか? 具体的には変数なのに || が使われたり、その後の!==と!の違いが解らないのですが
alert( "hello" || "world" ); // "hello" ・・ Boolean("hello")がtrueなので短絡演算で"world"は評価せず"hello"を返す alert( 0 || "world" ); // "world" ・・ Boolean(0)がfalseでBoolean("world")がtrueなので"world"を返す alert( "hello" && "world" ); // "world" ・・ 両方trueなので最後に比較した"world"を返す alert( 0 && "world" ); // 0 ・・ Boolean(0)がfalseなので"world"は評価せず最後に評価した0を返す
>>728 x !== y は !(x === y) と同じ、===は型も等しいかチェックする厳密な比較
なるほど!短絡演算というものなんですか! || は最初にtrueになったものを返して &&はよくわからないので勉強してきます!
間違えた、短絡評価だ。
良くわかる短絡評価
短絡評価ってのは最後に評価した値を返すモノなんだ
orの場合、最初のがtrueだったらもう一つの条件がtrueだろうがfalseだろうがtrueになっちゃうよね?どっちか一つがtrueならtrueなんだから
だから
>>729 の最初はworldを評価しないんだ。
だけど2個目は最初がfalseだね?するともう一つの条件がtrueだったらtrueになるし、falseだったらfaleseになっちゃうよね?
だからもう一つのworldのほうも評価するんだ
そして次はand
これは両方trueだったらtrue、どちらかにfalseがあったらfalseになるのは皆やったね?
だから3個目は最初がtrue、次の条件がtrueだったらtrueになるけどfaleseだったらfalseになっちゃうよね?
だから次のworldを評価するんだ
で4個目は最初がfalseだから次の値がfalseだろうがtrueだろうがfalseになっちゃうから評価しなくてもわかるよね?
だから0を評価して終わりなんだ
>>733 超良くわかりました!!
ANDとORが結果じゃなくてそれらを前座のように使って判断するんですね!
短絡評価の質問多いなー
三項演算子と短絡評価はググりにくいからなー テンプレにググりにくい関数や演算子みたいなの追加するとか?
>>709-710 いい加減スレ違いでうんざりだろうが、整理しておく
Webには大雑把に二つの派閥がある
「HTMLのためにブラウザがある」と考える派と、「ブラウザのためにHTMLがある」と考える派だ
XHTMLは前者に属する
今後Webには数十年単位でデータが蓄積され、新しいブラウザが生まれるはず
そこで、データ自体を自己完結しているものとしてブラウザから独立させれば
どんなに古くなったデータでも、新しいブラウザで読み込む方法があるだろう
しかし、この方向性は頓挫し、代わりに出てきたのが後者のHTML5だ
HTMLはブラウザが解釈するものであり、ブラウザと切り離しては考えられない
「ブラウザがコメント内の"--"を許容する以上、何の問題がある?」というお前の主張は、まさにこれだ
だが、前者にしてみれば、それは「データの自己完結性」を崩すものであり
「本質的に」受け入れられるものではない
ここに、両派のどうしようもない断絶がある
後者はこれまでずっと、テーブルレイアウトのように仕様の裏をかく「ハック」を駆使してきた
だが、そんな必要はもうない。お前には、全てのエラーを吸収してくれるHTML5およびHTML5ブラウザがある
HTML 4.0、XHTML 1.0を、その整合性を崩してまで使う必要はない
前者にしてみても、腐ったタグスープを気にすることなく、XML仕様を簡素化していける点でありがたい話だ
XML派にしてみれば、どうしても名前空間を捨てるわけにいかない
一方、HTML5にとって名前空間は不要の極みだ
最初から歩調を合わせる必要なんてなかったんだ
「HTML5の常識で、HTML 4.0を壊すな」と俺が言ったのは、こういう意味だ
>>692 がわざわざ「HTML4」と書いているのだから、その前提の中で語れ
俺もHTML5について語るときは、HTML5の常識で語る
スレチだから消えろよ 長文うざいし
return 0とreturn nullの違いって何ですか?
そのまんまでしょ 0を返すかnullを返すか 0とnullの違いは自分で調べてね
>715,737 正直スマンかった 自分は別にそんな技術的な話はしていなかった 自分はJavaScriptが中心(HTMLの補佐としてJavaScriptがあるのではなくその逆)だと考えてるから ただただそういうHTMLの制約にJavaScriptが変に縛られるのを認めたくないっていう我が儘だった --を使うことなんて滅多にないし避けることは容易だけど それを避けなきゃならないっていうのには自分は堪えられないしおかしいと感じた が、プロが多いこのスレで異色な自分がいろいろ大口叩いたのは謝る
テンプレの話題でたところで。今740なので早めにテンプレ論議
どうかな。次テンプレの最新案はこれだよね?
ttp://codepad.org/PW2FFBIs 短絡評価や3項の他によく質問あるのは数値変換(parseInt、
Number()、x-0)があるんだけど、こういうの説明しだすと
またどんどん長くなるんで、個人的にはやめといたらと思ってる。
どうかな。
744 :
Name_Not_Found :2011/03/24(木) 11:31:32.23 ID:SKlBdocW
知り合いから JavaScript を頼まれたんだけど、そのサイトが既に jquery とか使ってて、 Firefox とかのエラーコンソールへの出力がハンパじゃく、頼まれた開発がめちゃくちゃやりにくい・・。
それで質問は?
(function(){ }) (); ↑これ以外に名前空間を汚さない書き方ってありますか? どこかのページで見た覚えがあるんですが、メモを取り忘れてしまいました。 どなたかご存知でしたら教えてください。
>>746 ({
prop: 'foo',
init: function() {
// 初期化処理
}
}).init();
こんな感じで、オブジェクトリテラルを使って
即時関数と同じようなことができる
748 :
Name_Not_Found :2011/03/24(木) 13:26:00.96 ID:SKlBdocW
>>745 エラーや警告のない jquery はないですか?
>>746 new function(){
return {};
};
jqueryバリバリに使ってるけど警告とか出ないぜ。どんな使い方してるんだ
jqueryそのものがエラー出してるの?jqueryを利用したスクリプトがエラーを出しているの? それからFirefoxだとjavascript.options.strictがtrueかfalseかでも話が食い違ってくるから そのへん言っておいたほうが話がスムーズに進むと思う
warningはとりあえず無視する俺
753 :
746 :2011/03/24(木) 15:02:16.46 ID:???
>>747-748 ありがとうございます!
>>747 の無名オブジェクトからメンバ関数呼び出す方法は分かったんですが、
>>748 のnew演算子の戻り値使う方法がちょっとよく分かんなかったのでいろいろためしてみますね
dd
754 :
746 :2011/03/24(木) 15:08:02.54 ID:???
>>747-748 >>748 でコードが1度だけ実行されることを確認しました。
改めておふたりともありがとうございました。ようやく次に進めそうだ……
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>014javascript</title> <script type="text/javascript"> function calc() {var t1=document.getElementById("t1"); var t2=document.getElementById("t2"); var t3=document.getElementById("t3"); t3.value=eval(t1.value)+eval(t2.value);} </script></head><body><form> <input id="t1" type="text" size="8">+ <input id="t2" type="text" size="8"> <input type="button" value="=" onClick="calc()"> <input id="t3" type="text" size="8"> </form></body></html> javascript The GoodPartsに載っていましたがeval()は使うべきでないならこのソースの場合どのように書きなおすのですか?
そのくらいならparseInt(t1.value, 10)とかNumberとか-0使って数値と判断させるとか
t3.value=Number(t1.value)+Number(t2.value)
date型の値をnull値にしたいんだけど方法ある?
サンプルコードか何か載せてくれないとnull代入するくらいしか思いつかん
760 :
758 :2011/03/24(木) 22:19:31.42 ID:???
>>759 null代入か
やっぱそれしかないですよね
new Date('');ってのも考えたけど
わざわざerror出すよりnull安定っぽいね
コードは晒すまでもなく、ホント単にDate型の値にnull的なことをしたかっただけなんです
ググっても見つからなかったので
サンクスです
758じゃないですが、Date型の宣言ついての質問です。 日時を表す引数hogeが定義されている場合と いない場合双方で 日付オブジェクトを取得するため、現在以下のような記述をしています。 var d=(hoge) ? new Date(hoge) : new Date(); これをもう少しスマートな形にすることはできないでしょうか? 例えば、 var d=new Date( <hogeの条件演算式> ); みたいな感じでnew Date()を2回書かないで等価な式を書く というのは無理ですか?
>>761 hogeが日時パースできるかの確認はまた別問題として考えるなら
var d = new Date(hoge || null);
でいいんじゃない?
hogeの初期値をnullにしておいてhogeに値があれば代入するって方が良いかもしれんけど
>>762 new Date(null) と new Date() では、返ってくる値が違うんですよ。
邪道(eval的) Function("return new Date(" + (window.hoge || "") + ")")() 最初に思いついたのは var d=new Date(window.hoge || Date());// Date2回使うけど Dateオブジェクトにset〜でやれるかなーと思ったけど返り値が数字だったから無理っぽい。
765 :
Name_Not_Found :2011/03/24(木) 23:52:36.07 ID:B01RRMbL
Opera 以外のブラウザでは HTMLObjectElement.contentWindow がなく 埋め込んだ XHTML に対する window.onunload が機能しません 他のブラウザで unload イベントを使うにはどうすれば良いでしょうか <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>foobar</title> </head> <body> <div> <object data="./example.html"></object> </div> <script type="text/ecmascript"> document.getElementsByTagName('object')[0].contentWindow.onunload = function(){ console.log('foobar'); }; </script> </body> </html>
>>765 objectをiframeにしたらいいと思うよ
768 :
765 :2011/03/25(金) 00:16:47.94 ID:MEBA/lVP
>>767 XHTML1.1 では解決方法がないでしょうか
IEだとうごかないぞ。
IEとか環境無いんでどうにかしてください
772 :
765 :2011/03/25(金) 01:42:15.31 ID:MEBA/lVP
有り難う御座います HTMLObjectElement.contentDocument.defaultView で取得できるんですね IE は XHTML に対応していないので、コンディショナルコメントで iframe を埋め込みたいと思います
>>772 IE8 は object.contentDocument.parentWindow で取得できます。
774 :
765 :2011/03/25(金) 02:25:17.34 ID:MEBA/lVP
>>773 有り難う御座います
iframe 使わずに記述できそうです
javascriptが扱える男になると彼女できますか??
776 :
Name_Not_Found :2011/03/25(金) 05:14:36.27 ID:wjEP+g6S
むしろキモ夫にラブビームを喰らうね
>>741 の言う通りこのスレの住民は本質が分かって無さ過ぎ
HTMLの為にJSがあるんじゃなくてJSの為にHTMLがあるんだからね
このスレはDHTMLのスレじゃないんだよ?分かってる?
そういう価値観は製作者なり一人一人が決めるのでよいと思うよ。 技術的なfactに絞って議論するのがよいと思う。でないと荒れる だけで誰も幸せにならない。
主張主義が2つ以上あるとそれは対立する
XMLHttpRequestを使ってるページを見ると 応答を待ってます状態が継続してるページとそうでないページがありますが これは同期と非同期の違いですか?
782 :
Name_Not_Found :2011/03/25(金) 20:24:04.97 ID:PBuCv3xN
同期/非同期も原因になりうるけど、 コードを見ないと一概には言えんよ
JavaScriptのライブラリをそのうち作って配布してみたいです。 ライブラリを作るときの注意点として、 ・クロスブラウザ対応 ・他のライブラリに依存しない ・グローバルスコープを汚さない ・メモリリークや無限ループなどおかしな動作を引き起こさない 以外に何かありますか? また上に挙げたものの中で、これはいいんじゃない?というものがあったらご指摘お願いします。 この前Lightboxに似たライブラリを作ってみましたが、 画像数が多くなると極端に重くなったりと、 DOM操作が下手でまだうまく書けないので、配布できるレベルになるのはまだ先になるでしょうが、 心得だけでも知っておきたいです。
類似物は作らない by オライリーのjQueryの本
785 :
783 :2011/03/25(金) 22:02:28.08 ID:???
なるほどー。 車輪の再発明ですね。 まぁそれは分かってたのですが練習なので。 他のライブラリの動作を見てコードで再現してます。 本番じゃオリジナリティあふれるものを作れたらいいなぁと思います。
とりあえずDOMをループさせるコードかいてみ
document.imagesって使わないほうがいいんですか? document.getElementsByTagName('img')でとってるサイトが多い気がするのですが
そりゃおめー、W3C DOMの方がいいに決まってるべ
789 :
787 :2011/03/25(金) 23:38:21.64 ID:???
最近はquerySelector(All)ばかり使ってるわ
791 :
787 :2011/03/26(土) 00:08:34.91 ID:???
querySelectorは倍ぐらい処理が遅いってどこかに書いてあったな。
794 :
787 :2011/03/26(土) 00:15:59.94 ID:???
つ【DOM Level2 HTML】
797 :
Name_Not_Found :2011/03/26(土) 09:00:53.56 ID:bLahi39q
これから初めてjavaとかjqueryとか勉強したいんですが、これ買っておけって本とかありませんか?
>>793 動的ノードリストって遅い印象があったんだが違うのか…
簡単なEPUBリーダーを作っていて、ページングで躓きました。
1つのHTMLソースを本のようにページ分けしたいのですが、良い方法が思いつきません。
本の1ページに見立てた600px×800pxのDIV要素にHTMLソースを流しこみ、
そのDIV要素から入りきらなくなったらまた次のDIV要素を作ってHTMLソースを流しこみ…。
この処理をHTMLソースがなくなるまでループさせれば良いと思っていましたが、
DIV要素一杯にHTMLソースを流しこむ方法が思いつきません。
Google BooksとかはHTMLのページングを実現していますが、一体どうやってるんですかね。
http://www.gazo.cc/up/32185.png HTMLソースを上手いことページ分けする方法はないでしょうか?
>>793 のページ自体で"a"タグで試してみたけど、
関数の実行時間は、
getElementsByTagName() << querySelectorAll()
ただ結果をループで回す時間は、
Chromium9: getElementsByTagName() > querySelectorAll()
Firefox4: getElementsByTagName() < querySelectorAll()
全体的にChromium9 < Firefox4
V8パネェ
>>799 元のHTML全部をdivの中に入れてそのdivを枠となるdiv(overflow=clip)
の中に絶対位置指定で入れて位置を1ページぶんずつ上下させるとかではだめ?
802 :
Name_Not_Found :2011/03/26(土) 17:46:53.16 ID:loUCWksM
的確な回答であると同時に鬼畜回答にもなりうる紙一重のレス
>>797 が言ってるのがJavaScriptじゃなくて本当にJavaなら正しいおすすめだろ
>>802 の本は読んだことないが、どの辺が鬼畜回答なんだ?
806 :
Name_Not_Found :2011/03/26(土) 18:35:08.93 ID:loUCWksM
おれもまさかこんなドンピシャなタイトルが オライリーから出てるとは思わなかったよw
ワラタ
>>801 回答ありがとうございます。
ただその方法だと、縦幅が大きい要素(H1タグや画像)がページから飛び出し見切れてしまうケースが出てきそうです。
もう少し自分で考えてダメなら良いサンプルが出回るまで待つことにします。考えてくれてありがとう。
809 :
Name_Not_Found :2011/03/27(日) 00:34:05.61 ID:KdGRH+Ni
javascriptかJqueryでsleep関数みたいなのはありますか?処理を一定時間だけ止めることができるものです。
はい
811 :
Name_Not_Found :2011/03/27(日) 00:46:04.19 ID:KdGRH+Ni
sleep関数ではないけど、それに近いものを求めるならsetTimeoutじゃないか。 それが嫌なら自作するしかない気がする。
普通、sleep()は「無い」と答える方がいいんじゃないの。 setTimeout()に書き換えるのはそれなりに工夫が必要だし。
シングルスレッドでsleepはまずいだろ…
815 :
Name_Not_Found :2011/03/27(日) 12:19:38.21 ID:NUOZjtxP
Workerとeval使えばいいsleepが作れるよ
>>815 よく分からんが、WorkerってIEには無いよね
setTimeoutでやるのが現実的だろう あくまでも遅延実行であることを頭に入れておけば問題ない
yieldでもできるよね1.7以降限定だけど
>>808 一行づつ流し込んでいって、divのheightが(600−ページャーの高さ)を上回る場合はそこで切るとかは?
一行をどう定義するかが問題だろうけど
段落単位にしてbrタグでカットするとかもありでは?
821 :
Name_Not_Found :2011/03/27(日) 21:11:39.06 ID:ZDbBxASW
822 :
Name_Not_Found :2011/03/27(日) 22:52:26.60 ID:s8eOqvV2
>>821 オライリーのサイトひらきっぱなしにしてたら
左上の動物が瞬きして超ビビッた
消えろカス
jsファイル
<script type="text/javascript">
<!--
document.write("ここに記入");
// -->
</script>
ここに記入って所にtableとかいろいろ書いてもいいんですよね?
FC2にアップロードしても呼び出せないんですけど何か違うんでしょうか?
呼び出し
<div class="">
<script type="text/javascript" src="
http://aaa.js "></script>
</div>
825 :
Name_Not_Found :2011/03/28(月) 14:54:56.53 ID:ow5SX7/g
jsファイルに<script type="text/javascript">まで書いているのか?
JavaScript+(jQuery)のjQuery.get(or post)で読み込んだファイルの内容を、戻り値にして変数に入れる方法はありますか? あるとすれば、どのようにすればいいのでしょうか? var read = { readtext : "", httpObj : jQuery.get("./db.php",null,function(){this.readtext = httpObj.responseText;}) } db.phpをGETで取得して read.readtext に入れたいんですが、これでは動かないのです。
はいはい乙。
>>830 ありがとうございます。
改行する場合は\を記入すればいいらしいのですが、
document.open();
document.write('<table border="0" width="100%">\
<tr>\
<td width="95"><a href="" target="hoge"><img src="" alt="" height="115" width="90"></a>\
</td>\
</tr>\
');
document.close();
使い方はこんな感じであってるのでしょうか?
833 :
Name_Not_Found :2011/03/28(月) 17:35:18.03 ID:+yWotrlf
PerlやPHPのように変数名の頭に$を付ける事は仕様的にOKですか? 一応動くことは動いたのですが
仕様的にOKかと言われたらOK ひらがなだっていけるよ ただJavaScriptの場合フレームワークの実装で $はdocument.getElementByIdのショートカットだったりするので 変数につけるってのはお勧めしない 変数にはvarをつけるんだからわざわざ$つけるのもおかしいかと
簡単なjsloaderを作ってみました ----- (function() { var dir = new Array("./", "./common/", "./common/js/"), js = new Array("foo.js", "bar.js", "baz.js"), head = document.getElementsByTagName("head")[0]; var script; for (var i = 0, dlen = dir.length; i < dlen; i++) { for (var j = 0, jlen = js.length; j < jlen; j++) { script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute("src", dir[i] + js[j]); head.appendChild(script); } } })(); ----- こんな感じですが、存在しないファイルのscriptタグも生成されてしまいます。xmlhttprequestを使わずにファイルの存在を確認するお手軽な方法はないでしょうか? いろんなサイトのjsloaderを見てみましたが、コードが複雑でいろいろやっているようです。自分が作ったのは、html内のscriptタグをjsloader一本にまとめてすっきりさせたかったから ですが、そもそもjsloaderって何の為にあるんでしょうか?あと存在しないファイルのscriptタグをappendChildして後々問題にならないでしょうか?
836 :
Name_Not_Found :2011/03/28(月) 17:50:13.42 ID:ow5SX7/g
>>835 なんで
var js = [
"./foo.js".
"./common/bar.js",
"./common/js/baz.js"
];
ではいかんの?
837 :
Name_Not_Found :2011/03/28(月) 17:50:57.80 ID:ow5SX7/g
誤字った var js = [ "./foo.js", "./common/bar.js", "./common/js/baz.js" ]; だ
いいんだけど・・・気分的になんか・・・ どこにどのファイル置いたか忘れた・・・あーめんどくせーって時に使えるかなって・・・
prototype(ライブラリのほうじゃないですよ)ってどんな場合に使うと恩恵があるんですか?
>>839 仕様書に解説が色々あるから読んでください。
こうしてみたけど。まぁあんまり意味ないですね・・・。for inとかパフォーマンス悪いと聞いたのであんまり使いたくなかった。 コードの読みやすさも考えるとパフォーマンス重視のみでも駄目なのかな。 (function() { var dir = new Array(), head = document.getElementsByTagName("head")[0]; dir["./"] = new Array("baz.js"); dir["./common/"] = new Array("bar.js"); dir["./common/js/"] = new Array("foo.js"); var script; for (i in dir) { script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute("src", i + dir[i]); head.appendChild(script); } })();
すいませんスマートフォンでalertが効きません alert(1); モバイルではモバイル用のjavascriptっていうのがあると思うのですが モバイルでは何の関数を使うとアラートが出せるのでしょうか?
["./baz.js", "./common/bar.js", "./common/foo.js"].forEach(function(e){ var s = document.createElement("script"); document.getElementsByTagName("head")[0].appendChild(s); s.setAttribute("type", "text/javascript"); s.setAttribute("src", e); });
844 :
Name_Not_Found :2011/03/28(月) 18:37:03.92 ID:ow5SX7/g
配列をfor inで回すなと… 上にあるけどforEachがお勧め
window.showModalDialog で開いたフレームページについて、 (モーダル呼び出し元と呼び出し先は別ドメイン) IEで<input type="text">に文字列が貼り付けできない という情報をもらいました。 確認しようと、本番環境とは別に同じような構成を用意して (本番環境は今触れない...) IE6〜8で試してみたけど再現しないので 困ってるのですが、何か原因に心当たりありませんでしょうか。 よろしくお願いします。
古いブラウザだとforEachは使えない。
for in使うならdir = {};で。
あと
>>841 は./に二つ以上詰め込めないじゃん。
>>846 構成はあってるの?というかソース。
849 :
847 :2011/03/28(月) 20:27:42.90 ID:???
IE8でもforEachは使えないみたいね。 ECMAScript 3rd Editionにも規定されていない。それ以外の対応状況は知らんが
for(i in ["hello","world"]){ console.log(i); } 今気づいたけどfirefox4だと 0, 1が出力されるようになってるのね
え?どのブラウザでもそうでしょ
javaとかのfor inとは違うぞ
>>848 ミスです。治したらfirefoxでは正常に動くのにieで動かなくなりました。何故でしょうか?
(function() {
var dir = new Object(), head = document.getElementsByTagName("script")[0];
dir["./common/js/"] = new Array("foo.js", "bar.js");
var script;
for (i in dir) {
for (var j = 0, len = dir[i].length; j < len; j++) {
script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", i + dir[i][j]);
head.appendChild(script);
}
}
})();
855 :
854 :2011/03/28(月) 22:18:51.65 ID:???
script自体はちゃんと作れているようです。 alert(script.src);で確認しました。 どうやらappendChildができていないようですが・・・。 alert(head);もalert(head.appendChild);もちゃんと動きます。
ぶっちゃけ何がやりたいの? そのコード
for-in は実行順の保証がないので forEach か for が妥当かと。
forEachは今の所Firefoxだけじゃん
>>854 にわか知識で手を抜こうとして失敗する典型だな。まあ、なにごとも勉強だけど。
とりあえず、getElementsByTagName("script") のscriptはheadの間違いだろ
ループ回数も保証されていないので、配列の処理にfor-inは使うべきではない。 互換性が低すぎるので、forEachも使うべきではない。
Array.prototype.forEachならECMA 262 5thでも定義されてるし、 Firefox、Opera9.5、Safari3、Chrome、IE9で使える。 IE6,7にもArray.prototype.forEachを定義することはできるけど、あまりオススメはしない。 ちなみに、E4Xの for eachのことならFirefoxだけだ。
862 :
854 :2011/03/28(月) 23:11:01.18 ID:???
あ、しまった。
×head = document.getElementsByTagName("script")[0];
◯head = document.getElementsByTagName("head")[0];
>>857 そうですね。そういえば少し前に何かの記事でforinの中にfor文作るとすごいパフォーマンスが下がるみたいに書いてあったとうろ覚えしてます。
やっぱ無駄にfor文増やすより普通に./common/js/***で指定した方がよさそうです。
みなさん有難うございました。
863 :
854 :2011/03/28(月) 23:18:23.63 ID:???
横からだが他にもおかしいところが山程ある (function() { var files = ["foo.js", "bar.js"], length = files.length, head = document.getElementsByTagName("head")[0]; for (var i=0; i < length; i++) { var script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute("src", "./common/js/" + files[i]); head.appendChild(script); } })(); 書くならこんな感じにする事
865 :
854 :2011/03/28(月) 23:38:03.81 ID:???
>>864 jsがfilesになっているのはできるだけ分かりやすい名前を使うっていう事しょうか。
for(var i = 0, length = files.length; i < length; i++)が普通だと思っていました。外に出した方がいいんですね。
あと配列のところですが、["foo.js", "bar.js"]よりもnew Array();で作った方がいいという記事をまえに見たのでそうしてました。
ここの「括弧で生成せずにnewを使う」のところです。高速化より見やすさを重視してという事でしょうか?
http://journal.mycom.co.jp/news/2009/11/11/015/index.html
>>865 配列は[]を使う事
new使えとかいうそういう2年近く前の古くさい記事は忘れろ
ついでにnew Objectは{}とする事
new する時は限られたときのみ
これは基礎中の基礎
どっちもかわんねえよ
868 :
Name_Not_Found :2011/03/28(月) 23:50:45.45 ID:OEsbDifs
質問させて下さい。 書くと長くなってしまうのでサンプルページを貼ります。 tp://colorpowered.com/colorbox/core/example1/index.html の画像表示方法を tp://jsajax.com/Articles/scrollablemenulinks/775 のスクロールメニューのリンクから呼び出したいのですがうまくいきません。 <body>内に普通に <a href="画像.gif" rel="example1" title="test">文字</a> と記述すればちゃんと表示されるのですが、スクロールスクリプトで中身を表示させるところの var menucontents='<nobr>中身</nobr>' に入れてしまうと画像urlに直接飛んでしまいます。 両方とも原文ままを導入しているのですがそこだけひっかかってしまいます。 可能でしたらどこを変えたらいいのか教えていただけるとありがたいです。 ちなみにWinXP,IE最新Safari最新でチェックしています。 よろしくお願いします。
869 :
854 :2011/03/28(月) 23:52:13.48 ID:???
あーdirを一個に減らしてたから分かりづらかったのかもしれないです・・・。 (function() { var dir = new Object(), head = document.getElementsByTagName("head")[0]; dir["./"] = new Array("qux.js"); dir["./common/"] = new Array("baz.js"); dir["./common/js/"] = new Array("foo.js", "bar.js"); var script; for (i in dir) { for (var j = 0, len = dir[i].length; j < len; j++) { script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute("src", i + dir[i][j]); head.appendChild(script); } } })(); ほんとはこんな感じにディレクトリ毎のファイルをscriptタグのsrcに指定してheadにappendChildするっていう感じでした。 連投してほんとにすいません。これで終わります・・・。
>>865 ひどい日本誤訳だな。グラフよく見てみろ、ほんちょびっとだけリテラルのほうが速いぞ。
あと、この程度の差は数万回レベルのループとかじゃないと差が出ないので、気にしないのが良いと思うね。
気になるってんなら仕方ないけど…、病的と言われるレベルだってことは認識してほしいね。
あとEfficientJavaScriptは良記事だったとは思うけど、元記事が書かれたのは2006年11月だよ。
チェックしてないけど、古い情報が混ざってるだろうね。
命名規則なんて好きにしろ 後、その記事おかしくね? リテラルの方が早いんだが…
872 :
Name_Not_Found :2011/03/29(火) 01:00:12.02 ID:+OBxSamT
good partsのnewを使うなの件にもの凄い言い掛かり感
Good Parts、なんだかんだでクロックフォード御大の好みがにじみ出てるからね・・・ 先日出た「ハイパフォーマンスJavaScript」は、 これまで散逸しがちだった「突っこんだ話」が1冊にまとまってて便利だと思ったよ さすがに原著の出版が2010年3月なので、ブラウザ関連の話は古びてるものも出てきてたけれど・・・ NCZ様々だなー
リテラルの方が(文法的に)いいと推奨しているサイトがありますが、 理由がわかりませんでした。どうしてでしょう?
875 :
Name_Not_Found :2011/03/29(火) 02:20:05.19 ID:3x4QjK18
コンストラクタ関数をnewを付けずに実行するとグロスコが汚れる これを回避するためにはnewを使わないことだ だからオブジェクトも配列もリテラルで書くべきだ なんて言われても ハンマーで頭を殴ると死ぬから家を建てる時には釘を使うな、って感じがするよなあ
つ【Object.create】
var xx = 0; window.onload = function(){ var img = new Image(); img.onerror = function(){xx = 1;}; img.src = "x.jpeg"; } IEだとxxに1が入るんですけど、firefox、opera、chromeなどは全て代入処理が行われませんでした。 どうしてでしょうか?
けどnewせずにprototype継承する方法ってあるの?
createみたいなメソッドの中にnewする部分を閉じ込めて通常コード には出ないようにするんでないの。でもそれならコンストラクタを newつけずに呼んだらその中で検出して対処するんだっていいと思って いるけどね。
>>879 > newつけずに呼んだらその中で検出して対処するんだっていいと思って
> いるけどね。
それ、どうやるの?
function create(){this.x = 'X'}
var y = {};
y.c = create;
y.c()
とやったとき、newつけていないことを検出できる?
>>880 わざわざ他のもののメソッドにしたらそりゃ分からんだろうけど。
そもそもコンストラクタとして使うものにcreateとかいう名前つける?
小文字で始める?そういうコード普通に書いているというのなら私には何の
アイデアもないです。
jqueryを覚えたらprototypeとかmootoolsとか覚えなくても問題ないですか?
今すぐES5で書けという意味かな…それでいいの?
>>878 >>875 > コンストラクタ関数をnewを付けずに実行するとグロスコが汚れる
> これを回避するためにはnewを使わないことだ
てことなら、コンストラクタ内でnewするのはOKってことだから、
var Constructor = function() {
if (!(this instanceof Constructor)) {return new Constructor();}
}
でいいんじゃない?
887 :
Name_Not_Found :2011/03/29(火) 12:36:30.68 ID:+OBxSamT
わかりづれー 「コンストラクタ関数はnewする以外に使わないこと!」じゃ駄目なのかね 汎用的な利用が予想されるライブラリ的なものを作るのだったら 潜在的なバグの可能性になるかも知れないけどそれでもバグの理由は 「コンストラクタ関数をそのまま実行しても期待通りに動かない」からであって 「グローバルを汚す」のは副次的な問題じゃん
>>886-887 別にvarにしなくても普通にfunctionのままで予防的に/**/の行を追加とかは?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<title>sample</title>
</head>
<body>
<pre><script type="text/javascript">
function Counter() {
if(!(this instanceof Counter)) { return new Counter(); } /**/
this.x = 1;
this.add = function(d) { return this.x += d; }
}
var c1 = new Counter();
var c2 = Counter();
var c3 = Counter();
document.writeln(c1.add(1)); document.writeln(c1.add(1))
document.writeln(c2.add(1)); document.writeln(c2.add(1));
document.writeln(c3.add(1)); document.writeln(c3.add(1));
</script></pre>
</body>
</html>
>>887 たとえば組み込みのObjectコンストラクタだと、
newするときに渡す値によって使われるコンストラクタが違うので、バグの温床になる
var o1 = new Object();
o1.constructor // Object
o1.toFixed // undefined
var o2 = new Object(1);
o2.constructor // Number
o2.toFixed // 存在する
Objectコンストラクタ以外でも、上にあるようなグローバルスコープの問題とかがあるから
リテラルで済ませられるときにはnewを使うなというのは正しいと思う
ieの場合、document.allとdocument.getElementsByTagName(*)はどっちが速いですか?
document.allが速いです。
日本でもしものサマータイム導入に備えて今のうちにコード対応したいのですが サマータイムに対応できるライブラリってありませんか?
894 :
Name_Not_Found :2011/03/29(火) 22:07:34.60 ID:XG+YHQtC
日本のサマータイムがいつからいつまでか決定していないからなあ GMTからずらすだけだから、そんなに面倒ではなさそう
//練習に作った2010年電気代を安い順に並び替える var a=new Array(4476,3757,3746,3659,3830,2116,3341,4314,4783,6033,3594,2395); var c=new Array();var i,j,t,min,s; for (j=0;j<a.length;j++){c[j]=a[j];} for (i=0;i<a.length-1;i++){min=a[i];s=i; for (j=i+1;j<a.length;j++){if (a[j]<min){min=a[j];s=j;}}t=a[i];a[i]=a[s];a[s]=t;} for (i=0;i<a.length;i++){ poo=a[i];for (j=0;j<a.length;j++){if(c[j]===poo){h=j;}} if(h<9){h="0"+(h+1);} else{h=h+1} document.write(h+"月"+":"+a[i]+"<br>");} なんか無駄が多い気がする解決策ありますか?
a=[[1,4476],[2,3757],〜] a.sort(function(a,b){ return a[1] > b[1];//個々は昇順降順適当に合わせて })
特定の月の最終日曜日(今月なら27日)を取得する方法が分かりません 単純に月の日数を取得して日曜日かどうか判断していく方法しか思いつきませんでした コードは確認してないけどこんな感じですか? もっとかっこいいアルゴリズムを教えて欲しいです year = 2011; month = 3; lastday = new Date(year, month+1, 0).getDate(); for (var i=lastday; 1<lastday; lastday--) { if (0 == lastday.getDay()) break; } alert("最終日曜日は"+lastday+"日です");
var year = 2011; var month = 3; var _D = new Date(year, month, 0); //"最終日曜日は"+(_D.getDate() - _D.getDay())+"日です"
function getDays(year, month){ if (month == 2){ if (year % 400) return 29; if (year % 100) return 28; if (year % 4) return 29; } else if (month == 4 || month == 6 || month == 9 || month == 11) { return 30; } else { return 31; } } 万年カレンダーでググれば公式があるから
>>897 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<title>sample</title>
<script type="text/javascript">
function calc() {
var y = parseInt(document.getElementById('t0').value, 10);
var m = parseInt(document.getElementById('t1').value, 10);
var d = (m<12) ? new Date(y, m, 1) : new Date(y+1, 0, 1);
var x = d.getDay(); if(x == 0) { x = 7; }
var s = new Date(d.getTime()-x*86400000);
document.getElementById('t2').value = String(s.getDate());
}
</script>
</head>
<body>
<div>Year:<input type="text" id="t0"> Month:<input type="text" id="t1">
<button type="button" onclick="calc()">Calc</button>
Last Sunday:<input type="text" id="t2" readonly></div>
</body>
</html>
そうか、月をまたがらないんだからただ引けばよかったのか…
変な質問だったらすみません。 サイ本みたいな本って普通、学習用として最初から最後まで読むものですか? それとも詳細に書かれたリファレンスのような感覚で、 作業中に気になって、他の練習用テキストや、リファレンスで対応できなかった時などに該当部分を読んだりするものですか?
質問です。 ---------- (function(fn) { try { document.documentElement.doScroll("left"); } catch (e) { setTimeout(arguments.callee, 0); return; } fn(); //ここでalert(fn);とするとunderfined })(function() { alert("foo"); }); ---------- このような関数を作成しました。ie用のDOMContentLoaded対策のtry〜catch文がなければfn関数は正常に動くのですが、 try〜catch文をいれるとfnがunderfinedになります。fnの参照がどこかで途切れているのだと思いますが、原因がわかりません。 よろしくお願いします。
あり得ないおかしさだねー。tryの前でもalert(fn)するとどうなる?
900超えたけど、次テンプレは結局どれにするという話でしたか? そろそろ確認しておかないと…
>>903 そりゃ、setTimeout(arguments.callee, 0)で呼ぶときに引数がないからじゃね?
setTimeout(function(){arguments.callee(fn)}, 0)とかならどう?
分かっていると思うけど、そのコードだとdocument.documentElement.doScrollのないブラウザは無限ループに陥るね。
>>899 その閏年判定公式は老害コードって結論出たでしょ
今更そんなモン使わないで欲しいわ
>>907 老害コードってのがよく判らないけど、
確かにおかしいねコレ。
909 :
Name_Not_Found :2011/03/30(水) 09:20:05.07 ID:0xzE7jEG
ThickBox系のライブラリで、 デフォルトでキャプション部分にHTMLを使えるものって、 Highslide以外にありますか? 大抵がtitle属性に指定する形なので・・・
>>904 try〜catch文の前だとちゃんと表示されます。
>>906 有難うございます。引数を指定していないのが原因でした。
でも何故かstack overflow at line:6が出てしまいます。
やっぱり普通にattachEventのonloadでやった方がいいかな・・・。
911 :
906 :2011/03/30(水) 09:42:00.47 ID:???
よく考えたら
>>906 だとcalleeの指す対象が変わっちゃうからおかしくなるし、そこでネストが積み上げられるからそれがオーバーフローの原因かもしれん。すまん。
(function(fn) {
function inner(){
try {
document.documentElement.doScroll("left");
} catch (e) {
setTimeout(arguments.callee, 0);
return;
}
fn();
}
inner();
})(function() {
alert("foo");
});
これでどうか?
>>907 じゃあどういうコードならいいのか提示してみろよ
分かりもしないのに批判するのは誰でもできるぞ
>>907 じゃあ、老害コードじゃない万年カレンダーのソース頂戴
914 :
910 :2011/03/30(水) 10:25:52.20 ID:???
何でsetTimeoutは繰り返してくれないんですか? setIntervalは繰り返してくれるのにsetTimeoutは function a(){ alert(1); t = setTimeout("a()",1000); } って書かないとダメなのは何故ですか?
>>915 そういうものだから。
繰り返しが必要なら setInterval() を使えばいいでしょう。
環境Windows 7 Ultimate 64bit メモリ 16GB HDD 2TB alertにCSSを適用したいのでjqueryで alert("テスト").css("background","#ff0000"); で出来ませんでした
自己解決しました。
919 :
Name_Not_Found :2011/03/30(水) 11:28:41.80 ID:zh3g4ImH
出来れば別にサイトに 広告入らない鯖でお願いします 入れるなら広告入らない鯖借り手俺が管理する
>>920 あまり時間ないんで、もしボランティアお願いできるのなら、
鯖借りて内容を移してリンク貼ってください。それを皆で確認したら
テンプレにはそのリンクを入れるというのとでどうかな?
GoogleドキュメントかGoogleサイトとかは?
>>921 907 じゃないけど、そもそもおかしいでしょー?
そもそも
>>899 は的はずれな解答なんだが。
というかなんでnew Date().getDate()じゃだめなの?
>>924 おかしいって言うなら、おかしくないのを是非
過去ログだせや
931 :
907 :2011/03/30(水) 12:30:25.32 ID:???
因み俺が言ってるのは閏年判定公式の考え方がいらないって意味ね 100で割ったりするあれはもう老害でしょ
で、コードは?
しゅくだいは じぶんで かんがえよう
出来もしないのに批判しちゃった。 何故おかしいのか説明も出来ず周りにコード出せと言われてしまった。 引くに引けなくなってしまい「それくらいも分からないのか?」と言うしかできなくなった。 何を言われても「ggれ」「自分で考えろ」で誤魔化す。 本当は分からないのに自分のプライドを傷付けられるのが怖くてそうする事しかできなかったんだ。
正解でてるけどわからないんだろうなぁ
936 :
Name_Not_Found :2011/03/30(水) 13:01:22.11 ID:50NS9npP
>895 <script> var a=new Array(4476,3757,3746,3659,3830,2116,3341,4314,4783,6033,3594,2395) var i,A;A=[] for(i=0;i<a.length;i++){A[i]=[i,a[i]]} A=A.sort(function (p,q){return p[1]-q[1]}) for(i=0;i<A.length;i++){ m=A[i][0]+1;if(m<10)m="0"+m document.write(m+"月:"+A[i][1]+"<br>")} </script>
>>931 いや、
>>899 のコードもおかしいけど、その考え方もおかしい。
判定する必要がある時にはどうするんだ。
938 :
907 :2011/03/30(水) 13:08:37.85 ID:???
>>934 本気で分からないみたいだね
相手を怒らせてコードを出させようとしてるみたいだけど
そんな事しても社会じゃ、やっていけないよ?
春休みの宿題頑張れよ
var today = new Date();
var y = today.getFullYear();
var hoge = new Date(y,2,1-1);
hoge.getDate()!=28?alert('閏年です'):alert('閏年じゃない');
940 :
907 :2011/03/30(水) 13:10:20.46 ID:???
>>937 言葉にあやがあった
閏年判定は必要だが公式はいらないって事ね
941 :
924 :2011/03/30(水) 13:13:20.74 ID:???
>>934 君もどうかと思うぞ。
899のコードは今年の判定すらできないのに、それも判らない?
943 :
907 :2011/03/30(水) 13:21:04.51 ID:???
>>941 まさかの駄目出しw
何が悪いか指摘よろ
俺的には余計な分岐が減らせるからフローチャートやテストの工数が落とせて
閏年判定は専らこのやり方なんだけどw
まぁ3/1決め打ちなのは気持ち悪いかもしれんが
何がよくて何がダメで何をどうしたらどうなったかをちゃんと書けよ
2月の日数を取得して28日分だったら閏年とかwwwwwwwwwwww
>907は自分の時は具体的な指摘を求めるのね
2月が28日まで確認して閏年かどうか決めるとか横着過ぎ
>>945 ライブラリに任せるのはそう変じゃないでしょ。
曜日判定だってツェラーの公式を使わなくても ライブラリが返してくれるでしょ。 2月の日数で閏年が判るのだって目的に合致してると思うけどな。 ライブラリってのはそういう物だし。 2月の日数がダメだって理由を知りたいぞ。
>>942 getDays(2000,2)//undefined
条件分岐ひどいなこりゃwwwわろたw
Date に全て投げるのなら閏年を判定する必要はなくなるんじゃないの。閏年を判定する意味がわからない。
おいテンプレの話題してたのに流すな氏ねカス共
PCには正確な閏年のデータが入ってるって前提だよね?
パフォーマンスは段違い。 function isLeapYear1(y) { return (new Date(y, 2, 1-1).getDate() !== 28)? 1 : 0; } function isLeapYear2(y) { if (!(y % 400)) return 1; if (!(y % 100)) return 1; if (!(y % 4)) return 1; var s = +new Date(); for (var i = 0; i < 1000000; ++i) { isLeapYear1(2011); // isLeapYear2(2011); } alert(+new Date() - s);
いつまでも続けるなうざい
>>947 三角関数を使わずにテイラー展開する派?
958 :
955 :2011/03/30(水) 14:04:22.73 ID:???
途中切れてる;;
959 :
Name_Not_Found :2011/03/30(水) 14:06:09.59 ID:8Ph8Wn9I
>>952 個人的にはwiki案を推す
広告嫌だって人が鯖借りてくれるってんなら
ありがたくお任せしたいけど、運用まで丸投げだと色々アレだから
wikiインスコしてくれるといいな
現状のコード共有サイトのままでも悪くない気はする
スタイルも誰か書いてくれたし
Googleサイトもwikiとして利用できるからそこにドキュメントを入れて皆で更新できるようなものとか
jsスレだからjsをapiとして提供して各ユーザーのローカルでhtmlからインクルード
>>961 勝手に更新したり荒らされたりしたときに困るからこれでいいと思う
次スレは975超えたら。と思ってたら急激に進んだのでもう近い。
「とりあえず」次スレは
>>919 の4レスとFAQリンクでいいと洩れも思う。
FAQリンクの番号は一番大きいのは23番だけど、23番でいいの?22とか21の
方が良いという説はあったっけ?とにかくテンプレの55行目をその
適切な番号に取り替えると(忘れないようにしないと)。
前より面倒なことになること間違いなし
968 :
907 :2011/03/30(水) 14:43:39.19 ID:???
>>946 指摘して結果的にコードも晒したでしょ
2/29で閏年じゃない場合かその逆のパターンがあるなら是非ソースと共に指摘してくれ
OSやブラウザにバグがある事を除いて
OSとブラウザにバグがあるならそれを想定してコードを書くべきだと思うが
テンプレどうなったの!早くまとめてよ!
>>902 一通り全部読んで、後から必要になったらリファレンス的に。
閏年とかどうでもいいから、万年カレンダーのソースくれよ
974 :
Name_Not_Found :2011/03/30(水) 15:44:00.50 ID:V3xE9fmx
>>972 よし、まかされた。
975超えたらやる
テンプレとかいらんでしょ
どうせ質問者は
>>1 なんてみず最後のレスしか見ない
リンクだけ貼っとけ
ごちゃごちゃして見苦しい
976 :
Name_Not_Found :2011/03/30(水) 15:55:01.16 ID:V3xE9fmx
977 :
Name_Not_Found :2011/03/30(水) 16:14:22.05 ID:V3xE9fmx
まだもらってないじゃないか。
> 太陽暦では、季節に暦を一致させるため、暦年の平均の長さを平均回帰年(約365.242199日)に一致させる。 > 通常の太陽暦では平年は365日で、閏年は閏日が挿入されて366日である。閏年は約4年に1度ある。 楽勝じゃろ
982 :
Name_Not_Found :2011/03/30(水) 16:54:38.09 ID:V3xE9fmx
>>978 ほい
http://jsbin.com/otiga4/2/edit Cal()の引数に週の最初にする曜日(なければ日曜)を。
getCalData()の引数に年と月(なければ今日)を渡すと
[
[undefined,undefined,1,2,3,4,5],
[6,7,8,9,10,11,12],
[13,14,15,16,17,18,19],
[20,21,22,23,24,25,26],
[27,28,29,30,31]
]
な感じの配列が返ってくるはず
>>976 多謝!
>>975 テンプレ不要という合意を得たいなら次スレ冒頭でぜひ議論を。
個人的には4レスのテンプレは欠点より利点の方が上回ると思ってる。
ソース嫁w
コード読めよ乞食
987 :
Name_Not_Found :2011/03/30(水) 18:51:25.67 ID:V3xE9fmx
>>984 解説することなんて殆ど無いと思うんだが
月の初日の曜日を求める
月の最終日(翌月の初日の前日)を求める
週の最初の曜日の分だけズラしつつ、1〜最終をn行7列の二次元配列に詰め込む
ってだけなので
わからんことがあれば個別に
988 :
907 :2011/03/30(水) 19:28:24.37 ID:???
>>969 そもそもシステム日付を利用しているのは例であって
OSやブラウザのバグだと曜日判定ライブラリも使えないのは一緒でしょ
例えば入力チェック処理でも使えるし、いつもの公式よりパフォーマンスもいいし
何か問題ある?
パフォーマンスが
>>955 のことをいっているならコードがおかしい
パフォーマンスは 2 の方がずっと良いよ。
※ 2 の形は
>>899 から引用。
function isLeapYear1(y) {
return (new Date(y, 2, 1-1).getDate() !== 28)? 1 : 0;
}
function isLeapYear2(y) {
if (!(y % 400)) return 1;
if (!(y % 100)) return 0;
if (!(y % 4)) return 1;
return 0;
}
var s = +new Date();
for (var i = 0; i < 1000000; ++i) {
isLeapYear1(2011);
// isLeapYear2(2011);
}
alert(+new Date() - s);
閏年判定ロジックは昔どっかの宿題スレで格好いいロジック見かけたな。
992 :
Name_Not_Found :2011/03/30(水) 21:36:20.76 ID:V3xE9fmx
wikiに書いてある year%4 == 0 && year%100 != 0 || year%400 == 0 が一番スマートなんじゃないか?
993 :
Name_Not_Found :2011/03/30(水) 21:39:44.59 ID:F+OQQPEw
994 :
Name_Not_Found :2011/03/30(水) 23:53:29.93 ID:98nFxFjT
document.writeするとページが変わる場合があるのですが、 そうなる場合とそうならない場合の違いって何なんでしょうか?
907逃亡説
<head>の中で使ってるんでねーの?
>>994
>>995 誠実に応えてたと思うけどな。
何を求めて行動してる?
うるう年判定とかを自分で書いちゃうタイプの人がバグを作りこんで、 907みたいな人が尻拭いをしてるんだろうなー うめうめ
999 :
Name_Not_Found :2011/03/31(木) 01:21:10.79 ID:7/K68nMp
まあ、Dateがそんなに速くないってことがわかって勉強になったわ うめうめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。