2ch勢いランキング アーカイブ

+ JavaScript の質問用スレッド vol.80 +


Name_Not_Found [sage] 2010/09/10(金) 13:12:34 ID:???
━━━本スレに書く事を許される者は以下の通り━━━━━
 一、正しい(validな)HTMLとは何か知っており書ける者
 一、JavaScriptはJavaとは別物であると知っている者
 一、自ら学んでJavaScriptコードを書く意思を持つ者
 一、ユーザに迷惑となるスクリプトを書かない者
 一、質問を分かる日本語できちんと説明できる者
 一、トラブルを再現する最小限のサンプルを貼れる者
 一、テンプレ+FAQ/過去ログ/関連資料を読める者
━━━━━━━━━━━━━━━━━━━━━━━━━━━
自力で書く気がない人は他のスレへ(テンプレ末尾参照)。
前スレ ttp://hibari.2ch.net/test/read.cgi/hp/1277348045/
[必読]過去スレ全集 ttp://www2.atpages.jp/mirror/2ch/javascript/
      (閲覧のみ) ttp://usamimi.info/~mirrorhenkan/2ch/javascript/
      (閲覧のみ) ttp://wing2.jp/~mirrorhenkan/2ch/javascript/
[必読]ガイド ttps://developer.mozilla.org/Ja/JavaScript
(GuideをReferenceに→Netscape版言語仕様。多くの実装が準拠:ECMA-262.ed3)
FAQ・注意・過去ログ・仕様書・関連資料・関連スレ
Name_Not_Found [sage] 2010/09/10(金) 13:13:18 ID:???
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!!
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度
 手間を食わせる可能性大
6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
7)質問はまっとうな(他人に理解できる)日本語で。
 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
Name_Not_Found [sage] 2010/09/10(金) 13:14:15 ID:???
【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"」としないとページ移動しちゃうから。
Name_Not_Found [sage] 2010/09/10(金) 13:15:35 ID:???
【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が置き換え前の文字列全体になります。
Name_Not_Found [sage] 2010/09/10(金) 13:16:45 ID:???
【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()。
Name_Not_Found [sage] 2010/09/10(金) 13:20:56 ID:???

jsってもうWebProg板でいんじゃね?

jqueryとかもう中身を知りたいならエンジニアじゃなきゃ無理でしょ
Name_Not_Found [sage] 2010/09/10(金) 13:22:22 ID:???
ECMA-262 ed.3
ttp://www.ecma-international.org/publications/standards/ECMA-262.HTM
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (和訳)
W3C Document Object Model Technical Reports
ttp://www.w3.org/DOM/DOMTR
JavaScript 1.5 ガイド / リファレンス (Netscape/Mozilla)
ttp://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide (和訳)
ttp://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference
ttp://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference (和訳)
JSON (JavaScript Object Notation)
ttp://www.json.org/json-ja.html
ttp://jsgt.org/ajax/ref/test/json/test1.htm
E4X (ECMAScript for XML)
ttp://www.ecma-international.org/publications/standards/Ecma-357.htm
ttp://www.ne.jp/asahi/nanto/moon/specs/ecma-357.html (和訳)
Mozilla Gecko DOM Reference, Netscape devedge
ttp://developer.mozilla.org/en/docs/Gecko_DOM_Reference
ttp://developer.mozilla.org/ja/docs/Gecko_DOM_Reference (和訳)
ttp://devedge-temp.mozilla.org/central/javascript/index_en.html
MSDN Library JScript / DHTML (現在日本語版は古杉)
ttp://msdn.microsoft.com/ja-jp/library/z688wt03%28VS.80%29.aspx
ttp://msdn.microsoft.com/ja-jp/library/cc409720.aspx
Name_Not_Found [sage] 2010/09/10(金) 14:19:33 ID:???
【チュートリアルサイト・サンプルサイト】
規格が読めないならまずはチュートリアル。サンプルサイトも沢山ある。
(以下は精選すべきとの議論あるが進んでいないので玉石混淆)
MetaGraphic Cell
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/
どら猫本舗のリファレンスカウンター
ttp://www.doraneko.org/
はぎさんちのページ Mozilla's DOM Sample Project
ttp://cgi.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/mds.cgi
一撃必殺javascript
ttp://www.openspc2.org/JavaScript/
【関連スレ】
板違い、スレ違いに注意!サーバ側での処理はWebProg板へどぞ!
Webサイト制作初心者用質問スレ part219
ttp://hibari.2ch.net/test/read.cgi/hp/1281429437/l50
CSS初心者スレッド=8th=
ttp://hibari.2ch.net/test/read.cgi/hp/1273383771/l50
役に立つ書籍は? 4冊目
ttp://hibari.2ch.net/test/read.cgi/hp/1172823674/l50
1行javascriptプログラミング   
ttp://hibari.2ch.net/test/read.cgi/hp/1066750037/l50
WSH(・∀・)スレッド! Part 4
ttp://hibari.2ch.net/test/read.cgi/tech/1243095768/l50
Name_Not_Found [] 2010/09/10(金) 20:04:38 :RVNCRuMT
Javascriptを書きやすくする開発環境ってありませんか?
EclipseやVisualStudioのような入力補完・入力ミスチェック({ }を閉じて無いところがあるなど)があるだけでもいいのですが。

現状、普通のテキストエディタで編集してるだけなので、どこか間違えると個所を探すのが大変。
Name_Not_Found [sage] 2010/09/10(金) 20:49:37 ID:???
EclipseやVisualStudioじゃだめなの?
自分はEmacs+js2-modeつかってる
Name_Not_Found [sage] 2010/09/11(土) 09:06:58 ID:???
EclipseかNetBeans、導入が楽なのはNetBeans(インストールするだけ)
Name_Not_Found [sage] 2010/09/11(土) 12:22:13 ID:???
>9
俺はAptana使ってる。

ところでjQueryクックブック買ったんですが、
オライリーのサイト見たけどサンプルコードがどこにも見あたらなくて。。
jsの部分は本に載ってるからいいんですが、cssが載ってないから
途中から進めなくなりました。。。わかる人いますか?
Name_Not_Found [sage] 2010/09/11(土) 12:26:11 ID:???
oreilly.comを見るとか
12 [sage] 2010/09/11(土) 12:48:25 ID:???
>13
ありました。ありがとうございます。
俺が馬鹿でした。。
Name_Not_Found [] 2010/09/11(土) 17:59:14 :C8c9bkn+
特定のページから、WEBフォームページへ移動した時に件名を自動で入れるには、どの様にしたら良いのでしょうか?
avaScript等の書き方等を色々検索してみましたが、上手くいきません。
Name_Not_Found [sage] 2010/09/11(土) 21:09:06 ID:???
javascriptじゃなく、CGIや、get/postについて調べてみ
Name_Not_Found [sage] 2010/09/11(土) 22:30:51 ID:???

つ referrer
Name_Not_Found [] 2010/09/11(土) 23:42:34 :L9vKqdbT

つ 環境変数
Name_Not_Found [sage] 2010/09/12(日) 00:23:34 ID:???
前スレ一気に埋まったなw
Name_Not_Found [sage] 2010/09/12(日) 08:38:48 ID:???
あのさあ、 はjavascriptでできるよって言っているの。
CGIなど鯖側の技術でやりたいという質問じゃないでしょ。
「javascript referrer」で検索すれ。
Name_Not_Found [] 2010/09/12(日) 12:06:08 :0YblIYqk

ごめんなさい。
でもリファラでどうやって?つかそもそも件名ってなんだ?
GETで投げるか、クッキーを使うかぐらいしか思いつかん。
Name_Not_Found [sage] 2010/09/12(日) 12:22:45 ID:???
if(document.referrer.match(/特定のURL/)) elm.value = "特定ry";
確かには良く解らんな。
自作のwebPageでフォームページ作るなら鯖側でやるほうがいいんじゃないかと思う。閲覧者がjs切ってる可能性もあるし。
完全に見る側でUpロダとかのPASSを自動で入れたいとかなら回答者にはエスパーが要求されるな。user.jsとかオミトロンの領域になる。

>色々検索してみましたが、上手くいきません。
ためしてないだろ。コードかけよ。
Name_Not_Found [sage] 2010/09/12(日) 22:10:25 ID:???
: ためしてないだろ。コードかけよ。
に激しく同意。自分で書く気がない奴はカエレ!
Name_Not_Found [sage] 2010/09/13(月) 00:18:16 ID:???
function Foo() {}
などして適当に作ったクラス(のようなもの)にメソッドを追加するのに、
Foo.prototype.hoge = "hoge";
Foo.hoge = "hoge";
の2通りあるようですが、これらの違いは何ですか?delete演算子で削除できるかどうか、しか分かりません。
また、prototypeは全てのクラスで使えるメソッドのようですが、何に使うものですか?
Name_Not_Found [sage] 2010/09/13(月) 00:30:00 ID:???

全く意味が違います

Foo = function() {}
Foo.hoge = "aaa"
Foo.prototype.fuga = "bbb"
foo = new Foo();

としたときに、

Foo.hoge => "aaa"
foo.hoge => undefined
Foo.fuga => undefined
foo.fuga => "bbb"

となる。foo.hoge や Foo.fuga は未定義

Foo.hoge への代入はクラスのプロパティ、
Foo.prototype.fuga への代入はインスタンスのプロパティ
をそれぞれ定義している、というと分かりやすいかな。正確な表現ではないけど
Name_Not_Found [sage] 2010/09/13(月) 00:32:22 ID:???
なんか、JavaScriptのプロトタイプ方式についてちゃんと説明した
本なり解説文を読むのがいいと思うよ。クラスなんて存在しないし
それをクラスがあるとか思っていると結局どこかで破綻すると思う。
Name_Not_Found [sage] 2010/09/13(月) 00:34:20 ID:???

なるほど、ありがとうございます。
Name_Not_Found [sage] 2010/09/13(月) 00:36:55 ID:???
ちゃんと解説した本て何があるよ
JavaScript第5版ですらクラスで説明してあるし
Name_Not_Found [sage] 2010/09/13(月) 01:51:11 ID:???
どっかでスコープチェーンの解説記事を読んで初めて納得した記憶がある
Name_Not_Found [] 2010/09/13(月) 04:54:35 :yBPacYKI

まあプロトタイプのことも説明してあるし、
クラスと呼称しているのは、分かりやすくするためなんだろうな。
Name_Not_Found [] 2010/09/13(月) 09:39:16 :doIJM8ia
SEO対策無双ってすごいよな!
ttp://twitter.com/creditcardmiu/status/24272923242

クレジットカードの関連キーワードでサイトを量産して、
被リンク対策はすべてSEO対策無双に任せるというやり方が効率がいいのではないかと思ったよ。
Name_Not_Found [sage] 2010/09/13(月) 22:31:01 ID:???
Name_Not_Found [sage] 2010/09/13(月) 22:38:28 ID:???
テンプレから辿ったらプロトタイプについての解説有ったわ

ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/js-notes/prototypechain.html
Name_Not_Found [sage] 2010/09/14(火) 00:36:57 ID:???
昨日の記事だけど
第14回 プロトタイプと継承
ttp://gihyo.jp/dev/serial/01/crossbrowser-javascript/0014
Name_Not_Found [sage] 2010/09/14(火) 23:58:56 ID:???
プロトタイプと聞くと必ず脳裏をよぎる、緑のアイツ。
Name_Not_Found [sage] 2010/09/15(水) 13:02:52 ID:???
プロトタイプはぜんぜんわかんね
Name_Not_Found [] 2010/09/15(水) 16:21:53 :2p9xXFaN
質問させて頂きます
Google AJAX Feed APIでフィードを出力している特定のページへIE8.0でアクセスすると
エラーが頻発します。エラー詳細は

メッセージ: 'publishedDate' は Null またはオブジェクトではありません。
ライン: 97
文字: 1
コード: 0

私が運営している下記ブログ内には他にもリーダー設置していて
それぞれにエラーが出る事もたまにありますがこのURLだけが頻発
Firefox/3.6.9では問題ありません。エラー無し

このページのリーダーのみwebryblog.biglobe.ne.jp内のブログがあり、
webryblogのフィードはttp://feedproxy.google.com/〜 と出力するので
これも何か影響があるのかもとの素人考えも

web上で公開されているコードを若干加工しているので
私の記述ミスもあるかもしれません

googleのキーが必要、他ブログのurlが記載されている、という事もあり、
コードをここに書かずに実際のURLを晒す事をお許し下さい
ttp://aaanimememe.blog134.fc2.com/blog-entry-24.html

アドバイスをどうか宜しくお願い致します
Name_Not_Found [sage] 2010/09/15(水) 16:26:13 ID:???
デザインはいいけど色が地味で再訪する気が失せるのがもったいないな
Name_Not_Found [sage] 2010/09/15(水) 20:07:17 ID:???

中身が存在しないフィードの投稿日を参照した結果のエラーだろう。

フィードの読み込みに失敗した場合の処理をしてないのが原因で、
たまたまIE以外のブラウザで処理が早かったか、参照する先の
回線との相性が良かったかの違いがある程度で、本来はそこの
URL以外でも、どんなブラウザでもエラーが出る可能性がある。

// 「読み込みに成功した場合」(73行目)
if (!result.error) {

ここの条件分岐が「読み取りに成功した場合」だから、その後ろに
「読み取りに失敗した場合」のelse節を追加し、処理を打ち切るなり
再読み込みするなりすれば、同様のエラーは出なくなる。
37 [sage] 2010/09/15(水) 20:19:31 ID:???

デザイン褒めて頂いて嬉しいです感謝
地味なのは私自身が地味なので・・・でも再訪されないのは寂しいので考えてみます

おおなるほど。失敗した場合の処理ですか
勉強して追加してみます
丁寧に教えて頂いて本当に有難う御座いました
Name_Not_Found [sage] 2010/09/16(木) 15:02:01 ID:???
質問です。トップページにjavascriptでランダムなあいつが表示されるようにしたんですが、
javascriptを切っている方にも挨拶が見えるようにしてあります。こちらは当然ランダム表示されませんが。

○トップ
<script type="text/javascript">
<!--
aisatu();
// -->
</script>
<noscript>
<p class="noscript">いらっしゃいませ</p>
</noscript>

○CSS
p.noscript { font-size: 10pt; line-height: 5.0px; }

○aisatu.js
var graphlist = new Array(
'<font style="font-size:10pt;line-height:2.3">いらっしゃいませ',
'<font style="font-size:10pt;line-height:2.3">ようこそいらっしゃいました'
);

function aisatu(){
var today = new Date();
var num = today.getSeconds() % randomlist.length;
document.write(""+randomlist[num]+"");
}

としてあるのですが、フォントの指定を揃えてもnoscriptの文章とjavascript上の文章が異なってしまいます。
上記のように直してようやくズレが小さくなるのですが、それでもコード上での噛み合って無さが気持ち悪くて仕方ありません。
なぜこのようなズレが生じてしまうのでしょうか。また、どうすればいいのでしょうか。分かりづらい質問で申し訳ありません。
Name_Not_Found [sage] 2010/09/16(木) 15:03:03 ID:???
失礼しました。
×var graphlist = new Array(
○var randomhlist = new Array(
です。
Name_Not_Found [sage] 2010/09/16(木) 17:07:01 ID:???
一行目を読んだとき、一瞬遊べる質問かと思ったけど、意味が全然分からん。
Name_Not_Found [sage] 2010/09/16(木) 17:11:57 ID:???

・randomlistの中身は文章だけにして、document.writeで出力する時にclass属性をつけたタグで囲む
・noscriptの中身のテキストとこのrandomlistの出力を、(pとfontのような別物ではなく)同じタグの同じclassにする
・そのclassには、font-faceも指定
・noscriptはブロック要素だから、 ブロック要素の中にaisatu()を出力する

これでもダメなら、こっちの詳しい連中に質問だな。

[CSS初心者スレッド=8th=]
ttp://hibari.2ch.net/test/read.cgi/hp/1273383771/l50
Name_Not_Found [sage] 2010/09/16(木) 17:20:26 ID:???
pはデフォルトで上下marginが指定されてる
そもそもnoscriptなんて使わなくても、pのテキストを書き換えれる処理を書けばいい
Name_Not_Found [sage] 2010/09/16(木) 17:32:20 ID:???

そのスレの住民はまともなの少ないw
Name_Not_Found [sage] 2010/09/16(木) 17:36:18 ID:???
何か質問者の言いたいことが分かったかも。

document.write で document を新規 open してるから、
事前に指定したスタイルが適用されてないとか。
Name_Not_Found [sage] 2010/09/16(木) 17:39:55 ID:???
やっぱそんな訳ないか。
Name_Not_Found [sage] 2010/09/16(木) 17:47:22 ID:???
質問です
時間毎に画像を変える方法なのですが、30分毎に変えるのは下のように書いて
出来たのですが、これを20分毎、15分毎にする事が出来ません
やり方をご存知な方はいらっしゃいますでしょうか

<!--
var msg = new Array();

msg[0] = '<IMG SRC="xxx.jpg">';
〜省略〜
msg[47] = '<IMG SRC="xxx.jpg">';

var d=new Date();
document.writeln(msg[d.getHours()*2 + (d.getMinutes()>29 ? 1 : 0)]);
// -->
Name_Not_Found [sage] 2010/09/16(木) 18:20:03 ID:???
メッセージの表示を img タグにコピペ改変し、更新間隔の変更を 2ch で質問。
何という他力本願。
Name_Not_Found [sage] 2010/09/16(木) 18:59:27 ID:???
すみません
自分では何度やっても20分後に画像が変わって
その後40分変わらずという感じになってしまいました
Name_Not_Found [sage] 2010/09/16(木) 19:19:22 ID:???
( ? 1 : 0)
ここを分解すると
var a = 0;
if (29 < d.getMinutes()) {
a = 1;
}

こうなるあとは考えろ
Name_Not_Found [sage] 2010/09/16(木) 19:20:21 ID:???
1行目訂正w
( ? 1 : 0)

(d.getMinutes()>29 ? 1 : 0)
Name_Not_Found [sage] 2010/09/16(木) 19:48:07 ID:???
画像タグの定義方法を時間と分とで分けたら、手っ取り早いと思うよ
Name_Not_Found [sage] 2010/09/16(木) 20:32:59 ID:???
var msg = [
 // 0時台の画像
 [
  "<IMG SRC='XXX.jpg' />",
  "<IMG SRC='XXX.jpg' />"
 ]
 略
 // 23時台の画像
 ,[
  "<IMG SRC='XXX.jpg' />",
  "<IMG SRC='XXX.jpg' />",
  "<IMG SRC='XXX.jpg' />",
  "<IMG SRC='XXX.jpg' />"
 ]
];

こんな感じの定義の方が保守しやすいし、時間毎に更新間隔も変えられる
Name_Not_Found [sage] 2010/09/16(木) 20:43:24 ID:???

今、何分か(d.getMinutes()〜の部分)だけを変えても意味がない。

「30分ごと=60分で2回」だから、d.getHours()の後ろに「2」をかけており、
「20分ごと」なら3を、「15分ごと」なら4をかける必要がある。

たとえば、こんな感じかな。

var ph=3;//1時間あたり、何回変更するか
document.writeln(msg[d.getHours()*ph+Math.floor(d.getMinutes()/60*ph)]);

ただ、柔軟性を考えると、条件式を書き換えて みたいにするのが無難かも。
Name_Not_Found [sage] 2010/09/16(木) 21:10:22 ID:???

アドバイスありがとうございます


d.getHours()の後ろはやはり1時間の分割で良かったんですね
ただ、ここの記述が(d.getMinutes()>29 ? 1 : 0)])、これで30分なら
どう弄ったら15分、20分と変えれるのかとずっと頓挫してましたが、
の方法は分かりやすかったので、こちらでやってみようと思います
アドバイスありがとうございました
Name_Not_Found [sage] 2010/09/16(木) 21:12:20 ID:???
ランダムなあいつはどうなった
Name_Not_Found [sage] 2010/09/16(木) 22:19:20 ID:???
ランダムなあいつは、そもそもどのブラウザでチェックしてんのかね?
こういった微妙なものは、ブラウザによって見た目が変わることが
結構あるんじゃないかな。

まずは、リセットcssをやってみてはどうだろう。


Name_Not_Found [sage] 2010/09/16(木) 22:42:50 ID:???
【お知らせ】
Windows 2000とWindows XP SP2のサポートが終了して、
現在サポートされているすべてのWindowsでMSXML6が標準搭載になりました。
Name_Not_Found [sage] 2010/09/17(金) 07:36:53 ID:???
XPもなの?
41 [sage] 2010/09/17(金) 08:49:25 ID:???
ランダムなあいつです。
スレで頂いた御意見を参考に試行錯誤してたんですが、さんの言うとおりhtml文での出力先でnoscriptと同じクラス指定したらあっさり解決しました。
いま考えればなんでやらなかったんだという感じです。
意味不明な質問から読み取っていただいた皆様、ありがとうございました。
あと複数のブラウザでのチェックはしてました。
本当にありがとうございました。
Name_Not_Found [sage] 2010/09/17(金) 10:54:32 ID:???
そもそもjavascriptで実現できるかわからないのですが・・・

@外部のページを小窓で開き
A外部ページにあるテキストリンクをクリックすると
Bこちらが管理してるページの特定のテキストボックスに、そのテキストリンクの内容が入る。

jqueryとかでも無理ですかね?
Name_Not_Found [sage] 2010/09/17(金) 11:08:38 ID:???
無理
Name_Not_Found [sage] 2010/09/17(金) 11:22:08 ID:???
innerHTMLをつかってサムネイルもしくはボタンクリックで
テキストボックスの中身を入れ替えるページをつくってるんですが、
(ここで解説しているような内容です→ ttp://homepage1.nifty.com/kodayan/dhtm/dhtml/text02.htm

ボックス内のスクロールが下にあるままボックスの内容を切り替えると
切り替わったボックスのスクロールの位置も下に下がったままです。
この対応に苦戦してます。

scrollTopの対象はどうなるのですか?
というか、どうすりゃいいのかわかりませんorz
Name_Not_Found [sage] 2010/09/17(金) 15:55:37 ID:???
真面目に調べてるのかねえ?
ふつうにscrollIntoViewでも使えばいいんじゃないかと思うが。
Name_Not_Found [sage] 2010/09/17(金) 16:54:27 ID:???
jQueryのプラグインを探しています。

小さな正方形のイメージ(20px×20px程度)が横一列に10個程度並んでいます。
左側のボタンをクリックするとイメージ一個分左にずれ、
右側のボタンをクリックするとイメージ一個分右にずれる。

こーいう動作のjQueryプラグインはないでしょうか?
Name_Not_Found [sage] 2010/09/17(金) 17:36:51 ID:???
もうさ、クリックしたらディスプレイずらしてもらえよ。
Name_Not_Found [sage] 2010/09/17(金) 17:48:32 ID:???
javascriptでペッティングできますか?


Name_Not_Found [sage] 2010/09/17(金) 17:51:14 ID:???

自分で作る気はないのか?
65 [sage] 2010/09/17(金) 17:53:55 ID:???

サンクス
できました。
言い方はやな奴だけど、アドバイスに感謝します。
Name_Not_Found [sage] 2010/09/18(土) 01:09:02 ID:???
・javascript
window.attachEvent("onload", function() {
var chg = document.getElementById('chgText');
var target = document.getElementById('eventSampleText');

chg.attachEvent("onclick", function() {
target.innerHTML = "CLICK";
});
});

・html
<input type="button" id="chgText" value="chgText">
<div id="eventSampleText">aaaiii</div>


上記のjsとhtmlで、「idがchgTextなボタンを押したら、idがeventSampleTextなdivのテキストが書き換わる」ということができるのまではいいんですが、
以下のjsを追記したとたんに動かなくなります。

var Human = function() {
this.var = "hoge";
};

this.varをthis.hoge などに書き換えると動くことから、予約語のvarを使っているのが原因だと思うのですが、

1.何故これだけで動かなくなるのでしょうか?jsを上から下へパースしていって、var Human...が現れる前までのjsにエラーは無いから、そこまでのjsは動作してもいいのでは?
2.attachEventの部分をaddEventListenerに書き換えてfirefoxで同じ検証をしたところ、var Human...が記述してあっても正常動作したのですが、やはりjsエンジンが違えば動作も異なるのでしょうか?
 SpiderMonkeyでは、jsを上から下へパースしていって、エラーがある場所の前までのjsは正常動作するとか?
Name_Not_Found [sage] 2010/09/18(土) 01:32:06 ID:???
firefoxのほうはエラーになってないんじゃね
Name_Not_Found [sage] 2010/09/18(土) 01:43:32 ID:???
"javascript 1.7" 予約語
などでggr
Name_Not_Found [sage] 2010/09/18(土) 08:23:03 ID:???
twitterの公式ウィジットを設置すると他のJSが誤作動を起こすんですが
どなたか対処法知りませんか?IE限定で勝手にオブジェクトに関数を代入してくる
Name_Not_Found [sage] 2010/09/18(土) 08:32:03 ID:???
誤作動を起こす他のJSって何だ?
Name_Not_Found [sage] 2010/09/18(土) 08:39:58 ID:???

それは自作の簡単なスクリプトです。

単純にオブジェクト名(テキスト)の配列使ってるだけなんですが

そこにファンクションを強制的に代入してきます。(IEのみ)

どのタイミングで代入してくるのかも目下不明です。

Name_Not_Found [sage] 2010/09/18(土) 08:53:28 ID:???
オブジェクトだか変数だか詳細が分からないけど、
自分が宣言した名前がかぶってるんじゃないの?
名前変えてみたら
Name_Not_Found [sage] 2010/09/18(土) 09:06:49 ID:???

とりあえず自分でも解決すべく調査中です。
名前の変更をしてみましたがだめでした。

DOM関係で特定タグのオブジェクト名を配列に格納するということをやっているので

そこらへんでDOMのオブジェクトをウジィットも操作していておかしくなるんじゃないかと

現状は考えています。

Name_Not_Found [sage] 2010/09/18(土) 09:16:33 ID:???
IE8でも同じことが起こる?
起こるんだったらIE8の開発者ツール(F12で起動)使って、
ステップ実行してみたらわかるんじゃ?
Name_Not_Found [sage] 2010/09/18(土) 09:33:56 ID:???

起きます。やってみます。
Name_Not_Found [sage] 2010/09/18(土) 09:40:44 ID:???
自作のスクリプトが誤作動を起こすのに
自作の方を原因と疑わないのがすごいなw
Name_Not_Found [sage] 2010/09/18(土) 09:46:00 ID:???
Firefoxのfirebug, Chromeのデベロッパーツール, IE8の開発者ツール は最低限知っておくべき
あ、知ってたらこのスレには来ないかw
Name_Not_Found [sage] 2010/09/18(土) 10:14:14 ID:???

最終的にドル関数かもしれないですけどね
Name_Not_Found [sage] 2010/09/18(土) 12:13:10 ID:???
すいませんIE9で以下のコードが動かないんですけど分かりませんか?

var i = 1;
alert(i);
Name_Not_Found [sage] 2010/09/18(土) 12:58:23 ID:???
HTML側がいい加減なんだろ
85 [sage] 2010/09/18(土) 13:01:57 ID:???
HTMLはこうです

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var i = 1;
alert(i);
</script>
</head>
<body>
<div>はじめてのJavaScript</div>
</body>
</html>
Name_Not_Found [sage] 2010/09/18(土) 13:29:07 ID:???
ブラウザでJavaScriptの実行が制限される設定になってるとか?
75 [sage] 2010/09/18(土) 13:42:39 ID:???

ttp://widgets.twimg.com/j/2/widget.js

どうもウィジットのこの部分が配列に代入されるのですが

コールバック関数というのですか?これが原因?
これIE関係するのかな????

if(!Array.forEach){
Array.prototype.forEach=function(D,E){
var C=E||window;
for(var B=0,A=this.length;B<A;++B){D.call(C,this[B],B,this)}
};
Array.prototype.filter=function(E,F){
var D=F||window;
var A=[];
for(var C=0,B=this.length;C<B;++C){
if(!E.call(D,this[C],C,this)){continue}
A.push(this[C])
}
return A
};
Array.prototype.indexOf=function(B,C){
var C=C||0;
for(var A=0;A<this.length;++A){
if(this[A]===B){return A}
}
return -1
}
}
Name_Not_Found [sage] 2010/09/18(土) 13:53:46 ID:???
そこらへん拡張されて何か問題あんの?
配列でfor inとか使ってるとか?
Name_Not_Found [sage] 2010/09/18(土) 14:05:47 ID:???

まだよくわかりませんが、これはコールバックだからこれが直接の原因じゃないですね

もう少し考えます。

Name_Not_Found [sage] 2010/09/18(土) 14:07:16 ID:???
もうちょっとどういうスクリプトに対して
どういう誤作動があるのかきちんと書いてみ?
書いてることが少なすぎてわからん
Name_Not_Found [] 2010/09/18(土) 14:42:00 :0mS1rAUv

たぶんご指摘のとおりだと思います。

「配列でfor in」しています。

何も入っていない配列のはずがコールバックに反応しているような

対処方法はありますか?
Name_Not_Found [sage] 2010/09/18(土) 14:59:22 ID:???
for in つかうな。
配列なんだからlengthまで回す
Name_Not_Found [sage] 2010/09/18(土) 15:14:52 ID:???

ありがとうございます。

勉強になりました。
Name_Not_Found [sage] 2010/09/18(土) 15:57:19 ID:???
cookieの値を取り出してinputに突っ込むスクリプトだけど3行目で&&している意味がよくわからない
$("input[type=text]").each(function(){
  var a=$.cookie($(this).attr("name"));
  a&&$(this).val(unescape(a));
});

&&する理由は何ですか?
Name_Not_Found [sage] 2010/09/18(土) 16:04:58 ID:???
aが空だったら、そもそもunescape呼ぶのが無駄だから効率のためじゃね?
Name_Not_Found [sage] 2010/09/18(土) 16:11:09 ID:???

色々と調べてみたら短絡評価が行われることが分かりました
空文字はunescapeしても空文字なので無駄なだけなので許容できますが
nullやfalseを入れると文字列で"null","false"が返ってくるのでおかしなことになりますね

ありがとうございました。
Name_Not_Found [sage] 2010/09/18(土) 19:40:13 ID:???

これってランダムになるか?
確率計算してなくね?
Name_Not_Found [sage] 2010/09/18(土) 19:48:41 ID:???
乱数生成器使ってないからランダムとは言えないけど
擬似ランダムとでも言うか
ユーザからすればランダムっぽくは見えるだろうね
Name_Not_Found [sage] 2010/09/18(土) 20:12:35 ID:???

「引数が省略されたらデフォルト値を使う」みたいな場合には
よく使うテクニックだったりする
Name_Not_Found [sage] 2010/09/18(土) 20:37:22 ID:???
loadURI() の第二引数の referrer はなぜ nsIURI なんだろう
第一引数の uri は string でわかりやすいのに
Name_Not_Found [sage] 2010/09/18(土) 21:05:43 ID:???
ランダムのアルゴリズムはなんちゃらフィッシャーで実装しちゃえばいいじゃん
Name_Not_Found [sage] 2010/09/18(土) 21:16:42 ID:???
質問です。
jQueryのloadでファイルを読み込むときに、対象ファイルの拡張子が.txtだと動作しません。
拡張子を.htmlや拡張子なしに変えてみるとうまく読み込めるんですが、.txtに限ってダメなようです。
参考サイトを見ると.txtでも同じように読み込めるはずなんですが、なぜうまく行かないのでしょうか。
jQueryのバージョンは1.4.2です。コードは以下のようなものです。

function load() {
    $("#aaa").load("test.txt");
}
Name_Not_Found [sage] 2010/09/18(土) 21:37:42 ID:???

test.txt で Content-Type: text/html; を出力するようにしてください。
Name_Not_Found [sage] 2010/09/19(日) 23:58:52 ID:???
言語としてのJavaScriptを語るスレはどこですか?
総合的なスレが見当たらないんですが
Name_Not_Found [sage] 2010/09/20(月) 00:19:44 ID:???

質問に類するものなら、ここだと思うけど。


ところで、jQueryの質問は言語としてのJavaScriptとはほとんど関係ないから、
今後こっちへ誘導するようにしないか。

【誰か】jQueryのここがわからない【助けて】
ttp://hibari.2ch.net/test/read.cgi/tech/1229881548/
Name_Not_Found [sage] 2010/09/20(月) 00:30:45 ID:???
あーだこーだと言いたいだけじゃないの?
Name_Not_Found [sage] 2010/09/20(月) 00:33:15 ID:???

言語で語りたいならここだと思うが…
ECMAScript デス 3
ttp://hibari.2ch.net/test/read.cgi/tech/1190160481/
Name_Not_Found [] 2010/09/20(月) 10:15:45 :HPUW6nIN
onmousemoveなどで取得したときの正確なマウス座標を取得したいのですが
テキストボックスにフォーカスが当たっている場合等はどうしてもずれてしまいます
親ノードの位置を取得して足すみたいなことをすればできるかなというところまできましたが、
全然まともなソースが作れません
できればソースを教えてください
あと、今日はもう書き込めないのでよろしくお願いします
Name_Not_Found [sage] 2010/09/20(月) 10:37:47 ID:???
prototype.jsにその機能あるよ。
あるいはprototypeから取り出せば?
自分で作ったソースを書き込まないやつにはこれぐらいしか言わない。
Name_Not_Found [sage] 2010/09/20(月) 15:30:25 ID:???
Array.prototype.slice.call(arguments)

これは、
Arrayオブジェクトのプロトタイプのsliceメソッドを呼んでいて、呼び出すときにsliceの中におけるthisをargumentsにして呼び出していて、
結果として、大元の引数を全て返している、でいいですか?
また、使いどころは引数が不定のとき、でいいですか?
Name_Not_Found [sage] 2010/09/20(月) 15:34:07 ID:???

語りたいなら本家開発サイトのフォーラムで語っちゃってくださいよ
Name_Not_Found [sage] 2010/09/20(月) 15:44:47 ID:???

「結果として」という書き方が若干曖昧だが、
そこを理解して言っているのであれば何も付け加えることはない。
Name_Not_Found [sage] 2010/09/20(月) 16:18:04 ID:???
最後の一行からして、何か別のところで理解が間違ってる気がしないでもない今日この頃。
Name_Not_Found [sage] 2010/09/20(月) 18:57:03 ID:???

Array.prototype.slice.call(hoge) はhogeが配列のときhoge.slice()と同じ
hoge.slice() は hoge をコピーした配列を返す

hogeがargumentsの時も同様で、arguments.slice()と同じ。
つまり引数をコピーした配列を返す。
けどargumentsは配列っぽいふるまいをするけど配列ではないのでsliceメソッドを持たない
だから Array.prototype.slice(arguments) という呼び出し方をする
Name_Not_Found [age] 2010/09/20(月) 20:00:28 ID:???
Safariのデバッガでおすすめを教えてください。
Name_Not_Found [sage] 2010/09/20(月) 20:37:28 ID:???
要素をn個づつwrapする方法が分かりません。
例えば
<p>text1</p>
<p>text2</p>
<p>text3</p>
<p>text4</p>

<div>
<p>text1</p>
<p>text2</p>
</div>
<div>
<p>text3</p>
<p>text4</p>
</div>
としたいです。
$("p:nth-child(2n),p:nth-child(2n-1)").wrapAll("<div />");
等と書いてみましたが、これでは全体がwrapされてしまい無理でした。
偉い人、よろしければご教授下さい。お願いします。
Name_Not_Found [sage] 2010/09/20(月) 20:50:55 ID:???
二つの要素を選択してwrapする作業を二回すればいいじゃん
Name_Not_Found [sage] 2010/09/20(月) 20:55:17 ID:???

なるほど!!
gt,ltフィルターを使ってそうしてみます。ありがとうございます。

しかし100個とか1000個単位でやりたい時にこれがサラリと書けると便利ですよね。
CSSで頑張って凌ぐしかないですね。
アフリカ象 [sage] 2010/09/20(月) 20:56:33 ID:???

うるせえはげ
Name_Not_Found [sage] 2010/09/20(月) 21:01:36 ID:???
evalでやるかforを要素単位で回す
Name_Not_Found [sage] 2010/09/20(月) 21:44:48 ID:???

wrapするライブラリがあるんだから使えばいいじゃん
112 [sage] 2010/09/20(月) 22:38:37 ID:???

ありがとうございますた。
110 [] 2010/09/21(火) 06:59:47 :tL45d568
>111
prototype.jsからpointerXを取り出してみましたがこれでは症状が改善できませんでした

ネットにアクセスできる環境がアクセス制限のかかったケータイしかないため、
できれば具体的なソースか具体的な解決方法を教えていただけるとうれしいです

ちなみにソースです
function onMouseMove(e){
doc=document.documentElement
body=document.body||{scrollLeft:0}
Mx=event.pageX||(event.clientX+(doc.scrollLeft||body.scrollLeft)-(doc.clientLeft||0))
My=event.pageY||(event.clientY+(doc.scrollTop||body.scrollTop)-(doc.clientTop||0))
//<img id='P' src='I/p-r.gif' style='position:absolute;left;0px;top:0px;'>
P.style.left=Mx+"px"
P.style.top=My+"px"
}
Name_Not_Found [sage] 2010/09/21(火) 09:21:36 ID:???
具体的な解決方法:ネットカフェにでも行けばよろしい
Name_Not_Found [sage] 2010/09/21(火) 13:03:37 ID:???
イベントの使い方と要素の特定方法がおかしいな。エラーログ見てみろよ
Name_Not_Found [sage] 2010/09/21(火) 20:40:07 ID:???
> ネットにアクセスできる環境がアクセス制限のかかったケータイしかない
じゃあ、マウス座標とか無理じゃないの
Name_Not_Found [] 2010/09/22(水) 06:46:59 :gcs5yBij
>127
他にも膨大な数あるコードから要点だけ抜き出しました
実際はonloadのあと
document.onmousemove=onMouseMove
となっています

エラーログというものは確認できませんが、エラーは起きていません
通常はちゃんとページ左上端からの座標が表示されるのですが、
マウスが<input>等のテキストボックス等の上に重なったときはその要素の左上端からの座標になってしまいます

例えば要素が(100,100)の位置にあって、(0,0)からマウスを正斜め右下に動かして行くと、
(0,0)→(1,1)→(2,2)→(3,3)→…→(99,99)→(0,0)→(1,1)→…
となってしまいます
これを
(0,0)→(1,1)→(2,2)→(3,3)→…→(99,99)→(100,100)→(101,101)→…
としたいのですがどうしたらよいのでしょうか?

わかっているテキストボックスだけのその場しのぎだけのコードならなんとか作れそうですが、
根本的に問題を解決するコードを書きたいのです
教えて下さい


>128
最近の携帯ではマウス座標を取得できます
特に私は光タッチクルーザーがついたSH-06Aを使っておりますので、かなりまともな操作もできます


ちなみに、このコードで何をやろうとしてるかと言うと、
オンラインゲーム中に相手のマウスが自分の画面に反映される
また、相手のマウスに自分のマウスが追従する(<button>移動→focus()で)
といったことをしようとしています
Name_Not_Found [sage] 2010/09/22(水) 08:33:14 ID:???
今日はもう書き込めないとかネットが出来る環境がないとかそんな個人的な理由が調べることを免除される交渉の手札になると思っているその思考。
スルーされてるけどネット環境ならネカフェを利用するなど自分で出来ることをやりつくして
それでもこれこれこういうキーワードなどで検索したが期待する情報が得られなかったというならまだしも。
あんまりネカフェネカフェとひとつだけ提示するとうちは田舎なのでネカフェはありませんなどと言い出しそうだけど
提示された方法以外の手段も模索してみてはどうか。
想像力のなさ応用力のなさを丸出しにすると限りなく答えに近いものを出されてもまた
「これでは症状が改善できませんでした」「具体的な答えそのものを教えてください」って言うんだろうなと思われてしまう。
Name_Not_Found [sage] 2010/09/22(水) 10:22:59 ID:???
答える気はないが、これってfirefoxで動くっけ?
Name_Not_Found [sage] 2010/09/22(水) 10:39:48 ID:???

>わかっているテキストボックスだけのその場しのぎだけのコードならなんとか作れそうですが、
>根本的に問題を解決するコードを書きたいのです
>教えて下さい

自分で考えずに、ただで俺たちにコードを書かせたいってか
Name_Not_Found [sage] 2010/09/22(水) 10:40:59 ID:???

それと・・・

>ちなみに、このコードで何をやろうとしてるかと言うと、
>オンラインゲーム中に相手のマウスが自分の画面に反映される
>また、相手のマウスに自分のマウスが追従する(<button>移動→focus()で)
>といったことをしようとしています

FPSかなんか知らんがネトゲで不正な事しようとするな
Name_Not_Found [] 2010/09/22(水) 15:11:38 :FZ7Woid+
フレームで構成したウェブページにて、あるフレーム(frame1)から呼び出したJavascriptで、
別フレーム(frame2)のフォーム内容の操作をする方法を探しています。(テキストボックスの内容を変更する、消すなど)

このサイトで解説している方法を使い、
ttp://homepage2.nifty.com/BASH/WWW/JavaScript/anotherpage.html

parent.frame2.document.getElementsByName("textbox").innerHTML = "ああああ";

のように、他フレームの要素にアクセスする方法を知りました。
各フレームのhtmlがローカルファイル同士や、同一サイトのものならこれで問題無いです。

しかし、片方が他サイトのものになると、この方法では内容の操作ができないようです。
parent.frame2.documentから下の階層のオブジェクトが取得できていないようです。
何か良い方法は無いですか?
Name_Not_Found [sage] 2010/09/22(水) 15:16:21 ID:???
そりゃ他のサイトだとできないだろ
セキュリティの問題
Name_Not_Found [sage] 2010/09/22(水) 15:20:39 ID:???

同一生成元ポリシーでググるよろし
解決策としては同一ドメインにCGIかなにかを設置して、他サイトとの通信をそこで行ない、
iframeからはそのCGIを呼び出すとかなんとか
Name_Not_Found [] 2010/09/22(水) 18:18:58 :tnAK5Gge
ttp://www.logic-sunrise.com/のサイトの
中央の×で閉じれるメニューと
左側のーで閉じれて、□で並び替えができる。

これはどのようにやったらいいのでしょうか?
ソースを見てもよくわからなかった為、質問しました。
Name_Not_Found [sage] 2010/09/22(水) 19:58:07 ID:???

とりあえず思いつくキーワードだけ

・中央の×で閉じれるメニュー
 「アニメーション」
・□で並び替え
 「ドラッグオンドロップ」
Name_Not_Found [sage] 2010/09/22(水) 22:07:18 ID:???
>129
John Resigにでも聞いてみようか
Name_Not_Found [] 2010/09/23(木) 07:43:34 :qESbkVzD
>130,132 語弊がありました
PCがないから調べれないのでコードを丸ごと全部教えてくれと言っているわけではありません
「こうすれ」と日本語でヒントが貰えればもちろん後は自分で調べてコードは書きます
JavaScriptは1年半前から始めたのですが、多分今までに4、5回このようなことを思い、頑張って調べはしました
アクセス制限サイトもProxyサイト経由でおそらくググって数十件は全部見ましたが、それっぽいのは大量に見つかるのですが
探すのが大変下手なのか目が悪いのかコードの理解が低いのかで、今回の問題を解決するコードを書くことが未だにできません
>133 こちらも語弊がありました
私が今作っているオンラインゲームでの話です
今はオセロくらいしか考えてませんが、今後レースゲーム等を作ったときに相手のリアルタイムで滑らかな状態反映が必要なので
半分実験的に、相手の擬似マウスを表示して、実際に人間とプレイしている感を出そうという魂胆であります
>131 わかりませんが、
今の段階ではこのコード以外はほとんどAjaxの処理で、そこまで複雑な処理は書いていないので、きっと動いてくれると信じてます
逆に自分が書いたコードがIEで1発でまともに動いたことは1度しかないのでそちらが心配です
もう少しゲームが完成したら、いろんなブラウザを入れている友達に確かめてもらうつもりでいます
ちなみに一応言うと、最終的にiモードブラウザ2.0で動けばいいかと思っています
私自身がiモードかフルブラウザでしか作成できませんし、ネカフェ等はお金が0だし学生なので行かれませんですし、
図書館のPCを無断でプログラミングのために占領するほどの勇気と行動力がないので
迷惑にならない月一くらいでその友達の家に行って使わせてもらうくらいしかないといった有様ですので
それから、1日1レスしかできないのはibisの無料お試し版を使って書き込んでいるためです
Name_Not_Found [] 2010/09/23(木) 10:06:53 :6Ig57ogI
今回のgoogleの大変動で分かったことを教えます。
ttp://twitter.com/creditcardmiu/status/25025421209
Name_Not_Found [sage] 2010/09/23(木) 10:14:51 ID:???
開いてもらいたいならアカウント名をもっと工夫
Name_Not_Found [sage] 2010/09/23(木) 10:15:48 ID:???
SEO対策なんて間違った言葉使う奴の言う事なんて
Name_Not_Found [sage] 2010/09/23(木) 10:46:05 ID:???

jQueryは使ってみた?
ttp://semooh.jp/jquery/api/events/mousemove/fn/
Name_Not_Found [] 2010/09/23(木) 10:49:08 :dl5jqp9L
window.open("")で新しいページを開き、そこにinnarHTMLで指定した文字列を挿入する形で書き換えたいのですが、
元のページが書き換えられてしまいます
元のページでjavascriptを実行したときに、新しく開いたページを書き換えるにはどのようにするのでしょうか?
Name_Not_Found [] 2010/09/23(木) 10:57:53 :dl5jqp9L
自己解決しました
Name_Not_Found [sage] 2010/09/23(木) 11:04:58 ID:???
せっかくだから解決策の中身も書いてけ。
Name_Not_Found [] 2010/09/23(木) 11:07:05 :dl5jqp9L
ajaxで対応できました
Name_Not_Found [sage] 2010/09/23(木) 13:17:19 ID:???
えっ
Name_Not_Found [sage] 2010/09/23(木) 13:26:54 ID:???

ajaxなんか要らんけどね。
本人が対応できたと言うんだから、そっとしておいてやれ
Name_Not_Found [sage] 2010/09/23(木) 21:50:50 ID:???
HPで画像をランダムで表セルの中に表示したいんだけど
画像でランダムはある程度わかるけど
表セルの中に表示するのはどうすればいいの?
Name_Not_Found [sage] 2010/09/23(木) 22:04:10 ID:???
スレチすぎるだろうw html
Name_Not_Found [sage] 2010/09/23(木) 23:10:20 ID:???
html併用なのはわかるけど
ランダムリンクと併用した場合
javaで指定するんじゃないの?
Name_Not_Found [sage] 2010/09/23(木) 23:19:37 ID:???
>java
Name_Not_Found [sage] 2010/09/23(木) 23:24:50 ID:???
表セルの中を指定すればいいだけ。
Name_Not_Found [sage] 2010/09/24(金) 00:51:47 ID:???

うるせえはげ
Name_Not_Found [sage] 2010/09/24(金) 19:23:36 ID:???
windowのbeforeunloadイベントで
別のページに移動するのかリロードなのか閉じられようとしているのか
判断することはできますか?無理ですか?
Name_Not_Found [sage] 2010/09/24(金) 22:25:26 ID:???
beforeunload で prompt 出して、聞けば良いyo!
Name_Not_Found [sage] 2010/09/24(金) 22:34:29 ID:???
迷惑極まりないなw
Name_Not_Found [sage] 2010/09/24(金) 22:35:19 ID:???
              NO → 【リロード】 ─ YES → じゃあ死ね
            /             \
【別ページに移動?】                 NO → 私は今閉じられようとしている
            \
               YES → 死ね
157 [sage] 2010/09/25(土) 07:39:06 ID:???
どうもありがとうございますやっぱり無理なんですね
Name_Not_Found [] 2010/09/26(日) 12:52:40 :Fpnok5lC
クリックすると音声が再生されるサイトを作ったんですが、soundManagerというフリーのソフトを使って作りました。

しかし、gooの辞書の音声再生を今日初めて使ったところ、そのレスポンスの速さに驚かされました。
ttp://dictionary.goo.ne.jp/leaf/ej3/17838/m0u/commonly/

自分のサイトはこれに比べるとクリックした後に再生するまでの間に若干のタイムラグがあります。
(ためしにこのgoo辞書の音声をダウンロードして使って見ましたが、
同じ音声データでもタイムラグが発生していました。)

このページではどのようにflashを再生しているのでしょうか。
その仕組みがわからなかったのでわかる方いましたら教えて頂けないでしょうか。
Name_Not_Found [sage] 2010/09/26(日) 13:05:59 ID:???
ページを表示した時点でflashを描画、同時に音声データも受信(あるいはflashに内蔵)
クリック検知はflach側。よってJSでは音を鳴らしていない。
Name_Not_Found [sage] 2010/09/26(日) 13:10:56 ID:???
サウンド関係はほとんどFlash、gooも例外じゃない

Flashを使わない方法だと、HTML5でaudio要素がサポートされるのでそれを使う
<audio controls="true" autobuffer="true">
<source src="audio.ogg" /> <!-- Firefox -->
<source src="audio.mp3" /> <!-- Crome,Safari -->
</audio>
Name_Not_Found [sage] 2010/09/26(日) 15:41:13 ID:???
現状HTML5だと複数フォーマット用意しないといけないからイラネって感じだね
早く統一しろや
Name_Not_Found [sage] 2010/09/26(日) 16:14:01 ID:???
window.Hoge = {};
っていうのはnamespaceですか?
Name_Not_Found [sage] 2010/09/26(日) 16:34:28 ID:???
window['ttp://hibari.2ch.net/test/read.cgi/hp/1284091954/'] = {};
window.net.2ch.hibari.hp.1284091954 = {};

好きなのをどうぞ
Name_Not_Found [sage] 2010/09/26(日) 16:41:12 ID:???
ちなみになんでwindowなんだろう
Name_Not_Found [sage] 2010/09/26(日) 16:41:15 ID:???
後者は一気に作りすぎなのと数字で始まるやつがあるからエラーでるけどな。
Name_Not_Found [sage] 2010/09/26(日) 18:46:14 ID:???
数字で始まるやつがなくてもエラーだよ
Name_Not_Found [sage] 2010/09/26(日) 18:53:57 ID:???
namespaceは必ずしもURLである必要は無いかと
だからのやり方も、被らない名前ならOK
Name_Not_Found [sage] 2010/09/26(日) 18:57:06 ID:???
なんでnet.2ch.hibari.hp.1284091954
こんな記述なの?
hibari.2ch.netの反対からでそのあとにディレクトリがきてるけど
そういうもんなんですかね
com.example.www
Name_Not_Found [sage] 2010/09/26(日) 19:05:49 ID:???

質問の意図がよくわかんないけど、
var Hoge = {};

window.Hoge = {};
は同じってのはOK?

グローバル領域である、windowに対する名前空間の汚染を少なくするために、
windowにオブジェクトを作った上で、そのオブジェクトに変数やら関数を宣言するのは、よくあるテクニック。

var Hoge = {};
Hoge.array1 = [2,3,4];
Hoge.func1 = function() {};
Name_Not_Found [sage] 2010/09/26(日) 19:06:48 ID:???
2chのURLの場合、コロコロ板移転するからnamespace向きではないな


国→都道府県→市区町村→番地、って順番で書く住所と一緒で、大きなくくり→小さなくくりの順番になってる
166 [sage] 2010/09/26(日) 19:12:53 ID:???
みなさんレスありがとうございます
やはりnamespaceだったんですね


同義だったんですね
とあるサイトを見たらそのように定義してあったので
prototype演算子使ったものと書き方がかぶりますよ
なんか混乱してきた・・・
175 [sage] 2010/09/26(日) 19:13:56 ID:???
なんか変なレスになってしまった
スルーしてください
JavaScriptややこしいorz
Name_Not_Found [sage] 2010/09/26(日) 19:44:46 ID:???
書き込みのハードル上げすぎ

━━━本スレに書く事を許される者は以下の通り━━━━━
 一、正しい(validな)HTMLとは何か知っており書ける者

JavaScriptの質問に、そこまでいらねーだろ
Name_Not_Found [sage] 2010/09/26(日) 20:15:17 ID:???

HTMLのタグに絡む質問をする奴は、最低限自分が質問する部分ぐらい知っててもらわんと
Name_Not_Found [sage] 2010/09/26(日) 21:08:28 ID:???
canvasのdrawImageについてですが、
最初にブラウザ開いたときはイメージが描画されず、
リロードしたらようやく表示されます。
これはImageオブジェクトを使って、
onload後にdrawImageをすることによって解決できることはわかりました。
しかしprototypeを使ってクラス化?するとどう書いたらいいかよくわからなくて困っています。
(インデントは全角スペース使ってます)
var CanvasImage = function(src) {
 this.img = new Image();
 this.img.src = src;
}
CanvasImage.prototype = {
 img: null,
 draw: function(canvasId) {
  var ctx = document.getElementById(canvasId).getContext("2d");
  ctx.drawImage(this.img, 0, 0);
 }
}
こんな感じになっています。
今はこれを<canvas id="test"></canvas>に対して、
window.onload = function() {
 var ci = new CanvasImage("test.png");
 ci.draw("test");
}
という感じで呼び出しています。
drawの中身を
this.img.onload = function() {
 ctx.drawImage(this.img, 0, 0);
}
のように変えたりいろいろしてみましたが、エラーが出てうまくいきません。
どなたか解決方法を教えてください。
ピカチュウ [sage] 2010/09/26(日) 22:18:29 ID:???
var CanvasImage = function(src) {
this.img = new Image();
this.img.src = src;
};
CanvasImage.prototype = {
img: null,
draw: function(canvasId) {
var ctx = document.getElementById(canvasId).getContext("2d");
var that = this;
(this.img)? ctx.drawImage(this.img, 0, 0) : setTimeout(function() { that.draw(canvasId); }, 100);
}
};
window.onload = function() {
var ci = new CanvasImage("test.png");
ci.draw("test");
};
162 [sage] 2010/09/26(日) 22:59:30 ID:???
答えてくれた方々どうもありがとう御座いました。

JSを使わずにflashで直接再生するほうがレスポンスが格段にいいようですね。
179 [sage] 2010/09/26(日) 23:11:46 ID:???

レスありがとうございます。
setTimeoutを使うとは目から鱗です。
しかしそれでもリロードしないとだめでした。
ちなみに動作確認はFirefox3.6.10で行っています。
これをクリアしたら他のブラウザでも確認する予定です。
おまんこ [sage] 2010/09/26(日) 23:27:54 ID:???
var CanvasImage = function(src) {
var that = this;
this.loaded = false;

var img = new Image();
this.img = img;
img.src = src;
img.onload = function() { that.loaded = true; };
};
CanvasImage.prototype = {
img: null,
draw: function(canvasId) {
var that = this, ctx;
if (this.loaded) {
ctx = document.getElementById(canvasId).getContext("2d");
ctx.drawImage(this.img, 0, 0);
} else {
setTimeout(function() { that.draw(canvasId); }, 100);
}
}
};
window.onload = function() {
var ci = new CanvasImage("test.png");
ci.draw("test");
};
179 [sage] 2010/09/27(月) 00:56:03 ID:???

ありがとうございます。
しっかり動きました。
少し不明な部分もありますが後は調べて頑張ります。
Name_Not_Found [sage] 2010/09/27(月) 09:10:27 ID:???

その項目は、HTMLがボロボロのinvalidなのにJavaScriptで操作
しようとして動かんとかほざいてる人が続出したので入れたもの。
そういう場合、HTML直して貰わんとどうにもならんでしょ?
Name_Not_Found [] 2010/09/28(火) 11:51:40 :Gtq9bpqN
headからjavascriptファイルをインクルードする条件で
htmlを全て読み込んでから実行する方法はありますか?
Name_Not_Found [sage] 2010/09/28(火) 12:05:32 ID:???
ありますよ。だけでいいのかな…



まあ、onloadとか調べてみたら。
Name_Not_Found [] 2010/09/28(火) 12:19:33 :Gtq9bpqN
window.onloadはhtmlを読み込む前に実行されてしまいました

ブラウザはchrome6です
Name_Not_Found [sage] 2010/09/28(火) 12:23:04 ID:???
それはダメだろ、ちょろめさん
Name_Not_Found [sage] 2010/09/28(火) 12:23:16 ID:???
IEだと、JSON.stringifyが使えないの?
IEでのオブジェクトのJSON化はどうやればいいのだ。。。

Name_Not_Found [] 2010/09/28(火) 12:28:33 :Gtq9bpqN
諦めて</body>の直前でjavascriptを呼び出します
Name_Not_Found [sage] 2010/09/28(火) 12:37:31 ID:???
は?Chromeってそんな仕様なの?
ありえないだろ
Name_Not_Found [] 2010/09/28(火) 12:40:19 :NvTlZktv
<input type="image"... onclick="somefunc(実引数,...);" .../>みたいなのがHTMLに書かれているとして,
getElementsByTagNameでElementを取得した後,
このsomefuncの実引数を取り出す簡単な方法はありますか?
element.onclickがfunctionオブジェクトだから,なんかできそうな気がするのだけど,
探し出せませんでした。
現在はinnerHTMLの後,正規表現で切り出してますが,スマートさに欠けるし,
メンテナンスが悪いので,お知恵を拝借。
Name_Not_Found [sage] 2010/09/28(火) 12:45:06 ID:???

やってみたけどそうみたいだね
でもaddEventListener使えば普通に読み込み後に動作したよ
Name_Not_Found [sage] 2010/09/28(火) 12:56:27 ID:???

そもそもイベントをHTML上に書くのが間違い
Name_Not_Found [] 2010/09/28(火) 12:57:52 :v3GUyKrR
var a = b = 1;とか
var a,bみたいな書き方ってできませんでしたっけ?
Name_Not_Found [sage] 2010/09/28(火) 13:13:41 ID:???
テンプレにwindow.onloadの件入れといて
Name_Not_Found [sage] 2010/09/28(火) 13:18:43 ID:???

イラネ
Name_Not_Found [sage] 2010/09/28(火) 14:01:20 ID:???
IEでもJSON.stringifyつかえたぞ。8,9
Name_Not_Found [sage] 2010/09/28(火) 14:24:20 ID:???

できるけど、前者は変数 a のみの宣言。
Name_Not_Found [sage] 2010/09/28(火) 14:42:34 ID:???
a={hoge:function(){任意のコード}};として
a.hoge()と書けば任意のコードが実行出来ますが、hoge()をオブジェクト定義時に書かなくても任意のコードを実行させるにはどうしたらよいのでしょうか

例えば
a.kage()//alert("kage")
a.mage()//alert("mage")
のような感じで。
Name_Not_Found [sage] 2010/09/28(火) 14:46:19 ID:???

a.hage = function() {
alert("fusafusa");
};
Name_Not_Found [age] 2010/09/28(火) 15:25:48 ID:???
なんか見づらくなっちゃいましたね。ECMAの和訳サイト
Name_Not_Found [sage] 2010/09/28(火) 16:22:38 ID:???
おしえてくれ。
ajaxでデータ読み込んで動的にイメージリスト作成し、スライダーさせたい。

ttp://cssglobe.com/lab/easyslider/01.html
概要としてはこんな感じ。このプラグインを使おうと思ったが機能がたりない。
自作することにした。


【今試みてる方法】
・ajaxで並ばせるイメージのデータを読みこむ。
・imgをliで囲って横並びにさせる。
・親ボックスの幅を決めてoverflow:hiddenにする。
・スライドボタンクリックでulを横にずらす。

しかし、ul自体親ボックス以上の大きさにはなれないわけで、
そして、ulを横に動かす方法もイマイチぴんとこない。

なにかいい方法はないか。
よろしくたのむ。

Name_Not_Found [sage] 2010/09/28(火) 16:27:03 ID:???
ulでくくらなくてもインライン要素だから横並びになるでしょ
scrollLeftだったかな。
Name_Not_Found [sage] 2010/09/28(火) 16:30:12 ID:???
204だ。
イマイチわかりにくかったので補足。

・表示データとして150px×60pxのイメージが30個ほどある。(管理画面から登録するので固定ではない)
・スライダーのボックスは5個程度常に表示している。
・左右のボタンをクリックするとスライダーボックス内のイメージが左右にスライドし、一つのイメージが無くなり、新しく一つのイメージが挿入される。

こんな感じ

Name_Not_Found [sage] 2010/09/28(火) 16:30:40 ID:???
Webサイト制作初心者用質問スレとのマルチにつきスルーでおk
Name_Not_Found [sage] 2010/09/28(火) 16:34:34 ID:???
マルチじゃねぇよ。
あっちはきちんと質問閉じてるじゃねぇか。
Name_Not_Found [sage] 2010/09/28(火) 16:49:32 ID:???
まぁ偉そうだから答えてあげないけどね
Name_Not_Found [sage] 2010/09/28(火) 16:56:51 ID:???
別に偉そうにしてるわけじゃねぇよ。
元々こういう口調なだけだ。

まぁ、気に入らないなら仕方ない。
答えてもいいと言う奴だけ答えてくれ。
Name_Not_Found [sage] 2010/09/28(火) 17:04:30 ID:???
あるURLに対して、
閲覧済みに(リンクをクリックしたように)する方法が
あれば教えてください。
Name_Not_Found [sage] 2010/09/28(火) 17:25:15 ID:???
回答者>質問者とは思ってないけど質問者>回答者って立場はないよね
自分が分からない事は他人が知ってることもあるし、他人が知らない事を自分が知ってることもあるし
礼儀は大切だよ
Name_Not_Found [sage] 2010/09/28(火) 17:30:01 ID:???

:visitedと同じスタイルを適用すれば良いんじゃないの。何か問題有るの?
Name_Not_Found [sage] 2010/09/28(火) 18:02:39 ID:???

あんたいいこと言った!!!!!



Name_Not_Found [sage] 2010/09/28(火) 18:15:03 ID:???
json2.js
__noSuchMethod__ 非標準
Name_Not_Found [sage] 2010/09/28(火) 18:20:21 ID:???
IE8は互換モードだとJSON使えない IE9はどう?
Name_Not_Found [sage] 2010/09/28(火) 19:07:33 ID:???

閲覧済みのスタイルは:visitedで可能なことは分かるのですが、
閲覧済みであることをブラウザに教える方法が分からないのです。
Name_Not_Found [sage] 2010/09/28(火) 19:24:58 ID:???
1x1ピクセルのインラインフレームをこっそり作って
そこで「閲覧済み」にしたいURLを読み込めばいいんだよ
Name_Not_Found [sage] 2010/09/28(火) 20:03:24 ID:???

それいい考えです。ありがとうございます。
Name_Not_Found [sage] 2010/09/28(火) 20:07:57 ID:???

window.body.onloadでひとつ
Name_Not_Found [sage] 2010/09/28(火) 20:16:27 ID:???

defaultViewでリンクが閲覧済みかがわかる、ただし乱用はしないように

<style>a:visited { color: #800080 } </style>
<script>
e = HTML Element (<a>とか)
view = e.currentStyle || document.defaultView.getComputedStyle(e,'');
if (view.color == "rgb(128, 0, 128)") || view.color == "#800080") {
  alert("閲覧済みだよ");
}
Name_Not_Found [sage] 2010/09/28(火) 20:21:02 ID:???
閲覧済みかどうかなんてブラウザとじたときにクッキーを始めほとんど情報を消す俺には無意味だぜ?
Name_Not_Found [sage] 2010/09/28(火) 20:54:53 ID:???
前に、楽天がこっそりリンクを訪問済かチェックして、悪用して問題になってたなぁ。
Name_Not_Found [sage] 2010/09/28(火) 21:11:28 ID:???
どういう部分が悪用になるわけ?
参考までに教えてほしい
Name_Not_Found [sage] 2010/09/28(火) 21:18:00 ID:???
ad4uでググるといいよ
Name_Not_Found [sage] 2010/09/28(火) 21:19:58 ID:???
別に不正でもなんでもないし
ついでにFLASHクッキーも
Name_Not_Found [sage] 2010/09/28(火) 21:21:19 ID:???
どんな単語で検索しているかを調べて、それを個人情報と結び付けることができるじゃん。
Name_Not_Found [sage] 2010/09/28(火) 21:22:58 ID:???
:visitedの判別ができるのはまずいよねってことで
Chromeではもうはできなくないし、Firefoxでもできなくなる
他のブラウザも追従するだろうね
228 [sage] 2010/09/28(火) 21:23:42 ID:???
「できなくないし」じゃない「できないし」だ
Name_Not_Found [sage] 2010/09/28(火) 21:26:35 ID:???
サイ本でも確か、この件は脆弱性として書かれてたね。
Name_Not_Found [sage] 2010/09/28(火) 21:35:17 ID:???
ユーザの行動追跡とか嗜好調査って、
具体的な被害はよくわからんが、単純にキモいよね。
ブラウザを落とすときに履歴とCookieは消去してる。
あと最近いろんなとこでTポイントカードを持っているか聞かれるけど、
あれもキモいから俺は提示しない。
Name_Not_Found [sage] 2010/09/28(火) 21:46:10 ID:???
写真付き身分証も提示しない方がいいよ、キモいからb
Name_Not_Found [sage] 2010/09/29(水) 01:01:10 ID:???

正気か
Name_Not_Found [sage] 2010/09/29(水) 02:21:33 ID:???
JSでポップアップした子ウィンドウから親ウィンドウをアクティブにしたいと思っています
IE6のようなウィンドウが開くブラウザでは opener.focus() でいけることはわかったのですが、
例えばFireFoxのようなタブブラウザでポップアップの代わりにタブで開くような設定をしていると、
親ウィンドウをアクティブにできません。

JSでタブを操作する方法を教えていただけませんか
というかそもそもそういうことは可能なのでしょうか
Name_Not_Found [sage] 2010/09/29(水) 06:21:56 ID:???
はウイルス配布など罠サイトに見られる手法だな
意図はなくてもそういう怪しいことをしただけでブラックリスト入れられることもあるから注意しろよ
Name_Not_Found [sage] 2010/09/29(水) 08:39:05 ID:???

あー互換だと使えないね。IE9
Ie8は多分通常表示で試してたわ。
Name_Not_Found [sage] 2010/09/29(水) 10:37:37 ID:???
なるほど、IE8で互換表示だと
JSONオブジェクト自体が使えなくなるのか。
なんだよこの仕様はw

IEが互換表示モードかどうかを判別する方法ってあるのかな?
Name_Not_Found [sage] 2010/09/29(水) 10:45:57 ID:???

まんま "JSON" in window で判定できないか?
Name_Not_Found [sage] 2010/09/29(水) 16:22:14 ID:???
互換か確かめてJSON使うんならJSONでいいなw
Name_Not_Found [sage] 2010/09/29(水) 23:25:03 ID:???
すみません。シンタックスシュガーって何ですか?
Name_Not_Found [sage] 2010/09/29(水) 23:29:34 ID:???

ぐぐれ
Name_Not_Found [sage] 2010/09/29(水) 23:30:33 ID:???
三項演算子と条件文の関係だな
Name_Not_Found [sage] 2010/09/30(木) 00:30:37 ID:???
「ぐぐれ」

これも一種のシンタックスシュガー。
Name_Not_Found [sage] 2010/09/30(木) 11:33:48 ID:???

簡単な書き方や省略した書き方を許す仕様のこと
240 [sage] 2010/09/30(木) 13:32:34 ID:???
,244さん
それで合点がいきました。ありがとうございました。
Name_Not_Found [sage] 2010/09/30(木) 16:19:27 ID:???

レスありがとうございます
window.body.onloadもやはり読み終わる前に実行されました
chromeは面倒くさいです
Name_Not_Found [sage] 2010/09/30(木) 16:36:18 ID:???
いいからコード出せ、と
Name_Not_Found [sage] 2010/09/30(木) 16:53:24 ID:???
アンカーつけろ
Name_Not_Found [sage] 2010/09/30(木) 17:07:33 ID:???


Name_Not_Found [sage] 2010/09/30(木) 19:15:10 ID:???
Name_Not_Found [sage] 2010/10/01(金) 17:53:04 ID:???
document.createElement("img")とnew Image()で作られたものはまったく同じですか?
Name_Not_Found [sage] 2010/10/01(金) 18:04:48 ID:???
出力して試せばいいじゃないか
246 [sage] 2010/10/01(金) 19:49:13 ID:???

ぼくあてですか?既にコード出てると思いますが・・・
Name_Not_Found [sage] 2010/10/02(土) 09:26:39 ID:???
,239
ブラウザのバージョンやモードを調べるよりも、
「ダックタイピング」の方が主流だぞ。
Name_Not_Found [sage] 2010/10/02(土) 09:36:27 ID:???

JavaScriptでタブを操作ってのはできないような気がする・・
そのあたりはFirefoxで言うとアドオンの領域じゃないだろうか。
Name_Not_Found [sage] 2010/10/02(土) 10:39:32 ID:???
タブ操作は出来るブラウザと出来ないブラウザがある。
出来るブラウザで、どこまで出来るかは調べてないけど。closeで思った。
Name_Not_Found [sage] 2010/10/02(土) 18:18:28 ID:???

どういう意味で「ダックタイピング」を使っているの?
Name_Not_Found [sage] 2010/10/02(土) 18:48:05 ID:???
みたいなやり方を言ってるんではないかと妄想してみる
Name_Not_Found [sage] 2010/10/02(土) 19:31:23 ID:???
ダックタイピングのwiki見てきたけど、合ってると思ったけど。
主流っていうか常識的に考えたらそうなると思うけどね。
Name_Not_Found [sage] 2010/10/02(土) 19:35:15 ID:???

そりゃあ、onloadを正しく使えてたらHTMLを読み込む前に実行されるわけがないんだから、
どんな間違い方をしているのか興味はあるな。一応、
window.onload = load();
に1票
Name_Not_Found [sage] 2010/10/02(土) 21:39:02 ID:???
なるほど! 爆笑した ^_^;
Name_Not_Found [sage] 2010/10/02(土) 22:47:29 ID:???
そもそも間違えて使ったら最初に読み込まれたりするものなのか
Name_Not_Found [sage] 2010/10/03(日) 04:19:27 ID:???
のコードを実行するとどうなるか考えるといいよ
Name_Not_Found [sage] 2010/10/03(日) 10:35:10 ID:???
bodyを読み込んだ後にコード実行したい話じゃないの?
Name_Not_Found [] 2010/10/03(日) 10:42:35 :BXJaCiII
現時点で、どこに focus があるか知る方法はありますでしょうか?

IE, Firefox。

Name_Not_Found [sage] 2010/10/03(日) 10:46:49 ID:???
ttp://www.google.com/search?q=javascript+focus+%E5%8F%96%E5%BE%97&btnG=%E6%A4%9C%E7%B4%A2&num=50&hl=ja&lr=lang_ja&tbs=lr:lang_1ja&sa=2
Name_Not_Found [] 2010/10/03(日) 11:19:58 :BXJaCiII
ありがとうございます!
こういうのが有ったんですね。知りませんでした・・。
Name_Not_Found [] 2010/10/03(日) 13:04:27 :otGmrYm3
質問があるので誰か教えて。

【目的】
ブログの更新情報をRSSで取得して自動で表示させるサイトを作りたいと思っていて、
下記の(1)サイトのシステムのようなものを作りたい。

(1)AKB48のブログ記事を取得して一覧表示しているアンテナサイト
ttp://antenna48.com/index.php

【現状】
調べてたどり着いた方法はブログRSSをGoogleのjavascript(2)で取得して表示させるという方法がわかった。
ただ、このやり方だとサイトのソースは後述のようになり、動的なサイトとしてGoogleに判断されるらしくSEOが弱いので別の方法を考えたい。

【質問1】
そこで質問なんだが、RSSを取得して且つ、htmlのtitleや本文にキーワードが記述され、ソースに反映される自動表示の方法を教えて欲しい。

(1)のAKBサイトが手動なのか自動なのかはわからないが
この手のアンテナサイトは「2chまとめサイトまとめアンテナサイト」等もあるので
自動で出来るシステムがあるのではと考えてる。

漠然と考えているのは以下のやり方。何かもっといいやり方があったら教えて!
@RSSの情報をphpで取得してDBに格納する。
Aphpでhtmlを生成する(ブログtitleタグと記事titleタグを指定してDBから情報を取得するイメージ)
B生成されたhtmlを自動でアップロード(cronとかつかうのかな?)

【質問2】
そもそも動的なままでもSEOに関係ないんだったら質問1はやる必要ないんだけどSEOに誰か詳しい人いない?
Name_Not_Found [sage] 2010/10/03(日) 15:06:09 ID:???
SEOは知らないしそもそも何を聞きたいんだか良く分からないが、
とりあえずJavaScriptじゃHTMLのソース自体を触ることはできない。
すなわちスレ違い。

あと、「静的な」ページを作りたいのであれば、別にHTMLファイル自体を
生成して置いておくようなことをする必要は必ずしもない。
Name_Not_Found [sage] 2010/10/03(日) 15:06:41 ID:???
8割がたスレチじゃね?
Name_Not_Found [sage] 2010/10/03(日) 15:29:46 ID:???
ttp://hibari.2ch.net/test/read.cgi/hp/1284630407/692
Name_Not_Found [] 2010/10/03(日) 19:22:56 :ABOLsXog
DOMの簡単な変更とかしかしたことないんですがステップアップしたくて
コンストラクタを使ってみたいのですが、
解説サイトを見てもどれもJAVAだかほかの言語をやってた人向けみたいで、
function Hoge(huga) { this.huga = huga; }
Hoge.prototype.piyo = function() { alert(this.huga); };
var unko = new Hoge("うんこ");
unko.piyo();
↑こんなコードだけあって、ほら簡単でしょう?みたいな説明しかなく
具体的にDOMとどう絡めて使うのかわかりません。(alertは使っているけどそういうのじゃなく)
こうときに使えば効果を発揮するよ!みたいな短い例(上記よりは長いの)を教えてください。
Name_Not_Found [sage] 2010/10/03(日) 19:39:10 ID:???
コンストラクタの意味はわかるの?
Name_Not_Found [sage] 2010/10/03(日) 19:54:43 ID:???
DOMだとこんなかんじかな
function Hoge(A){this.element = typeof A === "string" ? document.getElementById(A) : A;};
Hoge.prototype.piyo = function(A) { this.appendChild(document.createTextNode(A)) };
var unko = new Hoge("unko1");
unko.piyo("add");

これは表現の仕方が違うだけ(だと思う)だから、これで出来ることが増えるとかじゃないと考えてる。
jQueryとかこの仕組み使ってるよ。newは理解してるけど、今まででnewが必要不可欠になったことが無い(´・ω・`)
コンストラクタの意味なんて知らないけどな。
Name_Not_Found [sage] 2010/10/03(日) 19:55:57 ID:???
this.appendChild

this.element.appendChild
だった
Name_Not_Found [sage] 2010/10/04(月) 07:45:35 ID:???

どうもありがとうございます。
function hoge(A,B) {
var element = typeof A === "string" ? document.getElementById(A) : A;
element.appendChild(document.createTextNode(B));
}
hoge("unko1","add");
hoge("unko2","add2");
みたいな感じのものとどう違いますか?
メソッドをプロトタイプ経由にすることでインスタンス毎にメモリを消費しなくなる、
とかいう話に繋がってくるのですか?
メモリがどう使われているのかとか見方がわからないのでメモリの話は実感できなくて。
Name_Not_Found [sage] 2010/10/04(月) 07:59:41 ID:???
コンストラクタってのはオブジェクトをインスタンス化するときに、
一番初めに呼ばれる部分のこと。
変数の初期化や設定などをそこで行う。

の場合
> function Hoge(huga) { this.huga = huga; }
ここがコンストラクタ。

インスタンス化ってのはオブジェクトを実体化することで、
new演算子を使ってる部分がそう。
> var unko = new Hoge("うんこ");
この処理をしたときに上記コンストラクタが一番初めに呼ばれて、
Hogeオブジェクトのプロパティであるthis.hugaにうんこが入る。
プロパティっていうのはHogeオブジェクトの属性のことで、
この例はわかりにくいから、
例えばウンコをオブジェクトとして考えた場合、色や大きさなんかが当てはまる。
色は茶色、大きさは普通みたいなかんじで属性の状態を、
Hogeオブジェクトに属しているメンバ変数(thisを使った変数)に入れる。

メソッドってのはオブジェクトの振る舞いで、オブジェクトが何をするかを定義する。
> Hoge.prototype.piyo = function() { alert(this.huga); };
この部分はHogeオブジェクトのpiyoというメソッドを定義してて、
Hogeクラスのプロパティであるthis.hugaをalertする。
この例もウンコをオブジェクトとして考えた場合、変形するとかちぎれるとかが当てはまる。
流すのはトイレだしウンコを出すってのも動物の動作なのでこれはウンコ自体のメソッドとは言えない。
Name_Not_Found [sage] 2010/10/04(月) 08:08:00 ID:???
ありがとうございます。
解説サイトではみたいにメソッドひとつだけでしかもインスタンスを作ってすぐにメソッドを呼び出している例ばかりだから
とどう違うんだろう?って思ってたのですが
あらかじめたくさんメソッドを定義しておいて必要になればそのつど呼び出せる・・・ってことですか
変形するとかちぎれるとかそういう
Name_Not_Found [sage] 2010/10/04(月) 08:45:03 ID:???
でもウンコが変形したりちぎれたりって
風力とか重力とかそういう力がかかってるからだよね
風力や重力による物と考えると・・・
オブジェクト指向って難しいね
Name_Not_Found [sage] 2010/10/04(月) 09:01:45 ID:???
>Hogeオブジェクトのプロパティであるthis.huga
>Hogeクラスのプロパティであるthis.huga

無茶言うな
Name_Not_Found [sage] 2010/10/04(月) 09:17:56 ID:???

そこミス上に統一しといて
Name_Not_Found [sage] 2010/10/04(月) 14:19:29 ID:???
OOPならJAVAとかそこらへんで勉強したほうが・・・
Name_Not_Found [sage] 2010/10/04(月) 15:26:46 ID:???
C#で勉強したほうがよい
あとデザインパターンを覚えるならPHP
Name_Not_Found [] 2010/10/04(月) 19:25:14 :6NAhbRQn
imgタグにidを指定せずに.srcメソッドでURLを取り出す方法はありますか?

----------------------------------------
var iURL = document.getElementsById("id").src;
alert(iURL);
----------------------------------------

↑idを指定した場合alertにURLが表示されます。

----------------------------------------
var iURL = document.getElementsByTagName("img").src;
alert(iURL);
----------------------------------------

↑こちらだとalertにundefinedと表示されます。
Name_Not_Found [sage] 2010/10/04(月) 19:28:37 ID:???

ByIdはひとつだけImg要素を返す(Elementで複数形でない)
ByTagNameはリストで返す(Elements複数形)
後者は[0]とかが必要


その書き方のほうが分かりやすいと思ったらそっち使っていたほうがいいよ。
Name_Not_Found [sage] 2010/10/04(月) 19:29:50 ID:???

すごい!有難うございました!
Name_Not_Found [sage] 2010/10/04(月) 19:48:52 ID:???
unkoはhogeやpiyoのような意味合いで一般的に広く使われているものなのですか?
Name_Not_Found [sage] 2010/10/04(月) 19:57:15 ID:???
hogeはともかくunkoもpiyoも一般的じゃない
英語圏はfoo bar
日本語圏はhogeとちょっとそれをいじったhuge huga hage なんて感じのものが多い
unkoとかmankoは2chでしか使われてない(もしくは2chネラーがブログなんかで使ってるだけ)
Name_Not_Found [sage] 2010/10/04(月) 20:11:38 ID:???
foobar hoge hage fuga fuge moge mage あたりは良く出る
unkoは食べるものによってはあんまりでないけど、繊維の多いものとるといいと思うよ
Name_Not_Found [] 2010/10/04(月) 20:24:02 :+9ITfafq
メタ構文変数、なんて大層な名前がついてんだな。
ttp://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E6%A7%8B%E6%96%87%E5%A4%89%E6%95%B0
Name_Not_Found [sage] 2010/10/04(月) 20:25:18 ID:???
piyoって一般的だったのか
見たことなかったけどな
Name_Not_Found [] 2010/10/04(月) 20:25:19 :+9ITfafq
途中で投げちゃった。

個人的にはこっちの方が馴染みが深い。
ttp://kmaebashi.com/programmer/hoge.html
Name_Not_Found [sage] 2010/10/04(月) 20:45:12 ID:???
の寒いギャグ誰か触ってやれよwwwwwwww
スルーとか見ててかわいそうだwwwwwwww
287 [sage] 2010/10/04(月) 20:55:40 ID:???
皆さんありがとうございます

unkoはやはり2ちゃんだけですか
piyoがマイナーな方だったとは

閉鎖的な環境なんで他人のソース見る機会がネットくらいしかないもんで・・・
Name_Not_Found [sage] 2010/10/04(月) 21:05:06 ID:???
==
Name_Not_Found [sage] 2010/10/04(月) 21:11:45 ID:???
こういう話題は誰でも参加しやすいから仕方ない
Name_Not_Found [sage] 2010/10/04(月) 21:44:26 ID:???
参加しにくい話題を頼む
Name_Not_Found [sage] 2010/10/05(火) 09:17:21 ID:???
絡みにくいヤツラがいるな
Name_Not_Found [sage] 2010/10/05(火) 15:43:33 ID:???
prototype.js 1.6.1の Form.Element.EventObserver() を使って
radio / checkbox の変更イベントを設定しています。
同名name での値の変更を知るにはどうすればいいのでしょうか?
<input type="radio" name="hoge" id="hoge1" value="1" />
<input type="radio" name="hoge" id="hoge2" value="2" />
こういうフォームの場合です。
Name_Not_Found [sage] 2010/10/05(火) 17:42:49 ID:???

IDが違うのでIDで見る
Name_Not_Found [sage] 2010/10/05(火) 18:48:51 ID:???

ここってID出さないとダメなんですか?は読みましたけど
Name_Not_Found [sage] 2010/10/05(火) 19:21:55 ID:???
 _, ,_
( ゚д゚ )
Name_Not_Found [sage] 2010/10/05(火) 19:50:02 ID:???
なかなかいいギャグ
Name_Not_Found [sage] 2010/10/05(火) 21:56:40 ID:???
評価する。
sage [] 2010/10/05(火) 22:50:13 :F6dFSIfK

こんなんでどう?もっとスマートに書けるのかも。
<!DOCTYEP HTML>
<html>
<head>
<title>test</title>
<script type="text/javascript" src="ttp://prototypejs.org/assets/2009/8/31/prototype.js"></script>
<script>
window.onload = function() {
var inpobj = $$('input[name="hoge"]');
for (var i = 0; i < inpobj.length; ++i) {

new Form.Element.EventObserver(inpobj[i],
function (element, value) {
alert(element.id+"の値が"+value+"に変更されました");
}
);
}
}
</script>
</head>
<body>
<form>
<input type="radio" name="hoge" id="hoge1" value="1" />
<input type="radio" name="hoge" id="hoge2" value="2" />
</form>
</body>
</html>

Name_Not_Found [sage] 2010/10/06(水) 09:35:28 ID:???
JPEGとかのEXIFの情報を表示したくてExifUtil.js ttp://acapulco.dyndns.org/exifutil/ 使おうと
思ってるんですが、上手くいきません。

原因調べるにはどうすればよいのでしょうか?
Name_Not_Found [] 2010/10/06(水) 10:47:04 :7FErJPcr

はー、JSでバイナリファイル読むなんてかっちょいいな!
原因は作者に聞けば。幸い日本人みたいだし。

自分でソースを追って、誤りがあれば訂正して送ってあげるのが
利用者のあるべき姿な気はするが。
Name_Not_Found [sage] 2010/10/06(水) 15:54:03 ID:???

作者と同じサンプルでだめなら作者に質問すれば
そうじゃなきゃ設置ミスでしょ
firebugとかそこらへんで自分が書いたコードをブレイクすればいい
299 [sage] 2010/10/06(水) 17:33:19 ID:???

ありがとうございます。
この方法ですと、初回checkedはイベントで拾えるのですが、
一度選択すると、二回目以降は拾えないんですよね…。
確かに id="hoge1" は value="1" に設定されたので
二回目に選択しなおしても変化がない…という判定にされるのは分かるのですが。
Name_Not_Found [] 2010/10/06(水) 17:36:21 :nOE7wbo/
<li><a href="./"></a></li>をgetElementsByTagNameで'a'を取得し
上から順番にonmouseoverした時に0,1,2・・・と値を返していきたいけど分かりません。
お願いします。

JavaScript
--------------------------------------------------
window.onload = function() {
var aCNT = new Array();
var aEL = document.getElementsByTagName("a");
for (var i = 0; i < aEL.length; i++) {
aCNT[aCNT.length] = i;
}
for (var j = 0; j < aEL.length; j++) {
aEL[j].onmouseover = function() {
alert(aCNT[j]); ←jだと動かないが数字を入れると動く
}
}
}
--------------------------------------------------

xhtml
--------------------------------------------------
<ul>
<li><a href="./">link01</a></li>
<li><a href="./">link02</a></li>
<li><a href="./">link03</a></li>
</ul>
--------------------------------------------------
Name_Not_Found [sage] 2010/10/06(水) 18:00:36 ID:???

alert(j)にしたら原因が分かるんじゃないかな

var nl = document.getElementsByTagName('a');
var n;
for (var i = 0; n = nl[i]; ++i) {
  n.onmouseover = (function (count) {
    return function () {
      alert(count);
    };
  })(i);
}
Name_Not_Found [sage] 2010/10/06(水) 18:22:35 ID:???

わかりません。なのにコードの最後は動くってどういうこと?

for で数字が変わっていってどの要素でも最後の数しか認識しない場合は
関数でくるんでやるのをよくやるんだけど、他になんか良い方法ってある?
Name_Not_Found [sage] 2010/10/06(水) 18:46:14 ID:???

JSの変数は関数スコープ
変数jがどこで宣言されているか(どこに属するか)を考えてみれ
Name_Not_Found [sage] 2010/10/06(水) 18:53:46 ID:???
>for (var j = 0; j < aEL.length; j++) {
>aEL[j].onmouseover = function() {
>alert(aCNT[j]); ←jだと動かないが数字を入れると動く

そりゃうごかねえよalertの行の時点で j の中に数字ははいってないもん
理由は相棒の参照
312 [sage] 2010/10/06(水) 18:58:58 ID:???

俺はの何が問題かは理解してるよ?
過去にこれではまったことがあって、その時は無名関数でくくって実行ってのをやったんだ。
他にも回避のための手段あるなら知りたいなって思って312を書いた。


ちょっとちがくね?alert(j);なら4返してくれる。
jはforが回り終わったあとのだから、常に4が入ってる。
aELは長さ4だから(ここも正しくはないが)、5番目の[4]はundefined
Name_Not_Found [sage] 2010/10/06(水) 19:03:00 ID:???
クロージャーを使おうとして失敗する例の
よく有るパターンですねわかります
Name_Not_Found [sage] 2010/10/06(水) 19:14:25 ID:???

・click時に getElementsByTagName('a') を実行して一致するまで比較する
・属性値に埋め込む

自分なら属性値に埋め込むだろうけど、そもそもindex値を必要する設計にはしないなあ。
Name_Not_Found [sage] 2010/10/06(水) 19:23:00 ID:???
質問者=312に見えてきた
Name_Not_Found [sage] 2010/10/06(水) 19:36:23 ID:???

ちょww 一応の1行目の文について言い訳しておく。
「わかりません。」と書いているのに「j【alert(j)】だと動かないが数字【を返すはずのaCNT[j]】を入れると動く」ってのはどういう事
【】内だと勘違いして、動いているのにわかりませんって言っているように見えたんだ。sマン


さんくす。IEだとforが糞だから後者のほうが良さそうですね。
Name_Not_Found [sage] 2010/10/06(水) 20:23:20 ID:???

関数内で実行したら、メモリリークする…。

Internet Explorer リーク パターンを理解して解決する
ttp://msdn.microsoft.com/ja-jp/library/bb250448%28VS.85%29.aspx
Name_Not_Found [sage] 2010/10/06(水) 21:35:39 ID:???

with ({j;j}) { .... } 良い方法かどうかは知らない

あとこの例には当てはまらないけど、マウスオーバーされた要素に対して
何かしたいとかだったら単にthisでいい
ttp://gihyo.jp/dev/serial/01/crossbrowser-javascript/0005?page=2
Name_Not_Found [sage] 2010/10/06(水) 21:37:38 ID:???

j;j 訂正→ j:j
Name_Not_Found [sage] 2010/10/06(水) 23:30:42 ID:???
絞り込み検索の様なものを作成したいと思っています。

複数のプルダウンメニューから選択して検索ボタンをクリック、
該当するデータをリスト化(<ul><li>〜</li><li>〜</li>・・</ul>)して
htmlに出力するような事をしたいんですが、javascriptで可能でしょうか。

データはxmlで管理するのがよいかなと考えているので、
jqueryでxmlを読み込んで、該当するデータだけを出力、
ってな感じの流れを想定しているんですが。。
Name_Not_Found [sage] 2010/10/06(水) 23:45:39 ID:???
余裕ですよ
Name_Not_Found [sage] 2010/10/06(水) 23:46:19 ID:???

可能
Name_Not_Found [sage] 2010/10/06(水) 23:50:09 ID:???

それはもう修正されてる…
ttp://support.microsoft.com/kb/929874/ja/
Name_Not_Found [] 2010/10/07(木) 00:02:40 :Kwp7lYsP
どっちにしろ関数でラップしてスコープを維持するんだったら
こうする方が好きだな。

for (var i = 0; n = nl[i]; ++i)(function(index,item){
    item.addEventListener("mouseover",function(evt){
        alert(index);
    },false);
})(i,n);
Name_Not_Found [sage] 2010/10/07(木) 00:27:12 ID:???
なにそのきんもーい書き方
JavaScriptおそろしいね
Name_Not_Found [sage] 2010/10/07(木) 01:10:34 ID:???
無名関数で追加したイベントって除去できるの?
Name_Not_Found [sage] 2010/10/07(木) 01:33:39 ID:???

できる
item.addEventListener('mouseover', function (evt) {
item.remoceEventListener('mouseover', arguments.callee, false);
}, false);
Name_Not_Found [sage] 2010/10/07(木) 01:41:17 ID:???
removeがremoceになってるのはおいといて
イベント発生させないとだめなのか
それはそれでどうなの
Name_Not_Found [sage] 2010/10/07(木) 01:57:26 ID:???

ありがとう。
IE6SP3 で修正されたのは知っていたんですが、今でもリークパターンの指摘を受けるのでまだ対応すべきと認識していました。( でもメモリリークに触れられていたり)
実際のところ、今はリークパターンを考慮しない人が大半なのかな…。
Name_Not_Found [sage] 2010/10/07(木) 01:59:53 ID:???

どんな方法であれ、addEventListener 時に指定した関数オブジェクトを指定できれば、removeEventListener できる。
名前付き関数を使えない理由は何なの?
Name_Not_Found [sage] 2010/10/07(木) 02:02:03 ID:???

ES5でもブロックスコープは定義されなかったからね・・・
letが使えればもっとスマートに書けるんだけど、クロスブラウザ不可


callee、将来的にはどうなるか不透明すぎるのだけがネック
Strict ModeだとTypeError投げるようになる(実装してる処理系ないけど)

あとはYコンビネータ実装してゴニョるとか
Name_Not_Found [sage] 2010/10/07(木) 05:03:05 ID:???

レスへのレスにレスしてるだから気にしないで
Name_Not_Found [sage] 2010/10/07(木) 13:13:35 ID:???
二次元配列の一部を共有するような配列って作れますか?

具体的には
var board = new Array(); /* データを入れる */
var boardinner = new Array(); /* boardのデータの真ん中部分を入れる */

この時、配列の中身のデータは共有されてて
boardinner[1][2]=10とかやると、board[2][3]も10になり
board[2][3]=20とやるとboardinner[1][2]も20になるような感じです。

今テトリスを作ってて、ブロックが落ちてつもるところまではできて、
これから行を消すコードを入れる段階なのですが
壁も含んだボードなので、壁を含まないboardinnerみたいなのが作れると
記述がシンプルになるなと思ったのですが
思うように作れません
Name_Not_Found [sage] 2010/10/07(木) 13:21:47 ID:???
class Test
var str = "xxx";
function a(){
return "[" + this.str + "]";
}
function b(){
return "<" + this.str + ">";
}

こんな感じにクラスで書きたいんですけど方法ありませんか?
Name_Not_Found [sage] 2010/10/07(木) 13:32:25 ID:???
var Test = function() {

};

Test.prototype = {
str: "xxx",
a: function() {
return "[" + this.str + "]";
},
b: function() {
return "<" + this.str + ">";
}
}
Name_Not_Found [sage] 2010/10/07(木) 13:34:45 ID:???
こんな感じで書いてください。クラスとかそういうものはありません。
クラスやらインターフェースやらの導入が計画されていた時期もありましたが、お流れになりました。

var Test = function () {
// 初期化処理
};
Test.prototype = {
str: "xxx",
a: function() { return "[" + this.str + "]" },
b: function() { "<" + this.str + ">" }
};

使い方
var test = new Test();
alert(test.a()); // => "[xxx]"
Name_Not_Found [sage] 2010/10/07(木) 13:46:07 ID:???
カップルになるべき
Name_Not_Found [sage] 2010/10/07(木) 14:07:37 ID:???
ある場所Aからある場所Bまでの間の、リンクを押すと新しいウィンドウにするという仕組みにしたいのです。
AとBの間ではJSで外のデータを読み込んでいるのですが、そこのリンクを新しいウィンドウで表示させたいのです。
自分のサーバーの中のデータではないので、改造できないのです・・

ヘッド内に<base>を使うと、ページ全体になってしまうし

AB内のソースもいじれないので、rel="external"もできないし


何か方法はないでしょうか?
Name_Not_Found [sage] 2010/10/07(木) 16:03:29 ID:???
読み込んで描きだす部分でtarget=_blankに書き換えればいいだろ。
それも出来ないっていうなら仕事やめた方がいい。
Name_Not_Found [sage] 2010/10/07(木) 16:13:45 ID:???

CTRL+左クリックかShift+左クリックで開ける
Name_Not_Found [sage] 2010/10/08(金) 16:54:57 ID:???

全然意味がわからんけど、jsでiframe作成してページ内に貼っていて、
そのフレーム中のリンクをクリックすると新しいウィンドウで開くようにしたいってこと?
Name_Not_Found [sage] 2010/10/08(金) 19:07:53 ID:???
chromeにて、document.body.clientHeight を使ってブラウザ画面の
縦の長さを取得していますが、ページによっては、
ブラウザの長さを取得できない場合があります。
何か、条件がありますか?
Name_Not_Found [sage] 2010/10/08(金) 23:18:09 ID:???
doctypeとか表示モードとかかなぁ。
ぐぐったら結構出てきたよ
Name_Not_Found [sage] 2010/10/09(土) 04:58:04 ID:???

ありがとうございます。とりあえず、それらの単語でぐぐってみたら
document.documentElement.clientHeight
というのも使える感じです。仕組みはよくわかっていませんが。
Name_Not_Found [] 2010/10/09(土) 22:35:35 :QBu03o07
1つめの<div>の中の<img>を1つめの<div>の中の<a>にmouseoverさせる事で変更させたいのですが、
何故か2つめの<div>の中の<img>が変更されてしまいます。よろしくお願いします。

javascript
--------------------------------------------------
window.onload = function() {

var section = new Array;
var element = document.getElementsByTagName("div");

for (var i = 0; i < element.length; i++) {
section[section.length] = element[i];
}

for (var j = 0; j < section.length; j++) {
var iEL = section[j].getElementsByTagName("img");
var aEL = section[j].getElementsByTagName("a");

for (var x = 0; x < aEL.length; x++) {
aEL[x].onmouseover = (function(count) {
return function() {
if ( iEL[0].src.match(/.\./)[0].substring(0, 1) != count) {
iEL[0].src = iEL[0].src.replace(/.\./, count + ".");
}
}
})(x + 1)
}
}

}
--------------------------------------------------
348 [] 2010/10/09(土) 22:37:43 :QBu03o07
XHTML部分です。

XHTML
--------------------------------------------------
<div class="test">
<img src="001.png" width="128" height="128" />
<a>TEST1</a>
<a>TEST2</a>
<a>TEST3</a>
<a>TEST4</a>
</div>

<div class="test">
<img src="002.png" width="128" height="128" />
<a>TEST1</a>
<a>TEST2</a>
<a>TEST3</a>
<a>TEST4</a>
</div>
--------------------------------------------------
Name_Not_Found [sage] 2010/10/09(土) 23:42:20 ID:???

マジレスしてあげますがそれは5大ブラウザ全てに対応できないから
Name_Not_Found [sage] 2010/10/10(日) 00:35:20 ID:???

>>310-
ついでにimg.srcのマッチもっと厳密にしたほうがいいよ。
Name_Not_Found [sage] 2010/10/10(日) 00:54:55 ID:???
<script type='text/javascript'>javascript:
(function(g)
{
 for(var i=g.length ; --i>=0 ; ) with( g[i] )
 {
  if( (width != '')||(height != '') )
  {
   〜略〜
  }
})
(document.getElementsByTagName('img'))
</script>
としたときに、widthやheightが無いエレメントまで略部分にひっかかって、
変な値がwidth/heightに入ってるんですが、何故なのでしょうか。
Name_Not_Found [sage] 2010/10/10(日) 01:08:14 ID:???
変なってundefinedか?
わからないならwithは使わないほうがいいよ
Name_Not_Found [sage] 2010/10/10(日) 01:13:38 ID:???

ループを終えた後、一周目の x ループ内の iEL が、二周目の iEL を参照し続けているから。


何その Bookmarklet?w

ブラウザが算出した値が img の width プロパティに設定されているのかと。

後、その with は止めた方がいい。
仮に img に width プロパティがなくても、スコープチェーンを遡って検索される。
352 [sage] 2010/10/10(日) 01:18:55 ID:???

成程、ブラウザが算出、ですか…納得しました。


わかりました。withは止めておきます。ありがとうございしまた。
Name_Not_Found [] 2010/10/10(日) 04:34:55 :Ec5oGd3z
オートコンプリートのライブラリをいろいろ試しているのですが、
なかなか良いものがありません。

・Ajaxでサーバーからデータを取得
・日本語入力でも問題なく動作する
・ページ表示後に動的に追加したフィールドにも適用できる

このような条件に合うものをご存知の方がいましたら、教えてください。
Name_Not_Found [sage] 2010/10/10(日) 04:40:22 ID:???
俺の知る中では無い
作れ
Name_Not_Found [sage] 2010/10/10(日) 06:44:13 ID:???
>・Ajaxでサーバーからデータを取得
これはGoogleのインフラだからこそできる技だぞ
一般人がそのへんのサーバでやったらあかん
356 [] 2010/10/10(日) 08:49:23 :Ec5oGd3z

やっぱり無いですか・・・


検索用ではなく、入力画面で使う予定です。
Name_Not_Found [sage] 2010/10/10(日) 10:14:21 ID:???
1文字うつたびに1リクエスト発生することには変わらないんですが
まぁ結局負荷はどのくらいの人が同時に使うかによるけど
Name_Not_Found [sage] 2010/10/10(日) 10:23:26 ID:???
そもそも単語のリストは有るのか?
Name_Not_Found [sage] 2010/10/10(日) 14:35:09 ID:???

それは設計次第じゃね?
356 [] 2010/10/10(日) 14:48:51 :Ec5oGd3z
やっぱり候補リスト返すだけでも、人が増えると結構な負荷になるんですかね?


単語というか、自前のデータです。

多対多のデータの入力するさいに、
量が増えると、セレクトボックスやチェックボックスじゃ入力し辛くて・・・

別画面にするのが無難なんですかね?
Name_Not_Found [sage] 2010/10/10(日) 14:56:42 ID:???
人数とデータ量によるとしか。
数が少ないようであればスクリプトに直接埋め込むとか、
リストを静的なファイルに書いておいて
画面表示時に全部読み込むとかって手が使えると思うけど、
候補ってどれぐらいあるの?
Name_Not_Found [sage] 2010/10/10(日) 14:58:48 ID:???
12万件の郵便番号データを分割してjsでファイル読んで候補出すぐらいのものなら大して負荷かからないよ
356 [] 2010/10/10(日) 16:12:06 :Ec5oGd3z
データは五千〜一万件くらいでしょうか。
アクセス数はリリース前なんで、なんとも・・・

初回に全データを読ませる方式だと、
ttp://www.enjoyxstudy.com/javascript/suggest/
がありますが、このライブラリは、フリガナから候補を絞るって言うのができないんですよね・・・
Name_Not_Found [sage] 2010/10/10(日) 16:43:18 ID:???

技術的にはそのjsのisMatchメソッドをちょっといじって与えるリストをそれに合わせればふりがな対応可能。
ライセンス的には自分でしらべてくれ。
356 [] 2010/10/10(日) 20:46:47 :Ec5oGd3z

うーん、できれば改造はしたくないですねぇ

となるともう、左右にリストボックスがあって移動させる奴か、
インターフェース自作するしかないですかね・・・

「項目を追加」みたいなボタンでフィールドが増やせて、
オートコンプリート付きで入力できるのが理想なんですがね・・・

Webフレームワークのチュートリアルとか見て、インターフェースの参考にしようと思ったんですけど、
データが少ないときのことしか考慮してないのであまり参考にならないですね;
Name_Not_Found [sage] 2010/10/10(日) 21:47:23 ID:???
ajax全般に言えることだけど
鯖のTIME_WAIT設定とポーリングの頻度次第で
秒間1000リクエストぐらいいっちゃうと共有レン鯖だと止められる可能性がある
Name_Not_Found [sage] 2010/10/10(日) 22:46:06 ID:???
確定前のタイピングってイベント発生しないの?
Name_Not_Found [sage] 2010/10/10(日) 22:59:30 ID:???
するよ、googleサジェストとか使ってるし
Name_Not_Found [sage] 2010/10/11(月) 00:24:57 ID:???
GoogleサジェストはSetTimeIntervalで入力内容の変化を確認してるよね。
Operaは変換中のonkeydownを認識出来ないからだと思う。
YahooはSetTimeIntervalを使ってないからOperaでは日本語のサジェストが弱い。
Name_Not_Found [] 2010/10/11(月) 02:03:18 :FSHZsjrr
SEO対策無双がリンクを付けてくれるブログを増やしたそうだ。
SEO対策無双が値上げするかもしれないぞ。値上げする前に申し込もうぜ。
ttp://hibari.2ch.net/test/read.cgi/hp/1251295826/290
Name_Not_Found [sage] 2010/10/11(月) 02:12:32 ID:???
今時CEO(笑)
Name_Not_Found [sage] 2010/10/11(月) 02:13:41 ID:???
せつこそれ最高技術責任者や
SEO(笑)
Name_Not_Found [sage] 2010/10/11(月) 14:09:33 ID:???

isMatch書き換えたくない理由ってなに?
ライブラリが変わったときに大変だから?
Name_Not_Found [sage] 2010/10/11(月) 14:15:39 ID:???
おれがisMatch使いたいからです
Name_Not_Found [sage] 2010/10/11(月) 14:55:18 ID:???
なんかスルーされてるのがかわいそうなのでツッコむと、
CEOは最高経営責任者な
CTO(笑)
おなかいっぱい
Name_Not_Found [] 2010/10/11(月) 19:05:38 :AlDn9PrG
そこでもうひとボケしないと!
Name_Not_Found [] 2010/10/12(火) 21:26:34 :JUDwX+cV
XMLHttpRequestで、GETしたファイルのContent-Typeにcharsetが指定されていなかったら
charsetを上書き指定して取得、指定されていたらそのまま何もしないで取得、ってやりたいのですが
getResponseHeader()が使えるのはonreadystatechangeのreadyStateが4になってから、
overrideMimeType()が使えるのはsend()の前で、この時点ではgetResponseHeader()が使えない
でうまくいきません。どうすればいいですか?
まずHEADでHeaderを確認してその後おもむろにGETですか?
Name_Not_Found [sage] 2010/10/12(火) 23:23:12 ID:???
jqueryのtoggleを使って表示・非表示を切り替えられますが、最初は非表示の状態から始める事はできますか?
Name_Not_Found [sage] 2010/10/13(水) 00:02:10 ID:???
CSSでdisplay:hiddenにするか画面読み込み時にhide()呼べ
Name_Not_Found [sage] 2010/10/13(水) 00:03:20 ID:???
ttp://sakuratan.biz/azlink/widget/
ここの「主な特徴」の4番目にあるjavascriptの処理待ち回避ってどうやってるのか教えてエロイ人!


idかclassにcssでdisplay:none;設定しておくのはダメ?
Name_Not_Found [sage] 2010/10/13(水) 10:42:59 ID:???
文字をonclickしたときに、クリップボードにコピーするにはどうしたらいいですか?
Name_Not_Found [sage] 2010/10/13(水) 11:09:27 ID:???
ググればいいですよ
Name_Not_Found [sage] 2010/10/13(水) 11:19:32 ID:???

SimpleJS使えよ
Name_Not_Found [sage] 2010/10/13(水) 16:40:45 ID:???
クリップボード操作はIE8からだとページごとに警告出るので
不審がられるでしょうね
Name_Not_Found [sage] 2010/10/13(水) 18:22:17 ID:???

固まらないように、処理をsetTimeoutで刻んでる。

Minifyかかってるから細かいことはわからんので、
詳細は作者に聞け。
Name_Not_Found [sage] 2010/10/13(水) 18:55:08 ID:???
え?今(setTimeout)刻んでた? 完全に無意識だったわ
Name_Not_Found [sage] 2010/10/13(水) 20:26:40 ID:???

ミサワ乙
Name_Not_Found [age] 2010/10/13(水) 21:29:36 ID:???
function Class(){
this.closure = (function(){
var count;
return function(){
this.meth();
}
});

this.meth = function(){}
}

クロージャ内から同じクラスのメソッドmeth()を呼びたいんですが
thisでは参照できません、どうやったら呼び出せますか?
Name_Not_Found [sage] 2010/10/13(水) 21:47:07 ID:???
function Class() {
var self = this;
this.closure = (function () {
var count;
return function () {
self.meth();
}
});

this.meth = function () {}
}
Name_Not_Found [sage] 2010/10/13(水) 21:48:10 ID:???

どうしても、クラスメソッドを呼び出したいの?
this はインスタンスを指すのだから、this.meth はインスタンスメソッドにナルト思うのだけど…。
393 [sage] 2010/10/13(水) 21:51:19 ID:???
ごめん。勘違いしてた。
393 [sage] 2010/10/13(水) 21:55:56 ID:???
function Class(){
  this.closure = (function(that){
    var count;
    return function(){
      that.meth();
    })(this);
  };

  this.meth = function () { ; }
}

# サンプルだからいいけど、"class" は予約後だから注意した方がいいかと。
Name_Not_Found [sage] 2010/10/13(水) 21:56:49 ID:???

書き方が悪くてすみません、インスタンスメソッドを呼び出したかったのです。


ありがとうございます。
思う通りの動作をするようになりました。

ちなみに、別の解法はありますか?
Name_Not_Found [sage] 2010/10/13(水) 22:00:42 ID:???

ありがとうございます。
よりソースがスマートになった気がします!
393 [sage] 2010/10/13(水) 22:08:51 ID:???

もし、コンストラクタ内で共有させたいプライベート変数がなければ、prototype の方が良い気がする。

function Hoge () {
  this.closure = (function(that){
    var count;
    return function(){
      that.meth();
    })(this);
  };
}
Hoge.prototype.meth = function () { ; };
Name_Not_Found [sage] 2010/10/14(木) 02:33:15 ID:???
function Class() {
  this.closure = (function() {
    var count;
    return function() {
     this.meth();
    };
  }());

  this.meth = function() { alert('called'); };
}
はい?
Name_Not_Found [] 2010/10/14(木) 16:02:11 :EP6XgY8v
以下のようにすると IE6 でだけ表示が消えるのですが何故なんでしょうか?
---------------------
<html>
<body>
<script>

window.onload = function(){
 var div = document.createElement('div');
 document.body.appendChild(div);
 
 div.style.position = 'absolute';
 div.innerHTML = [
  '<div style="position:relative; top:0; left:0;">',
   '<table><tbody><tr><td>',
    '<div style="position:absolute; top:20px; left:0;">■■■■■■</div>',
   '</td></tr></tbody></table>',
  '</div>'
 ].join('');
 
 setTimeout(function(){
  div.style.top = '1px';
  div.style.left = '1px';
 }, 100);
};

</script>
</body>
</html>
---------------------
absolute の直下に relative があったり変ですが、実際には色々書かれてて、
再現可能な最小に絞りに絞った結果こんな感じになりました。
Name_Not_Found [sage] 2010/10/14(木) 16:16:11 ID:???
この前オートコンプリートの話出ててふと思い出した
ttp://labs.yaneu.com/20090307/test.html
当時はIMEだったから普通に動いたが
今Google日本語入力いれてるからうまく動作しなかったりする
JavaScriptの補完候補よりGoogle日本語入力の補完候補が優先されてる
こういう場合ってどうするんだろうね
Name_Not_Found [sage] 2010/10/14(木) 16:20:09 ID:???
navitimeとかね。ぐぐーるの使うと埋まっているのに空白と認識されるから、
jsのだけ使うようにした。
Name_Not_Found [] 2010/10/14(木) 16:28:05 :Xf5X5AFV
javascriptで正確なベンチマークを取る方法おしえて
Name_Not_Found [sage] 2010/10/14(木) 16:41:40 ID:???
DateオブジェクトのgetTimeかgetMillisecondsあたりのメソッド使う
Name_Not_Found [] 2010/10/14(木) 20:31:30 :P1f9hQJ2

table周りのinnerHTMLがreadonlyなのと関係あるのだろうか。
こうしたら動いた。

var div = document.createElement('div');
document.body.appendChild(div);

div.style.position = 'absolute';

var div2 = document.createElement("div");
div2.style.position = 'relative';
div2.style.top = 0;
div2.style.left = 0;
var table = document.createElement("table");
var tbody = document.createElement("tbody");
var tr = document.createElement("tr");
var td = document.createElement("td");

div.appendChild(table);
table.appendChild(tbody);
tbody.appendChild(tr);
tr.appendChild(td);
td.innerHTML = '<div style="position:absolute; top:20px; left:0;border:1px solid #ff0000;" id="CCC">■■■■■■<' + '/div>';

setTimeout(function(){
    div.style.top = '1px';
    div.style.left = '1px';
}, 100);
Name_Not_Found [] 2010/10/14(木) 20:32:46 :P1f9hQJ2
ごめんなさい。

border:1px solid #ff0000;" id="CCC"

は無視して。
Name_Not_Found [] 2010/10/14(木) 21:22:31 :EP6XgY8v
div2 が使われてないような。
Name_Not_Found [sage] 2010/10/14(木) 22:00:59 ID:???
JSの質問じゃないかもしれないけどJSで使えるgetBoundingClientRectみたいなものってありませんか?
Name_Not_Found [sage] 2010/10/14(木) 22:01:45 ID:???

誤:JSで使える
正:テキストノード
です。すいません
Name_Not_Found [sage] 2010/10/15(金) 14:00:34 ID:???
□商品1 数量 [    ]

□→チェックボックス
[  ]→テキストフォーム

こんな感じのフォームで商品名にチェックを入れて数量に数字を入れると
合計金額を計算できるようにしたいのですが、数量がリストメニューだと

var shoukei = price1 * document.form1.volume1 .selectedIndex;

このように書いて動くのですが、これをテキストフォームに入力した
値で計算するにはどう書いたらいいんでしょうか?

試しに
var shoukei = price1 * document.form1.volume1.value;
としてみたのですが計算できませんでした。
チェックボックスのvalueには金額が入っています。
410 [sage] 2010/10/15(金) 14:04:11 ID:???
自己レスです。
document.getElementById("volume1").value
にしたらいけました。
Name_Not_Found [] 2010/10/15(金) 15:58:08 :SQsUrmI4
Ajaxで商品パネルを作りたいです
・全部でアイテムが30個ある(データベースから引き出して名前を表示)
・1ページあたり10個表示
・次へ/前へをクリックして、次の10個/前の10個を(dbアクセスして)表示する
・ページ全体の更新はしない
こんな感じです。

凄くありがちだと思うんですが、どういうキーワードで検索したら良いのかわからず
困っています
すみませんが教えてください
jqueryを使うのだと嬉しいです(jqueryの勉強もしたいので)
よろしくお願いします。
Name_Not_Found [sage] 2010/10/15(金) 16:54:02 ID:???
とりあえず1個1個やりたい事を検索してけば?
Ajax ページ移動
とかさ
ajax 動的 コンテンツ
とか
Name_Not_Found [sage] 2010/10/15(金) 23:04:54 ID:???

クライアント側でやることは
・ページインデックスを保持
・次へ/前へ をクリックすると、ページインデックスの値を更新し、サーバーにクエリを投げる
・返ってきたデータからコンテンツを生成し、現在のコンテンツと差し替える
という感じかな

jquery なら load メソッド使えば簡単に出来そうだな
Name_Not_Found [sage] 2010/10/15(金) 23:54:05 ID:???
ttp://tanpopodan.web.fc2.com/i/G.txt
基本文はperlなのですが、JAVAでアラートを表示させています
ここにフォームの入力した文字の一文字目が0だった場合にエラーを出したいのですが、どうすればいいでしょうか?
(00100 といった様に入力されるのを防ぎたい)
Name_Not_Found [sage] 2010/10/16(土) 00:02:50 ID:???
コード見てないけど「正規表現」でぐぐれ。
整数だけが入力されることが前提ならこんな手も使える:

var p = ... // 入力される文字列
if (p != "" + +p) {
//エラー
}
Name_Not_Found [sage] 2010/10/16(土) 00:12:26 ID:???
function KinCheck(MC){
-  if (MC.value == '' || MC.value == '0'){alert ("金額が入力されていません。");return false;}
-  else if( MC.value.match(/[^0-9]/) ){alert ("数字以外の文字は入力できません。");return false;}
-  else{return true;}
+  if (MC.value && /^[1-9]\d*$/.test(MC.value) ){
+    alert("金額がおかしゅいです");
+  }
}
Name_Not_Found [sage] 2010/10/16(土) 00:14:49 ID:???
function KinCheck(MC){
-  if (MC.value == '' || MC.value == '0'){alert ("金額が入力されていません。");return false;}
-  else if( MC.value.match(/[^0-9]/) ){alert ("数字以外の文字は入力できません。");return false;}
-  else{return true;}
+  if (MC.value && /^[1-9]\d*$/.test(MC.value) ){
+    alert("金額がおかしゅいです");
+    return false;
+  }
+  return true;
}
bool返すの忘れてた
Name_Not_Found [] 2010/10/16(土) 18:17:52 :8BssqSht
roop中にある変数定義「b = a;」について質問なのですが

a,bは数値リストが入ります。



function test(list){
for (k = 1; k < list.length; k++) {
var a = rotate(list, 1);
if (k == 2) {
var b = a;
}
}
return b
}

この場合、ループ2回目のbの値を返したいのですが、
(リスト長の最後までリピートが必要です)
途中、rotateという(数値を一個づつずらす)関数が入っています。
var bは、二回目以降(つまりk=2以外)のリピートでも、勝手にrotateしてしまいます。

k=2だけを取り出したいのですが、どうすればよいでしょうか?
Name_Not_Found [sage] 2010/10/16(土) 18:59:52 ID:???
var a;
for (k = 1; k < list.length; k++) {
a = rotate(list,1);
if (k==2) {
break;
}
}
return a;

2回目以降rotateしなくていいならこれでいい
419 [] 2010/10/16(土) 19:22:09 :8BssqSht
419は要点簡略化で単純に(k==2)としていますが、
ここには別の計算式が入ります。
リストの全てのrotat関数値を試す事が要諦なのですが。。
Name_Not_Found [sage] 2010/10/16(土) 19:28:16 ID:???
aもbも配列の参照でしかないからでしょ
配列のコピーでググればいいんでない
419 [] 2010/10/16(土) 19:32:25 :8BssqSht
こんな感じです

function test(list){
for (k = 1; k < list.length; k++) {
var a = rotate(list, 1);
if (a[0] > b[0]) {
var b = a;
}
}
return b
}

すなわち、全てのローテーションのうち、
リストの一個目の数値が一番小さいものを取り出したいのです。
Name_Not_Found [sage] 2010/10/16(土) 19:46:25 ID:???
だから
それにその条件だと「一番小さいもの」を取り出すことはできない
419 [] 2010/10/16(土) 19:57:08 :8BssqSht
あら失礼
x(a[0] > b[0])
○(a[0] < b[0])


そうですね。ググって見ます。ありがとう
419 [] 2010/10/16(土) 20:07:58 :8BssqSht

ありがとうございました。解決しました。
Name_Not_Found [] 2010/10/16(土) 21:22:57 :8BssqSht
質問連投で失礼しますが、
文字列→数値変換の関数で
Number(),parseInt(),eval()これらは単数字のようです。
リストをそのまま文字列→数値列変換したいのですが良い方法ありますか?
Name_Not_Found [sage] 2010/10/16(土) 21:30:55 ID:???
forで回して数値化する関数を作る。
あと配列な。
Name_Not_Found [sage] 2010/10/16(土) 21:38:04 ID:???

ttps://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/map
Name_Not_Found [sage] 2010/10/16(土) 22:45:08 ID:???

map ってIEで使えないんじゃなかったっけ?
Name_Not_Found [sage] 2010/10/16(土) 22:56:18 ID:???
使えないよ
だからそういう場合に備えてご丁寧にprototypeに追加するコードまで書いてある
427 [] 2010/10/16(土) 22:58:14 :8BssqSht

ありがとうございました。解決しました。
Name_Not_Found [] 2010/10/18(月) 00:43:16 :95PJaZ98
質問です。よろしくお願いします。objの関数で出た結果をobj2の中で反映させたいのですが、
方法がよく分かりません。

--------------------------------------------------
obj : function() {
var element = document.getElementsByTagName('a');

for (var i = 0; i < element.length; i++) {
element[i].onmouseover = (function (n) {
return function() {
alert(n); ←この結果を
}
})(i);
}
}

obj2 : function() {
alert(n); ←ここに反映させたい
}
--------------------------------------------------

もうひとつお願いします。el.addEventListener('mouseover', this.func, false)や
el.attachEvent('onmouseover', this.func)を使ってfunc : function(){ ? };の部分に
上記のようなクロージャーを入れたいのですがどうやればいいでしょうか?よろしくお願いします。
Name_Not_Found [sage] 2010/10/18(月) 01:45:47 ID:???

なにやりたいかようわからん

var obj = {
method1: function(){...},
method2: function(){...},
...
};
という構造だと考えると、
method1 では n が elements.length + 1 回現れるわけだが、
method2 ではどの n を反映させたいの?

下は上でもやってる通り
el.addEventListener('mouseover', (function(){...})(), false)
みたいなことがやりたいってこと?
Name_Not_Found [sage] 2010/10/18(月) 13:36:12 ID:???

別に配列作っておいてそれを使うのは駄目なの?
Name_Not_Found [sage] 2010/10/18(月) 21:52:22 ID:???
keydown等のキーボードイベント取得時、
マウスの位置座標を取得することは可能ですか?
Name_Not_Found [sage] 2010/10/18(月) 23:21:11 ID:???
試せよ
Name_Not_Found [sage] 2010/10/18(月) 23:46:04 ID:???
<a href="javascript:void(0)" onclick='func("hoge"); return false;'>
こんなリンクをjsで作るにはどう書けばいいですか?
Name_Not_Found [sage] 2010/10/18(月) 23:56:49 ID:???

ほい
document.write('<a href="javascript:void(0)" onclick='func("hoge"); return false;'>');
Name_Not_Found [sage] 2010/10/18(月) 23:57:53 ID:???
素人考えかもしれんが独禁法に抵触するような気がするな
Name_Not_Found [sage] 2010/10/18(月) 23:58:36 ID:???
すまん上のは誤爆だ
Name_Not_Found [sage] 2010/10/19(火) 00:31:05 ID:???

document.write()が独禁法違反……NAOシフト思い出してワロタw
Name_Not_Found [sage] 2010/10/19(火) 01:22:11 ID:???
素人考えなんだから許してやれよ
Name_Not_Found [sage] 2010/10/19(火) 05:59:25 ID:???
リンクにjavascript:void(0)って書くのと、#ってするの
どっちが好ましいと思いますか?
Name_Not_Found [sage] 2010/10/19(火) 06:42:24 ID:???
ステータスバーにjavascript:void(0)って出るのがマヌケだから#かな
Name_Not_Found [sage] 2010/10/19(火) 07:48:04 ID:???

やりかたが分からないのに試せ言われても困っちゃう
Name_Not_Found [sage] 2010/10/19(火) 08:55:17 ID:???
そんなら取得の仕方を教えてくださいっていえばいいだろ
Name_Not_Found [sage] 2010/10/19(火) 09:06:19 ID:???
リンクでもないただのトリガーをaで書くのがまぬけ
Name_Not_Found [sage] 2010/10/19(火) 10:17:55 ID:???


ヒント
・addEventListener / attatchEvent
・document.createElement
Name_Not_Found [sage] 2010/10/19(火) 12:57:43 ID:???

#だと対策しないとページの先頭にとんじゃうから気をつけろよ
理想を言えばonclickかaddEventListener
Name_Not_Found [sage] 2010/10/19(火) 14:15:42 ID:???

どういう使いかたをするかにもよる
現在ではjavascript:スキームを使ったほうがよい場面は少ないので、#でいいと思う
ページ内遷移させたくないならpreventDefault()やreturnValueの設定を忘れずに

JavaScript無効時に意味を持たないアンカーはJavaScript側で生成・挿入したほうが無難だったり
a要素ライクな体裁を持たせたいがIE6対応が必要な場合にはa要素を使うしかなかったり(CSSの疑似クラス未対応問題)
単なるボタンとして使う場合は、できればWAI-ARIAのroleを持たせてやったほうがよかったり
WCAG 2.0のシングルA対応するならもっと色々考えることがあったり

そのへん全然ワカンネ、というなら最初にいった結論に戻るけど#一択が無難じゃないのかな
Name_Not_Found [sage] 2010/10/19(火) 18:16:15 ID:???
いまさらIE6対応は特殊技能の域だろ
Name_Not_Found [] 2010/10/19(火) 20:24:58 :O4Hf4jyp
:hoverとか@mediaとかのスタイルをjavascriptで追加や削除するにはどうすればいいですか?
Name_Not_Found [sage] 2010/10/19(火) 21:32:40 ID:???
document.styleSheetsを使う

style属性で疑似クラスを表現する方法を策定中という記事を読んだことがあるけど
あれからどうなったんだろうな
Name_Not_Found [sage] 2010/10/19(火) 21:43:07 ID:???
どうもありがとうございますm(_ _)m
Name_Not_Found [sage] 2010/10/19(火) 23:24:05 ID:???

ttp://www.w3.org/TR/2010/CR-css-style-attr-20101012/
履歴を追えば分かるが、2002年でストップしていたものをHTML5が引っ張り出したもの
その際、疑似クラスの部分はきれいさっぱり削ぎ落とした
Name_Not_Found [sage] 2010/10/20(水) 19:13:54 ID:???

<form action="#">
  <select>
    <option value="">▼選択してください</option>
    <option value="apple">りんご</option>
    <option value="banana">バナナ</option>
  </select>
</form>

formタグ内を操作せずに、selectタグに
「onchange="alert(this.options[this.options.selectedIndex].text)"」を追加するには
どう記述すればよいでしょうか?
formタグはプログラムで自動生成されるので、そちらを弄ることができないのです。
457 [sage] 2010/10/20(水) 19:16:43 ID:???
サンプルでは省略しましたが、name要素はあります。
Name_Not_Found [sage] 2010/10/20(水) 19:24:50 ID:???
nameか・・・nameは複数につけられるからなぁ・・・
対象となるエレメントをXPathなりquerySelectorAllで取得して
それにaddEventListenerとかすればいいんでないの?

Name_Not_Found [sage] 2010/10/20(水) 19:28:01 ID:???
HTMLにはname要素というものはないと思うが。要素とかそういう用語が
分かってなくてDOM操作を書くのは無理な気もするけど…

document.forms.名前A.elements.名前B.onchange = function() {
alert(this.options[this.selectedIndex].text); };

かなあ。試してないけど。あと関数の中身のコードは適当に推測で
変えたけど。そして名前Aはform要素のname属性の値、
名前Bはselect要素のname属性の値。属性とは何か分からないなら
あきらめた方がいいと思う。あと、上記のコードを実行すると
form要素の子要素の属性を変更しているので、それが「formタグ内を
操作している」ことになるというのならやっぱりあきらめた方が
いいと思う。
457 [sage] 2010/10/20(水) 19:50:37 ID:???
下記のようにしましたが、反応してくれないです。。
ちなみにIE8です。

<SCRIPT type="text/javascript">
document.forms.form.elements.selecter.onchange = function() {
alert(this.options[this.selectedIndex].text); };

</SCRIPT>

<form name="form" action="#">
<select name="selecter">
<option value="">▼選択してください</option>
<option value="apple">りんご</option>
<option value="banana">バナナ</option>
</select>
</form>
Name_Not_Found [] 2010/10/20(水) 19:54:06 :pKhD4ne9

そりゃDOMツリーが完成してないからじゃないか?
alert(document.forms.form);

ってしてもundefinedになるでしょ。
script要素を後ろに持ってくるか、DOMContentLoadedを待とう。
457 [sage] 2010/10/20(水) 20:06:25 ID:???
SCRIPTをFORMの後ろにしたら動きました!!

でも本番環境に適用したら反応しないので調べたら、
name="form[blog]"のように[]を含んでいるのが邪魔してるようです。
よく見たらID属性もあったのですが、そちらは[]がありません。
ID属性で指定する方法も教えていただけませんか?
Name_Not_Found [sage] 2010/10/20(水) 20:09:21 ID:???
こんにちは、ちょっと質問があります。

元々PHPでWEBサイトを作っていました。
JavaScriptのエフェクトが気に入ったのでJavaScriptを勉強しました。

すると、PHPでもJavaScriptでもどちらでも可能な部分が出てきました。
例えばフォームの入力内容をチェックするコードなどです。

そゆときはどちらでやればいいのでしょうか。悩んでます。
Name_Not_Found [sage] 2010/10/20(水) 20:12:47 ID:???
どっちででもするもんじゃないの?Javascript側で即チェックするのはユーザビリティのため
PHP側で送信時にチェックするのはデータを安全に受け取るため
Name_Not_Found [sage] 2010/10/20(水) 20:16:40 ID:???

両方でやるべき。
手間とサーバーの負荷を考えるとJavaScriptだが、
JavaScriptがオフの環境もあるし、
パスワードなんかはJavaScriptでは無理。
どうしても二者択一ならPHPだが。
Name_Not_Found [] 2010/10/20(水) 20:24:33 :pKhD4ne9

querySelectorでもgetElementByIdでも好きなの使えばいいけど、
いずれにせよ、DOMについてちょっと知っておいたほうがいいと思うよ。
Name_Not_Found [sage] 2010/10/20(水) 20:29:00 ID:???
PHP側でチェックしないというのはありえない
JavaScriptでのチェックをすり抜ける方法はあるからな
457 [sage] 2010/10/20(水) 20:33:36 ID:???
getElementByIdでうまくいきました。

実際はselectタグじゃなくてinputタグで行っていたのですが、
キー入力しただけでは反応しなくて、
フォーカスが移動しないと、onchangeは働かないのですね。
リアルタイムな変更に対応するにはどうすればいいですか?
Name_Not_Found [sage] 2010/10/20(水) 20:36:15 ID:???
document.styleSheetsって、確かブラウザ依存する定義だったよな
Name_Not_Found [] 2010/10/20(水) 20:52:28 :pKhD4ne9

見張れ
Name_Not_Found [sage] 2010/10/20(水) 21:17:45 ID:???

漢字変換をしないならonkeyupで。するのなら定期的に中身を
取り出して前と変化したかどうか調べるしかない(ブラウザに
よって違うので、主要なブラウザどれでも動くとなるとそうなる)。
Name_Not_Found [sage] 2010/10/20(水) 23:55:55 ID:???

WebKitだとlink要素で指定したAlternate Stylesheetsが含まれない
xml-stylesheets命令ならOK
Name_Not_Found [sage] 2010/10/21(木) 05:32:34 ID:???
AEやOEのような合字やアクサン付きのアルファベット等を、
その元となった文字とマッチングさせたい(文字列比較で同一の文字として扱いたい)のですが、
一覧を自前で保持する他に、組み込み関数等を用いた適当な方法はあるでしょうか。
ブラウザ/JavaScriptエンジン依存でも構いません。
Google Chromeのページ内検索だと、欧文合字どころか〼(ます)とか〆(しめ)とかまで引っかかるので
何かうまい方法があるのかと気になって……。
Name_Not_Found [sage] 2010/10/21(木) 09:56:38 ID:???
望む結果を得たいなら、やはり自前しかないのでは。
Name_Not_Found [] 2010/10/21(木) 11:31:07 :EcnlH3iF
運営しているサイトのユーザーさん向けにウィジェットを作ろうと思っているんですが、
こういうコードを貼りつけてもらう系のって、やっぱりjqueryとかのライブラリ使わずに
生javascript直書きで実装した方がよいでしょうか?

例えばjquery使って実装したものをユーザーさんが自分のサイトに貼り付けたとき、
そのサイトでprototypeとかゴリゴリ使っていたら衝突してしまったりするのではないかなと思いまして。

ご意見いただけると嬉しいです。
Name_Not_Found [sage] 2010/10/21(木) 13:10:48 ID:???
そうだね。namespaseも一つにしてできるだけ衝突する可能性を敷く苦したほうがいい
Name_Not_Found [] 2010/10/21(木) 18:42:54 :Se5dLD2o
作られた変数を一覧するようなことはどうすればできますか?firebugとかそういうのを使うんですか?
Name_Not_Found [] 2010/10/21(木) 22:10:22 :KhJlBmvU

たどれるスコープ内にあるものなら、
firebugがなくても、自分でループ書いて掘ることも出来よう。
逆に、たどれないスコープにあるものだったら、
firebugがあっても無理なんじゃないかね。

例えば

var a = 1;

って書いたら、window.aとしてたどれるけど、

(function(){
    var a = 1;
})();

って書いたら、手が届かないじゃん。
Name_Not_Found [sage] 2010/10/21(木) 22:22:20 ID:???
どうもありがとうございます
無名関数の外にあるものを取得する場合はこんな感じ?ですか?
javascript:(function(a){for(var i in window){a+=i+" : "}alert(a);})("");
もともとあるwindowのプロパティは拾わないようにするにはどうすればいいんでしょうか
Name_Not_Found [sage] 2010/10/21(木) 22:25:56 ID:???

Firebugのデバッガ使えばそのaも見ることできるよ
Name_Not_Found [sage] 2010/10/22(金) 00:19:57 ID:???

Firefoxなら 'propName' in window.__proto__ で元々持ってるプロパティを選別することができると思う
まとめると多分こんな感じ
javascript:(function(a){for(var i in window){if (!(i in window.__proto__))a+=i+" : "}alert(a);})("");
Name_Not_Found [sage] 2010/10/22(金) 06:29:57 ID:???
作ったものだけ表示させることができました
どうもありがとうございます
Name_Not_Found [sage] 2010/10/22(金) 08:06:34 ID:???

ステップ実行するかconsole.log(a)で見れるよ
Name_Not_Found [sage] 2010/10/22(金) 10:44:49 ID:???
初歩的な質問なんですが、お願いします。

<div class="hoge">
 <p>
 <h2>
  <a href="ttp://hogehoge">リンクテキスト</a>
 </h2>
 </p>
</div>


という部分から、「リンクテキスト」という文字列を取り出したいんですけど、
何故か中々うまく行きません。

どういった方法を取るのが良いのでしょうか・・・アドバイス頂けないでしょうか
Name_Not_Found [] 2010/10/22(金) 11:02:04 :yIB48oLF

a要素のinnerHTMLでもfirstChild.nodeValueでもchildNodes[0].nodeValueでもでも。

なにをどうしたらどうなるだろうと思ってどうやったらどううまくいかなかったのか
を具体的に。
zardrell [sage] 2010/10/22(金) 15:57:58 ID:???

aタグにIDをつけたらどうでしょうか?

<a href="ttp://hogehoge" id="test">リンクテキスト</a>

<script type="text/javascript">
alert(document.getElementById('test'));
</script>
Name_Not_Found [sage] 2010/10/22(金) 16:06:41 ID:???

それじゃHTMLAnchorElementでtoString()実行された結果の[object HTMLAnchorElement]しか表示されんだろ
(IE6やIE7は除く)


の方法に加えてtextContent(IE は innerText)も選択肢に含められると思う
Name_Not_Found [sage] 2010/10/22(金) 16:07:40 ID:???
document.querySelector('div.hoge > p > h2 > a').textContent
pの中にh2とか馬鹿じゃね
zardrell [sage] 2010/10/22(金) 16:11:20 ID:???

すいません 間違いました
alert(document.getElementById('test').href);

これでどうでしょう?
zardrell [sage] 2010/10/22(金) 16:12:53 ID:???

文字列だったら
alert(document.getElementById('test').innerHTML);
ですね
Name_Not_Found [sage] 2010/10/22(金) 16:45:56 ID:???
例えば(C)マークを表示するつもりで
element.appendChild(document.createTextNode("©"));
とすると、実際にはelementの中身は「&copy;」になってしまいます。
本来の目的どおり「©」をappendChildするにはどうやればよいのでしょうか?
Name_Not_Found [sage] 2010/10/22(金) 16:48:45 ID:???
まさかinnerHTMLで確認するなんて間抜けなことをしてないだろうな
Name_Not_Found [sage] 2010/10/22(金) 16:50:31 ID:???

あれ?変換された?
©→&copy;
&copy;→&amp;copy;
です。
Name_Not_Found [sage] 2010/10/22(金) 16:58:33 ID:???
テキストノードなんだからエスケープなんかいらない
そのまま書け
Name_Not_Found [sage] 2010/10/22(金) 18:15:16 ID:???

明快な回答ありがとうございます。

では改めて質問なんですが、
こういうキーボードから直接入力できない文字ってどうやって入力するんですか?
いちいちコピペ?
Name_Not_Found [sage] 2010/10/22(金) 18:22:20 ID:???
os 依存のネタはそれ用の板で聞けよ
Name_Not_Found [sage] 2010/10/22(金) 18:35:24 ID:???
\uHHHH
Name_Not_Found [sage] 2010/10/22(金) 18:36:26 ID:???
SJISならわかるけどUnicodeでos依存もねーよw
Name_Not_Found [sage] 2010/10/22(金) 19:14:59 ID:???
あれか、漢字を直接入力できるキーボード使ってるのか、見てみたいぜ
Name_Not_Found [sage] 2010/10/22(金) 19:17:41 ID:???

ttp://googlejapan.blogspot.com/2010/04/google.html
Name_Not_Found [sage] 2010/10/22(金) 19:43:46 ID:???

配置覚えられるかwwwと思ったが四月馬鹿ネタなのか
ネタとして買ってみたい気持ちでもあるが
485 [sage] 2010/10/22(金) 21:26:25 ID:???

ありがとうございます。漠然としすぎました。

上記()のような構造(これが繰り返しある)をしているサイトのGreasemonkeyを作ろうと思っていて、
ただ、取得したいa要素にidがついておらず、またdiv、p、h2が別の場所にも散在しているため、

「hogeクラスのdivの中にある、最初のa要素(本当はhogeの中にa要素は複数ある)」のテキスト部分を
取り出そうと思ってやってみたのですが、四苦八苦してしまった、という感じです。

var hogelist = document.getElementsByClassName('hoge');
 for (var i = 0; i < hogelist.length; i++) {

とした後の、テキスト取得の部分がうまくいかないです。

hogelist[i].childNodesだったりitemだったり色々組み合わせて試してみたんですが、
動かなかったり、nullやUndefinedが返ってきたり・・・

たぶん初歩的な部分が分かってないんだと思うんですが、引き続きアドバイスお願いしたいです
Name_Not_Found [sage] 2010/10/22(金) 22:02:31 ID:???
とりあえずFirebugsのコンソール使ってみたら?
Name_Not_Found [sage] 2010/10/22(金) 22:18:21 ID:???


var x = document.getElementsByClassName("hoge");
for(var i = 0; i < x.length; i++){
  var a = x[i].getElementsByTagName("a");
  for(var j = 0; j < a.length; j++){
    var t = a[j].firstChild.nodeValue;
    if(t.nodeType == 3){
      alert(t.nodeValue);
    }
  }
}
Name_Not_Found [sage] 2010/10/22(金) 22:23:01 ID:???
今からJava勉強すんのってどうよ
Name_Not_Found [sage] 2010/10/22(金) 22:27:28 ID:???
Javaスレで聞くのが適切だと思います
Name_Not_Found [sage] 2010/10/22(金) 23:04:08 ID:???

代書屋さんにある和文タイプみたいだ。
485=503 [sage] 2010/10/22(金) 23:40:12 ID:???

試してみます。


動かないです;;
Name_Not_Found [sage] 2010/10/22(金) 23:54:18 ID:???

全角スペースだからちゃんと半角に直してね
Name_Not_Found [sage] 2010/10/23(土) 00:07:33 ID:???
Firefox は \u3000 を White Space と解釈できるはずなんだが…。
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.2
Name_Not_Found [sage] 2010/10/23(土) 00:10:46 ID:???
何で動かないのか書かないと「ああそうですか」で終わっちゃうわけで
>>485=>>503 [sage] 2010/10/23(土) 00:11:49 ID:???

本当に丁寧にありがとうございます。
ただ、何度やっても、Undefinedしか表示されないです;;
Name_Not_Found [sage] 2010/10/23(土) 00:14:16 ID:???

nodeType == 3(テキストノード)のときしかalert出ないからUndefinedは出ないはずなんだけど
Name_Not_Found [sage] 2010/10/23(土) 00:18:36 ID:???

ミスってたすまん

-   var t = a[j].firstChild.nodeValue;
+   var t = a[j].firstChild;

でもt.nodeTypeがnullになるからUndefinedにはならないんだよね、ちゃんと更新は反映されてるの?
>>485=>>503 [sage] 2010/10/23(土) 00:51:53 ID:???

ありがとうございます。書き換えてみると、今までで一番近い挙動になりました。

ただ、今回のalertは、hoge 内のa要素すべてのテキストを順番にalertするような挙動のようです。
実際には、hoge 内には、4つのa要素があり、今回のを動かしてみると、4つのa要素のテキストが順番にalertされました。

自分が取得したいのは、2番目のa要素のテキストなのですが(1つめのa要素を見逃してました)、
のalert部分を、

alert(t[1].nodeValue);

とするのではいけないのでしょうか・・・?(ちなみにコレにするとalert自体がされなくなりましたorz
>>485=>>503 [sage] 2010/10/23(土) 01:01:27 ID:???
ちなみに本来のHTMLはこんな感じです(最初から省略しなきゃ良かったorz

<div class="hoge">
 <p>
  <a href="ttp://hogehoge0">リンクテキスト0</a>
 </p>
 <h2>
  <a href="ttp://hogehoge1">リンクテキスト1</a> // これのテキスト部分を取得したい
 </h2>
 <p>
 <span>
  <a href="ttp://hogehoge2">リンクテキスト2</a>
 </span>
  <a href="ttp://hogehoge3">リンクテキスト3</a>
 </p>
</div>
Name_Not_Found [sage] 2010/10/23(土) 01:23:29 ID:???
Firefoxならこれでいいんじゃない

Array.forEach(
 document.getElementsByClassName('hoge'),
 function (div) {
  var link = div.getElementsByTagName('a')[1];
  var text = link.textContent;
  alert(text);
 });
>>485=>>503 [sage] 2010/10/23(土) 02:12:33 ID:???

ありがとうございます!無事望んだ挙動が得られました。

アドバイス頂いた皆様ありがとうございます><
Name_Not_Found [sage] 2010/10/23(土) 06:43:37 ID:???
forEachってforループと役割が違う?書き方が違うだけ?
Name_Not_Found [sage] 2010/10/23(土) 11:51:23 ID:???
・ループを途中で止められない(everyかsomeなら止められる)
・ループごとにスコープが生成される(はそんな感じ)
Name_Not_Found [sage] 2010/10/23(土) 12:14:24 ID:???
疎な配列で番号をちゃんと飛ばす
Name_Not_Found [sage] 2010/10/23(土) 12:21:38 ID:???

無限ループと同じでbreakすれば止められるよね
Name_Not_Found [sage] 2010/10/23(土) 15:12:09 ID:???
たぶんbreakじゃなくthrowな
Name_Not_Found [sage] 2010/10/23(土) 16:52:29 ID:???
は?
Name_Not_Found [sage] 2010/10/23(土) 17:23:28 ID:???
forEachはbreakできないよ
Name_Not_Found [sage] 2010/10/23(土) 17:58:07 ID:???
javascriptのforEach文ってfor (var i in hoge)でしょ?

<script>
var hoge = [1,4,1,4,2,1,3,5,6];
for (var i in hoge) {
document.write(hoge[i]+"<br>");
if (hoge[i] == 3) {
break;
}
}
</script>
Name_Not_Found [sage] 2010/10/23(土) 18:13:23 ID:???
からの流れだよ
はfor-in文。JSにはforEach文なんてないよ。他の言語と混同してる

Firefoxにはfor each-in文というのがあるけどね
Name_Not_Found [sage] 2010/10/23(土) 18:19:22 ID:???
for...inやfor each...inは配列に使っちゃ駄目ってmdcに書いてあった
あとforEachは
ttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach#Compatibility
と同等ってmdcに
Name_Not_Found [sage] 2010/10/23(土) 18:25:34 ID:???
ECMAScript 5で標準化されてIE9がやっと最後に実装するというのに
いまだに「JSにはforEach文なんてない」などとぬかすか
Name_Not_Found [sage] 2010/10/23(土) 18:28:25 ID:???
それはArray.prototype.forEach(forEachメソッド)でしょ?
Name_Not_Found [sage] 2010/10/23(土) 18:28:46 ID:???
流れを見ずに書き込んだ
スマンコ
Name_Not_Found [sage] 2010/10/23(土) 22:05:38 ID:???

こういう配列やオブジェクトの要素数すべてに対して
ループを行うものをforeach文というんですよ
JavaScriptの場合いくつかあるけど
このfor-inもforeach文の1つ
Name_Not_Found [sage] 2010/10/23(土) 22:15:08 ID:???
発端のを確認してほしいんだが
なんで「forEach」から「多言語で言うforeach文」って話になるんだ

520がそういう意図で聞いたというのなら、だね
Name_Not_Found [sage] 2010/10/23(土) 22:34:25 ID:???

その認識は危険
JSのfor-inはプロトタイプを辿るから他言語のforeachと違う
Name_Not_Found [sage] 2010/10/23(土) 23:07:43 ID:???
に加え、for-inの列挙順は実装依存
以前のバージョンのOperaだったか、後方から列挙していた
Name_Not_Found [sage] 2010/10/23(土) 23:20:18 ID:???
for-inだけじゃなくて全てにおいて実装依存では
このスレでJavaScriptエンジンつくろうず
言語はC#で頼む
Name_Not_Found [sage] 2010/10/23(土) 23:28:29 ID:???
つSpiderMonkey
Name_Not_Found [sage] 2010/10/23(土) 23:33:57 ID:???

それはさすがに頭が悪い
Name_Not_Found [sage] 2010/10/24(日) 05:44:59 ID:???
ほんと池沼みたいな奴ばっかだな
Name_Not_Found [sage] 2010/10/24(日) 15:16:30 ID:???
function getText(n){
var strings = [];
getStrings(n, strings);
return strings.join("");

function getStrings(n, strings) {
if (n.nodeType == 3)
strings.push(n.data);
else if (n.nodeType == 1) {
for(var m = n.firstChild; m != null; m = m.nextSibling) {
getStrings(m, strings);
}
}
}
}

このコードが動きません.教科書のサンプル写しました.
だれか教えてくれませんか
Name_Not_Found [sage] 2010/10/24(日) 15:30:11 ID:???

あまり良いコードとは思えないけど、動くでしょ。
541 [sage] 2010/10/24(日) 15:52:21 ID:???
else if (n.nodeType == 1) { のところがうまく動いてないっぽくて...
Name_Not_Found [sage] 2010/10/24(日) 17:01:09 ID:???
まさかdocumentを与えてないよな
541 [sage] 2010/10/24(日) 18:06:42 ID:???


すみません.その通りでした....

ありがとうございました
Name_Not_Found [sage] 2010/10/24(日) 18:24:08 ID:???
<SCRIPT LANGUAGE="JavaScript">
<!--
function Rogin(){
window.open("rogin.html","rogin","");
if(!$count2){$count++;$count2++;}
else if($count2){window.alert('本日は既にログイン済みです!');}
}
}
// -->
</SCRIPT>
<input type=submit value=ログイン onClick=\"return checkRogin()\">";

Perlで作成しているページのログインボタンについてなのですが
$countは累計ログイン数、$count2は今日ログインしたかどうかの記録です
上のようにしてみたところ上手くいかないのですが、サブルーチン内でcountを増やす処理ってどうすればよいのでしょうか?
Name_Not_Found [sage] 2010/10/24(日) 18:37:24 ID:???

関数の外で変数宣言すれば外でも値が保持される。
var $count;
でもページを再表示したら保持されないよ。保持したければcookieとかサーバーサイドで保存しないと。

余談ですがifの条件でcount2のfalseを評価してるからelseにはif要らない。この場合。
あと、ログインのスペルは log in だよ。
あと、JSで変数に$は要らないよ。あってもいいけど
Name_Not_Found [sage] 2010/10/24(日) 18:58:29 ID:???
あと、JavaScript で未定義の変数をインクリメントしてもうまくいかないよ。
最初に数値を代入しておかないと。
Name_Not_Found [sage] 2010/10/24(日) 20:00:55 ID:???

Perl側の処理とJavaScript側の処理を混同してるね。
Perlで生成したHTMLにあるJavaScriptから、Perlスクリプト内の変数に直接アクセスすることはできないよ。
フォームを使ってPerlスクリプトにパラメータをPOSTするか、
XMLHttpRequestでPerlスクリプトにアクセスできるようなJavaScriptをHTMLに入れておく。
Name_Not_Found [sage] 2010/10/24(日) 23:07:38 ID:???
sub LOGINCHECK{
if($count2){print << " -----END-----";
<SCRIPT language="JavaScript">
function checkLogin(){
window.open("rogin.html","rogin","");
if(!count2){
var count = $count + 1;
var count2 = 1;
document.all.subject.value=count;
document.all.subject.value=count2;
document.login.submit();
}if(count2){window.alert('本日は既にログイン済みです!');return false;} }
<form method="post" action="login.cgi" name="login">
<input type="hidden" name="count">
<input type="hidden" name="count2">
<input type=submit value="ログイン" onClick="return checkLogin()"></td></tr>
</form>
</script>
-----END-----
}else{print "";}
my $count = $in{'count'};
my $count2 = $in{'count2'};}
LoginとRoginのミスはお恥ずかしい・・・
PERLでの記述になっていますが上記のように作りました
Java内でPOSTで送信した値をJava終了時に取得させてみたところやはり値の取得ができていません
POSTの使い方間違ってますかね?
Name_Not_Found [sage] 2010/10/24(日) 23:20:18 ID:???
何を参考にしてるか知らないが、捨てて別のを見た方が早いぞ多分
Name_Not_Found [sage] 2010/10/24(日) 23:30:59 ID:???

なんつーか大混乱なソースだな。PERLとJSの変数を混同してるのって初めて見たよ。
まずはJS無しでPOSTの処理するサンプルでもいじって動作を理解したほうがいい。
サーバーサイド・クライアントサイドの理解をしっかり。がんばってね。
(ちなみにJavaとJavaScriptは別物で両方メジャーなのでよろしく)
Name_Not_Found [sage] 2010/10/24(日) 23:31:51 ID:???
というか、そもそも鯖側だけでやるような処理でしょ。
WebProg板に行けばいいんじゃないの?
Name_Not_Found [sage] 2010/10/24(日) 23:35:25 ID:???
まずjsとperlを分離して、すごく醜い。
そして、document.allはIEでしか使えない。使わないでくれ
> document.all.subject.value=count;
> document.all.subject.value=count2;

document.login.count = count;
document.login.count2 = count2;
の間違い(だと思う)
input[type=submit]にonclickつけても処理は中止できない

簡単に手直しすると
<script type="text/javascript">
  function checkLogin(){
    window.open("rogin.html","rogin","");
    if(!count2){
      var count = $count + 1;
      var count2 = 1;
      document.login.count = count;
      document.login.count2 = count2;
      return true;
    }else if(count2){
      alert('本日は既にログイン済みです!');
      return false;
    }
  }
</script>
<form method="post" action="login.cgi" name="login" onsubmit="checkLogin">
<input type="hidden" name="count">
<input type="hidden" name="count2">
<input type="submit" value="ログイン">
</form>
Name_Not_Found [sage] 2010/10/24(日) 23:41:56 ID:???
教科書の詳細を
Name_Not_Found [sage] 2010/10/24(日) 23:42:25 ID:???
document.all は HTML5 に取り込まれたので、IE以外でも使用することは出来る。
ただし、undefined を返す特殊仕様でレガシーコードへの対応が目的。あえて、document.all を使う意味はない。
Name_Not_Found [sage] 2010/10/24(日) 23:44:51 ID:???
どんな教科書使ってるのか晒して欲しい
Name_Not_Found [sage] 2010/10/24(日) 23:50:26 ID:???
紙媒体だと書ける行数に限りがあるから詰め込もうとするとどうしてもスパゲッティになっちゃうんだよね・・・
CDがついてくるような本で、本の内容そのままのコードがCDに入ってるものは論外だけど
Name_Not_Found [sage] 2010/10/25(月) 00:14:03 ID:???
要点を押さえつつ簡潔に書くには知識とセンスと経験がいるからな
Name_Not_Found [sage] 2010/10/25(月) 00:14:20 ID:???
javascriptの勉強はまずサイ本一冊読み切ることに全力を注げ
Name_Not_Found [sage] 2010/10/25(月) 00:18:19 ID:???
さすがに2ヶ月程度勉強しただけでは無理でしたか・・・
本はPerlの勉強には
ttp://www.amazon.co.jp/3%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%A7%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E5%AD%A6%E3%81%B6-JavaScript
%E5%85%A5%E9%96%80-%E4%BB%8A%E3%81%99%E3%81%90%E4%BD%BF%E3%81%88%E3%82%8B%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93%E3%83%97%E3%83%A9%E3%82%B9
-%E5%A4%A7%E6%B4%A5-%E7%9C%9F/dp/4774142786/ref=sr_1_15?s=books&ie=UTF8&qid=1287933405&sr=1-15
を使いPerlの勉強には
ttp://www.amazon.co.jp/10%E6%97%A5%E3%81%A7%E3%81%8A%E3%81%BC%E3%81%88%E3%82%8B-Perl-CGI-%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4-10%E6%97%
A5%E3%81%A7%E3%81%8A%E3%81%BC%E3%81%88%E3%82%8B%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4798109703/ref=sr_1_10?ie=UTF8&qid=1287933353&sr=8-10
を使いました
Name_Not_Found [sage] 2010/10/25(月) 00:23:19 ID:???
これはwww
Name_Not_Found [sage] 2010/10/25(月) 00:43:10 ID:???
プログラム関係はO'Reillyの本が一番無難でまとも
英語版を訳してるものが多いから質が高い
正直、和書はなんちゃってプログラマー(ライターを業にしてる人)が書いた本が量産されてるので注意
ある程度書けるようになったら”プログラミング作法”も読むといい
Name_Not_Found [sage] 2010/10/25(月) 00:50:11 ID:???

改行なしで紹介してくれると有り難い。

Amazon.co.jp: 3ステップでしっかり学ぶ JavaScript入門 (今すぐ使えるかんたんプラス): 大津 真: 本
ttp://www.amazon.co.jp/dp/4774142786
Amazon.co.jp: 10日でおぼえる Perl/CGI 入門教室 第2版 (10日でおぼえるシリーズ): 高橋 大吾: 本
ttp://www.amazon.co.jp/dp/4798109703


オライリー本は確かに良書だが、初心者が読むと挫折するような気がする。
JavaScript初心者 + 他の言語経験者なら、お勧めできるのだが…。

Amazon.co.jp: JavaScript 第5版: David Flanagan, 村上 列: 本
ttp://www.amazon.co.jp/dp/4873113296
Amazon.co.jp: JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス: Douglas Crockford, 水野 貴明: 本
ttp://www.amazon.co.jp/dp/4873113911/
Name_Not_Found [sage] 2010/10/25(月) 00:55:36 ID:???
good partsは信者がいてうっとうしいかもな
Name_Not_Found [sage] 2010/10/25(月) 01:08:09 ID:???
未読だが、『初めてのJavaScript 第2版』は初心者向きかもしれない。

Amazon.co.jp: 初めてのJavaScript 第2版: Shelley Powers, 武舎 広幸, 武舎 るみ: 本
ttp://www.amazon.co.jp/dp/487311425X/

Googleブックスで第一版を軽く読んでみたが、かなり丁寧に解説されている。
ただ、ねえ。丁寧すぎると読むのが面倒になったり用語がわからなくなって四苦八苦したりすることもあるので難しいところではある。
逆に説明が平易だと気をつけるべき点に触れられていないために誤解が生じる可能性があるのだが…。
何にしても根気が必要だと思う。

初めてのJavaScript - Google ブックス
ttp://books.google.co.jp/books?id=om2V2n9zw0oC&printsec=frontcover&dq=%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEJavaScript&hl=ja&ei=eFbETMnjNIO0vgPazoy1CA&sa=X&oi=book_result&ct=result&resnum=1&ved=0CDkQ6AEwAA#v=onepage&q&f=false

# P22 で「Unicodeエスケープシーケンスに対応していないブラウザもあるので使わない方がよい」と書かれているのがやや気になるが、第二版では修正されているだろう、多分。
Name_Not_Found [sage] 2010/10/25(月) 01:17:00 ID:???
初心者にオライリー本薦めるのはどうかしてると思うわ
Name_Not_Found [sage] 2010/10/25(月) 01:29:41 ID:???
深く理解している人ほどオライリー本を勧める傾向があるような…。(なんとなくだけど)
Name_Not_Found [sage] 2010/10/25(月) 01:36:08 ID:???
オライリーのJavascript 第5版はいいと思うけどサンプル少ない
Name_Not_Found [sage] 2010/10/25(月) 01:37:39 ID:???
オライリー本以外でお勧めって何があるんだろう?
Name_Not_Found [sage] 2010/10/25(月) 01:46:12 ID:???
オライリーは必要に応じて読む参考書であって
必要なことを必要なだけ教える教科書ではない
Name_Not_Found [sage] 2010/10/25(月) 02:12:55 ID:???
『JavaScript: The Good Parts』は参考書だと思うが、『JavaScript 第5版』は教科書的な感覚があるな。
概ね、ES3 ( ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ ), DOM ( ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/object-index.html ) に準じた解説だと思う。
Crockford氏の著書は明らかに独特の思想に基づいた説明だが…。(ES3 違反だからお勧めできない、という論調ではない)

オライリー本以外のお勧めは思いつかなかった。(最近は書籍よりも仕様を読むことが多いからなあ)
というか、皆(俺も含めて)オライリー本の話しかしないのなw
結局、お勧めできる入門書はないってことなのか…。
572 [sage] 2010/10/25(月) 02:21:26 ID:???
誤解を招く書き方だったので補足。

> Crockford氏の著書は明らかに独特の思想に基づいた説明だが…。(ES3 違反だからお勧めできない、という論調ではない)
Crockford氏は ES3 に適合した上で独特の思想を持っていると思う。
思想の是非はともかく、明らかに間違ったコードは書かない人なので同書がお勧めされるのも理解できる。
全てをその思想に委ねると信者と呼ばれてしまうかもしれないが…。

# ES3 を読めるようになると、Crockford氏がお勧めする理由が思想なのか ES3 に適合しているからなのか判断できて面白い。
Name_Not_Found [sage] 2010/10/25(月) 02:36:42 ID:???
くろちゃんは動画で見るといいさ
Name_Not_Found [sage] 2010/10/25(月) 04:09:21 ID:???
くろちゃんの本は二度おいしい
初心者はあれを読んで感心し、中級者はあれにつっこみを入れる

サイ本を勧める人が多いのは、体系的な記述があれしかないから
所々微妙な部分もあるが、それを訂正しつつ読めば経験値2割増し
Name_Not_Found [sage] 2010/10/25(月) 04:52:14 ID:???
基本的なことならMDCで十分
Name_Not_Found [sage] 2010/10/25(月) 10:09:35 ID:???

今すぐ使える簡単プラスがこうなったわけか

PerlとJavaはわければ合ってそうだしくっつけ方が間違ってるぞ
Name_Not_Found [sage] 2010/10/25(月) 10:30:21 ID:???
My UNIX Series の久野先生の本は判りやすい。
自分はこれで勉強した。
Name_Not_Found [sage] 2010/10/25(月) 14:44:10 ID:???
UNIX seriesのは昔から評判良いよね
見たことないんで、どんな感じか知りたい
Name_Not_Found [sage] 2010/10/25(月) 17:33:31 ID:???

これかな?
今から新品で手に入れるのは難しそうだね…。

Amazon.co.jp: 入門 JavaScript (My UNIX Series): 久野 靖: 本
ttp://www.amazon.co.jp/dp/4756138713
Name_Not_Found [] 2010/10/25(月) 18:11:54 :1vVZBzXV
見本になりそうなオブジェクト指向型のjavascriptのソースコードがあったら教えてください。
Name_Not_Found [sage] 2010/10/25(月) 18:49:29 ID:???

これこれ。今となっては内容がちょっと古いけど。


ライブラリに頼らないDOM操作の方法を詳しく解説している。
他にも、初めての人向けに文法や標準オブジェクトの解説、
果てはLiveConnectでJavaと連携する話まで載っている。
で、小さくてそんなに厚くない。
Name_Not_Found [] 2010/10/25(月) 20:45:10 :Cn4SDtKN

function Mihon(){
    this.a = 0;
}
Mihon.prototype = {
    increment : function(){
        this.a++;
    }
};

var m = new Mihon();
m.add();

こんなんでいいですか…///
Name_Not_Found [sage] 2010/10/25(月) 20:46:44 ID:???
例は短すぎても長すぎても飲み込みにくい
Name_Not_Found [sage] 2010/10/25(月) 20:50:30 ID:???
ほとんどの例はオブジェクト指向ではなくただの構造体だしな
Name_Not_Found [sage] 2010/10/25(月) 21:22:34 ID:???
addが無い件についてw
Name_Not_Found [sage] 2010/10/26(火) 00:09:28 ID:???

var p = Object.create(Object.prototype, {
  a: {
    value: 0,
  },
  add: {
    get: function() { return this.a; },
    set: function(v) { this.a += v; },
    enumerable: false,
    configurable: false
  }
});

var m = Object.create(p);
m.a; // 0
m.add = 10;
m.a // 10;
Name_Not_Found [sage] 2010/10/26(火) 02:35:13 ID:???

これはないな
Name_Not_Found [] 2010/10/26(火) 02:51:14 :1svj5xni
質問です。お願いします。xhtmlの<div>に直接書いていたeventハンドラを外部に分離しました。

JavaScript
------------------------------
function Test() {
var n = document.getElementsByTagName('div')[0];

n.onmouseover = function() {
var s = event.target||event.srcElement;
var k = s.tagName;
alert(k);
}
}

$(function() {
Test();
});
------------------------------

xhtml
------------------------------
<div>
<p><img src="001.png" width="128" height="128" /></p>
</div>
------------------------------

n.onmouseover後のfunction()ですが、FireFoxで動きません。
function()をfunction(event)にするとFireFoxで動くようになりますが、IEで動かなくなります。
FireFox、IE両方動くようにするにはどういう記述にしたらいいでしょうか?
Name_Not_Found [sage] 2010/10/26(火) 02:59:49 ID:???
マルチ乙
何回目か知らんがいいかげんにした方がいいぞ
Name_Not_Found [sage] 2010/10/26(火) 04:18:38 ID:???
いつだったかマルチ指摘したら、「今度はマルチと認識されないように質問します」ってレスして去っていった質問者がいたな…。
Name_Not_Found [sage] 2010/10/26(火) 05:25:09 ID:???
「別の質問をしているつもりでした」と詫びるんだよな
Name_Not_Found [] 2010/10/26(火) 07:45:29 :1svj5xni
マルチだけど時間もないしさ回りくどい回答ばっかもらっててもしょーがないんだよね。
Name_Not_Found [sage] 2010/10/26(火) 08:38:07 ID:???
以後、スルーで(爆笑)
Name_Not_Found [] 2010/10/26(火) 09:15:47 :1svj5xni
できちゃった(爆笑)

function Test() {
var d = document.getElementsByTagName('div');

for (var i = 0; i < d.length; i++) {
try {
d[i].addEventListener('mouseover', function(event) {
var t = event.target||event.srcElement;
var n = t.tagName;

alert(n);
}, false);
} catch (e) {
d[i].attachEvent('onmouseover', function() {
var t = event.target||event.srcElement;
var n = t.tagName;

alert(n);
});
}
}
}

$(function() {
new Test();
});
Name_Not_Found [sage] 2010/10/26(火) 13:06:54 ID:???

素晴らしい出来栄えだな(爆笑)
Name_Not_Found [sage] 2010/10/26(火) 15:11:47 ID:???
これで就職活動する気らしいが、俺が面接担当なら即落とすね
Name_Not_Found [sage] 2010/10/26(火) 15:19:41 ID:???
無駄が多すぎるコードだな
Name_Not_Found [sage] 2010/10/26(火) 15:21:24 ID:???
爆笑ww
Name_Not_Found [sage] 2010/10/26(火) 16:00:57 ID:???
良く理解しないで書いている(コピペ?)ことがわかる
Name_Not_Found [sage] 2010/10/26(火) 16:13:09 ID:???
ただtry, catchが使いたかっただけじゃね?
Name_Not_Found [sage] 2010/10/26(火) 17:01:13 ID:???
イベントハンドラを外部ファイルに分離させた時のevent.target||event.srcElement... - Yahoo!知恵袋
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1049315910

自己解決したんじゃなかったのか
Name_Not_Found [sage] 2010/10/26(火) 17:21:49 ID:???
いや、別の所でeventオブジェクトをちゃんと使えと言われて
数日勉強したあげくに出てきたのが、上のコード
try〜catchは最初からあったから、結局スタートに戻っただけ

こんなのを回答のコピペと言われたら、さすがに回答者の名誉に関わる(爆笑)
Name_Not_Found [sage] 2010/10/26(火) 17:47:44 ID:???

マルチポストするなら、マルチポスト先のURLを書いてくれ。自己中心的だぞ。
Name_Not_Found [sage] 2010/10/26(火) 17:49:23 ID:???
イベントハンドラを外部ファイルに分離させた時のevent.target | OKWave
ttp://okwave.jp/qa/q6276157.html
Name_Not_Found [sage] 2010/10/26(火) 17:57:20 ID:???
なぜXHTMLなのに getElementsByTagName なんだ…。
Name_Not_Found [sage] 2010/10/26(火) 18:20:08 ID:???
var t = event.target||event.srcElement;
Name_Not_Found [sage] 2010/10/26(火) 19:04:51 ID:???
Adobe MAX 2010。HTML5とjQueryに対応したWebアニメーションツール「EDGE」などを発表
ttp://www.publickey1.jp/blog/10/adobe_max_2010html5jquerywebedge.html
Name_Not_Found [sage] 2010/10/26(火) 19:05:31 ID:???
Adobe製品高いからイラネ
Name_Not_Found [sage] 2010/10/26(火) 19:22:03 ID:???
どれどれ
Name_Not_Found [sage] 2010/10/26(火) 19:22:30 ID:???
JavaScriptはスレがいっぱいあるのに
JScriptのスレが殆ど無いのは何でなんじゃろうね。
Name_Not_Found [sage] 2010/10/26(火) 19:31:33 ID:???
>HTML5とjQueryに対応した
どっちも仕様が固まってないか存在しないのに・・・
変更されたら買い直すかパッチ当てるかすんの?


IE9はJavaScriptエンジンって言われてたな
JScript消えんじゃね
Name_Not_Found [] 2010/10/26(火) 20:16:10 :1svj5xni
マルチポストにストーカー並の執念を燃やしている方がいらっしゃいますね。きんもー☆
Name_Not_Found [sage] 2010/10/26(火) 20:16:52 ID:???
規格化して実質独占したいんだろうな
早めに発表したもん勝ちみたいな
Name_Not_Found [sage] 2010/10/26(火) 20:17:38 ID:???

後方互換考えると消すって選択肢はないんじゃない
IEというブランド名を捨てればまた別だけど
Name_Not_Found [sage] 2010/10/26(火) 20:23:51 ID:???
後方互換性という言葉ほど憂鬱なものはないよな
Name_Not_Found [] 2010/10/26(火) 20:34:26 :1svj5xni
マルチの件も終った事だし新しい質問しまっしゅ☆
JavaScript
----------------------------------------------------------------------
orderCoverRO.prototype = {
setup : function() {
this.elem = document.getElementsByTagName('ul');
for (var i = 0; i < this.elem.length; i++) {
this.elem[i].onmouseover = function(e) {
var ev = e || window.event,n = ev.target || ev.srcElement,t = n.tagName,s = n.parentNode,m = s.parentNode,k = m.parentNode,i = 0;
if (!(t != 'A')) {
while (s = s.previousSibling) {
if (s.nodeType == 1) i++;
}
var w = i + 1;
if (k.firstChild.src.match(/.\.png/) != w) {
k.firstChild.src = k.firstChild.src.replace(/.\.png/, w + '.png');
}
}
}
}
}
}
$(function() {
var v = new orderCoverRO();
});
----------------------------------------------------------------------
Name_Not_Found [sage] 2010/10/26(火) 20:35:49 ID:???

せっかく忘れようとしてんのに思い出させんなよ、泣けてくるじゃねぇか・・・
Name_Not_Found [] 2010/10/26(火) 20:38:27 :1svj5xni
【質問内容】
■気に入らない箇所
@変数が多すぎる
A効率化できないか
■無視しなければならない箇所
@正規表現のゆるさ(今勉強中)
AjQueryが入ってるとか細かいところ
お願いします☆
Name_Not_Found [sage] 2010/10/26(火) 20:40:17 ID:???
ドキュメント内の特定の条件に合ったノードすべてに対して処理を施す場合
forで回すのが一番いいんですか?速さ?とか
Name_Not_Found [sage] 2010/10/26(火) 20:41:18 ID:???
30代にもなってこんな知識もセンスもないコードしか書けないならあきらめろ
619 [sage] 2010/10/26(火) 20:43:48 ID:???
俺javascript始めて1ヶ月だから知識は当然ない☆
Name_Not_Found [sage] 2010/10/26(火) 20:44:08 ID:???

速さならXPathが最速と言われる
querySelectorAllは案外速くないらしい
Name_Not_Found [sage] 2010/10/26(火) 20:53:55 ID:???
querySelectorのほうが書きやすい
こういった要素を子に持つ要素、とか指定できないけど
あとテキストノードも取得できないんだっけ
Name_Not_Found [sage] 2010/10/26(火) 21:15:13 ID:???

jscript9.dll...
Name_Not_Found [sage] 2010/10/26(火) 21:16:02 ID:???
jQueryはセレクタを独自拡張しておきながら
接頭辞もつけずにしれっとしている所がいやらしい
バージョン上がるとまた変なのが追加されんだろきっと
Name_Not_Found [sage] 2010/10/26(火) 21:59:31 ID:???
嫌なら使うな
Name_Not_Found [sage] 2010/10/26(火) 23:19:11 ID:???
いや俺が使わないのは構わないが
実行効率とか保守性とか考えずに使いまくる馬鹿がいるんだよ
Name_Not_Found [sage] 2010/10/26(火) 23:27:17 ID:???
querySelectorAllで取得した値って変更反映されるんだっけ?
Name_Not_Found [sage] 2010/10/26(火) 23:31:21 ID:???

StaticNodeList を返すのが正式な仕様だが、実装によっては Live な NodeList を返す。
Name_Not_Found [sage] 2010/10/27(水) 00:02:43 ID:???
え、live NodeListを返すもんあるの?
non-live NodeList (昔のStaticNodeList) はノードがツリーから切り離されても変わらないってことで
ノードの変更自体は反映されてるが、勘違いしてないか?
630 [sage] 2010/10/27(水) 00:22:15 ID:???

ごめん。
仰るように、「StaticNodeList = not live NodeList」と勘違いしてた…。
Selectors API Level 2 準拠なら、"not-live NodeList" を返し、IE8 だけ StaticNodeList を返す動作だった。

6.1. The NodeSelector Interface
ttp://www.w3.org/TR/selectors-api/#nodeselector
ttp://www.w3.org/TR/selectors-api2/#nodeselector
StaticNodeList Collection
ttp://msdn.microsoft.com/en-us/library/dd347147%28v=VS.85%29.aspx
JavaScriptのDOM Core基礎 - 三等兵
ttp://d.hatena.ne.jp/sandai/20100823/p1#006

live な NodeList を返す実装があるというのはどこかで見たような記憶があるんだけど、あやふやだし記憶違いかも…。
630 [sage] 2010/10/27(水) 01:23:48 ID:???
どんなに探しても、live になる実装の資料が見つからなかった。
やはり、記憶違いだったみたいだ。すまなかった…。
Name_Not_Found [sage] 2010/10/27(水) 02:38:39 ID:???
StaticNodeListはSelectorsAPI草案途中にあったインターフェイスな
途中でliveでないNodeListに変わった
Name_Not_Found [sage] 2010/10/27(水) 12:52:56 ID:???
document.getElementByIdのdocumentって部分は何ていう名称なんでしょうか?
このdocumentって部分には他にもどのようなものがありますでしょうか?
Name_Not_Found [sage] 2010/10/27(水) 15:44:02 ID:???

グローバルオブジェクト window の document プロパティ。グローバル変数とも言う。
ttp://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#the-window-object
630 [sage] 2010/10/27(水) 17:35:25 ID:???

補足ありがとう。
「Working Draft 21 December 2007」までは StaticNodeListインターフェース があったんだね。

2.2. The StaticNodeList Interface - Selectors API
ttp://www.w3.org/TR/2007/WD-selectors-api-20071221/#staticnodelist
Name_Not_Found [sage] 2010/10/27(水) 18:35:35 ID:???
Greasemonkeyのユーザスクリプト内にfunction test(a) {alert(a);}があって、
対象ページに<a href="javascript:test(1);void(0)">test</a>があるとき
testリンクを押してもtest()が実行されないのはそういうものなんでしょうか?
testリンクのところにidつけてaddEventListenerすればいいのですが
addEventListenerが増えてしまって困っています。
そもそもaddEventListenerが増えてはいけないのかすらわかりませんが
他にうまい方法があればおしえてください。
よろしくお願いします。
Name_Not_Found [sage] 2010/10/27(水) 18:40:49 ID:???
どうしても実現したいなら
(function(){
  unsafeWindow.test = function(a){
    /* expression */
  }
})();
ただし既存のtest関数は置き換えられる
Name_Not_Found [sage] 2010/10/27(水) 19:18:19 ID:???

試してみたらできました。
unsafeWindow便利ですね
ありがとうございました。
Name_Not_Found [sage] 2010/10/27(水) 22:32:48 ID:???
その名の通りunsafeWindowは安全ではないのであまり使わない方がいい
Name_Not_Found [sage] 2010/10/28(木) 00:37:22 ID:???
質問なのですが、XMLHttpRequestで取ってきたHTMLに対して、
getElementByIdで要素を取得したいのですが、
隠しウィンドウや隠しFrameとかに読み込ませてdocumentから
操作するしかないのでしょうか?

単純に何かのオブジェクトを生成して読み込ませてから
Javascriptで要素を取得することはできませんか?
Name_Not_Found [sage] 2010/10/28(木) 00:39:10 ID:???
DOM使え
Name_Not_Found [sage] 2010/10/28(木) 00:46:19 ID:???
DOMで調べてみたのですが、XMLの操作やdocument前提の話しか見つかりませんでした…。
Name_Not_Found [sage] 2010/10/28(木) 00:57:22 ID:???

DOMParser, LSParser, createHTMLDocument, ActiveXObject

お好きな方法をどうぞ。
Name_Not_Found [sage] 2010/10/28(木) 01:30:45 ID:???

おお!なんか出来そうな予感が…!
ありがとうございました。
Name_Not_Found [sage] 2010/10/28(木) 01:50:50 ID:???

むしろ addEventListener 使うほうがいい
あとGreaseMonkeyってjQuery使えんこともないよ

つーかGreaseMonkeyって既存のページを改造するもんだから、
自分が管理してるページなら存在意義があんまりないのでは?
Name_Not_Found [sage] 2010/10/28(木) 09:10:06 ID:???
<head>タグに
<meta http-equiv="Content-Script-Type" content="text/javascript" />
と入れないでも
<body>
<script type="text/javascript">
alert("こんばんは")
</script>
</body>

でちゃんと表示されたのですが

<meta http-equiv="Content-Script-Type" content="text/javascript" />
って別に入力しないでもいいのでしょうか?
Name_Not_Found [sage] 2010/10/28(木) 09:41:00 ID:???

そのmetaないしhttpヘッダは「scriptタグでtypeを指定しない場合に
javascriptとして解釈してもらう」ためのものでは。そして大抵の
ブラウザではなんにも指定しない場合のデフォルトがjavascriptに
なっていると思う。
Name_Not_Found [sage] 2010/10/28(木) 09:42:35 ID:???

ってことは念のために記述したほうが良いという事ですね
ありがとうございました!
Name_Not_Found [sage] 2010/10/28(木) 13:09:57 ID:???
onclick属性とか用じゃないの?
type属性は必須だし
Name_Not_Found [sage] 2010/10/28(木) 14:47:14 ID:???
申し訳ない、なんか勘違いしていた私。
Name_Not_Found [] 2010/10/28(木) 15:55:46 :MkvlcxxM
getElementByIdのように、classで要素を取得できないんですかね?
Name_Not_Found [sage] 2010/10/28(木) 16:00:55 ID:???

HTML4.01 ではscript要素の規定値が text/javascript でないため、その指定がないと HTML-lint ではエラーになる。
HTML5 では不要…というか未定義。
Name_Not_Found [sage] 2010/10/28(木) 16:03:17 ID:???

getElementsByClassName
Name_Not_Found [sage] 2010/10/28(木) 16:30:39 ID:???

IEだったらきかないよ
Name_Not_Found [sage] 2010/10/28(木) 16:41:00 ID:???
効かないも何もそれ先行実装
Name_Not_Found [sage] 2010/10/28(木) 16:44:06 ID:???

が656のため、未対応ブラウザ用に自分で取得する機能を書くか、下のなどを導入することになる
ttp://www.html5.jp/library/dom_getElementsByClassName.html

ちなみに導入してみたら('A`)だったので、自分で書いた記憶がある
Name_Not_Found [sage] 2010/10/28(木) 16:44:26 ID:???

HTML-lintはscript要素もトリガになるのか
イベント属性を使わないならデフォルトスクリプト宣言は必要ないように思えるけど


IE8ならdocument.querySelectorAll('.hoge')
それ以前も対象にするなら全要素ループでチェック
Name_Not_Found [sage] 2010/10/28(木) 16:55:25 ID:???

一応。
・戻り値はliveなNodeListではなく、ただの配列なので注意
・IE8でも全要素ループになるから遅い
655 [sage] 2010/10/28(木) 17:00:09 ID:???
getElementsByClassName が IE8- に対応しないのはわかってるが、「getElementByIdのように、classで要素を取得するメソッド」といえば getElementsByClassName だと思う。
getElementsByClassName は IE9 からサポートされる。

Internet Explorer 9 Beta 開発者ガイド
ttp://msdn.microsoft.com/ja-jp/ie/ff468705.aspx#_DOM_L2_HTML
Name_Not_Found [sage] 2010/10/28(木) 17:04:58 ID:???
あ、querySelectorAllもliveなNodeListじゃない(>>629-)
一応。
655 [sage] 2010/10/28(木) 17:08:06 ID:???


> ・戻り値はliveなNodeListではなく、ただの配列なので注意
non-live には同意するが、配列だろうか…?

var p = document.querySelectorAll('p');
console.log(Object.prototype.toString.call(p)); // "[object NodeList]"
console.log(p instanceof Array); // false

戻り値は non-live な NodeList だと思ってた。
655 [sage] 2010/10/28(木) 17:11:18 ID:???

こうすれば良かった。

console.log(p instanceof NodeList); // true

やはり、戻り値は NodeListインターフェース のオブジェクトな気がする。
Name_Not_Found [sage] 2010/10/28(木) 17:12:07 ID:???

あいや、のスクリプトの話<ただの配列
655 [sage] 2010/10/28(木) 17:15:51 ID:???

申し訳ない、アンカー先を読み間違えていたようだ…。
Name_Not_Found [sage] 2010/10/28(木) 17:18:56 ID:???
non-liveってあとから追加や削除をしても取得したときの情報のままってこと?
変更後に再度取得しなおせば変更後の情報が得られるの?
Name_Not_Found [sage] 2010/10/28(木) 17:35:03 ID:???

その通り。

getElementsByClassName()の落とし穴
ttp://www.insuite.jp/blog/archives/80
Name_Not_Found [sage] 2010/10/28(木) 17:43:25 ID:???
のリンク先では non-live にするために配列化しているが、live の挙動を利用すればもっと簡単に書ける気がした。

---
<style type="text/css"><!--
.change { color: #ff0000; }
--></style>
</head>
<body>
<div class="test">壱</div>
<div class="test">弐</div>
<div class="test">参</div>
<script type="text/javascript"><!--
(function () {
 var elements = document.getElementsByClassName('test');
 while (elements.length) {
  elements[0].className = 'change';
 }
})();
//--></script>
---
668 [sage] 2010/10/28(木) 17:58:50 ID:???

ごめん。微妙に間違っていたっぽい。

---
<div class="test">壱</div>
<div class="test">弐</div>
<div class="test">参</div>
<script type="text/javascript"><!--
(function () {
 function byClassName () {
  var elements = document.getElementsByClassName('test');
  while (elements.length) {
   elements[0].style.color = '#ff0000';
   elements[0].className = 'change';
  }
 }

 var elements = document.querySelectorAll('.test');
 console.log(elements[0].style.color); // ""
 byClassName();
 console.log(elements[0].style.color); // "rgb(255, 0, 0)"
})();
//--></script>
---

live か non-live かっていうのは NodeListインターフェース (わかりやすいところではlength) のみに影響するらしい。
element.style.color など Elementインターフェースの変更は即反映される。

# 自信はないので、鵜呑みにしないで欲しい。(えらい人の解説に期待…。)
Name_Not_Found [sage] 2010/10/28(木) 19:20:56 ID:???

NodeListからDOMが消える前提なのがおかしい。
場合によってはtestクラスを残そうとしたりすると無限ループに陥る。
素直に配列(NodeListだけど)の後ろからループ回せばいいじゃん。
要素の順序が勝手に入れ替わったりしないことは保証されてるし。

(function test() {
  var elements = document.getElementsByClassName("test");
  for (var i = elements.length - 1; i >= 0; i--) {
    var e = elements[i];
      e.className = "change";
      e.style.color = "#ff0000";
  }
})();
670 [sage] 2010/10/28(木) 21:04:58 ID:???

指摘ごもっとも。
後ろからループ回せば問題ないということに気が付かなかった…。

# デクリメントすると <!-- comment -->内に置けないので、外部スクリプト化するなり、コメントをなくすなりする必要はあるかな。
Name_Not_Found [sage] 2010/10/28(木) 21:12:34 ID:???
画像のうえにテキストを表示させる方法を教えてください。
一応自分でも挑戦してみたのですが、下の方法だと
画像がクリッカブルじゃなくなってしまいます。(FireFoxで動作確認しています)

function add_note(obj, note) {
var elem = document.createElement("span");
elem.innerHTML = note;
elem.style.position = "absolute";
elem.style.left = obj.offsetLeft;
elem.style.width = obj.width;
elem.style.top = obj.offsetTop;
elem.style.height = obj.height;
var objBody = document.getElementsByTagName("body").item(0);
objBody.appendChild(elem);
}

<a href="..."><img src="..." onload="add_note(this, 'aaaaa')"></a>
673 [sage] 2010/10/28(木) 21:14:46 ID:???
書き忘れましたが、画像は原寸ではなくて縮小表示させたかったので、imgタグを使っています。
Name_Not_Found [sage] 2010/10/28(木) 21:16:36 ID:???

i-- → i-=1じゃね。


js以前の問題に見える。<a>でくくらないってのはだめなのか?
Name_Not_Found [sage] 2010/10/28(木) 21:19:51 ID:???
今どきJSのコードをコメントで囲う必要ってあるの?
コードを表示してしまうのって携帯ぐらいだと思ってた。
673 [sage] 2010/10/28(木) 21:30:29 ID:???

<a>でくくらずに、imgタグのonClickにopen("...") と書いてみたんだけれど
ブラウザのポップアップブロックに引っかかってちょっと上手くないですねぇ。
いい方法あるかなぁ。
Name_Not_Found [sage] 2010/10/28(木) 21:45:14 ID:???

5年前の携帯でもscriptとnoscriptを認識するぞ・・
675 [sage] 2010/10/28(木) 21:49:23 ID:???
あ、ごめん。
「画像がクリッカブルになってしまいます。」って読み間違えてた。

1,z-index指定。(で出来るはず。)
2,<a href="..."><span style="ほにゃらら">aaaa</span><img src="..."></a>
jsでやる必要がなければ2でいいと思うけどな。jsがoffの人とかも見れるし。
Name_Not_Found [sage] 2010/10/28(木) 21:53:03 ID:???
img要素にtitle属性つけとけば2,3秒で指定した文字がツールチップで出てくるよね
Name_Not_Found [sage] 2010/10/28(木) 23:05:57 ID:???

XHTMLに厳密に従うと、本当にコメントになってスクリプトが無い事になるから
今時ならもうやらん方がいい。
Name_Not_Found [sage] 2010/10/28(木) 23:23:39 ID:???

そーなのかーって思ったけど、全部jsファイルで外部化すればいんじゃね?って思った
とりあえず今後は<!--を外すことにする
Name_Not_Found [sage] 2010/10/28(木) 23:24:24 ID:???

ドコモ携帯はstyle要素の中身すら晒してしまうで
Name_Not_Found [sage] 2010/10/28(木) 23:27:37 ID:???

ブラウザとしてなら必要ないかもしれないが、他のパーサー通すときにコメントアウトしていないと困るパターンはある。
XHTMLなら外部スクリプト化するか、CDATAセクションを使うべき。
XMLパーサーを通した時にどのようなノードを生成するか考えてみるといい。
684 [sage] 2010/10/28(木) 23:39:00 ID:???
XHTML文書は <>& をエスケープしてもいいが、メンテが面倒になる。

<p>foo</p>
<script type="application/javascript">
(function () {
 var p = document.getElementsByTagName('p');
 for (var i = 0, l = p.length; i &lt; l; i++) {
  p[i].className = 'foo';
 }
})();
</script>

# "Content-Type: text/html" を出力するなんちゃってXHTML文書はXHTMLにする意味があるのか、と思うこの頃…。
Name_Not_Found [sage] 2010/10/28(木) 23:47:21 ID:???
id付きの要素がスクリプトによってドキュメントに追加されるのですが
追加される以前にdocument.getElementByIdで取得しようとしてもnullになります
追加されたかどうか判断するにはどうすればいいですか?
nullじゃなくなるまでずっとループを回すんですか?
Name_Not_Found [sage] 2010/10/28(木) 23:49:03 ID:???
ところで、「今時 = XHTML」なのかな?
docomoなどの携帯電話で扱われるXHTML文書は XHTML 1.x や XHTML5 とかけ離れた仕様だと思っていて、それを今時というのには抵抗があるのだが…。
Name_Not_Found [sage] 2010/10/28(木) 23:51:37 ID:???

ちょっと何をやりたいのかよくわからない。
必要な処理を行うときに getElementById の返り値をみるだけだと思うんだけど…。
Name_Not_Found [sage] 2010/10/29(金) 00:03:47 ID:???
別のスクリプトによって、任意のタイミングでそのidの付いた要素がドキュメントに挿入されます
挿入されたその要素に対して何か操作をしたいので
その要素が挿入されたかどうかはどうやって判断すればいいのかなと
Name_Not_Found [sage] 2010/10/29(金) 00:03:59 ID:???
XHTMLはオワコン
Name_Not_Found [sage] 2010/10/29(金) 00:05:24 ID:???
,689
getElementById は該当要素がなかったときにnull を返す。
操作時に getElementById の戻り値が null でなかったら処理をするようにすればいい。
Name_Not_Found [sage] 2010/10/29(金) 00:12:23 ID:???
つまりnullじゃなくなるまでループを回すってことですか?
691 [sage] 2010/10/29(金) 00:20:12 ID:???

終わってないよ!XHTML5 が残ってるよ!(HTML5 の方が注目度高いだろうけど。)
# XHTML書く人はIEなんか無視すればいいと思う。IE無視できない人はHTML書けばいいと思う。


idの付いた要素をドキュメントに挿入したタイミングで処理を行えばいいじゃなイカ。
処理のタイミングの問題としか思えないのにそれに類する情報がないので何とも言えない。
コードかURLを開示してもらうのが手っ取り早いかと。

あと、連投するならレス番をつけないと流れを追いづらい。
Name_Not_Found [sage] 2010/10/29(金) 00:28:35 ID:???

たとえばJavaScriptでFlashを埋め込んで、
Flashのロードが完了したらJavaScriptからFlashを操作するときとか、
俺はsetTimeoutで100〜200msごとくらいにロード状況をチェックして、
ロード完了時に操作を受け付けるようにしてる。
で、30秒〜1分くらい経ってもロードできないときは中断してエラーを吐くようにする。
686 [sage] 2010/10/29(金) 00:43:36 ID:???
どうもありがとうございます
setIntervalじゃなくてsetTimeoutを100〜200msごとくらいに使うんですね
Name_Not_Found [sage] 2010/10/29(金) 00:54:21 ID:???
setIntervalは時間がきたら有無を言わさず処理しちゃうから、
処理が重複するリスクがあったりする
こういう場合はsetTimeoutで一回一回チェックしたほうがいいと思うよ
Name_Not_Found [sage] 2010/10/29(金) 01:21:20 ID:???
どうでもいい話だが、をイカ娘が打ってると思うとなごんだw
Name_Not_Found [sage] 2010/10/29(金) 01:23:12 ID:???
DOMNodeInsertedってそういう時に使うんじゃないの?
Name_Not_Found [sage] 2010/10/29(金) 05:26:58 ID:???
jQueryを使って文字列置換をしているのですが、

$(function(){
 var tmp = $(".class0");
 tmp.html(tmp.html().replace(/aaa/ig, "bbb"));
})

この aaa 部分を変数を使って指定するにはどうしたら良いでしょうか?
Name_Not_Found [sage] 2010/10/29(金) 06:30:47 ID:???
var arr = [/aaa/];
alert(arr[0]);
Name_Not_Found [sage] 2010/10/29(金) 06:32:27 ID:???
↑ミスりました
Name_Not_Found [] 2010/10/29(金) 06:36:13 :FYx7Z3IH

aaaの部分だけを指定する方法はわからないけど

$(function(){
 var tmp = $(".class0");
 var reg = /aaa/ig; 
 tmp.html(tmp.html().replace(reg, "bbb"));
})

でどうかな(動作未確認)
Name_Not_Found [sage] 2010/10/29(金) 06:39:10 ID:???
new RegExp("aaa")
Name_Not_Found [sage] 2010/10/29(金) 08:52:57 ID:???

var a = 'aaa';
var r = RegExp(a, 'ig');
$('.class0').each(function(){
var target = $(this);
target.html(target.html().replace(r, "bbb"));
});
Name_Not_Found [sage] 2010/10/29(金) 16:12:31 ID:???
java scriptの動作がいまいち分からないんですが。
ブラウザがhtmlの中に書かれたjava scriptを
解釈して表示するまでの流れ(?)みたいなのを教えてくれませんか?

document.write("hoge");
とかしてるときに、なにがどう動いてるんでしょうか?
Name_Not_Found [sage] 2010/10/29(金) 16:15:17 ID:???
ブラウザに積まれてるJavaScriptエンジンが構文解析を行いスクリプトを実行している
Name_Not_Found [sage] 2010/10/29(金) 16:23:55 ID:???

ブラウザの、ソースを表示するで出てくるソースと
java scriptで動いてるのとの関係がいまいちどんな感じか分からないんですが.
Name_Not_Found [sage] 2010/10/29(金) 16:35:53 ID:???
エスパーすぎる・・・
Name_Not_Found [sage] 2010/10/29(金) 16:56:50 ID:???

ブラウザは受け取ったHTMLのタグやテキストをDOMっつー構造に再解釈する。
それを元にウィンドウ上に見えるように再構築する(レンダリング)。
それと別にブラウザはJavaScriptも解釈して実行する。
JavaScriptはレンダリング前のDOMに介入できる。
DOMが変更されるとブラウザはそのDOMを元に再レンダリングする。

大雑把に言うとこんな感じかと。
709 [sage] 2010/10/29(金) 17:12:31 ID:???

ちなみにソースはレンダリングやJavaScript実行前の状態なので影響を受けてない。
Chromeの「要素を検証」とかで見れば影響後の状態も見れる。
Name_Not_Found [sage] 2010/10/29(金) 17:13:28 ID:???
そんな説明がわかるわけもない初心者だろう
Name_Not_Found [sage] 2010/10/29(金) 17:18:58 ID:???
そのレンダリングするエンジンが複数あるおかげで、俺らは困らされるんだがなw
Trident? あーあー聞こえねー。
Name_Not_Found [sage] 2010/10/29(金) 17:35:48 ID:???

わかりました。ありがとうございます。
Name_Not_Found [] 2010/10/29(金) 18:41:34 :b8hKxXSB
Last-Modifiedヘッダを返さないサーバで
XMLHttpRequestを使って更新確認するにはどうすればいいですか?
Content-Lengthヘッダも返しません
Name_Not_Found [sage] 2010/10/29(金) 18:51:10 ID:???
手がかりになるようなヘッダが全くないのであれば
bodyのハッシュでも取っておいて比較するしかないんじゃない
JSだけでやるのは非現実的ですな
714 [sage] 2010/10/29(金) 18:57:10 ID:???
どうもありがとうございますm(_ _)m
Name_Not_Found [sage] 2010/10/29(金) 19:03:22 ID:???
ちょい補足
まず目的のサーバからどんなヘッダが返されているか確認するのが先
Content-LengthだけではなくAgeやEtagが利用できる可能性もある

それがまるでないようであればbody部のハッシュ
(短いならbody部そのもの)を取っておいて比較するしかない
MD5やSHA-1ハッシュをJSだけで計算するライブラリは
ちょっと検索すれば見つかるので
どうしてもJSでやりたければそういうのを使うのも手
Name_Not_Found [] 2010/10/29(金) 19:03:22 :FYx7Z3IH
JavaScriptで更新確認とかする時点で
なんかヘンな気もするが
Name_Not_Found [sage] 2010/10/29(金) 19:04:59 ID:???
どのヘッダを使うにしても「前回の値」をどこに保存しておくかという問題はあるよね
サーバサイドの処理を挟まないのであればCookieかlocalstorageぐらいしかなさそうだけど
Name_Not_Found [] 2010/10/29(金) 19:07:46 :FYx7Z3IH
つかそれ以前に基本的にJavaScriptじゃ目的のサーバーが
クロスドメインなだけでアクセスすらできないでしょ?
Name_Not_Found [sage] 2010/10/29(金) 19:15:07 ID:???
それはまた別の問題だしXHR Level 2ではクロスドメインアクセスできるし
Name_Not_Found [sage] 2010/10/30(土) 12:03:24 ID:???
JSライブラリの話はここでいいの?
Name_Not_Found [] 2010/10/30(土) 13:56:09 :GRMviDwm
初歩的な質問ですまん
サムネイルオンマウスで画像をIDのあるとこに出す
それと同時にその画像の下に文字を出すことは可能ですか?
あとinnerTextとかinnerHTMLとか今どき使っちゃだめ?
Name_Not_Found [sage] 2010/10/30(土) 14:12:36 ID:???

解決しますた…
ほんとすみませんでした
Name_Not_Found [sage] 2010/10/30(土) 14:27:36 ID:???
>innerTextとかinnerHTMLとか今どき使っちゃだめ?
なんで?
Name_Not_Found [sage] 2010/10/30(土) 15:02:20 ID:???
少なくともinnerTextは無いな
Name_Not_Found [sage] 2010/10/30(土) 15:59:57 ID:???
個人的にはinnerHTMLは中身にテキストノードしかない場合に結構使うわ
Name_Not_Found [sage] 2010/10/30(土) 17:03:43 ID:???
自分もその用途にはよく使うけどいかんの?
A要素とかSPAN要素をcreateElementしてinnerHTMLってのはよくやる
(Aの中がIMG要素ならやらないけど)
Name_Not_Found [sage] 2010/10/30(土) 17:19:03 ID:???
まあ先行実装だし非推奨だし
Name_Not_Found [] 2010/10/30(土) 18:05:23 :bx0snPg3
マウスでの mousedown や click、mouseover などでマウスが文字列の上にあるか
どうかというのを知る方法はないでしょうか?

文字列の上でクリックされた場合などはそれを選択しようとしている時だと思うの
で余計なことをしないようにとかいった風に使いなと思っています。

ある要素の上というのではなく、そこのマウス位置に文字列が実在するのかどうか
というのをどう判断して良いのかどうかどうしても思いつかなくて。
Name_Not_Found [] 2010/10/30(土) 18:07:43 :bx0snPg3
日本語ヘンですがすみません
Name_Not_Found [sage] 2010/10/30(土) 18:28:12 ID:???
今時jqueryとかprototypeなんかがあるからinnerTextとかinnerHTMLで自前で実装しちゃダメって聞いてるんだろう
Name_Not_Found [sage] 2010/10/30(土) 22:00:37 ID:???
innerHTML を使うべきでない理由

・遅い
・テキストノード挿入時、HTMLエスケープしなければならない (予期せぬバグが混入する可能性がある)
・インラインJavaScriptとして埋め込むとき <> をUnicodeエスケープする必要がある

ちなみに innerHTML はHTML5で標準化されているので、 は修正した方がいいと思う。
Name_Not_Found [sage] 2010/10/30(土) 22:08:46 ID:???

HTML5はまだ勧告されてないよ
Name_Not_Found [sage] 2010/10/30(土) 22:25:08 ID:???

勧告はとうぶん先だって言われてるが、最近の風潮は「使えるものは使っていく」というもの
勧告されていない≠使えない

そんなに心配ならWHATWGのほうのHTML5仕様にある、各ブラウザの実装対応状況を読めばいい
左側にフキダシみたく出るやつ
あれは実装が行われている場合、テストケースをパスしているかを表している
グレーアウトは未実装、赤は実装済だがテスト通過してない、緑は実装&テスト通過


innerHTMLも、使うシチュエーションによっては利点がある
大量のテキストを一気にDOMノード化したい場合とか
Name_Not_Found [sage] 2010/10/30(土) 22:56:00 ID:???

mousedownとかを紐付ける要素を指定するときに、選択するようなものにしなければいいじゃん。
なんか使い方がおかしい気がする。どうしたいのか書いてみ?
Name_Not_Found [sage] 2010/10/30(土) 22:57:21 ID:???
勧告されてなくても主要ブラウザは実装してるからね
Name_Not_Found [sage] 2010/10/30(土) 23:28:41 ID:???
<a href="#" onmousedown="〜〜〜">
                 ↑これを実行しないようにしたいです
どうすれば良いですか?
Name_Not_Found [sage] 2010/10/30(土) 23:35:44 ID:???
<!-- <a href="#" onmousedown="〜〜〜">〜</a> -->
738 [sage] 2010/10/30(土) 23:37:45 ID:???
そうじゃなくて、元々HTMLに書かれているマウスイベントをJavaScriptで無効化したいんです。
Name_Not_Found [sage] 2010/10/30(土) 23:52:40 ID:???

element.onmousedown = null;
Name_Not_Found [sage] 2010/10/31(日) 00:05:27 ID:???

出来ました!ありがとうございます。

objs.snapshotItem(c).wrappedJSObject.onmousedown = null;
733 [sage] 2010/10/31(日) 00:07:28 ID:???

innerHTML を使いたくなる気持ちはわからなくもないんだけど、innerHTML は文字列処理だからあまり JavaScript に合わない気がしてる。
多量のDOMノードといっても何らかの整形フォーマットがあるわけだし、厳密にフォーマットを定義したい場合はDOMで生成する方が適切だと思える。
(思想の違いだから、他人に押しつけることは出来ないけど)

ただ、もっと簡単にノードを生成できるメソッドは用意されてもいいと思う。
createElement, cloneNode, insertRow ... といろいろあるけど、querySelectorAll のような革新的なメソッドはないんだよね。
出来れば、こんなコードを書いてみたい。

var p = document.createNodeByQuery('p>span.hoge');
Name_Not_Found [sage] 2010/10/31(日) 00:29:12 ID:???
それぐらいならすぐできるけど、他の属性やtextがめんどくさいな。

ってかそういえば前にelement作成用の関数作ったことあったわ。
MakeElement('test', ['table', ['border', '1'],
['tbody', ['id', 'tst_1', 'style.color', 'black'],

みたいな感じ。
733 [sage] 2010/10/31(日) 00:43:16 ID:???

属性に関しては属性セレクタがあるし、ttp://www.w3.org/TR/css3-syntax/ に Syntax があるから作れないことはないと思うけど、「すぐできる」ってすごいな。
師匠と呼ばせてもらってもいいですか?w

テキストノードはCSSセレクタの泣き所だよね。
XPath式 にすれば一気に解決しそうだけど…。
Name_Not_Found [sage] 2010/10/31(日) 01:05:17 ID:???

ZenCodingでそんなセレクタ指定のコーディング方法あったな
ul.tes>li*4ってタイプすると<ul class="tes"><li></li><li></li>・・・</ul>と展開される

おっといいアイディアが思い浮かんだぞ
Name_Not_Found [sage] 2010/10/31(日) 02:27:08 ID:???

wrappedJSObjectってことはMozillaだろ
だったら直接removeAttribute使えよ
わざわざラップされてるのをはがすなよ
738 [sage] 2010/10/31(日) 02:30:27 ID:???

removeAttributeで出来ました。ありがとうございます。
Name_Not_Found [sage] 2010/10/31(日) 04:59:00 ID:???

jsでzencodingチックにDOM作成するプラグイン作った人はすでにいたよ
ttp://sakuratan.biz/jquery/zencoding/


ところでFireFoxもしくはChromeで、JSで作成したファイルを名前つけて保存させるには
location.href = 'data:application/octet-stream,'+encodeURIComponent(text);
みたいにするしかないっすか?
デフォルトのファイル名も付けられると便利なんだけど…
Name_Not_Found [sage] 2010/10/31(日) 11:03:18 ID:???
javascriptの関数実行タイミングが意図したタイミングで動作しません。

<head>
<script language=javascript>
<!--
function send(){
(DBに書き込む処理@asp)
}
-->
</script>
<body>
<form>
<input type=button name=btn onClick="send()" value="次へ" >
</form>
</body>
</html>

「DBに書き込む処理」が、ページを開いたときに実行されていました。
(Page開いた時点でmdb開いてみると既に書き込まれている)

「次へ」ボタンを押したときに初めて実行されて欲しいのですが、
どのように直せばよいのでしょうか。ご教示下さい。
Name_Not_Found [sage] 2010/10/31(日) 11:31:10 ID:???
あなたは実行される順番が分かっていない。「ASPが処理」→「結果のHTML+
JavaScriptができる」→「ブラウザに送られる」→「表示、JavaScript実行」
という順番だからそのように書いたらASP側がまず実行されるのは当たり前。
JavaScriptからサーバに結果を送信して、サーバ側でそれを受け取って
結果を書き込む、というふうにしないと。あとは自力で勉強してね。
Name_Not_Found [sage] 2010/10/31(日) 11:35:38 ID:???
特定の要素が生成されるタイミングで関数を実行したり出来ますか?
Name_Not_Found [sage] 2010/10/31(日) 11:37:20 ID:???
その要素が「どうやって」生成されるかによるんでは。
Name_Not_Found [sage] 2010/10/31(日) 12:23:21 ID:???

理解のあやふやだった部分でした。<サーバ側の処理、クライアント側の処理
submit()し、次ページで書き込み処理することで意図通りに動かすことが出来ました。
どうもありがとうございました。
Name_Not_Found [sage] 2010/10/31(日) 12:50:13 ID:???

onload
Name_Not_Found [sage] 2010/10/31(日) 14:36:36 ID:???
XMLHttpRequestの戻り値として、バイナリデータを受け取って
ブラウザ側でダウンロードダイアログを表示させて
取得したバイナリデータをダウンロードさせることって可能でしょうか

現在YUIのConnection ManagerでXMLHttpRequestを
サーバに投げてバイナリデータを取得する所まで
確認できたのですが、ブラウザ側にコレを認識させる事ができない状態です。

Name_Not_Found [sage] 2010/11/01(月) 09:44:33 ID:???
getComputedStyleで特定のElementのCSS情報を取得できることを
知りましたが、実際に画面に表示されている背景色を取得することはできますか?
Name_Not_Found [] 2010/11/01(月) 09:50:58 :ALFOO/Lp

なにがわからんの?
Name_Not_Found [sage] 2010/11/01(月) 13:43:10 ID:???

要素の重なり等を考慮すると、最終的に表示されている色は、
スタイルシートの情報からは取得できないですね。
質問内容が無謀でした。
Name_Not_Found [sage] 2010/11/01(月) 19:10:44 ID:???
rgba ブレンドファクタ
Name_Not_Found [] 2010/11/01(月) 22:33:30 :ALFOO/Lp

background-imageになっちゃうとアレだけど、
background-colorとopacityでの重なりあいだったら、
計算すれば出るんじゃないかな。
Name_Not_Found [] 2010/11/02(火) 12:56:37 :GakYN8wL
Name_Not_Found [sage] 2010/11/02(火) 13:11:10 ID:???
JavaScript + jQuery + localStorage ってブラウザ間の挙動の違いは大きいですか?
Firefoxで開発したのがChromeで動かなくて凄くショックだったんですが・・・
挙動の違いを解説してるページとかあったら教えてください
Name_Not_Found [sage] 2010/11/02(火) 13:50:10 ID:???
自己解決しましtあ^^
Name_Not_Found [sage] 2010/11/02(火) 16:48:52 ID:???
要素を削除するとき
obj.parentNode.removeChild(obj);
以外の簡単な方法はありますか?
Name_Not_Found [sage] 2010/11/02(火) 17:58:24 ID:???

単一ならそれでいいと思う。
複数ノード入れ替えたいときは replaceChild で入れ替える、とか。
Name_Not_Found [sage] 2010/11/02(火) 19:05:14 ID:???

こういうのを使えるならXMLHttpRequestで取得してからこいうのを使ってDOM操作するほうがいいの?
iframeに読み込むのはよくないの?
jetpackもHTMLをDOM操作するためにiframeに読み込む仕組みを採用しているっぽいですが
> SCRAPBLOG : Jetpack SDK 0.4 の Page Worker API
> ttp://www.xuldev.org/blog/?p=792
Name_Not_Found [sage] 2010/11/02(火) 19:09:50 ID:???
ttp://gist.github.com/658148
Name_Not_Found [sage] 2010/11/02(火) 19:21:00 ID:???
質問です。
リンクにaddEventListener('click',〜
とイベントを追加したのですが、関数の中でreturn false;してもリンク先へ移動してしまいます。
どうすればリンクの本来の動作を止めることが出来ますか?
Name_Not_Found [sage] 2010/11/02(火) 19:27:23 ID:???

Jetpack のAPIを利用することが前提にあるようだが、違うのだろうか。
他に適切なAPIがあるのであれば、勿論それでも構わない。

が、標準の DOM, ECMAScript メソッドを利用することが前提としてあるなら iframe に読み込むのはお勧めしない。
iframe に読み込むということはDOMを document に結びつけるということ。当然、それに関わる処理も働く。
ドキュメントに挿入しなくて済む処理なら、わざわざ iframe に読み込む必要はないと思う。
769 [sage] 2010/11/02(火) 19:27:26 ID:???
すいません。自己解決しました。
Name_Not_Found [sage] 2010/11/02(火) 19:30:43 ID:???

return false; はIEが独自実装した仕様で HTML5 もそれに追従しているが、DOM 本来のやり方ではない。
DOM では event.preventDefault() を規定している。
Name_Not_Found [sage] 2010/11/02(火) 19:31:40 ID:???

自己解決したなら、解決法を書いてほしい。
Name_Not_Found [sage] 2010/11/02(火) 19:36:51 ID:???

iframeだと再レンダリングされて
それが問題ってことですか
わかりました
どうもありがとうございます
769 [sage] 2010/11/02(火) 21:01:08 ID:???

さんの仰られた方法で解決しました。
Name_Not_Found [sage] 2010/11/02(火) 22:06:47 ID:??? ?2BP(111)
ttp://www.moondakota.com/archives/2004/09/23/rss_javascript.html
↑のツールを使い、HPにblogを載せたのですが
文字化けしてしまいます
charsetというのが原因かと思い変更してみたのですが
HP全体が化けてしまいます。対処方を教えてください
ttp://onlinegamenavii.web.fc2.com/index.html
Name_Not_Found [sage] 2010/11/02(火) 22:10:46 ID:???
スレチ
Name_Not_Found [sage] 2010/11/02(火) 22:18:03 ID:??? ?2BP(111)
スレチでしたか、失礼しました
Name_Not_Found [sage] 2010/11/02(火) 22:26:58 ID:???
まぁ、charset の値を UTF-8 に変更したけど、
ファイルを UTF-8 で保存し直していないとかいうオチじゃないかな。
Name_Not_Found [sage] 2010/11/02(火) 22:40:50 ID:???


Webサイト制作初心者用質問スレ part221
ttp://hibari.2ch.net/test/read.cgi/hp/1286969289/309n
Name_Not_Found [sage] 2010/11/03(水) 07:06:46 ID:???
ループ内で関数を定義するコードを書いたところ、JSLint に Don't make function within a loop.
と怒られてしまいました
どういう理由があってこのエラーが出るのでしょうか

コードは以下の通りです
Function.prototype.createClass = function(class_name, proto){
proto = proto || {};
var c = class_name.split('::');
var target = this;
for(var i = 0; i < c.length; i++){
if(!target[c[i]]){
target[c[i]] = function(){};
}
target = target[c[i]];
}
target.prototype = proto;
};
Name_Not_Found [sage] 2010/11/03(水) 07:11:16 ID:???
ループ中にfunctionを作ってはならないってそのまんまじゃないか

for(var i = 0; i < c.length; i++){
if(!target[c[i]]){
target[c[i]] = function(){}; //←ここ
}
Name_Not_Found [sage] 2010/11/03(水) 08:17:42 ID:???

ですので、なぜ作ってはいけないのかその理由が知りたいのです
Name_Not_Found [sage] 2010/11/03(水) 08:26:09 ID:???
ループ内で作れるならループ外でも作れるでしょって事じゃねーの
781 [sage] 2010/11/03(水) 08:32:28 ID:???
自己解決しました


全然違います

var t = {};
for(var i = 0; i < 10; i++){
t[i] = function(){
alert(i);
}
}

としたときに、
t[0] を呼び出しても t[1] を呼び出しても常に 9 が表示されます
どうやらクロージャ内でうまくインデックスの値を参照できないようです
Name_Not_Found [sage] 2010/11/03(水) 08:41:21 ID:???
そんな書いてないコードの事なんかわかんねーよ
for (var i=0;i < 10;i++) {
 t[i] = (function(index){alert(index)})(i);
}
ほれ
Name_Not_Found [sage] 2010/11/03(水) 08:47:05 ID:???
あ、すまんそのままだと参照というか実行されるな
でもまぁクロージャで参照したいならそんな感じで書けば良い
どちらにせよ同じエラーは出ると思うがな
Name_Not_Found [sage] 2010/11/03(水) 08:56:15 ID:???

だからクロージャが参照している変数「i」は1個でしょ。
そのiは変更していっているんだから、t[1]でもt[0]でも
変更された現在のiを参照するに決まっているじゃない。
クロージャってそういうもののためにあるわけで。自分で
勝手に書いた時点のiで固定されて欲しいとか思っても
そう書かなかったらそうなるわけがない。
そもそもアンタはFAQのQ14/A14を読んだのか。読んでない
のならどっかよそに行って欲しいね。読んだけど理解でき
ないとかなら説明するけどさー。
Name_Not_Found [sage] 2010/11/03(水) 09:05:58 ID:???

JSLintご存知ない?
質問の意図は「JSLintで静的に解析したとき、このエラーが出るのはどんな落とし穴があるためか」でしたが、
これを知らなかったが故に変に解釈されてしまった気がします
申し訳ないです


Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。
  「function(x){return function(){...x...};}(this)」のようにthisを別の変数に
  束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中)

この情報からクロージャと変数のスコープの関係を類推して
更に今回の落とし穴になりうる条件を類推するのは無理があるかとw
Name_Not_Found [sage] 2010/11/03(水) 09:07:50 ID:???
<head>
<script type="text/javascript">
function func1(str) {                       ←ココ
alert(str + "がクリックされました");
}

function init() {
alert("ドキュメントがロードされました");
}
window.onload = init;
</script>
</head>

<body>
<form id="myForm" name="myForm"><p>
<input type="button" value="ボタン1"
name="button1" onclick="func1('ボタン1');">
</p></form>
</body>

とあるのですが
このfunc1(str)のstrって何なのでしょうか?
strにonclickの'ボタン1'が格納される事はわかるのですが、変数でもないようですし、初心者ですみません
Name_Not_Found [sage] 2010/11/03(水) 09:13:54 ID:???

引数の1番目に指定されたものが入ってる変数だよ
Name_Not_Found [sage] 2010/11/03(水) 09:15:45 ID:???

まずJSLint関係ないと思うぞ?
Don't make function within a loop.
これの訳を考えてみろよ

で、君が原因だと思ってるiの参照を解決できる方法はこんな感じだけど
for (var i=0;i < 10;i++) {
 t[i] = (function(index){
      return function () {
           alert(index);
      };
     })(i);
}
これでやっても同じメッセージは出る


<input type="button" value="ボタン1"
name="button1" onclick="func1('ボタン1');">
の onclick="func1('ボタン1');"にあるボタン1
Name_Not_Found [sage] 2010/11/03(水) 09:18:43 ID:???

で、の原因はなんだったんだ?
そのコードを実際にブラウザで動かしたらエラーをはかないから、俺はJSLintがおかしいと思ったけど。
も言っているけど、その問題はのクロージャ関係と無関係だと思うよ。
function(){};の中身がわからないから確かではないけど、普通のforで回すだけなら、target = this;はいらないとおもうよ。
Name_Not_Found [sage] 2010/11/03(水) 09:20:06 ID:???
だからt[0]とかが呼ばれる時はiは別のものをさしてしまっている。
t[i]=(function(x){return function(){alert(x);}})(i);
とすればt[i]に入れた時のiの値が関数が呼ばれる時に作られる
環境のxに渡されて保持され、それをクロージャから参照している
からiその時点のiの値が取れると。
Name_Not_Found [sage] 2010/11/03(水) 09:20:32 ID:???

varで宣言しなくても変数になると言う事なんでしょうか?
入門書やってる程度なので、ちょっとよくわからんとです
Name_Not_Found [sage] 2010/11/03(水) 09:22:48 ID:???

関数の引数(strの事)に関してはvarはいらない
関数と引数について勉強すれば良いと思う
781 [sage] 2010/11/03(水) 09:46:48 ID:???

最初に提示した例ではそもそもクロージャになっていないので問題なく動くはずです
JSLintでメッセージが出る部分は落とし穴となる可能性の高い部分
メッセージの内容については「してはいけない」としか書かれていないです
なぜこのようなメッセージを出さなければいけないか、どんな落とし穴があるのかを知りたく質問したのです
原因さえはっきりしていればそのメッセージをスルーするという選択肢もあるでしょう


問題はJSがブロック単位の変数のスコープを持っていないことです
なので、

var t = {};
for(var i = 0; i < 10; i++){
t[i] = function(){
alert(i);
}
}
t[0]();



var t = {};
var i = 0;
for(; i < 10; i++){
t[i] = function(){ alert(i) };
}
t[0]();

と解釈され、t[0] を呼び出している部分では i = 9 となり、9が出力されるわけです
これを解決するには のようにクロージャで変数をバインドする必要があります
JSLintは落とし穴になりそうな部分を警告してくれているだけなのでおかしくはないとです
target = this は 普段 jQuery 書いているのでその癖ですw
793 [sage] 2010/11/03(水) 10:03:35 ID:???
なんだJSLintはエラーじゃなくて注意だったのか。

いや、スコープの事なんか知ってるよ。

てかからの変化が大きすぎだろw
書いてないことで「違います(キリッ」なんて言われてもねぇ・・・
Name_Not_Found [sage] 2010/11/03(水) 10:04:45 ID:???
キチ
Name_Not_Found [sage] 2010/11/03(水) 10:09:26 ID:???

最初に示した例でも同じ警告は出るわけだが・・・
難しく考えすぎだろ
こういうLint系って落とし穴以外にも
オーバーヘッドが発生する場合等も警告だすよ
もうちょっと単純なテストからしてみたらどうよ
結局どこが原因か切り分けできてないんでしょ?

因みにのコードでfunctionを外部化し、のコードの前に持って行き
その関数を代入するとその警告は消える
781 [sage] 2010/11/03(水) 10:20:29 ID:???

JSLintについて知らなかったんですよね?
だから で解釈が違うのだろうと推察したのです
そして私は始終一貫してエラーを吐く「理由」を質問していたハズですが、
そのレスは解答の方向性が全く違っていたのでドヤ顔で高らかに「違います」と宣告させていただきました
そのように解釈されず大変残念です


すみません、ありがとうございます
ちなみに私のレスは で、 の時点でこの問題は解決しております
Name_Not_Found [sage] 2010/11/03(水) 10:21:09 ID:???
キチガイが湧いてるなw
Name_Not_Found [sage] 2010/11/03(水) 10:24:08 ID:???
こうして間違った解釈が広まるのは残念な限りだ
Name_Not_Found [sage] 2010/11/03(水) 10:46:28 ID:???
781が馬鹿すぎて笑えない
Name_Not_Found [sage] 2010/11/03(水) 11:20:45 ID:???
コミュ力があれば起きないような誤解と不快感を招いてるな。
Name_Not_Found [sage] 2010/11/03(水) 11:22:36 ID:???
varなんか使うからいけないのだ
letが標準化されればいいのに
Name_Not_Found [sage] 2010/11/03(水) 11:45:18 ID:???
またeval厨か
Name_Not_Found [sage] 2010/11/03(水) 12:01:13 ID:???
ループ内で関数作ると外で作れば一個で済むのに、全く同じような定義を何個も作って無駄なんじゃねえのみたいなことなんじゃないの
Name_Not_Found [sage] 2010/11/03(水) 13:00:37 ID:???
本人が説明してるんだからおれおれ解釈の余地はない 上:ビデオ 下:スライド(73ページ)
ttp://developer.yahoo.com/yui/theater/video.php?v=crockonjs-3
ttp://www.slideshare.net/douglascrockford/crockford-on-javascript-act-iii-function-the-ultimate
Name_Not_Found [sage] 2010/11/03(水) 13:31:25 ID:???
補足すると、上に出てるように無駄っていうのと後は紛らわしいから

誤解が起こるのは、紛らわしいっていうのがクロージャが必要な場面のことだからだと思うけど
でもその場合でも同じで「関数を返す関数」自体を外に置こうっていう話
Name_Not_Found [sage] 2010/11/03(水) 14:32:30 ID:???
こんにちは。
初めてJSLintを使ってみましたが
if (hoge == 0)
if (hoge == true)
というように書いた行で、それぞれ以下のようなエラーが出ました。

Use '===' to compare with '0'.
Use '===' to compare with 'true'.

== では好ましくないということなのでしょうか。
何故 === を使えといちいち強要されるのか理由が理解できません。
教えてください。
Name_Not_Found [sage] 2010/11/03(水) 14:38:15 ID:???
0==="0" false
0=="0" true
Name_Not_Found [sage] 2010/11/03(水) 14:39:13 ID:???
0 == false -> true
0 === false -> false

こういう違いがある
他にも
'' == false -> true
'' === false -> false

とかね
組み込み関数にも0をかえしたり空白を返すものがあったはず(忘れた
そういうのでの誤った判断をしないためにって感じかな
型をも含めた厳密な比較をしましょうって事です
Name_Not_Found [sage] 2010/11/03(水) 14:39:29 ID:???
"自分で"JSLintを使っといて、理由も調べないでいちいち強要されるとか馬鹿じゃねーの
Name_Not_Found [sage] 2010/11/03(水) 14:41:59 ID:???

自分の使い方だと、0=="0" の場合でもtrueを返して欲しいんですが。
Name_Not_Found [sage] 2010/11/03(水) 14:56:38 ID:???
a が false , 0 , -1 , "" , "0" , "-1" の時にtrue

if( Number(a) < 1 )
Name_Not_Found [sage] 2010/11/03(水) 14:59:14 ID:???

そのJSLintの結果はエラーっていうよりお知らせ・注意くらいに思ったほうがいいね。
挙動を理解してるなら問題ない。
Name_Not_Found [sage] 2010/11/03(水) 15:22:31 ID:???

端から見ている私には で解決できているように見えない。
と同じ結果を で得られていないから。

あなたが解決できたのは実際にやりたいことが ではなく別にあってそれが で解決できただけ。
そしてあなたの疑問である「どういう理由があってこのエラーが出るのでしょうか」の解が で出ているようには見えない。

だから、皆口を揃えて「そんな書いてないことなんかわかんねーよ」といっているわけです。
JSLint云々の問題ではなく、質問の仕方が悪いとしかいえない。

・ブロックスコープ云々と「Don't make functions within a loop.」は全く関係がない。
・JSLint はCrockford氏が信じる Good Parts でないコードに警告を出す。よって、ECMAScript文法に準拠しているか否かは全く関係ない。

「Don't make functions within a loop.」のメッセージを出す理由はわからないが、少なくともあなたの論拠はちぐはぐとしか思えない。
Name_Not_Found [sage] 2010/11/03(水) 15:26:10 ID:???

そういう場合は明示的に型変換してやればいい。
Number('0') === 0
Name_Not_Found [sage] 2010/11/03(水) 15:37:24 ID:???
=== and !== Operators.
It is almost always better to use the === and !== operators. The == and != operators do type coercion. In particular, do not use == to compare against falsy values.
ttp://javascript.crockford.com/code.html
818 [sage] 2010/11/03(水) 15:42:30 ID:???

> ・JSLint はCrockford氏が信じる Good Parts でないコードに警告を出す。よって、ECMAScript文法に準拠しているか否かは全く関係ない。
これは言い過ぎた。
ECMAScript に準拠していることが前提にあり、その上で独自の解釈をすると認識していいと思う。
例えば、var num = parseInt(08); で「Missing radix parameter.」のエラーを返す。
Name_Not_Found [sage] 2010/11/03(水) 16:34:41 ID:???

全部そう書き換える必要があるってことですか?
Name_Not_Found [sage] 2010/11/03(水) 16:57:34 ID:???

間違いが起こりにくいコーディングのテクニックとして、
文字列になる可能性がある数値は、きちんと数値に変換してから扱う。
parseInt(num)してから、if (num === 0)って感じで。
Name_Not_Found [sage] 2010/11/03(水) 17:12:43 ID:???
parseInt("0hoge")とかに注意だな
think ◆bKk/qcAKuM [sage] 2010/11/03(水) 17:25:59 ID:???
parseInt と Number の違い
ttp://ideone.com/x7oVl

parseInt の注意すべき点として、

・第二引数を省略すると 8進数, 16進数として扱う場合がある。(JSLintでは「Missing radix parameter.」のエラーを返します)
・数値は前方一致で検索される (後方に数値以外の文字があったとしてもエラーにならない)

があるかと。parseFloat には前者の性質がないですね。


必要なら、全て型変換を行った方がいいと思います。
同じ値を使い回すなら始めにNumber型に変換するとか。

function foo (num) {
 num = Number(num);
 if (num === 0) {
  // 処理1
 } else {
  // 処理2
 }
}
Name_Not_Found [sage] 2010/11/03(水) 17:33:59 ID:???
>・第二引数を省略すると 8進数, 16進数として扱う場合がある
この動作は誰が得するのか分からん。
ECMAScript3ですら非推奨なのに、
ブラウザの実装が5に準拠するのはいったいいつになるんだ。
Name_Not_Found [sage] 2010/11/03(水) 18:40:56 ID:???
>第二引数を省略すると 8進数, 16進数として扱う場合がある。
これってどういうコード(環境?)だと再現するのかな。
Name_Not_Found [sage] 2010/11/03(水) 18:59:34 ID:???
先頭が"0x"または"0X"から始まってたら16進数、"0"から始まってたら8進数
たとえばparseInt("018")はまず8進数と見なされ、
末尾の"8"は8進数では使えないゴミとして無視されるので1になる
これJSの基本な
Name_Not_Found [sage] 2010/11/03(水) 19:01:41 ID:???
追記。
この動作はECMAScript3では非推奨。5では明確に禁止。
Name_Not_Found [sage] 2010/11/03(水) 19:19:53 ID:???
あーそういうことか、サンクス。
16進数はたまに使うけど、0x付きだし間違えることはないかな。
8進数の場合は、日付データとかを数値化するときに危ないね。しかし8進数の使い道がわからんw
Name_Not_Found [sage] 2010/11/03(水) 19:32:33 ID:???
Javascriptで並列処理、複数スレッドを立てる事ができるのでしょうか?
Name_Not_Found [sage] 2010/11/03(水) 20:05:57 ID:???
Workerでぐぐれ
Name_Not_Found [sage] 2010/11/03(水) 20:09:08 ID:???
マウス座標を取得するメソッドって種類ありすぎじゃないですか
なんで一つ、二つに統一しないんですか
Name_Not_Found [sage] 2010/11/03(水) 20:19:34 ID:???
その違いを言ってみろ
Name_Not_Found [sage] 2010/11/03(水) 20:33:37 ID:???

マウス座標を取得するメソッドなんてあったかな。
event.screenX はプロパティだし、いろいろプロパティがあっても役目が違うから何とも。
Name_Not_Found [sage] 2010/11/03(水) 21:00:02 ID:???

そのメソッドの名前は?
781 [sage] 2010/11/03(水) 21:15:55 ID:???

最初から何度も言うように結果を求めてたわけではなく理由を求めてたわけです

での解答としては、Don't make functions within a loop. のメッセージは
他の主な言語と違ってJSがブロックスコープをサポートしていないが故に、
書いた通りのクロージャしか作れずバグの温床になるから
( でも説明して頂いている通り無駄があるという問題もあるようですが、こちらの方がより問題だと感じます)

なので、
>・ブロックスコープ云々と「Don't make functions within a loop.」は全く関係がない。
これは否定させていただきたいと思います

のコードでは不具合が起こらなかったので、なぜこのメッセージが出るのかを模索したところ、
のような事例で意図とは違う動作をする可能性を見つけたので、問題となるコードを例示し解決済みとしたわけです
Name_Not_Found [sage] 2010/11/03(水) 21:23:54 ID:???
つまりJSLintの作者よりオレオレ解釈が正しいtという事を言いたいのだな?
Name_Not_Found [sage] 2010/11/03(水) 21:37:42 ID:???

どこらへん?
今ビデオ見てるけど該当箇所がよくわからん
Name_Not_Found [sage] 2010/11/03(水) 21:43:26 ID:???
シークバー10分の9くらいの位置だな。最後のほう
818 [sage] 2010/11/03(水) 21:43:29 ID:???

「どこかに原因があるはずだ -> で不具合になった -> そうだったのか」ということか。
仮にそうだとしても、 が原因と結論づけるのは強引なのでは?

function foo () {
 var a = new Array(5);
 for (var i = 0, l = a.length; i < l; i++) {
  a[i] = (function (i) { return function () { alert(i); }; })(i);
 }
}

このコードは JSLint でエラーは出るが、正しく動く。
for文で function を代入してエラーが出るのは書き方が間違っているだけだ。
この点は で指定されていると思うのだが、試してないのだろうか?
間違った書き方をしているケースをとりあげて「for文で function を代入すべきではない」と主張するのはおかしいと思うのだが…。

あなたの主張は「Crockford氏は >809-810 と説明されていますが、私は別の問題を発見しました。それが です。」と読める。
それは JSLint がエラーを返す理由ではないよ。エラーを返す理由は JSLint 作者であるCrockford氏がよくご存じのはず。
私にはCrockford氏の説明を疑うだけの正当性が からは読み取れなかった。
think ◆bKk/qcAKuM [sage] 2010/11/03(水) 21:55:40 ID:???
以下、>809 の「Crockford On JavaScript: Act III: Function the Ultimate」より。

--- (P73) ---
Don't make functions in a loop.
- It can be wasteful because a new function object is a created on every iteration.
- It can be confusing because the new function closes over the loop's variables, not over their current values.
-------------

--- (P74) ---
Creating event handlers in a loop

for (i ...) {
 div_id = divs[i].id;
 divs[i].onclick = function () {
  alert(div_id);
 };
}
----
function make_handler (div_id) {
 return function () {
  alert(div_id);
 }
}
for (i ...) {
 div_id = divs[i].id;
 divs[i].onclick = make_handler(div_id);
}
-------------
781 [sage] 2010/11/03(水) 21:59:20 ID:???

thx 見つけました


一番最初に取り上げられてる具体例は 「Creating event handlers in a loop」 ですね
で、この問題はクロージャから起こる混乱と明言してるわけですが


確かに類推の部分はありましたが、ビデオを紹介して頂いたおかげで確証に変わりました
ありがとうございます
think ◆bKk/qcAKuM [sage] 2010/11/03(水) 22:06:56 ID:???

Crockford氏の主張する「新しく関数オブジェクトを生成するのが無駄になるから」という理由が良くわかりません。
P74 下段のコードでも新しく関数オブジェクトを生成していることに代わりはないはずで、>786 と原理は変わらないと思うのですが…。
無名関数で関数オブジェクトを生成するか名前付き関数で関数オブジェクトを生成するか、の違いでしかありません。

もし、本当に関数オブジェクトの数を減らしたかったのならば、

document.addEventListener('click', function () { ; }, false);

と一つだけ定義すれば良かったんじゃないかと。(click はバブリングします)
781 [sage] 2010/11/03(水) 22:08:03 ID:???

ちなみに最初に例示したコードでは動作には何も問題がないですが、ループ内でクロージャ作成関数を呼ぶように修正すると無駄が生じます
誤解されているようですが、私は原因さえはっきりと把握できているならJSLintでエラーが出ようが気にしないというスタンスです
781 [sage] 2010/11/03(水) 22:10:51 ID:???

ループのたびに無名関数を返す無名関数を作成するから無駄となるのだと思います
Name_Not_Found [sage] 2010/11/03(水) 22:10:54 ID:???

クロージャはもちろんループぶん作られるわけだけど
クロージャを返す関数自体をループぶん作ってるじゃん
Name_Not_Found [sage] 2010/11/03(水) 22:17:50 ID:???

ありがと
think ◆bKk/qcAKuM [sage] 2010/11/03(水) 22:20:29 ID:???

ありがとうございます。合点がいきました。

しかし、これはかなり特殊なケースですね。
ループの度に変化する変数に参照する状況限定で再現される不具合なので、この警告を無視できるケースはかなりありそう。
Name_Not_Found [sage] 2010/11/03(水) 22:20:49 ID:???

P74 下段のコードは、上段のコード(クロージャの失敗例)に対する正しい例というだけでしょ。
ループの中で関数を生成さえしなければ、混乱を起こさず、間違いを防止しやすい、と。
「新しく関数オブジェクトを生成するのは無駄」というのは、また別のケースでしょう。
Name_Not_Found [sage] 2010/11/03(水) 22:22:36 ID:???

ん?
Name_Not_Found [sage] 2010/11/03(水) 22:36:19 ID:???
var worker = new Worker("./worker.js");

この一行だけでエラーになるのですが、どうしてでしょうか?。
jsファイルはちゃんと作っています。
もしかしてHTMLに直接書かないとだめとかいう制約とかあります?。
Name_Not_Found [sage] 2010/11/03(水) 22:38:32 ID:???
Workerがそもそも定義されているのかそれが問題だ
think ◆bKk/qcAKuM [sage] 2010/11/03(水) 22:46:03 ID:???
以下、>809 の「Crockford On JavaScript: Act III: Function the Ultimate」より。

Tennent's Principle of Correspondence

--- (P75) ---
function factorial (n) {
 var result = 1; // result: variable
 while (n > 1) {
  result *= n;
  n -= 1;
 } return result;
}
----
function factorial (n) {
 return (function (result) { // result: parameter
  while (n > 1) {
   result *= n;
   n -= 1;
  } return result;
 })(n);
}
-------------


仰るように無駄が生じるのは別のケースみたいですね。ありがとうございます。
Name_Not_Found [sage] 2010/11/03(水) 22:46:46 ID:???

alert(typeof Worker);
Name_Not_Found [sage] 2010/11/03(水) 22:57:54 ID:???
Workerってdataスキーム使えないんだな。使えたら面白いのに
new Worker('data:application/javascript,onmessage=function(e){console.log(e.data);}');
Name_Not_Found [sage] 2010/11/03(水) 23:01:50 ID:???

undefinedでした!

つまり激しく環境依存なわけでしょうか?
Name_Not_Found [sage] 2010/11/03(水) 23:05:49 ID:???
lintでエラーとか言ってる辺りからして、lintがなんなのかわかってないよね
間違いの元だと指摘しているだけで、間違いそれ自体ではない
Name_Not_Found [sage] 2010/11/03(水) 23:06:00 ID:???

写し間違えてますよ。resultには1を渡さないと
857 [sage] 2010/11/03(水) 23:07:06 ID:???
ちょっと巡回して来たのですがHTML5関連APIなのですね
そして使っている環境が見事にIEでした

いくらシェアが低下して来ているとは言ってもまだIEを外すわけには行きませんね
Name_Not_Found [sage] 2010/11/03(水) 23:59:28 ID:???
// Netscape Communicator 4.79
var a = [];
for (var i = 0; i < 2; ++i) a[i] = function () {};
alert(a[0] === a[1]); // true
Name_Not_Found [sage] 2010/11/04(木) 00:46:18 ID:???

その意味を理解できる人がここにいるかな
Name_Not_Found [sage] 2010/11/04(木) 01:30:01 ID:???
最近スレのレベルが下がり過ぎて読むのが辛い
Name_Not_Found [sage] 2010/11/04(木) 01:33:50 ID:???

読むだけの人なら何を主張しても変わらないかと。
Name_Not_Found [sage] 2010/11/04(木) 01:35:40 ID:???
できあいのライブラリで精一杯の奴ばかりだからしゃーない
Name_Not_Found [sage] 2010/11/04(木) 02:50:16 ID:???
ブログやツイッターで小手先の高速化テクとかブラウザ情報は増えても
以前テンプレにあった体系的なjavascript解説は消えちゃってるならな
の解説もテンプレから辿れたんだけど(今はもう要らないが)
だから反動でgood partsみたいのを変にありがたがる奴が出てきたんだろ
Name_Not_Found [sage] 2010/11/04(木) 03:53:41 ID:???
Good Partを毛嫌いする人がいるようだけど、何故なんだろう?
Name_Not_Found [sage] 2010/11/04(木) 06:41:19 ID:???
ttp://www5e.biglobe.ne.jp/access_r/hp/javascript/js_001.html
こういうの恥ずかしくないのだろうか
Name_Not_Found [sage] 2010/11/04(木) 08:03:09 ID:???
ヒント: 最終更新日、作者名
Name_Not_Found [sage] 2010/11/04(木) 08:04:44 ID:???
こういうの見ると懐かしく感じるわ
Name_Not_Found [sage] 2010/11/04(木) 08:06:12 ID:???
そういうのを晒しちゃうみたいなのを恥ずべきだよ
Name_Not_Found [] 2010/11/04(木) 09:08:24 :nJo2Erh5

あの本に書いてあること「だけ」を信じてしまうと、
「そう解釈しても問題はないけど本質的にはこう」みたいなことが
理解出来ない箇所があるから、かなあ。
Name_Not_Found [sage] 2010/11/04(木) 09:22:51 ID:???
HTML
<form name="set">
<INPUT type="radio" onclick="sakana()">魚<br>
<INPUT type="radio" onclick="yasai()">野菜<br>
<select name="sentaku">
<option>選択してね</option>
</select>
<INPUT type="button" value="計算" onClick="keisan()">

JavaScript
function sakana()
{document.set.sentaku.length=2;
document.buki_set.buki_sentaku.options[0].text="サンマ";
document.buki_set.buki_sentaku.options[1].text="イワシ";

function ono()
{document.buki_set.buki_sentaku.length=3;
document.buki_set.buki_sentaku.options[0].text="斧";
document.buki_set.buki_sentaku.options[1].text="ヘルガットル";
document.buki_set.buki_sentaku.options[2].text="輪廻";}

function keisan()
{document.write

}
Name_Not_Found [sage] 2010/11/04(木) 09:25:31 ID:???
すんません、ミスりました・・・。
HTML
<form name="set">
<INPUT type="radio" onclick="sakana()">魚<br>
<INPUT type="radio" onclick="yasai()">野菜<br>
<select name="sentaku">
<option>選択してね</option>
</select>
<INPUT type="button" value="計算" onClick="keisan()">

JavaScript
function sakana()
{document.set.sentaku.length=2;
document.buki_set.buki_sentaku.options[0].text="サンマ";
document.buki_set.buki_sentaku.options[1].text="イワシ";

function yasai()
{document.buki_set.buki_sentaku.length=2;
document.buki_set.buki_sentaku.options[0].text="ニンジン";
document.buki_set.buki_sentaku.options[1].text="大根";

とあって
function keisan(){}
で計算したいのですが、サンマとイワシに100と110という値を持たせ、ニンジンとダイコンに60と70という値を持たせて
計算するにはどのようにすればいいのでしょうか?
Name_Not_Found [sage] 2010/11/04(木) 09:34:39 ID:???
ああ、またミスです・・・。
計算というのは1.05をかけて消費税出す事です・・・。
Name_Not_Found [sage] 2010/11/04(木) 09:44:27 ID:???
解答方法がいくつもあって難しいな
HTMLも違うっぽいし

var items = {
 fish : [
  {name:"サンマ",price:100},
  {name:"イワシ",price:110},
 ],
 vegetable : {
  {name:"ニンジン",price:60},
  {name:"大根",price:70},
 }
};

俺ならこんな感じでデータを作ってなんとかする
Name_Not_Found [sage] 2010/11/04(木) 09:47:49 ID:???
なるほど、よくわかりました!
phpと違ってJavaScriptは複雑で難しいです
やはり配列とかって重要なんですか?
Name_Not_Found [sage] 2010/11/04(木) 09:50:39 ID:???
配列使えなかったら掛け算できずに足し算で答えを導くようなもの
8^3を8+8+8+・・8って512回やるようなもの
Name_Not_Found [sage] 2010/11/04(木) 09:56:32 ID:???
phpやってたなら基本は同じだがなぁ
のitemsを多次元配列と考えれば良い(正確には違うが)
phpでいうところの
$items["fish"] = array(
array("name" => "サンマ","price" =>"100"),
);

って感じ
Name_Not_Found [sage] 2010/11/04(木) 10:03:13 ID:???
オブジェクトの階層とか慣れてないと大変かも
HTMLやPHPには無いものだし
最初はなんでこんなややこしい物作ったんだ!って思ってたけど
理解してみると納得
Name_Not_Found [sage] 2010/11/04(木) 10:15:06 ID:???
自分は今まで
document.buki_set.buki_sentaku.options[0].value="70";
で値を出すように考えてたのですが
document.buki_set.buki_sentaku.options[0].text="ニンジン"value="70";
みたに出来たらなーと思ってたのですが、自分にそうやって値を持たせる知識がありませんでした
Name_Not_Found [sage] 2010/11/04(木) 11:05:41 ID:???

jQueryにはDOM要素事態に値を持たせられる jQuery.data(elem) ってのがあるね
Name_Not_Found [sage] 2010/11/04(木) 17:34:32 ID:???

var option = document.forms['buki_set'].elements['buki_sentaku'].options[0];
option.text = 'ニンジン';
option.value = '70';

with (document.forms['buki_set'].elements['buki_sentaku'].options[0]) {
 text = 'ニンジン'; value = '70';
}

jQuery('[name="buki_sentaku"] > option:first-child').text('ニンジン').val('70');
Name_Not_Found [sage] 2010/11/04(木) 17:44:58 ID:???
俺だったら
{
document.buki_set.buki_sentaku.options[0].value="70";
document.buki_set.buki_sentaku.options[0].text="ニンジン"
document.buki_set.buki_sentaku.options[1].value="80";
document.buki_set.buki_sentaku.options[1].text="大根"
}
ってやるかな
実際俺のが一番スッキリしてて解りやすいと思う
Name_Not_Found [sage] 2010/11/04(木) 17:59:32 ID:???
毎回ルートノードから探索するのは効率が悪い

var opts = document.forms['buki_set'].elements['buki_sentaku'].options;
opts[0].value = '70';
opts[0].text = 'ニンジン';
opts[1].value = '80';
opts[1].text = '大根';
Name_Not_Found [sage] 2010/11/04(木) 18:03:39 ID:???
俺よりスッキリしてる上効率良いなんて何この敗北感
Name_Not_Found [sage] 2010/11/04(木) 18:11:05 ID:???

気持ちはわからなくもないんだけど、本来はGood Parts信者に向けるべき嫌悪感だよね…。
Name_Not_Found [sage] 2010/11/04(木) 18:17:02 ID:???
サンマやニンジンや大根で戦うゲーム?
Name_Not_Found [sage] 2010/11/04(木) 18:39:27 ID:???
確かになにを作ってるのか、色々と妄想が広がるな
buki_sentakuにニンジンや大根とはこれイカに
Name_Not_Found [sage] 2010/11/04(木) 18:45:49 ID:???

大して変わんねーよ
何でそう書くの?と聞くと大量の引用ばっかり返ってくるけど
己の体験や意見としては何一つ返っちゃこない
Name_Not_Found [sage] 2010/11/04(木) 19:08:58 ID:???
俺、そこそこGood Parts信者だけど、たしかに引用厨はウザいね。
あと、ダメ信者にありがちなのが、
「それは汚いコードですね」とか年上のベテランを挑発する奴w
JavaScriptはガイドライン的なものがほとんどないから、
フォーマットのひとつとしてGood Parts形式を採用するのはアリなんじゃない。
Name_Not_Found [sage] 2010/11/04(木) 19:21:13 ID:???
サイ本のリファレンスのほうもおまえら買ってるの?感想plz
Name_Not_Found [sage] 2010/11/04(木) 19:31:54 ID:???
「盲目的な信者が嫌い」ならわかる。
でも、それは Good Parts に限らない話だと思う。
「Good Parts 信者が嫌い」から「Good Parts が嫌い」に転ずるのは筋違いなんじゃないかな。

>809 のスライドの P75 の〜、P45の〜はこういう理由で間違っている。
だから、Good Parts は嫌い。

これならわかるんだけどね…。
Name_Not_Found [sage] 2010/11/04(木) 19:37:59 ID:???
信者の典型的症状=〜に限らない、〜は好みの問題と、問題を相対化してすりかえる
んな話をしてんじゃねーのに
Name_Not_Found [sage] 2010/11/04(木) 19:42:08 ID:???
var a = "hoge";
var b = 100;
var c = false;
var d = [1,2];
var e = {"aaa":"bbb"};
var f = document.getElementById("f");
function test() {
alert(a);
alert(b);
alert(c);
alert(d[1]);
alert(e.aaa);
alert(e["aaa"]);
alert(f.innerHTML);
}

これでfがアラートされないのは何故ですか?
test()の中に
alert(document.getElementById("f").innerHTML);
とするとちゃんとアラートされますが
document.getElementByIdは何かスコープの制限があるのでしょうか?

ちなみに
var f = document.getElementById("f").innerHTML;
として、alert(f)とすると
document.getElementById("f") is nullとエラーが出てJavaScriptが実行されません
Name_Not_Found [sage] 2010/11/04(木) 19:53:46 ID:???

のQ17を参照すべし。
要素が読み込まれなければ、getElementById は null を返す。

>894 が何をいっているのかさっぱりわからないが、この人とはそりが合わなそうだな…。
Name_Not_Found [sage] 2010/11/04(木) 20:22:28 ID:???
JavaScriptをはじめようと思ってるのですが
オブジェクト名は覚えなくちゃならないと思うのですが
メソッド名、プロパティ名も全部覚えなくちゃならないんですかね?
895 [sage] 2010/11/04(木) 20:53:19 ID:???

なるほどありがとうございます
確かにscriptをhtmlの最後に持ってきたら動作しました
onloadはhtmlのコードの前でも実行されるんですね
仕組みはまだよくわかりませんが精進します
Name_Not_Found [sage] 2010/11/04(木) 21:33:43 ID:???

覚えてるに越した事はないけど誰も全部は覚えてないんじゃないかな
文法覚えた後は組み込みオブジェクトやDOM・イベントの概念と、それで何ができるかだけ覚えて、
書きながら学習していくのが早いと思う
Name_Not_Found [sage] 2010/11/04(木) 21:36:57 ID:???

C言語に全く触れた事無いからかもしれないのですが上の質問とか見てて
document.getElementById("f").innerHTML
とか
document.forms['buki_set'].elements['buki_sentaku'].options;

の何がオブジェクトで何がメソッドで何がプロパティなのかよくわかんなかったのですが
どうすればそのような見分けがつくようになるのかなと
Name_Not_Found [sage] 2010/11/04(木) 21:47:26 ID:???
javascriptは変数自体に型がないから値の型で見分けるしかない
Name_Not_Found [sage] 2010/11/04(木) 21:49:22 ID:???
phpだと$変数名だから解り易いんだよなアレ
javascriptは慣れれば見分けつくようになるけど
Name_Not_Found [sage] 2010/11/04(木) 21:49:45 ID:???

Firebugなどの開発者ツールで調べるか、DOM,HTML5 のリファレンスを読むか、の2沢かな。

Object Index
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/object-index.html
HTML5 (including next generation additions still in development)
ttp://www.whatwg.org/specs/web-apps/current-work/multipage/

個人的には、この辺りはテンプレに入れても良いと思う。
Name_Not_Found [sage] 2010/11/04(木) 21:51:17 ID:???
メソッドは () でcallするけど、プロパティは () を付けない。
そのルールさえわかれば、メソッド/プロパティの見分けは付くかと。

document.forms['buki_set'].elements['buki_sentaku'].options;

これらは全てプロパティ。
Name_Not_Found [sage] 2010/11/04(木) 22:04:38 ID:???
document.form.select.optionっていう階層はわかるんだけどさぁ
そのformsのsとoptionsのsって何よ、ややこしいよ
Name_Not_Found [sage] 2010/11/04(木) 22:04:43 ID:???

なるほど!オトクなテクニックありがとうございます!
Name_Not_Found [sage] 2010/11/04(木) 22:06:11 ID:???
hoge.apply(this,[])
これだけ見ればhogeがfunctionだとは思わない
Name_Not_Found [sage] 2010/11/04(木) 22:07:35 ID:???

それぞれ HTMLCollection型, HTMLOptionsCollection型。
これらは複数のノードを含むから "s" を付ける。
Name_Not_Found [sage] 2010/11/04(木) 22:07:49 ID:???

formsはformの擬似配列、optionsはoptionの擬似配列なんだから自然じゃね
Name_Not_Found [sage] 2010/11/04(木) 22:08:12 ID:???
applyがfunctionのメソッドだと知っていればわかるが、、、
applyなんて使わないと出来ないなんて事はないから最初は問題ないんじゃね。
Name_Not_Found [sage] 2010/11/04(木) 22:09:13 ID:???
最初のうちは [なんとか]() ←これ(かっこ)が付くと関数を実行するとおぼえとけばいい
Name_Not_Found [sage] 2010/11/04(木) 22:12:51 ID:???
最初は . ドットを 〜の という感じで覚えろって以前ココで説明したらダメ出しされた
documentのformのselectのoptionだよ!ってさ
904 [sage] 2010/11/04(木) 22:16:00 ID:???
>907 のいうとおり、Function.prototype に所属するメソッドにも注意する必要はある。
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-3_Function_Objects.html#section-15.3.4.3

Function.prototype.apply, Function.prototype.call あたりは使われることもあるからそれなりに疑ってもいい。
よくわからなかったら、typeof演算子で判断する。
あと >7,903 の ES3, DOM のリファレンスは読むべきだよ。
余力があれば、HTML5, ES5 も読んでおくと良い。
Name_Not_Found [sage] 2010/11/05(金) 02:40:38 ID:???
TextBoxへの入力時に 数字しか 入力を受け付けない様にしたいと思います。

どの様なコードを書けばよいでしょうか?
出切ればjQueryと連動させたコードで教えていただけないでしょうか。
Name_Not_Found [sage] 2010/11/05(金) 04:53:25 ID:???

var tb = $('#TextBox');
setTimeout(function(){
tb.val(tb.val().replace(/[^0-9]/, ''));
setTimeout(arguments.calee, 0);
}, 0);

こんな感じでおk?
Name_Not_Found [sage] 2010/11/05(金) 05:14:35 ID:???
$('#TextBox').bind('keypress',function(event) {
 if (event.keyCode < 48 || 57 < event.keyCode) {
  event.stopPropagation();
  return;
 }
})
Name_Not_Found [sage] 2010/11/05(金) 05:20:40 ID:???
ごめん
event.stopPropagation();

event.preventDefault();
だった
Name_Not_Found [] 2010/11/05(金) 06:21:43 :6GADu66s
return falseだけじゃだめなんだっけ?
Name_Not_Found [sage] 2010/11/05(金) 06:23:17 ID:???
レスポンスがちょっと遅い時にクルクル回るのを出したり
DOM追加にフェードインしながら流れるようなエフェクトを出したり
COOL!なサイトを作りたいです
自分がサイトを作るとどうも10年前ぐらいのサイトになってしまって最近とても悲しいです
JavaScriptでCOOLなサイトを作るためにはjQueryを極めればいいのでしょうか?
Name_Not_Found [sage] 2010/11/05(金) 07:26:38 ID:???
そんな見せ掛けの邪魔なものを作るより
内容をCOOLにしてください
あなたにはJavaScriptは必要ありません
Name_Not_Found [sage] 2010/11/05(金) 08:33:56 ID:???
 
ナイスなご解答どうもありがとうございました。
Name_Not_Found [sage] 2010/11/05(金) 08:34:32 ID:???

sorry COOLでない解答はignoreさせてもらうよ
Name_Not_Found [sage] 2010/11/05(金) 08:43:37 ID:???
⌒ヽ         /                  /       |
  _ノ        ∠_____________ /        .|
           /\  \             |          |
           .\ \  \               |          |
   ○      / \ \  \           |         /
    />    /  / \ \  \       , "⌒ヽ       /
   ///   ./  /   .\ \  \      i    .i       ./
  ./\\\  /  /     \ \  \    .ヽ、_ノ     /
 /  .\\ ./  / ∧∧    \ \  \     .|     /
 \   \\ ./ ( ・ω・)  /.\ \  \    |    /     /
   \   \\ ∪  ノ '      \ \  \   .|   /|    ./
  o .\    \\⊂ノ /        \ \  \  |  / |   /
     "⌒ヽ .  \\ /           \ \  \| /  |   /
    i     i    \\   ○       \ \/|/   |  ./
  ○ ヽ _.ノ .\   \\      _,. - ''",, -  ̄    _| /
           \    \\_,. - ''",. - ''   o     ̄ .|/
            \   \\ ''  ̄ヘ _ / ̄ ̄ ̄ ̄ ̄
      ○      \   \\//。 \  寒いと思ったら・・・
    ゚   o   。   .\   \/     |
   。              ̄ ̄ ̄      \__________
Name_Not_Found [sage] 2010/11/05(金) 09:06:00 ID:???

return falseってIEの独自実装とかじゃなかったっけ?
Name_Not_Found [] 2010/11/05(金) 09:13:52 :6GADu66s

いや、jQueryでbindのコールバック関数内でreturn falseで返したらデフォルトの挙動をオフするって意味じゃなかったっけ?
ってこと
Name_Not_Found [sage] 2010/11/05(金) 09:24:11 ID:???
そういう事かuncompressedみてきた
undefined以外の返り値がある場合はチェックしてるみたいね
ありがとう
Name_Not_Found [sage] 2010/11/05(金) 09:46:49 ID:???
;(function($) {

jQueryでこういう書き方を見かけるんですが、
先頭のセミコロンと、引数$の意味がわかりません。
それぞれ何ていうキーワードでググればいいのか教えてください。
Name_Not_Found [sage] 2010/11/05(金) 13:47:59 ID:???
プロパティを連想配列で記述するメリットを教えてください
必要性が全く感じられないのですがどのようなときに使うとよいのでしょうか
Name_Not_Found [sage] 2010/11/05(金) 16:39:02 ID:???

- 変数の値をプロパティにする時
- 数値のプロパティにする時
- DOMのプロパティと区別したい時
Name_Not_Found [sage] 2010/11/05(金) 17:15:48 ID:???

DOMNodeInserted って便利だなー。

AutoPagerizeで継ぎ足された部分に自分のスクリプトを適用する方法あれこれ - 0xFF
ttp://d.hatena.ne.jp/os0x/20090829/1251556449
Name_Not_Found [sage] 2010/11/05(金) 17:39:16 ID:???

先頭セミコロンは知らないけど、

(function ($){
// prototype.js と競合せずに $ を使える。
})(jQuery);
Name_Not_Found [sage] 2010/11/05(金) 17:40:09 ID:???
;;;;;;;;;;;;;;;;;;;;;;;"TEST";;;;;;;;;;;;;;;;;;;;;
Name_Not_Found [sage] 2010/11/05(金) 17:42:13 ID:???

先頭のセミコロンは質の悪いコードを前方に置いても SyntaxError を返さないための配慮らしい。なにこのバッドノウハウw

JQuery ui.core.js - efreedom
ttp://ja.efreedom.com/Question/1-1052229/JQuery-ui-core-js
Name_Not_Found [sage] 2010/11/05(金) 19:25:26 ID:???

調べてみます。
どうもありがとうございました。
Name_Not_Found [sage] 2010/11/05(金) 19:28:24 ID:???
ちょこっとの質問なんですが
Date()オブジェクトの前にはなぜnweという演算子が必要なんでしょうか?
オブジェクトを生成するときに使用すると書いてあるのですが生成するの意味がよくわかりません
document.write()とかとはどー違うのでしょうか?
Name_Not_Found [sage] 2010/11/05(金) 20:03:55 ID:???

インスタンスが要るから。
Name_Not_Found [sage] 2010/11/05(金) 20:18:03 ID:???

new付けたほうが気持ちイイから。
Name_Not_Found [sage] 2010/11/05(金) 20:22:09 ID:???
オブジェクト指向の概念を知らないと到底理解できないよ
document.write()と並列に比較してしまうレベルだとちょっと説明してもわからないかもね
Java(JavaScriptじゃない)のサイトを巡ってくるといいかも
Name_Not_Found [sage] 2010/11/05(金) 20:26:44 ID:???

なるほど、オブジェクト指向について勉強してきます
think ◆bKk/qcAKuM [sage] 2010/11/05(金) 20:51:45 ID:???

ご指摘ありがとうございます。初歩的なミスでした。

--- (P75) ---
function factorial (n) {
 var result = 1; // result: variable
 while (n > 1) {
  result *= n;
  n -= 1;
 } return result;
}
----
function factorial (n) {
 return (function (result) { // result: parameter
  while (n > 1) {
   result *= n;
   n -= 1;
  } return result;
 })(1);
}
-------------
think ◆bKk/qcAKuM [sage] 2010/11/05(金) 20:55:30 ID:???

私は CodeZine で勉強しました。
『JavaScript 第5版』の第9章 (P151) も参考になるかと。

プロトタイプ(prototype)によるJavaScriptのオブジェクト指向:CodeZine
ttp://codezine.jp/article/detail/222
15.9 Date オブジェクト (Date Objects)
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-9_Date_Objects.html
Name_Not_Found [sage] 2010/11/05(金) 20:56:22 ID:???
あっという間に940なのね。テンプレ論議は今回はなしで
しょうがないよね?既に異論なしで決まっていることが何か
あったっけ?
Name_Not_Found [sage] 2010/11/05(金) 20:56:31 ID:???

ありがとうございます!
試しに読んでみますー
think ◆bKk/qcAKuM [sage] 2010/11/05(金) 21:45:33 ID:???

個人的な意見ですが、ES5, DOM, HTML5 を入れるのはどうでしょう?
私の場合、DOM Level 0 系は HTML5 を参照することが多く、ES5 の拡張メソッドを読んだり、DOMの邦訳を読んだりします。
あと、jQueryの質問が多いようなので、jQuery API とか。

Annotated ES5
ttp://sideshowbarker.github.com/es5-spec/
DOM L2 Object Index
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/object-index.html
DOM L2 Core
ttp://www.y-adagio.com/public/standards/tr_dom2_core/expanded-toc.html
DOM L2 Events
ttp://www.y-adagio.com/public/standards/tr_dom2_events/expanded-toc.html
HTML5
ttp://whatwg.org/html5
XMLHttpRequest
ttp://www.w3.org/TR/XMLHttpRequest/
XMLHttpRequest Level 2
ttp://www.w3.org/TR/XMLHttpRequest2/
jQuery API
ttp://api.jquery.com/


> Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
> A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
XMLHttpRequest Level 2 や window.postMessage で回避可能…と説明を入れるのは時期早々でしょうか。

>   innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。
WHATWG にリンクするべきかどうか。
ttp://www.whatwg.org/specs/web-apps/current-work/multipage/apis-in-html-documents.html#innerhtml
think ◆bKk/qcAKuM [sage] 2010/11/05(金) 21:46:17 ID:???

> JSON (JavaScript Object Notation)
JSON は ES5 で取り込まれたので、MDC や ES5 にリンクがあってもいいんじゃないでしょうか。

Annotated ES5
ttp://sideshowbarker.github.com/es5-spec/#x15.12.2
ネイティブ JSON を使う - MDC
ttps://developer.mozilla.org/ja/Using_native_JSON

# ひょっとして、次スレを立てるのは >940 の役目だったりしますか…?
Name_Not_Found [sage] 2010/11/05(金) 22:05:56 ID:???
流れ遅いし980ぐらい
Name_Not_Found [sage] 2010/11/05(金) 23:47:12 ID:???
var a = function abc(){}

aから[abc]という文字を得る方法を教えてください。
Name_Not_Found [sage] 2010/11/05(金) 23:56:50 ID:???
var a = function abc(){};
String(a).match(/^function (.+)\(\)/);
print(RegExp.$1);
Name_Not_Found [sage] 2010/11/05(金) 23:57:39 ID:???

ttp://ideone.com/Cxjqs
Name_Not_Found [sage] 2010/11/06(土) 00:04:04 ID:???

何でいちいちそんな事すんだよ
a = function abc(){};
var name = "["+a.name+"]";
think ◆bKk/qcAKuM [sage] 2010/11/06(土) 00:05:54 ID:???

了解です。


面白い方法ですね。Function#name を使わないのは独自拡張だから(IE で使えない)からかな?

name - MDC
ttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/name
think ◆bKk/qcAKuM [sage] 2010/11/06(土) 00:06:47 ID:???
一応、Function#name は Firefox v3.6.12, Opera v10.63, Google Chrome 7 で使えることを確認しました。(IE8 は不可)
947 [sage] 2010/11/06(土) 00:15:54 ID:???
ありがと。

他言語での経験から.nameしてみたけどIE8だったので見事に無理でした。

一般公開を目的としたサイトでIEで動かないような構築をしている人ってそんなに多いの?。
think ◆bKk/qcAKuM [sage] 2010/11/06(土) 00:29:45 ID:???
クロスブラウザを考慮するなら、こんな感じかな。

function getFunctionName (func) {
 var functionBody;

 functionBody = /^function\s+([^\s(]+)/.exec(func.toString());
 return functionBody ? functionBody[1] : functionBody; // Function#name || null
}
var a = function abc () { ; };
console.log(a.name || getFunctionName(a));


Function#name を得る標準的な方法はないので独自拡張に頼るしかないんだと思います。
IE8- はまともな方法では得られないんじゃないかな…。(IE9 はわかりませんが)

# Function.prototype.name を拡張できたら面白そうではありますが。
Name_Not_Found [sage] 2010/11/06(土) 00:36:08 ID:???

参考になります
think49 ◆bKk/qcAKuM [sage] 2010/11/06(土) 01:01:47 ID:???
しまった…。匿名関数を考慮していませんでした。
匿名関数の Function#name は空文字を返すようです。(Google Chrome 7 で確認)

var a = function () { ; };
console.log('"' + a.name + '"'); // ""

というわけで、>954の修正版。

function getFunctionName (func) {
 var functionBody;

 functionBody = /^function\s+([^\s(]*)(?=\()/.exec(func.toString());
 return functionBody ? functionBody[1] : null; // Function#name || null
}
var a = function () { ; };
console.log('"' + getFunctionName(a) + '"'); // ""

本来は IdentifierName 生成規則に沿った方がいいと思いますが、解読に時間がかかりそうだったので省略しました。
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#Identifier
ttp://sideshowbarker.github.com/es5-spec/#x7.6

# Function.prototype.name を拡張するためにはFunctionコンストラクタを置き換えなくてはならず…、かなり面倒ですね。
Name_Not_Found [sage] 2010/11/06(土) 08:59:55 ID:???
テンプレ論議している余裕はないので、新たな提案であればそれは
次回回しということでお願いしたいです。次スレは975超えたら。
Name_Not_Found [sage] 2010/11/06(土) 10:42:38 ID:???

ここらへんは?
あと、vol.77あたりであったのは、無かったことでいいのかな。
+ JavaScript の質問用スレッド vol.77 +
ttp://pc11.2ch.net/test/read.cgi/hp/1268206233/841-
Name_Not_Found [sage] 2010/11/06(土) 10:47:51 ID:???
ttps://developer.mozilla.org/ja/DOM/windowに掲載されているwindowオブジェクトってw3cでは掲載されてないのでしょうか?
alertとかnavigatorとかそういうメソッドも見当たりませんでした
ttp://www.w3.org/DOM/Activityからたどれる所は全て見たのですが探し方が悪いのでしょうが見当たりませんでした
DOMの本家の情報は他にあるのでしょうか?
Name_Not_Found [sage] 2010/11/06(土) 11:44:51 ID:???
DOMじゃないからでしょ
Name_Not_Found [sage] 2010/11/06(土) 14:15:30 ID:???
IE はコメントを除去しないんだよなぁ

alert(function/*(*/name(){})
Name_Not_Found [sage] 2010/11/06(土) 14:37:49 ID:???

結局結論出なかったのかなんかで現状があるんでは。とりあえず
今スレと同じにしておいて次スレ早々に確認しませんか。
Name_Not_Found [sage] 2010/11/06(土) 15:56:45 ID:???

HTML5のドラフトを見るんだ。
think49 ◆bKk/qcAKuM [sage] 2010/11/06(土) 17:34:18 ID:???

例えば、window.alert は MDC では "DOM Level 0" と説明されています。

---
仕様
DOM Level 0。どの標準にも属しません。
ttps://developer.mozilla.org/ja/DOM/window.alert
---

---
"DOM Level 0"
"DOM Level 0" は W3C が DOM の標準化を始める前にブラウザ間で共通だったオブジェクトモデルです。

・Netscape の クライアントサイド JavaScript ガイド(Javascript と "DOM Level 0" を扱います)
・Netscape の クライアントサイド JavaScript リファレンス(Javascript と "DOM Level 0" を扱います)
・JavaScript スクリプティングリソース - "ダイナミック HTML" と JavaScript に関するさまざまなサイトへのリンク
ttp://www.mozilla-japan.org/docs/web-developer/#scripting
---

"DOM Level 0" は DOM 仕様としては策定されていませんが、デファクトスタンダードとして確立されている仕様を指します。
(実際には window.open を IE が独自拡張していたりしますが、概ね全てのブラウザで同じ挙動を示します。)
この辺りの曖昧さは HTML5 で標準化される予定です。
W3C の HTML5 は ttp://www.w3.org/TR/html5/ にありますが、まだ最終草案段階なので WHATWG ( ttp://whatwg.org/html5 ) の方が最新の情報が手に入ります。

6.2 The Window object
ttp://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#the-window-object

HTML5 はAudioオブジェクトなど新しい技術が注目されがちですが、実際にはデファクトスタンダードとして確立された仕様を改めて標準化しているものも数多く含んでいます。
少し前に話題になった innerHTML もそうです。innerHTML は標準化こそされていませんでしたが多くのブラウザで(ほぼ)同じ振る舞いをします。
これらは既にあるブラウザの実装に合わせて HTML5 で標準化されているので、未だ最終草案段階とはいえ勧告までに大きな変更があるとは思えません。
Name_Not_Found [sage] 2010/11/06(土) 17:44:31 ID:???
> think49
簡潔に書け

IEはコメント除去しないどころじゃない
function A, B(){
}
alert([A,B]);
function A.prototype.a(){
}
alert(new A().a);
IEだと動くんだぜコレ
Name_Not_Found [sage] 2010/11/06(土) 18:03:54 ID:???

いいですね。テンプレ議論をスレ最後でやるから間に合わなくなるっぽいですしね。
Name_Not_Found [sage] 2010/11/06(土) 18:31:24 ID:???

Window Object 1.0 (W3C Working Draft)
think49 ◆bKk/qcAKuM [sage] 2010/11/06(土) 18:59:00 ID:???

それを判断するのは質問者なのでは?
詳しい回答が冗長に感じる人がいれば、簡潔な回答では物足りない人もいるでしょう。
それがわからない以上、簡潔に書いても詳しく書いても同じだと私は思いますが。
Name_Not_Found [sage] 2010/11/06(土) 19:00:55 ID:???
IEはこうもだろ
var a = function abc(){1};
alert(abc); // "function abc(){1}"
Name_Not_Found [sage] 2010/11/06(土) 19:01:38 ID:???

独自研究は他所でやれ
Name_Not_Found [sage] 2010/11/06(土) 20:09:39 ID:???
ttp://okwave.jp/profile/u1456502.html
lol
Name_Not_Found [] 2010/11/06(土) 20:23:59 :NjpCOJce
長文はやめて欲しいが質問しまくる姿勢は尊敬するわ
Name_Not_Found [sage] 2010/11/06(土) 20:26:19 ID:???
嫌いじゃないわこういうの
いかにも初心者同士が教えあうって空気が
Name_Not_Found [sage] 2010/11/07(日) 07:46:53 ID:???
load("url",false,funcname,"string");で呼んだ場合に2つ目のalert(arguments);がobjectに
なってしまうのですがこれはどうしてでしょうか?。

function load(url, async, callback, arguments) {
alert(arguments);//
m_xmlhttp.open("GET", url, async);
m_xmlhttp.onreadystatechange = function() {
if (m_xmlhttp.readyState == 4 && m_xmlhttp.status == 200) {
alert(arguments);//
callback(m_xmlhttp.responseText, arguments);
}
}
m_xmlhttp.send();
}
Name_Not_Found [sage] 2010/11/07(日) 10:01:58 ID:???
argumentsという名前がいけない
argumentsは予約語では無いが関数を呼び出した時に
関数内で自動的に生成されるオブジェクト
生成されたオブジェクトでは呼び出し元とか引数の値等が入ってる
Name_Not_Found [sage] 2010/11/07(日) 10:12:46 ID:???

そういう事でしたか、納得しました。
ありがとうございます。
Name_Not_Found [sage] 2010/11/07(日) 13:06:46 ID:???
全くの初心者で本読んでもほとんど理解できずに居ましたが、このスレの皆さんの助言によってようやくJavaScriptを扱えるようになり、本当に助かりました
もう言葉じゃ表現出来ないほどの感謝の気持ちで一杯です
本当にありがとうございました
Name_Not_Found [sage] 2010/11/07(日) 13:19:01 ID:???
いいってことよ〜
Name_Not_Found [sage] 2010/11/07(日) 19:20:18 ID:???
for(var i = 0; i<5 ; i++){
  var a = $(document.createElement("div"));
  with({i:i}){
    a.click = function(){ alert(i); };
  }
  a.text("Withのてすと");
  $("body").append(a);
}
>>781-あたりでブロックスコープについての話題があったから調べてみたらwithで値を束縛できることを知ったのだけど、
使わないほうがいいという事も書いてあったけど使わないほうがいい理由って何かあったりするの?
Name_Not_Found [sage] 2010/11/07(日) 19:41:58 ID:???
スレ立て人ですが、スレ立て規制で建てられないです…
どなたかお願いします。テンプレの変更は今回はなしですので…
Name_Not_Found [sage] 2010/11/07(日) 20:01:58 ID:???
デザインパターンを勉強中なのですが、JSでVisitorパターンをどういう風に実装していいか悩んでいます
型によるオーバーロードができないのでディスパッチ部分の記述がどうしても汚くなってしまいそうです
なにか良い方法はないでしょうか
Name_Not_Found [sage] 2010/11/07(日) 20:03:56 ID:???
デザパタといってもよく使うパターンがあってね
結論からいうとVisitorパターンなんて使わないっすよね
Name_Not_Found [sage] 2010/11/07(日) 20:06:06 ID:???

なるほど
なら別に実装方法を考える必要はなさそうですね
ありがとうございました
Name_Not_Found [sage] 2010/11/07(日) 20:37:54 ID:???

JSについてはこの人の言うこと聞いておいていいと思うよ
ttp://blog.livedoor.jp/dankogai/archives/51066288.html

んじゃトイレ行って一休みしたら次スレ立ててくる
Name_Not_Found [sage] 2010/11/07(日) 20:38:12 ID:???
間違えたじゃなくて
Name_Not_Found [sage] 2010/11/07(日) 20:55:49 ID:???
移動ぷりーず

+ JavaScript の質問用スレッド vol.81 +
ttp://hibari.2ch.net/test/read.cgi/hp/1289130738/
Name_Not_Found [sage] 2010/11/07(日) 20:57:17 ID:???
こっちが埋まってもいないのに誘導すんなタコ
Name_Not_Found [sage] 2010/11/07(日) 21:02:35 ID:???
お前が残りを全部埋めれば解決
Name_Not_Found [sage] 2010/11/07(日) 21:31:35 ID:???

Name_Not_Found [sage] 2010/11/07(日) 22:22:18 ID:???

with は指定したオブジェクトをスコープチェインの先頭に追加するだけだから、

・変数の名前解決の効率低下の原因になり得る
・読むときに、変数がどの時点で解決されるか分かりにくい

それに加えて、

・ES5 の strict mode では使用できない

かな。
Name_Not_Found [sage] 2010/11/07(日) 22:44:52 ID:???

なるほどありがとう
Name_Not_Found [sage] 2010/11/08(月) 01:58:03 ID:???
はwithで遅くなる典型例
ま、ループのたびに$("body")する時点で速度は度外視なんだろうが
Name_Not_Found [sage] 2010/11/08(月) 21:32:51 ID:???
うめ
Name_Not_Found [sage] 2010/11/08(月) 21:40:22 ID:???
   | \
   |Д`) ダレモイナイ・・オドルナラ イマノウチ
   |⊂
   |


     ♪  Å
   ♪   / \   ランタ タン
      ヽ(´Д`;)ノ   ランタ タン
         (  へ)    ランタ ランタ
          く       タン



   ♪    Å
     ♪ / \   ランタ ランタ
      ヽ(;´Д`)ノ  ランタ タン
         (へ  )    ランタ タンタ
             >    タン
Name_Not_Found [sage] 2010/11/09(火) 01:25:26 ID:???
うめ
Name_Not_Found [sage] 2010/11/09(火) 08:19:36 ID:???
次スレ
ttp://hibari.2ch.net/test/read.cgi/hp/1289130738/
Name_Not_Found [sage] 2010/11/09(火) 19:51:57 ID:???
ume
Name_Not_Found [sage] 2010/11/09(火) 19:54:02 ID:???
_
Name_Not_Found [sage] 2010/11/09(火) 19:57:12 ID:???
モウツカレタヨ・・・
Name_Not_Found [sage] 2010/11/09(火) 20:00:04 ID:???
1000
1001 [] Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

2ch勢いランキング アーカイブ Web制作板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら