[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 11:36 / Filesize : 242 KB / Number-of Response : 715
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:まず >>2-10 読め! 続いて過去スレ全集を検索! mailto:sage [2008/10/10(金) 14:55:53 ID:???]
━━━本スレに書く事を許される者は以下の通り━━━━━
 一、JavaScriptはJavaとは別物であると知っている者
 一、自ら学んでJavaScriptコードを書く意思を持つ者
 一、ユーザに迷惑となるスクリプトを書かない者
 一、質問を分かる日本語できちんと説明できる者
 一、トラブルを再現する最小限のサンプルを貼れる者
 一、テンプレ+FAQ>>2-10/過去ログ/関連資料を読める者
━━━━━━━━━━━━━━━━━━━━━━━━━━━
自力で書く気がない人は他のスレへ(テンプレ末尾参照)。
前スレ pc11.2ch.net/test/read.cgi/hp/1216867850/l50
[必読]過去スレ全集 wing2.jp/~mirrorhenkan/2ch/javascript/
  (ずべて同一)  www2.atpages.jp/mirror/2ch/javascript/
          usamimi.info/~mirrorhenkan/2ch/javascript/
[必読]ガイド developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide
(GuideをReferenceに→Netscape版言語仕様。多くの実装が準拠:ECMA-262.ed3)
FAQ・注意・過去ログ・仕様書・関連資料・関連スレ>>1-10

2 名前:まず >>2-10 読め! 続いて過去スレ全集を検索! mailto:sage [2008/10/10(金) 14:56:33 ID:???]
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!!
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度
 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8)
6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
7)質問はまっとうな(他人に理解できる)日本語で。
 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄

3 名前:まず >>2-10 読め! 続いて過去スレ全集を検索! mailto:sage [2008/10/10(金) 14:57:13 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"」としないとページ移動しちゃうから。

4 名前:まず >>2-10 読め! 続いて過去スレ全集を検索! mailto:sage [2008/10/10(金) 14:58:02 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が置き換え前の文字列全体になります。
Q16. input type="file"の値を設定(参照)できないのですが…
A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。

5 名前:まず >>2-10 読め! 続いて過去スレ全集を検索! mailto:sage [2008/10/10(金) 14:59:27 ID:???]
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも
 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、
 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
 は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
 らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
 可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
 そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
 な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
 択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。

6 名前:Name_Not_Found mailto:sage [2008/10/10(金) 15:17:39 ID:???]
ECMA-262 ed.3
www.ecma-international.org/publications/standards/ECMA-262.HTM
www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (和訳)
W3C Document Object Model Technical Reports
www.w3.org/DOM/DOMTR
JavaScript 1.5 ガイド / リファレンス (Netscape/Mozilla)
developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide (和訳)
developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference
developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference (和訳)
E4X (ECMAScript for XML)
www.ecma-international.org/publications/standards/Ecma-357.htm
www.ne.jp/asahi/nanto/moon/specs/ecma-357.html (和訳)
Mozilla Gecko DOM Reference, Netscape devedge
developer.mozilla.org/en/docs/Gecko_DOM_Reference
developer.mozilla.org/ja/docs/Gecko_DOM_Reference (和訳)
devedge-temp.mozilla.org/central/javascript/index_en.html
MSDN Library JScript / DHTML (現在日本語版は古杉)
www.microsoft.com/japan/msdn/library/ja/script56/html/js56jsoriJScript.asp
msdn2.microsoft.com/en-us/library/ms533050.aspx

7 名前:Name_Not_Found mailto:sage [2008/10/10(金) 15:18:32 ID:???]
【チュートリアルサイト・サンプルサイト】
規格が読めないならまずはチュートリアル。サンプルサイトも沢山ある。
(とほほは間違いが多いためこのスレでは批判的意見が多い)
(以下は精選すべきとの議論あるが進んでいないので玉石混淆)
MetaGraphic Cell
www2u.biglobe.ne.jp/~oz-07ams/prog/
どら猫本舗のリファレンスカウンター
www.doraneko.org/
はぎさんちのページ Mozilla's DOM Sample Project
cgi.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/mds.cgi
オブジェクトなJSの基礎講座
chaichan.web.infoseek.co.jp/src/2ndthema.htm
【関連スレ】
板違い、スレ違いに注意!サーバ側での処理はWebProg板へどぞ!
Webサイト制作初心者用質問スレ Part 202
pc11.2ch.net/test/read.cgi/hp/1222007442/l50
CSS /* CSS・スタイルシート質問スレ 上級者用【71th】 */
pc11.2ch.net/test/read.cgi/hp/1205680031/l50
CSS/DHTMLバグ辞典スレッド 【第5版】
pc8.2ch.net/test/read.cgi/hp/1144494359/l50
役に立つ書籍は? 4冊目
pc11.2ch.net/test/read.cgi/hp/1172823674/l50
JavaScript手取り足取りスレッド
pc11.2ch.net/test/read.cgi/hp/1205922529/l50
1行javascriptプログラミング
pc11.2ch.net/test/read.cgi/hp/1066750037/l50
WSH(・∀・)スレッド! Part 3
pc11.2ch.net/test/read.cgi/tech/1208948450/l50

8 名前:Name_Not_Found mailto:sage [2008/10/10(金) 19:20:27 ID:???]
  >>1
      `・+。*・     (´・ω・`)
        。*゚  。☆―⊂、  つ 
      。*゚    :     ヽ  ⊃
      `+。**゚**゚       ∪~

9 名前:Name_Not_Found mailto:sage [2008/10/11(土) 00:21:46 ID:???]
>>1(・ω・`)乙 これはポニテがうんたらかんたら

10 名前:Name_Not_Found [2008/10/11(土) 13:16:59 ID:mqs5DpPU]
早速ですがCで言うところのexit()みたいな
実行を停止する関数や制御文のようなものはありますか?
リファレンスでそれっぽいのを見付けられませんでした
throw、return辺りが使えるのでしょうか

if(!a) {
 statement
}

これを下みたいに書きたいのです

if(a) exit
statement



11 名前:Name_Not_Found mailto:sage [2008/10/11(土) 13:32:54 ID:???]
>>7
イタタタタタタタタタタタタタタタタタタタタタタ

12 名前:Name_Not_Found mailto:sage [2008/10/11(土) 13:37:33 ID:???]
>>10
if(a) return;
statement


13 名前:Name_Not_Found mailto:sage [2008/10/11(土) 14:29:50 ID:???]
ありがとうございます
一番上のブロック(?)でもreturnが使えるんですね

14 名前:Name_Not_Found mailto:sage [2008/10/11(土) 14:41:00 ID:???]
つかえないよ

15 名前:Name_Not_Found mailto:sage [2008/10/11(土) 15:41:02 ID:???]
設計から見直せ

16 名前:Name_Not_Found mailto:sage [2008/10/11(土) 17:49:23 ID:???]
グローバルスコープでreturnとか

17 名前:Name_Not_Found mailto:sage [2008/10/11(土) 18:03:45 ID:???]
どこに返るんだよっていう

18 名前:Name_Not_Found mailto:sage [2008/10/11(土) 18:08:19 ID:???]
釜山?

19 名前:Name_Not_Found mailto:sage [2008/10/11(土) 19:32:34 ID:???]
前スレ994です
994-995さんレスありがとうございました。

20 名前:Name_Not_Found mailto:sage [2008/10/12(日) 00:11:02 ID:???]
帰る家がない(´;ω;`)



21 名前:10 mailto:sage [2008/10/12(日) 05:51:19 ID:???]
使えませんでした…
ですがどうやらexitで終わるみたいです
IE、Firefoxで使えるならリファレンスにちゃんと書いといて欲しい…

>>15
分岐によってstatementの量が極端に違う場合少ない方を
ネストの深い方に入れてインデントを減らすコーディングは
設計と関係無いような…

22 名前:Name_Not_Found mailto:sage [2008/10/12(日) 06:29:53 ID:???]
エー、ちゃんと終わるの?構文エラーではなく?

23 名前:10 mailto:sage [2008/10/12(日) 06:48:08 ID:???]
returnだとスクリプト全体が実行されませんが
exitだと実行されます
未定義関数や他の名前を書いても終わるのでエラーぽいです

24 名前:10 mailto:sage [2008/10/12(日) 07:11:59 ID:???]
ちなみに

var t=new Date()
var h=t.getHours()
if(6<=h && h<18) exit
document.write('<link rel="stylesheet" href="hoge.css" />')

というコードを書きましたが6時前にはスタイルシートが適用され
6時以降は適用されなくなりました
今後の実装がどうなるかわからないので
趣味の範囲でなら未定義関数を終了と考えて良さそうです

25 名前:10 mailto:sage [2008/10/12(日) 07:43:22 ID:???]
エラーコンソール見たらexit is not definedて出てました
止めといた方が良さそうですねorz
しかし終了できないプログラミング言語って
止まれない車と同じくらい危険な気が…

26 名前:Name_Not_Found mailto:sage [2008/10/12(日) 08:19:15 ID:???]
>>25
まあなんでも書き方次第だよ

27 名前:Name_Not_Found mailto:sage [2008/10/12(日) 09:49:35 ID:???]
あほじゃないの。自分がやらせたい動作全体を1つの関数
にして最初にそれを1回呼び出すだけにしておけば、その中で
returnを使えば終わりにできるでしょ。その程度の構造の
工夫もできないんじゃ向いてないよ。

28 名前:10 mailto:sage [2008/10/12(日) 09:52:32 ID:???]
アホなんでネストが何段にもなってるとこんがらがっちゃうんですよね
終わったことは早く忘れてしまいたいというか

function hoge(){
 if(b) return
statements
}

if(a) hoge()

みたいな書き方すれば1段で抑えられそうですね

29 名前:10 mailto:sage [2008/10/12(日) 09:58:49 ID:???]
>>27
頭悪いのはその通りですけど
一部の頭の良い人しか使えないプログラミング言語ってどうなんですか?
上り坂で減速するテクニックがあれば車にブレーキ要らないですか?

30 名前:Name_Not_Found mailto:sage [2008/10/12(日) 10:44:33 ID:???]
ここの人たちに何言っても無駄だから突っかかんの止めな
万人向けのプログラミング言語なんてないし、嫌なら使うなって話

ココ行け
JavaScript 手取り足取りスレッド
pc11.2ch.net/test/read.cgi/hp/1205922529/



31 名前:10 mailto:sage [2008/10/12(日) 10:58:52 ID:???]
誘導ありがとうございます
アホな初心者でもわかるようなことを偉そうに煽られたもんで
つい反応してしまいました

32 名前:Name_Not_Found mailto:sage [2008/10/12(日) 11:03:38 ID:???]
window.moveBy() って
IE専用?

33 名前:Name_Not_Found mailto:sage [2008/10/12(日) 11:23:06 ID:???]
<button onclick="aaa.value = '1'; submit();">osu</button>
aaaはhidden項目のnameです。
firefoxだとエラーになってしまうのですが、firefoxに対応するにはどう書けばいいのでしょうか。

34 名前:Name_Not_Found mailto:sage [2008/10/12(日) 12:07:13 ID:???]
>>33
onclick="this.form.elements.aaa.value='1'; this.form.submit()"

35 名前:Name_Not_Found mailto:sage [2008/10/12(日) 12:08:41 ID:???]
何段にもなってこんがらがらせる方が悪いと思うが、
内側の関数から例外をthrowして最外側でその例外をcatchして
普通に終わるようにすれば機械的に変換できると思うな。

36 名前:Name_Not_Found mailto:sage [2008/10/12(日) 14:14:26 ID:???]
グローバルスコープにだらだら書き連ねるような幼稚な設計を見直せと言っているのに

37 名前:Name_Not_Found mailto:sage [2008/10/12(日) 22:50:15 ID:???]
prototype.js ってどうなの。jQueryと比べて

38 名前:Name_Not_Found mailto:sage [2008/10/13(月) 14:06:23 ID:???]
どうと言われてもな

39 名前:Name_Not_Found mailto:sage [2008/10/13(月) 19:02:44 ID:???]
斜め読みでも雰囲気は分かるはずだからまずは読めばいいよ

40 名前:Name_Not_Found mailto:sage [2008/10/14(火) 01:55:22 ID:???]
event.explicitOriginalTarget - MDC
developer.mozilla.org/en/DOM/event.explicitOriginalTarget

のanonymous contentとは何ですか?
無名のコンテント?



41 名前:Name_Not_Found mailto:sage [2008/10/14(火) 14:12:58 ID:???]
>>40
anonymous contentでぐぐって勉強すれば。

42 名前:Name_Not_Found mailto:sage [2008/10/14(火) 14:49:11 ID:???]
解答率低すぎて質問スレとして機能してねえw

43 名前:Name_Not_Found mailto:hoge [2008/10/14(火) 16:02:40 ID:???]
prototype.jsはプログラムの書けない人が使うものですか?

44 名前:Name_Not_Found mailto:sage [2008/10/14(火) 16:06:37 ID:???]
はい

45 名前:43 mailto:hoge [2008/10/14(火) 16:58:39 ID:???]
じゃ習うのやめます。やれ、やれとうるさい人がいるもので。
ありがとうございました。

46 名前:Name_Not_Found mailto:sage [2008/10/14(火) 17:27:38 ID:???]
そんなことねーよ

47 名前:Name_Not_Found mailto:sage [2008/10/14(火) 20:15:41 ID:???]
prototype.js と他のライブラリ(JSON.js)を併用していて問題が発生しました。

突き詰めると、eval を delete した後に eval を読み込むと
Object の拡張が消えてしまうというものです。(FireFox2 でのみ再現)
どなたか、原因や解決法にお心当たりはないでしょうか?

伝わり辛いと思いますので、以下にサンプルコードを付します。
Array について同様の拡張を行った場合には、この問題は起こりませんでした。

<html><body>
<script language="JavaScript">
<!--

Object["newFunc"] = function(){};

alert(Object.newFunc);   //* 正常に function(){} と表示される

delete eval;

alert(Object.newFunc);   //* 正常に function(){} と表示される

eval;

alert(Object.newFunc);   //* undefined と表示されてしまう (FF3, IE7 では正常に function(){} と表示される)

alert(eval("1+2"));     //* 正常に3と表示される

//-->
</script>
</body></html>

48 名前:Name_Not_Found mailto:sage [2008/10/14(火) 21:35:49 ID:???]
なんでevalをdeleteする必要があるのか?

49 名前:47 mailto:sage [2008/10/14(火) 22:02:00 ID:???]
>>48

詳細は分からないのですが、どうやら

> safe and native code evaulation (ライブラリのコメントより抜粋)

を行うためのようです。

つまり、他のコードで eval が上書きされていると都合が悪いので、
一旦 eval をデリートすることで、eval の内容を剥ぎ取っているようです。

ちなみに、実際のライブラリのコードは以下のようになっています。

e=eval;                      //* 元々の eval を待避
delete eval;
if (typeof eval === "undefined")eval=e;  //* ←ここで質問の内容の問題が起こる
f=eval(""+c);
eval=e;                      //* 退避した eval を元に戻す
return f;

(ホントはダメなんだろうけど、行数制限でライセンスコードは割愛.
MIT license の元で Copyright (C) 2007 Andrea Giammarchi - www.3site.eu 名義で公開されているコードです)

50 名前:Name_Not_Found mailto:sage [2008/10/14(火) 22:05:52 ID:???]
>>47
バグなんじゃね?
3で直ってるなら問題ないと思う



51 名前:Name_Not_Found mailto:sage [2008/10/14(火) 22:06:53 ID:???]
リロードしてなかった

52 名前:47 mailto:sage [2008/10/14(火) 22:32:51 ID:???]
>>50

こんな使われているソフトにもバグは有るんですね。
ちょっと意外です。(まだバグ確定ではないかも知れませんが)

>3で直ってるなら問題ない

普及度の高いブラウザには対応したいな〜と思ってましたが、
よくよく調べてみると、もうFireFox2のシェアって6%切ってるんですね。

なんとなくモヤモヤは残りますが、
ひとまず、現実的には乗り切れそうな気がしてきました。


ありがとうございます。


(他の皆様、もし更に具体的にご存知の事がありましたら、引き続きよろしくお願いします)

53 名前:Name_Not_Found mailto:hoge [2008/10/15(水) 13:29:10 ID:???]
cookieというのはスタンダロンでも使えますか?自分用に使いたい
のですが。よろしくお願いいたします。

54 名前:Name_Not_Found mailto:sage [2008/10/15(水) 14:53:50 ID:???]
>>53
いまいち。出直しておいで

55 名前:Name_Not_Found mailto:sage [2008/10/15(水) 18:44:55 ID:???]
>>53
他のブラウザは知らんけど、Firefox3ならデフォルトで、
/D:/foo/bar/
などとファイルが置かれているディレクトリがパスになりcookie登録/参照可能。

56 名前:Name_Not_Found mailto:hoge [2008/10/16(木) 10:02:02 ID:???]
すいません。コードの中でJScript objectを指定するように、という
エラーが出るのですがどんなことが考えられますか?ラインは当て
にならなくてどの部分かよくわかりません。

57 名前:Name_Not_Found mailto:sage [2008/10/16(木) 10:08:54 ID:???]
>>56
とりあえず落ち着いて>>1を読んでこい

58 名前:56 mailto:hoge [2008/10/16(木) 10:33:09 ID:???]
>>57さま
回答ありがとうございます。1を3回読んでみましたが解決しませんでした。
よろしくお願いします。

59 名前:Name_Not_Found mailto:sage [2008/10/16(木) 10:35:08 ID:???]
>>58
なら今度は>>1を理解してからこい

60 名前:Name_Not_Found mailto:sage [2008/10/16(木) 10:37:40 ID:???]
マジレスまがいのレスするからつけ上がるんだボケ



61 名前:Name_Not_Found mailto:sage [2008/10/16(木) 10:39:38 ID:???]
>>60
いつもの人をからかってるだけなんだからマジレスで水を差すなよ

62 名前:Name_Not_Found mailto:sage [2008/10/16(木) 11:20:18 ID:???]
>>56
そのエラーが出る最小限の例題を作って貼って。
作る能力がないならこのスレはあなたのためのものではない。

63 名前:56 mailto:hoge [2008/10/16(木) 12:13:00 ID:???]
>>62さん
親切なお答えありがとうございます。自分で見つけてやってみます。
少しはヒントなりいただけるかなと思ったのですが、残念です。

64 名前:Name_Not_Found mailto:sage [2008/10/16(木) 13:03:53 ID:???]
>>62の意味もわかってないとか・・

65 名前:Name_Not_Found mailto:sage [2008/10/16(木) 13:16:44 ID:???]
ダメだこりゃ

次いってみよー

66 名前:Name_Not_Found mailto:sage [2008/10/16(木) 13:32:18 ID:???]
>>63
とりあえずエラーが出る自分のコードをコピペして貼ったらいいよ。って>>62は言ってるのね。
口で説明してもよくわからないから。
エラーとは関係ない部分は削ってコード貼れば大抵誰かが教えてくれる

67 名前:Name_Not_Found mailto:sage [2008/10/17(金) 00:40:37 ID:???]
質問です。

function extend(sub, sup){
 var F = function(){};
 F.prototype = sup.prototype;
 sub.prototype = new F();
 sub.prototype.constructor = sub;
 sub.superclass = sup.prototype;
 if(sup.prototype.constructor == Object.prototype.constructor){
  sup.prototype.constructor = sup;
 }
}

これは継承のためのユーティリティ関数ですが、if文のところだけが理解できません。
そもそもこれは何をやっているのかがよく分からないのですが、
私の理解ですと、ある特殊な場合にスーパークラスのコンストラクタを自身に設定するということのようです。
この理解が正しいかは分からないです。
このif文の意味を教えてください。お願いいたします。

68 名前:Name_Not_Found mailto:sage [2008/10/17(金) 01:02:33 ID:???]
>>67
うーんたぶん。sup.prototypeにプロパティを設定するときに

function Sup() { ... }
Sup.prototype.method1 = ...; // (1)
Sup.prototype = { method1 : ... }; // (2)

(1)の方法なら自動的に Sup.prototype.constructor == Sup になるが、
(2)のようにオブジェクトを代入してしまうとその条件に当てはまりますね。

69 名前:67 mailto:sage [2008/10/17(金) 04:06:43 ID:???]
>>68 ありがとうございます。

デフォルトではfunction Foo(){}のように宣言したとき、
Foo.prototype.constructor==Foo
になるけど、Foo.prototypeにオブジェクトを代入してしまうと、
Foo.prototype.constructor==Object
になりますね確かに。
勉強になりました。


function Sup(){}
function Sub(){}
Sup.prototype = {
  method1: function(){alert(10)},
};
extend(Sub,Sup);
var o = new Sub();
o.method1(); // 10
var p = new Sup();
alert(p.constructor == Sup); // true

extend内のif文がないと最後の行でfalseになりますね。

70 名前:Name_Not_Found mailto:sage [2008/10/17(金) 22:39:32 ID:???]
正規表現を使って、
xmlファイル中の<Url>http:〜〜</Url>のhttp:〜〜の部分を取り出して、
配列に格納したいのですが、以下の正規表現ではうまくいきません。
ご指摘お願いします。

var url_list = source.match(/<Url>(.+?)</Url>/g);
ちなみに、変数sourceはString型で、そこにxmlが書かれています。




71 名前:Name_Not_Found mailto:hoge [2008/10/17(金) 22:46:45 ID:???]
エスケープせなあかんとちゃいまっか。gもいらん。

72 名前:70 mailto:sage [2008/10/17(金) 22:58:12 ID:???]
ご指摘ありがとうございます
エスケープってのは特定の文字を置換することですよね。
もう少し頑張ってみます。

73 名前:Name_Not_Found mailto:sage [2008/10/18(土) 00:47:41 ID:???]
エスケープってのは特別な意味を持つ文字を普通の文字として使うってこと
タグ内の /(スラッシュ) をエスケープしてないから
/<Url>(.+?)</Url>/ が /<Url>(.+?)</ で終わってる

だから /<Url>(.+?)<\/Url>/
\を付けるとエスケープできる。ただこれじゃ望み通りの結果は得られんだろうけど。

74 名前:Name_Not_Found mailto:sage [2008/10/18(土) 10:41:50 ID:???]
サブマッチ使えばできるけど
折角XML形式になってるのに、何故DOMを使わないのかと
XMLの意味がない

75 名前:Name_Not_Found [2008/10/18(土) 14:28:26 ID:cTQJu4p+]
【質問】 js内にある、多次元連想配列を、サーバー側に送る際の形式について
【状況】 Postで、送ろうと思っていますが、何も考えず送ってみた所、[object Object]となり、そっかオブジェクトだ…と困っています。

全然、解決策が見えないのです… どたなかお知恵を下さい
よろしくお願い申し上げる;;


76 名前:Name_Not_Found mailto:sage [2008/10/18(土) 14:36:58 ID:???]
>>75
サーバ側でどう使いたいか不明だけど、とりあえず JSON 形式にエンコードしてみれば?

77 名前:Name_Not_Found [2008/10/18(土) 14:42:43 ID:AF3+wTrX]
>>75
多次元連想配列を文字列にエンコードしてサーバに送って、
サーバでデコードしたらいいんじゃない?

文字列化の方法としては、
・JSON形式
公式サイト ttp://www.json.org/json-ja.html
実装例 ttp://ditio.net/2008/07/17/php-json-and-javascript-usage/
・XML形式(実例はよく知らない)
用例 ttp://www.virtual-tech.net/blog/2006/12/prototypejs-xmljavascript.html
なんかが一般的なんじゃないかと。

この2つなら、JavaScript、サーバ側言語(PHPなど)のどっちでも、
エンコード/デコード用のライブラリが公開されているだろうし。

78 名前:Name_Not_Found mailto:sage [2008/10/18(土) 15:17:44 ID:???]
>>76 >>77
なるほど。確かに文字列ですね。
XMLよりも、jsonに馴染んでるので、jsonにしてみます。

ライブラリも発見してみました。試してみます。

本当にありがとうございました

79 名前:Name_Not_Found [2008/10/19(日) 22:22:47 ID:gRo9N6p6]
'2ch.net'.match(/^2ch\.net$/) が null になるんだけど、何故か分かりますか?

リテラルの中の.を\でエスケープしてる(つもり)部分が問題になってるんだけど、
エスケープの仕方が違うのでしょうか?
'2ch.net'.match(/^2ch.net$/) だと2ch.netが返ってくるけど、
当然ながら'2chxnet'.match(/^2ch\.net$/) もマッチするんですよね。
お手元の環境で再現するかだけでも教えて頂けると嬉しいです。

当方macのFirefox3.0.3、safari3.1.2、Opera9.6でダメでした。

80 名前:79 [2008/10/19(日) 22:26:18 ID:gRo9N6p6]
>>79
> 当然ながら'2chxnet'.match(/^2ch\.net$/) もマッチするんですよね。

> 当然ながら'2chxnet'.match(/^2ch.net$/) もマッチするんですよね。
の間違いです。すいません。



81 名前:Name_Not_Found mailto:sage [2008/10/19(日) 22:32:18 ID:???]
>>79
Fx3.03では2ch.netにマッチする

82 名前:Name_Not_Found mailto:sage [2008/10/19(日) 23:06:24 ID:???]
バックスラッシュを入力したつもりがIMだかエディタだかの都合で円記号になってたりしないよな?

83 名前:Name_Not_Found mailto:sage [2008/10/19(日) 23:44:52 ID:???]
Fx2.0.0.17でも2ch.netにマッチしたよ

84 名前:79 [2008/10/20(月) 00:27:45 ID:BoxSCXfb]
>>82
流石にそれはないです。

みなさんありがとうございます。当然マッチしますよねぇ。
うーん、なんなんだろう。

85 名前:79 [2008/10/20(月) 00:42:05 ID:BoxSCXfb]
>>82
あぁ、すいません。どうやら円記号が原因だったみたいです。
こういう場合どうすればいいんでしょうか。

86 名前:79 [2008/10/20(月) 01:04:25 ID:BoxSCXfb]
option+¥(半角)キーで\ですね。MS以外のUnicode環境では気をつけないとダメですね。
皆さまありがとうございました。

87 名前:Name_Not_Found [2008/10/20(月) 12:43:14 ID:8cRDKNUU]
tooltip.jsでのポップアップに関する質問です。
現在、以下のようになっていますが、ポップアップする画像の
位置をマウスの右上に変更したいのですが、どうしたらよろしいでしょうか?

現在の様子のサンプル
www.geocities.jp/chelcy_0603/tooltip/
「aaaaaaa」のところにスクリプトが適用されています。

88 名前:Name_Not_Found mailto:sage [2008/10/20(月) 13:24:19 ID:???]
>>87
tooltip.jsをどこからもってきたのかよくわからないけど、
表示する位置はその中にべた書きしてあるから作者に要望出してみたら?
それか自分でxとかyをいじれば色々変えられるし

89 名前:Name_Not_Found [2008/10/20(月) 13:27:02 ID:7Z5AQA80]
>>86
逆じゃん?当方、Macで10年ちかくJS書いているけど、
普通にチルダの右のキー → バックスラッシュ
Opt + チルダの右のキー → Yen記号
だと思う。

>>87
なにがわからないのかを書かないと。
まるっと作ってほしいのなら手取り足取りスレへ。

90 名前:87 mailto:sage [2008/10/20(月) 15:02:12 ID:???]
>>88
ということは表示位置の変更はcssではなく、
.jsの方をいじる必要があるということですね?

>>89
表示位置変更のために、cssのpositionやtop、leftといった部分の値の変更
をしていたんですが、上手くいかず解決法も分からなかったので質問させて
いただきました。
誘導案内どうもです



91 名前:Name_Not_Found mailto:sage [2008/10/20(月) 16:13:22 ID:???]
tooltip.js内の51,52行目の
y = mouseY(e) + 16;
x = mouseX(e) - (ew / 4);

y = mouseY(e) + 35 - ew;
x = mouseX(e);
にしたらマウスの右上辺りにくるよ

ただ、単に数値合わせただけだから
windowWidthとかoffsetWidthとかの意味がなくなるけど

92 名前:87 mailto:sage [2008/10/21(火) 15:47:57 ID:???]
>>91
ありがとうございます!
やはり.js内のその辺が表示位置合わせに関連してくるのですね。


93 名前:Name_Not_Found mailto:sage [2008/10/21(火) 17:02:38 ID:???]
729 名前:Name_Not_Found[] 投稿日:2008/10/20(月) 08:43:32 ID:SH1zPud3
JavaScriptでとっても滑らか!画像切替のシンプルな技
ascii.jp/elem/000/000/180/180999/

こういうのってJavascriptをわざわざ使う必要あんのか?

94 名前:Name_Not_Found mailto:sage [2008/10/21(火) 18:56:23 ID:???]
>>93
発言の真意が、
1. エフェクト不要
2. Flashを使え
のどちらかは知らんが、"適度"なエフェクトには価値があるだろ。
こんな軽い効果では、無効な環境では全く表示されないFlashよりも、
とりあえず画像は表示されるJavaScriptで実現した方が良いのは確かだし。

95 名前:79 [2008/10/22(水) 02:11:01 ID:Wjx9Fs/I]
>>89
すいません。10年やってる人に恐縮ですが、
ことえりだと環境設定で¥と\の使い分けが設定できるので、
逆とかじゃなくて設定の違いだと思いますよ。

96 名前:Name_Not_Found mailto:sage [2008/10/22(水) 19:17:29 ID:???]
jspでデータベースからデータを取ってきて格納した配列をjavascriptでも同じように変数として扱いたいのですがどうすればいいでしょうか?

jspではtitleとhonbunは配列で

<form name="form_title">
<input type="hidden" name=title value="<%= title %>" >
</form>

<form name="form_honbun">
<input type="hidden" name=honbun value="<%= honbun %>" >
</form>

このように名前をつけ、javascriptでは

var taitoru[]= document.form_title.title.value;
var honbun[]= document.form_honbun.honbun.value;

このように変数に代入しています

jsp側ではSPANでオンマウス時にjavascriptを呼び出し、javascriptでは文字が配列のhonbun[0]等をポップアップした枠の中で表示させるようにさせたいのですが
枠そのものがポップアップしません

上記のjavascriptでの変数への代入部分をコメントアウトすると、枠自体は表示されます

配列を丸ごとjavascriptで配列に代入できないのであれば、1データずつ引き継ぐという方法でもいいのですが、どのようにjavascript側で代入すればいいのでしょうか?


97 名前:Name_Not_Found mailto:sage [2008/10/22(水) 19:25:45 ID:???]
こういうサーバーサイドの言語での配列やオブジェクトを
JSに直接渡そうとする質問が定期的に出てくる理由が分からない

98 名前:Name_Not_Found mailto:sage [2008/10/22(水) 19:36:12 ID:???]
全部同一人物だと思えばスルーしたくなってくるだろ?

99 名前:Name_Not_Found [2008/10/22(水) 21:19:29 ID:gv4QIdNy]
javascript123.seesaa.net/article/106660331.html
コレを導入しようとしているんですが、
ページを開いた時点でチェックボックスが空なのに内容が表示されてしまいます。
サンプルはきちんと動くのに、コピペしただけの自分のところで動かない理由が良く分かりません・・
ヘルプお願いします。

100 名前:Name_Not_Found mailto:sage [2008/10/22(水) 21:24:43 ID:???]
俺は全く問題なかった。
サンプルコピペで動かないなら動作環境ぐらい書けよ。



101 名前:Name_Not_Found [2008/10/22(水) 21:47:24 ID:gv4QIdNy]
PHPの中に書き込んでIEでプレビューしてます。

最初チェックはずれてるときは表示されてて、
一度チェック入れてはずすと消えます。
次チェックすると出てきます

102 名前:Name_Not_Found mailto:sage [2008/10/22(水) 22:13:27 ID:???]
>>99
>>1
どこが分からないのか説明できないなら手取り足取りスレへ

103 名前:Name_Not_Found [2008/10/22(水) 22:37:11 ID:gv4QIdNy]
了解です。 移動します。

104 名前:Name_Not_Found [2008/10/22(水) 22:46:09 ID:gv4QIdNy]
display:none; 付けるのを忘れていただけみたいです。
CSSのコピペを忘れていました。

105 名前:Name_Not_Found mailto:sage [2008/10/22(水) 22:53:39 ID:???]
コピペもできないってどういうことなの?プンプン

106 名前:Name_Not_Found mailto:sage [2008/10/23(木) 10:12:17 ID:???]
DOMchange的なイベントって搭載されているブラウザってどれですか?
例えばFirebugってドキュメントツリーが変わった時にそれが反映されて表示されますよね。
そういったことを自分のアプリでやりたいと考えてます。

107 名前:Name_Not_Found mailto:sage [2008/10/23(木) 11:42:05 ID:???]
ドキュメント読み込み完了後にスクリプトから!importantなスタイルを適用するにはどうしたらいいですか?
ただし、あらかじめ用意したCSSファイルを適用するのではなくて、動的にCSSルールを生成して適用するものとします。
試しに、elem.style.background = '#ccc !important'; をボタンクリックで実行させたところ、Fx3では何も変化がありませんでした。

108 名前:Name_Not_Found mailto:sage [2008/10/23(木) 17:39:22 ID:???]
>>106
CSSのexpression使ってやる方法どこかで見た気がしたなあと思ってググったらあった
ttp://d.hatena.ne.jp/amachang/20080530/1212120953
これで要求を満たしてるのかどうかよくわからんが

109 名前:106 mailto:sage [2008/10/23(木) 18:47:30 ID:???]
>>108 これは面白い方法ですね。確かにこれでいけそうです。ありがとうございます。
Firebugのソースざっと見てみたんですが、ちょっとすぐに分かりそうになかったので、また時間が出来た時に見てみます。

110 名前:Name_Not_Found mailto:sage [2008/10/23(木) 23:15:48 ID:???]
質問です。

1.
XPathを使って、title属性を持つdivを抽出したいと思っていまして、今は
//div[@title]
という指定で抽出しているのですが、この表記は間違っているのでしょうか?
一応抽出できてはいるのですが、title="hoge"だとかそういった指定しか見かけなかったので…

2.
href属性の中にURLが書いてあるとき、
そのURLのdomainを抽出する方法を教えてください。
document.domainで今見ているサイトのドメインはとってこれますが、
任意のURLのドメインを抽出することはできるのでしょうか?

よろしくお願いします。



111 名前:Name_Not_Found mailto:sage [2008/10/24(金) 00:04:20 ID:???]
>>106 >>108
DOMNodeInserted、DOMSubtreeModifiedとか。Firefox限定だけど。

>>110
正規表現じゃだめ?

112 名前:Name_Not_Found mailto:sage [2008/10/24(金) 00:07:39 ID:???]
divにappendChild(p)して
そのpの中にaを付け加えたいんですが
どうやってpを取得すればいいですか?
お願いします


113 名前:Name_Not_Found [2008/10/24(金) 00:10:50 ID:Y49ehIFq]
>>112
よく分からない質問だな。appendChild(p)するということは
そのpは変数とかに入っているんだよな。ということは今更
取得も何もないと思うが(変数に入ってないのならappendChild()
するときに入れればいいと思うし)。

114 名前:Name_Not_Found mailto:sage [2008/10/24(金) 00:12:49 ID:???]
なるほど
aを持つpを作ってからそれをappendChildすればいいんですね
ありがとうございます


115 名前:Name_Not_Found mailto:sage [2008/10/24(金) 00:18:07 ID:???]
逆でもいい

116 名前:Name_Not_Found mailto:sage [2008/10/24(金) 02:03:10 ID:???]
ExplorerCanvas(excanvas.js) について質問です。

現在excanvasを使用してIE6へ描画処理をさせようと思っています。
このexcanvasを使用した描画処理について自分なりに調べてみたのですが、
以下の二点が分かりませんでした。

・画面上に引ける線の種類は実線のみか?
・画面に文字を表示したいが、直接表示できないため、
 canvasでは「画像で表示」、又は「div要素を絶対座標を使用して表示」となっていた。
 これはexcanvasでも使用できるか?

線種は、折れ線グラフをcanvasに表示していたサイトがあり、
そこで水平補助線の線種を点線・破線・実線から選んでいました。
これはグラフで使用しているからこれらの線を引けるのであって、
実際にcanvasに描けるのは実線のみ、ということでよいのでしょうか?
(できれば点線・破線が引きたいです)

文字表示ですが、現在のブラウザではcanvasの文字表示は対応していないようです。
この場合、canvasでは上記の「画像使用」、「div要素を座標表示」で代用できるらしいとなっていましたが、
これはcanvas同様excanvasで使用できるのでしょうか?
(excanvasでの使用制限でひっかからないか?)

よろしくお願いいたします。

117 名前:Name_Not_Found mailto:sage [2008/10/24(金) 05:52:33 ID:???]
>>111
正規表現を考えてみたところ、
サブドメインを判断するのが難しそうなのですが、
何か参考になるようなサイトはないでしょうか。
よろしくお願いします。
また、正規表現以外の方法でも構いませんので引き続きよろしくお願いします。

118 名前:Name_Not_Found mailto:sage [2008/10/24(金) 09:15:38 ID:???]
>>117
"正規表現" "URL抽出" に一致する日本語のページ 約 2,300 件中 1 - 10 件目 (0.09 秒)

答えを求めているように見えるけど、もう少し自分で調べような

119 名前:Name_Not_Found mailto:sage [2008/10/24(金) 16:23:03 ID:???]
URLじゃなくてドメイン抽出だろとつっこんでみるテスト

120 名前:Name_Not_Found mailto:sage [2008/10/24(金) 18:15:43 ID:???]
再帰処理について質問です。

ある文字列を1文字単位で並び替えて全ての組み合わせを生成するプログラムを途中まで作ったのですが詰まりました。
処理速度を最も軽くするにはどう書けばいいでしょうか?

生成する結果は1文字〜任意文字数の全ての組み合わせで、以下の順番で生成します。




ああ
あい
あう
いあ
・・・・・
あああ
ああい
ああう
あいあ
・・・・・



121 名前:120 mailto:sage [2008/10/24(金) 18:16:19 ID:???]
<html>
<head><script language="JavaScript"><!--
var txtData = 'あいう';          //任意文字列
var n = 2;                   //任意文字数
var t = txtData.length;
var k = 0;
var txtArr = txtData.split('');
var list=new Array();
function test(i){
  if( i<n ){
    if( i>0 ){
      var txt = txtArr[k];
      k=k+1;
    }else{
      var txt = '';
    }
    for( var j=0; j<t; j++ ){
      list.push( txt + txtArr[j] );
    }
    if( i>0 && k<t ){
      test(i);
    }else{
      k=0;
      test(i+1);
    }
  }
  return list;
}
//--></script></head>
<body onLoad="document.body.innerHTML=test(0).join('<br>');">
</body>
</html>

122 名前:Name_Not_Found mailto:sage [2008/10/24(金) 18:48:11 ID:???]
気軽に「最も」とかいうなよ

123 名前:Name_Not_Found mailto:sage [2008/10/24(金) 19:12:54 ID:???]
もっともだ

124 名前:Name_Not_Found mailto:sage [2008/10/24(金) 19:21:41 ID:???]
(ht|f)tp(s)?:\/\/([\w-~\.]+?)\/

125 名前:120 mailto:sage [2008/10/24(金) 19:51:52 ID:???]
>>122
ご自分の感覚でかまいませんので、
よろしくお願いします。m(_ _)m

126 名前:Name_Not_Found mailto:sage [2008/10/24(金) 20:50:14 ID:???]
JSでやる以上再起処理という時点で「最も軽い」という要件を満たさない気がする

127 名前:Name_Not_Found mailto:sage [2008/10/24(金) 22:11:01 ID:???]
>>126
JSでやる上で「最も軽い」でしょ

128 名前:Name_Not_Found mailto:sage [2008/10/24(金) 22:17:59 ID:???]
>>127
分盲乙

129 名前:Name_Not_Found mailto:hoge [2008/10/24(金) 23:11:22 ID:???]
>>128
文盲乙

130 名前:Name_Not_Found mailto:sage [2008/10/24(金) 23:37:08 ID:???]
再帰なんて要らんだろそもそも。ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
function gen(txt, n) {
var l = 0, a = [''];
while(l <= n) {
var b = [];
for(var i = 0; i < a.length; ++i) {
for(var j = 0; j < txt.length; ++j) {
var s = b[b.length] = a[i] + txt.charAt(j); document.writeln(s);
}
}
a = b; ++l;
}
}
gen('あいう', 8);
</script></pre>
</body></html>



131 名前:Name_Not_Found mailto:sage [2008/10/24(金) 23:55:22 ID:???]
appendChild('a')だと、親要素の中にaを追加できますが
中ではなくて、親要素の直後に追加したい場合はどのようにすれば良いのでしょうか


132 名前:Name_Not_Found mailto:sage [2008/10/25(土) 00:05:47 ID:???]
nextSibling insertBefore

133 名前:Name_Not_Found mailto:sage [2008/10/25(土) 00:10:54 ID:???]
>>127
JSは関数呼び出しのコストが高くつくから速度が必要なときに再帰でやるのは悪手という常識

134 名前:Name_Not_Found mailto:sage [2008/10/25(土) 00:13:53 ID:???]
JS、板違い
ここはJavaScript

135 名前:Name_Not_Found [2008/10/25(土) 00:22:31 ID:4ixLRwLT]
ボタンを押すと、特定の画像の現在の座標を取得できるような方法を教えてください

136 名前:Name_Not_Found mailto:sage [2008/10/25(土) 00:42:02 ID:???]
特定の画像のオフセット + その親要素のオフセット + その親要素の…

と遡って全部足せばいい。

137 名前:Name_Not_Found mailto:sage [2008/10/25(土) 01:05:51 ID:???]
>>136
それだとブラウザのバグ絡みで不味くなかったっけか

138 名前:Name_Not_Found mailto:sage [2008/10/25(土) 03:23:52 ID:???]
ブラウザによってダメなのがわけわからない

139 名前:120 mailto:sage [2008/10/25(土) 03:38:12 ID:???]
>>130
レスありがとうございます。
繰り返しを使った方法は知っていましたが再帰の勉強中でして、
できれば再帰を使った方法をお願いしたいです。m(_ _)m

140 名前:120 mailto:sage [2008/10/25(土) 03:39:54 ID:???]
>>126
他の言語での処理が早いのは知ってる。



141 名前:Name_Not_Found mailto:sage [2008/10/25(土) 03:46:58 ID:???]
>>127,129,140
>>126はJavaScriptで再帰処理すると速度的に不利になるよと言ってるんだよ

142 名前:120 mailto:sage [2008/10/25(土) 05:05:54 ID:???]
>>141
今は他言語との比較を問題にしている訳ではないのだが?

143 名前:Name_Not_Found mailto:sage [2008/10/25(土) 05:44:04 ID:???]
>>142
頭のめぐりが悪そうなので丁寧に書いてやろう

JavaScriptの再帰はループに比べて遅いので速度がほしいときはループで書け
他言語との比較とか誰も問題にしてねえよカス

144 名前:Name_Not_Found mailto:sage [2008/10/25(土) 06:05:23 ID:???]
再帰処理の勉強がしたいだけなので、パフォーマンスは関係ないって話じゃないのか。

145 名前:Name_Not_Found mailto:sage [2008/10/25(土) 06:19:04 ID:???]
処理速度を最も軽くするにはどう書けばいいでしょうか?

146 名前:Name_Not_Found mailto:sage [2008/10/25(土) 06:33:03 ID:???]
>>142
こいつは・・・w

147 名前:Name_Not_Found mailto:sage [2008/10/25(土) 08:20:35 ID:???]
>>139
アンタが指定した順番(幅優先順)は再帰と相性が悪い。わざわざ適して
ない問題に再帰を使おうとするというのはセンスを疑うけどね。
しかしなぜ皆ごたくばかりでコード書かいてみせない?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
var out = [];
function gen(cur, txt, m, n) {
if(!out[m]) out[m] = [];
for(var i = 0; i < txt.length; ++i) {
var s = cur + txt.charAt(i); out[m].push(s);
if(m < n) gen(s, txt, m+1, n);
}
}
gen('', 'あいう', 0, 7);
for(var i = 0; i < 7; ++i)
for(var j = 0; j < out[i].length; ++j) document.writeln(out[i][j]);
</script></pre>
</body></html>

148 名前:Name_Not_Found mailto:sage [2008/10/25(土) 08:56:22 ID:???]
宿題じゃね?

149 名前:Name_Not_Found mailto:sage [2008/10/25(土) 11:42:08 ID:???]
画像ビューアーを作っています
Imageオブジェクトについて質問です

window.onload = function (){
 url="C:\\test.txt";
 url="C:\\test.jpg";
 objnowimage = new Image();add_log("imageオブジェクト作成");
 objnowimage.src=url;add_log("url設定");
 log.src=objnowimage.src;add_log("url表示");
 objnowimage.onload=function(){add_log("onload");};
 objnowimage.onerror=function(){add_log("onerror");};
}
function add_log(msg){
 info.value=msg+"\n"+info.value
}

このサンプルの二つのurlのファイルはどちらも0バイトの空ファイルです
url="C:\\test.jpg";の時はちゃんとadd_log("onerror");が返ってくるのに、url="C:\\test.txt";の時はonload、onerrorどちらも返ってきませんので
画像でないファイルの時に完全に止まってしまうので困っています
javascrptで、そのファイルが有効な画像ファイルかを調べるを教えて下さい
環境はvista+IE7です
サンプルコードには書いてませんが、completeプロパティも最後までfalseで役に立ちませんでした

150 名前:Name_Not_Found mailto:sage [2008/10/25(土) 12:51:16 ID:???]
質問ですが、次の上がtrueで下がfalseになる理由は何ですか?
両方ともオブジェクトなので参照型なので同じ扱いになるのではないんでしょうか?

function f(){
var r = /a/;
return r;
}
var x = f(), y = f();
alert(x == y); // true

function g(){
var o = {x:2};
return o;
}
var x = g(), y = g();
alert(x == y); // false



151 名前:Name_Not_Found mailto:sage [2008/10/25(土) 12:57:55 ID:???]
>>150
正規表現リテラルはオブジェクトを1つだけ作ってあとはそれを
使いまわす。オブジェクトリテラル(ではなく正式にはオブジェクト
式)はそこを実行するたびに新しいオブジェクトを生成する(だから
リテラルではないわけだ)。

152 名前:Name_Not_Found mailto:sage [2008/10/25(土) 13:02:31 ID:???]
>>149
>objnowimage.src=url

これは一番最後にしたら?


153 名前:Name_Not_Found mailto:sage [2008/10/25(土) 13:14:22 ID:???]
>>152
一番最後にすると、何故かobjnowimage.onerror=function(){add_log("onerror");};
}が作動してしまいました
onloadは作動しなかったのに

そのほかアレコレ順番を変えてみましたが、結果は変らずでした

154 名前:150 mailto:sage [2008/10/25(土) 13:17:51 ID:???]
>>151
なるほど!

var o = {x:2}

var o = new Object();
o.x = 2;
の簡易表現と考えたらいいんですね。

一方
var r = /a/;
は、
var r = new RegExp('a');
とは違うので、>150のfをこれで書き換えると

function f(){
var r = new RegExp('a');
return r;
}
var x = f(), y = f();
alert(x == y); // trueでなくfalse!

となりますね。

ありがとうございます。

155 名前:Name_Not_Found mailto:sage [2008/10/25(土) 13:24:08 ID:???]
>>151
function f(p)  {
  var r = /a/;
  r.p = p;
  return r;
}
var x = f("a"), y = f("b");
alert( x.p );
alert( x == y );

こういう風にしたらブラウザで結果が割れたんだがECMA的には後者が正しいんでしょうか?
IE6, Safari3
  x.p: "a"
  x == y: false
Fx3, Opera9.5, GC0.2
 x.p: "b"
 x == y: true

156 名前:Name_Not_Found mailto:sage [2008/10/25(土) 13:29:19 ID:???]
>>153
onerrorが作動するのは正しい動きじゃないの?

157 名前:Name_Not_Found mailto:hoge [2008/10/25(土) 14:25:18 ID:???]
質問です。メンバが見つかりませんと出るのですがど
ういう原因が考えられますか。IE6-SP2を使用です。

158 名前:Name_Not_Found mailto:sage [2008/10/25(土) 14:26:29 ID:???]
ハア???

159 名前:Name_Not_Found mailto:sage [2008/10/25(土) 15:06:45 ID:???]
これはまた・・・・レベルの高い質問だな

160 名前:Name_Not_Found mailto:sage [2008/10/25(土) 16:11:41 ID:???]
メール欄



161 名前:Name_Not_Found mailto:sage [2008/10/25(土) 16:14:20 ID:???]
>>155
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.8.5
を読む限り、rは同じオブジェクトを参照するべきである
(後者が正しい)ように思えますね。

162 名前:Name_Not_Found mailto:sage [2008/10/25(土) 16:41:01 ID:???]
>>143
文盲乙

釣りじゃなければレスをもう一度見ろやカス

163 名前:Name_Not_Found mailto:sage [2008/10/25(土) 17:23:06 ID:???]
>>161
ありがとうございます。

>走査時に RegExp オブジェクトに変換される
>プログラムまた関数の評価の開始前に生成される
>それは新規オブジェクト生成はしない

この部分を解釈するとやっぱりそうなるんですかね。
しかし解り難い・・・

164 名前:Name_Not_Found mailto:sage [2008/10/25(土) 19:27:32 ID:???]
>>162
おいおい、いまさら「再帰を使った方法をお願いしたい」まで巻き戻すのかよ

165 名前:Name_Not_Found mailto:sage [2008/10/25(土) 20:49:47 ID:???]
昨日の今日で何が「いまさら」だよw

166 名前:Name_Not_Found mailto:sage [2008/10/25(土) 22:04:52 ID:???]
>>165

こいつアスペルガー症候群じゃね?

167 名前:Name_Not_Found mailto:sage [2008/10/25(土) 22:15:05 ID:???]
負け惜しみ乙www

168 名前:Name_Not_Found mailto:sage [2008/10/25(土) 23:13:25 ID:???]
ところで、>>130>>147 の所要時間を計測してみたんだけど、
手元のノートPCのFxで 2400msec .vs. 340msec と再帰版が
圧倒的に速かった。もちろん出力まで含めての時間ね。
再帰が遅いとかわめいてた人たち、>>147 より速いの書いてみて
くんないかな。無駄口を叩き合うより優れたコードで競う方が
有意義でしょ?

169 名前:Name_Not_Found mailto:sage [2008/10/25(土) 23:17:24 ID:???]
>>168
>>1

170 名前:Name_Not_Found mailto:sage [2008/10/25(土) 23:20:24 ID:???]
いやだから、>>130>>147 の作者なんだけど。
まあ2ちゃんだから信用しないというのなら勝手だが。



171 名前:Name_Not_Found mailto:sage [2008/10/25(土) 23:28:19 ID:???]
負けるなホレ氏。

172 名前:Name_Not_Found mailto:sage [2008/10/25(土) 23:35:05 ID:???]
それで >>130>>147 の作者だけど、もう1つ書いてみた。
でもこれも1000msec と再帰版より遅い。やっぱ再帰版が最強なんでは?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
function gen2(a, n) {
var m = a.length, limit = Math.pow(m, n);
for(var i = 0; i < limit; ++i) {
var x = i, s = '';
for(var k = 0; k < n; ++k) {
s = a[x % m] + s; x = Math.floor(x / m);
}
document.writeln(s);
}
}
var t1 = new Date().getTime();
for(var j = 1; j <= 8; ++j) gen2(['あ','い','う'], j);
var t2 = new Date().getTime();
document.writeln(t2 - t1);
</script></pre>
</body></html>

173 名前:Name_Not_Found mailto:sage [2008/10/25(土) 23:51:54 ID:???]
それで >>130>>147>>172 の作者だけどもう1つ書いた。
これも780msec と再帰版より遅いね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
function gen3(a, n) {
var m = a.length, limit = (Math.pow(m, n+1)-1)/(m-1);
var out = [''], p = 0, q = 1;
while(q < limit) {
for(var i = 0; i < m; ++i) out[q++] = out[p] + a[i];
++p;
}
return out;
}
var t1 = new Date().getTime();
var a = gen3(['あ','い','う'], 8);
for(var i = 1; i < a.length; ++i) document.writeln(a[i]);
var t2 = new Date().getTime();
document.writeln(t2 - t1);
</script></pre>
</body></html>

174 名前:nanasi [2008/10/26(日) 01:57:49 ID:EVWZmOp/]
JavaScript がオフになっているかどうかはどうすればわかりますか?

175 名前:Name_Not_Found mailto:sage [2008/10/26(日) 02:32:15 ID:???]
<noscript>JavaScriptがオフだよ お兄ちゃん!</noscript>

176 名前:Name_Not_Found mailto:sage [2008/10/26(日) 03:13:06 ID:???]
<div class="hoge">
<h2 class="header">Example<h2>
<div class="script">
<script type="text/javascript">
(function () {
あんなことこんなこと
})();
</script>
</div></div>

↑こういう構造で、下の無名関数から<h2>タグをstyle="display:none;"にすることは可能でしょうか?
div.hogeが閉じる前だから無理なような気もするし、
h2.headerはすでに閉じてるから可能のハズって気もするんですが。
可能ならどうやればいいんでしょうか?
ご教示お願いします。

177 名前:Name_Not_Found mailto:sage [2008/10/26(日) 03:22:24 ID:???]
(function () {
document.getElementsByTagName("h2")[0].style.display = "none";
})();

h2 は閉じてるから問題ない

178 名前:Name_Not_Found mailto:sage [2008/10/26(日) 03:25:52 ID:???]
このあたりの話か
ttp://d.hatena.ne.jp/amachang/20061201/1164986067

179 名前:Name_Not_Found mailto:sage [2008/10/26(日) 03:49:58 ID:???]
>>177-178
こんな時間に即レスありがとう。
html内のh2タグの数が不確定なんで>>177のままでは無理だったけど、
>>178も参考にして、↓にしたらうまくいきました!

(function () {
document.getElementsByTagName("h2")[document.getElementsByTagName("h2").length - 1].style.display = "none";
})();

180 名前:Name_Not_Found mailto:sage [2008/10/26(日) 06:08:42 ID:???]
1,2,3,4,5,...とあるボタンを、Allというボタンを押すと順番に全てを押すような動きをさせたいのですが、どうしたらいいでしょうか



181 名前:Name_Not_Found mailto:sage [2008/10/26(日) 06:40:37 ID:???]
>>180
Allのときに1,2,3,4,5への呼び出しメッセージを送る。
多分順番に届く。


182 名前:Name_Not_Found mailto:sage [2008/10/26(日) 07:24:20 ID:???]
IEでのマウス座標の取得関数についてなんですが、
(A) DHTMLクックブックではleftの部分だけ取り出すと、
coords.left = e.clientX + document.body.scrollLeft - document.body.clientLeft;
if(document.body.parentElement && document.body.parentElement.clientLeft){
 var bodyParent = document.body.parentElement;
 coords.left += bodyParent.scrollLeft - bodyParent.clientLeft;
}
(B) 一方、JavaScript Cursor Positionhartshorne.ca/2006/01/23/javascript_cursor_position/
では、
cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
となっています。
どちらが正しいですか?(私はどちらも間違いだと思いますが、長くなるのでとりあえず根拠は省いて皆さんの意見を待ちたいと思います)

ポイントとして、
・e.clientXはクライアント領域の座標値なので、コンテンツのスクロール値を足すことで、ページ内の座標に変換する必要があります(基本)
・スクロール値は、standard modeの時は、document.documentElement.scrollLeftで、quirks modeの時は、document.body.scrollLeftです。
・ここまでは、(A)(B)とも同じです。違っているのはclientLeftを引くことによる微調整の部分です。
(A)は、document.body.clientLeftとdocument.documentElement.clientLeftを引いています。
それに対して、(B)はdocument.documentElement.clientLeftだけを引いています。
・当たり前のことですが、document.body.parentElementとdocument.documentElementは同じです。

細かな点として、
・document.body.clientLeftはbody要素のleft-borderです。
element.clientLeft - MDC
https://developer.mozilla.org/Ja/DOM/Element.clientLeft

・(B)によるとstandard modeのIEではクライアント領域の右上端が(2,2)になるような座標系でe.clientXを測っていることを発見したとのこと。
これは、document.documentElement.clientLeftがstandard modeの時に2になるのと符合します。
・また、Windows環境でウィンドウを最大化した場合には、IEに限らず右上端が(2,2)になります。ただし、Operaでは右上端が(0,0)です

183 名前:182 mailto:sage [2008/10/26(日) 10:50:05 ID:???]
半ば自己解決したので、報告します。Bが正解に近いという結論です。
これは何を持って正しい座標系とするかの問題なので答えなど存在しないとも言えそうです。

以下の考察では簡単のためスクロールは無いものとします。また、動作の確認にはIE7を使用しました。

●座標系を5つ定義します。
(1) (B) e.clientX - document.documentElement.clientLeftをx座標値とし、y座標値も同様に計算する座標系。この座標系で(x,y)の座標になる点をB:(x,y)のように書くことにします。以下同様。
(2) (A) e.clientX - document.documentElement.clientLeft - document.body.clientLeftをx座標値(ry A:(x,y)
(3) position:absoluteでtop:0px: left:0px;な点を(0,0)とする座標系。 ab:(x,y)
(4) e.clientX, e.clientYを座標値とする座標系。 cl:(x,y)
(5) 右クリックでコンテンツの右クリックメニューが出る最も左上端を(0,0)とする座標系。 con:(x,y)

●standard modeでは、
・cl:(2,2) = con:(2,2) = B:(0,0) = ab:(0,0)
・A:(0,0)はbodyのborderがある限り別の点。しかも何ら特徴のない点。
例えば、bodyのmargin-left-widthが10px, border-left-widthが20pxの時、A:(0,0)はbodyのボーダー内の点。
つまり、standard modeでは(A)のDHTMLクックブックの座標系は役に立ちません。

●quirks modeでは、
・cl:(0,0) = con:(0,0) = B:(0,0) ← bodyのborderの外辺であり、表示部の左上端。
・ab:(0,0) = A:(0,0) ← bodyのborderの内辺
bodyのborderが0pxなら両者は同じ点になります。

●以上のことから、「e.clientX, e.clientYの値からクライアント領域の左上端を(0,0)と見た座標系での値へと変換するには」、
Bの方法が適切だと考えられます。
Bの方法はやってることは簡単なことで、基本的にe.clientX/Yの値をそのまま使いますが、standard modeの時は2(document.documentElement.clientLeft/Topの値)を差し引いて補正します。

184 名前:182 mailto:sage [2008/10/26(日) 10:57:07 ID:???]
言い忘れてましたが、Windows環境ではウィンドウを最大化すると、standard modeで右上端がcl:(0,0)となります。
つまり、clientX/Yが2未満な領域に移動すると、コンテンツの右クリックメニューは出てこなくなります。

以上のように私は考えましたが、今回検索しまくったら、DHTMLクックブックの方法を結構見かけました。
bodyのborderはデフォルトでは0pxだし、あったとしても少ない値なのであまり問題が表面化しないとは思いますが、
(B)の方法のほうがタイピング量も少ないですし、より正しい方法であるように思いました。
何か私の見落としていた点や間違いがあれば補足お願いします。

185 名前:Name_Not_Found mailto:sage [2008/10/26(日) 13:28:20 ID:???]
すいません 質問です

www.dhw.ac.jp/faculty/#header
このサイトの下ににある、このページの先頭へのリンクをクリックすると
普通は一気に上までいくけど
なんでこのサイトのはゆっくり上がるんだろ?
どんな技術使えばこんなになるの?なんかいいな

186 名前:Name_Not_Found mailto:sage [2008/10/26(日) 13:53:49 ID:???]
>>181
どう描けばいいでしょうか

187 名前:Name_Not_Found mailto:sage [2008/10/26(日) 14:15:43 ID:???]
>>185 clickハンドラ内でscrollByをsetInterval。

188 名前:120 mailto:sage [2008/10/26(日) 15:41:12 ID:???]
>>147
レスありがとうございます。
順番を無視すればより早くなるかもしれませんが、整頓して出力する方法を探していたもので。
適するかどうか以前に再帰をよく知らなかったので勉強になりました。
ありがとうございました。m(_ _)m

ちなみに、私のノートでも再帰を使ったほうが倍近く早いです。
これは繰り返し文を使うと遅くなるという事でしょうか。^^;

189 名前:Name_Not_Found mailto:sage [2008/10/26(日) 16:33:33 ID:???]
データバインドでソートできるテーブルで、セルに交互に背景色を付けて見やすくしたいのですが、
var elem = "TR";
window.onload = function() {
if(document.getElementsByTagName) {
var el = document.getElementsByTagName(elem);
for(var i=0; i<el.length; i++) {
if(el[i].childNodes[0].tagName != "TH"
&& el[i].parentNode.parentNode.className.indexOf("tbl") != -1) {
if(i%2 == 1) {
el[i].className = "on";
} else {
el[i].className = "off";
}
}
}
}
}
これでは初期状態では思い通りになっているものの、ソートをすると色が戻ってしまいます。
ソート後も色を維持できる方法があればご教授下さい。

190 名前:Name_Not_Found mailto:sage [2008/10/26(日) 17:14:07 ID:???]
>>187
おーありがとうございます
ぐぐったら出てきました
勉強してきます



191 名前:Name_Not_Found [2008/10/26(日) 20:52:24 ID:iJZnswBP]
メールで注文する計算フォームを修正していますが動いてくれません。
コードはサンプルページを参考に記述しました。
どこが間違ってるでしょうか?
ページを下記へアップしました。
uproda11.2ch-library.com/src/11129760.html.shtml

メール送信を最終的にしたいので借りているCGIのフォーム設定に原因があるのかと
思ったりしましたが。分りません。


192 名前:Name_Not_Found mailto:sage [2008/10/26(日) 21:02:13 ID:???]
>>191
<FORM>がないのに</FORM>があるじゃん

つうかここで質問するようなことじゃないだろ


193 名前:191 [2008/10/26(日) 21:08:43 ID:iJZnswBP]
すみません、そこは削除してしまいましたが実際はあります。
が、やはりここで聴くことじゃないですか?

194 名前:Name_Not_Found mailto:sage [2008/10/26(日) 22:17:25 ID:???]
>>193
>>1
 一、自ら学んでJavaScriptコードを書く意思を持つ者
 一、質問を分かる日本語できちんと説明できる者

最初の文面にCGIと出ているのでURLは開いていませんが、
HTMLまたはCGIの内容と思われるのでここではスレチと言う事になります。

195 名前:191 [2008/10/26(日) 22:42:00 ID:iJZnswBP]
>>194 
そっか。そうですよね。すみませんでした。
レスありがとう御座いましたm(_ _)m

196 名前:Name_Not_Found mailto:sage [2008/10/26(日) 23:06:25 ID:???]
>>189
www.makoto3.net/DHTML_IE_NEO2/neo2-0109.html

データバインド懐かしいな。
昔は結構便利でよく使っていたけど、IE専用だったのがネックだったな。
PHPが普及してからは全く使わなくなってしまった。

197 名前:Name_Not_Found mailto:sage [2008/10/27(月) 00:04:20 ID:???]
JSでMath.rint()はどう書けばいいの?

198 名前:Name_Not_Found mailto:sage [2008/10/27(月) 00:21:18 ID:???]
Math.round

199 名前:Name_Not_Found mailto:sage [2008/10/27(月) 01:48:06 ID:???]
>>196
見逃していました、ありがとうございます

CGIやSSIが使えないサーバーで、頻繁に更新するファイルを、
極一部の身内での利用に重宝しています

200 名前:Name_Not_Found mailto:sage [2008/10/27(月) 08:33:50 ID:???]
DOMノードの属性を全て取得するにはどうしたらいいですか?

hasAttribute()で特定の属性を持つか判定したり、getAttribute()で特定の属性の値を取得できますが、
ノードの属性はDOMノードのプロパティから取得できるとは限らないので、for-inでは取得できません。



201 名前:Name_Not_Found mailto:sage [2008/10/27(月) 09:02:43 ID:???]
DontEnumが付いてるのは列挙できない
(俺が知らないだけで抜け道はあるのかも)

列挙するためのライブラリとか読むとDontEnumがついてそうなメンバの名前を持っておいて、
それが存在するかどうか一つ一つ確かめているみたい


202 名前:200 mailto:sage [2008/10/27(月) 09:22:26 ID:???]
>>201
DontEnum属性がついてると列挙できないのは分かるんですが、
DOMノードの場合ですとそもそも属性がプロパティになっているとは限らないですよね。
例えばHTML DOMの場合は全てのHTML属性に対して、その属性名をキャメライズした名前のプロパティを持ちます。
しかし一般のXMLの場合は、全ての属性がプロパティから取得できるとは限りません。
そんな場合に全ての属性を取得するにはどうしたらいいでしょう?

203 名前:Name_Not_Found mailto:sage [2008/10/27(月) 09:38:28 ID:???]
>>202
element.attributesでNamedNodeMapが返ってくる
てかDOMの仕様書読め

204 名前:200 mailto:sage [2008/10/27(月) 09:52:29 ID:???]
>>203
ありがとうございます。これからは仕様書読むようにします。

205 名前:Name_Not_Found mailto:sage [2008/10/28(火) 15:12:56 ID:???]
javascript+cssでつまづいているのですが

function ch(chsrc) {
document.getElementById("zoom").src=chsrc;
}

<div class="bigImg">
<img src="photo/04.jpg" id="zoom" />
</div>
<img src="photo/02.jpg" class="small" onClick="chsrc(this.src)" >
<img src="photo/03.jpg" class="small" onClick="chsrc(this.src)" >

上記コードで#bigImgに対してfloat:leftを効かせると
IE6(MultipleIE)で動作しなくなってしまいます。
float:leftを切ると実行できます。
仕方ないのでTableでレイアウトしたところ、
それでも無理でした。
CSSによってJavascriptの動作に制限がかかることが
あるのでしょうか?

わかる方がいらっしゃればヒントをお願い致します。


206 名前:Name_Not_Found [2008/10/28(火) 16:37:30 ID:8Nu1VnzO]
二日間ぶっ通しであれこれやっているのですが、らちがあかず質問します。
eucで書かれたサイトで別のページをXMLHttpRequestで読んで加工して出力したいのですが・・・、
その別のページというのは現状で手をつけること(XMLに変更するなど)はできません。

質問1.
responseTextの内容をXMLのようにパースできるようなライブラリ等はないでしょうか?

質問2.
仮に上の質問でライブラリが無いとした場合、正規表現で処理しようと思うのですが、
eucの日本語にマッチしてくれません。
responseTextの中の日本語にマッチさせる方法まないでしょうか?

IEオンリーの処理でかまいません。
ご存知の方、お知恵を拝借できますでしょうか?



207 名前:Name_Not_Found mailto:sage [2008/10/28(火) 16:49:10 ID:???]
>>205
通常のIE6では動作する。

ところで
class="bigImg"なのに
#bigImgに対してfloat:leftを指定しても意味はない。

function ch(chsrc)なのに
onClick="chsrc(this.src)"これでは動作するわけがない。

208 名前:Name_Not_Found mailto:sage [2008/10/28(火) 16:55:08 ID:???]
>>206
Document.loadXML()では駄目?

209 名前:Name_Not_Found mailto:sage [2008/10/28(火) 17:09:39 ID:???]
responseXML は空なのか

210 名前:Name_Not_Found mailto:sage [2008/10/28(火) 17:39:04 ID:???]
選択をキャンセルしたいんですが下記のように
onchangeイベントでfalseを返しても変更前の
値に戻らないのですがonbeforechangeみたいなイベントは
無いものでしょうか?

<select name="hoge" onchange="return changeHoge();">
<option value="hoge1">hoge1</option>
<option value="hoge2">hoge2</option>
<option value="hoge3">hoge3</option>
</select>




211 名前:Name_Not_Found [2008/10/28(火) 17:47:32 ID:8Nu1VnzO]
206です。

208>>
Document.loadXML()とは・・・なんでしょう?

209>>
だめでした・・・。
中に何も入ってないです。

なにかいい方法がないでしょうか・・・。



212 名前:Name_Not_Found mailto:sage [2008/10/28(火) 18:02:30 ID:???]
>>211
昔ちょっと調べたことがあるけど、responceXMLは読込先のページのContent-TypeがXMLと判断できないと空になるみたいだね
別ページに手をつけられないとなると難しいな

responceTextをそのままalertかテキストファイルに書き出したら文字化けしてるんじゃないかな
読込先のcharset指定が無かったり異常だったりするとXMLHttpRequestはutf-8扱いしてしまうんで
読込先がeucやsjisで書かれていると文字化けしちゃう
その場合は文字コードをあわせてやらなきゃいけない

213 名前:Name_Not_Found mailto:sage [2008/10/28(火) 18:16:46 ID:???]
>>206
CGIを裏で動かしてプロキシにした方が解析もできるしいいと思うんだけど無理?
JavaScriptで解析とか重くなりそうだけど。

>>210
どういうこと?
changeHogeがどういうことする関数かわからないんだけど、
選択をキャンセルするどのタイミングでどうやると起こるわけ?

214 名前:Name_Not_Found mailto:sage [2008/10/28(火) 18:46:38 ID:???]
>>211
208も言ってるように普通loadXMLを使う。

>>210
onchangeは、変わってしまってから発生するイベントだからreturn falseしても無駄。
onchangeするたびに変わった値をpreviousValueという変数に格納すればいい。

215 名前:Name_Not_Found [2008/10/28(火) 19:27:01 ID:8Nu1VnzO]
211です。

>>214
なるほど・・・と思ってやってみたけどだめなんですよね・・・。

var domObj;
try{
if(window.ActiveXObject) {
try{
domObj =new ActiveXObject("Msxml2.DOMDocument");
}catch(e){
try{
domObj =new ActiveXObject("Msxml2.DOMDocument.3.0");
}catch(e2){
try{
domObj =new DOMDocument;
}catch(e3){}
}
}
}
else
domObj =null;
}catch(e4){}

if( !domObj ) return;

domObj.loadXML( targetContents );
alert( domObj.getElementsByTagName('table').length )

----------------------------------------------------------
出力:0


216 名前:Name_Not_Found [2008/10/28(火) 19:52:23 ID:8Nu1VnzO]
211です。

上のエラーメッセージは"テキストの内容に無効な文字が見つかりました"
でした。
がっくし・・・。


217 名前:Name_Not_Found [2008/10/28(火) 21:58:10 ID:XUCuP6no]
いきなりですが、質問です。

たとえば2択のラジオボタンをJQueryのclone()を使って増やすと、FireFoxでは問題なく全て
別々のグループ(name=)で作られるのに、IE7だと全部同一グループとして扱われてしまいます。

ためしにクローン用のラジオボタンからname属性を消すと、IE7では選択不能な状態に。
どうもIE7ではname属性の書き換えができていない模様です。

似た症例が過去に無いでしょうか?
素直にCGI使った方が良いのだろうか?

218 名前:Name_Not_Found mailto:sage [2008/10/28(火) 22:04:37 ID:???]
>>217
意味不明。再現可能なミニマムコードを提示してくれ。

219 名前:Name_Not_Found [2008/10/28(火) 22:10:49 ID:8Nu1VnzO]
206,211です。

>>212
書き込み見落としていました。

なるほど、
やはり読込先に手を付けないとだめですか・・・。

まいったな、それができないんですよね・・・、
なんかいい方法ないかな・・・。


220 名前:217 [2008/10/28(火) 22:27:52 ID:XUCuP6no]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"www.w3.org/TR/html4/loose.dtd">
<html xmlns="www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script src="test.js" type="text/javascript"></script>
</head>
<body>
<div id="radiobase">
<input type="radio" id="radid1" name="rgrp" value="1"/>
<input type="radio" id="radid2" name="rgrp" value="2"/>
</div>
</body>
</html>



221 名前:217 [2008/10/28(火) 22:28:12 ID:XUCuP6no]
// test.js
jQuery.noConflict();
var $ = jQuery;
$(function(){
$(window).ready(function(){
for(var i=0; i<10; i++){
var aaa = $("#radiobase").clone().removeAttr("id");
aaa.find("#radid1").attr("name","rgrp"+i).removeAttr("id");
aaa.find("#radid2").attr("name","rgrp"+i).removeAttr("id");
$("#radiobase").before(aaa);
}
});
});

222 名前:217 [2008/10/28(火) 22:29:15 ID:XUCuP6no]
>>218
>>220-221に即席サンプルアップしました。
IE7とFFでラジオボタンの挙動を比べてみて。

223 名前:Name_Not_Found [2008/10/28(火) 22:32:30 ID:8Nu1VnzO]
206,211,219です。

>>212

>読込先のcharset指定が無かったり異常だったりするとXMLHttpRequestはutf-8扱いしてしまうんで
>読込先がeucやsjisで書かれていると文字化けしちゃう

metaで指定しててもだめのようですね。
XMLHttpRequestはhttpヘッダの中のcontent-typeとcharsetで内容を判断してるみたいです。
現状httpヘッダにcharsetは吐かないようにしてるからutf-8と思ってるようです。

だめだこりゃ、あきらめました。


224 名前:217 [2008/10/28(火) 22:39:52 ID:XUCuP6no]
>>217でname属性の書き換えができていない模様と書きましたが
DebugBarで確認したらしっかり書き変わってました。
もしかしてIE7の不具合?

225 名前:Name_Not_Found mailto:sage [2008/10/28(火) 23:08:03 ID:???]
>>224
jQeuryは知らんけどこういう不具合があるよん
www.tagindex.com/kakolog/q4bbs/501/719.html

226 名前:217 [2008/10/28(火) 23:24:50 ID:XUCuP6no]
>>225
ものすげー有益な情報、超サンクス!!!
やっぱりIEの不具合か、おかげで解決。

具体的には以下のコードで対応可能。
アホっぽいけど、複製じゃなくて生成しろってことだな・・・。

jQuery.noConflict();
var $ = jQuery;
$(function(){
$(window).ready(function(){
for(var i=0; i<10; i++){
$('<input type="radio" name="rgrp'+i+'"/>').attr('value',1).appendTo('body');
$('<input type="radio" name="rgrp'+i+'"/>').attr('value',2).appendTo('body');
$('<br />').appendTo('body');
}
});
});

227 名前:Name_Not_Found [2008/10/28(火) 23:38:23 ID:DCyLLWdN]
nicEditのいじりかたについて聞きたいのですがココでいいですか?

228 名前:Name_Not_Found mailto:sage [2008/10/28(火) 23:52:20 ID:???]
そんなもんわざわざいじるくらいなら
HTMLタグ打ちを勉強した方が良いかと

229 名前:Name_Not_Found [2008/10/29(水) 00:52:15 ID:xl6MBZyt]
webアプリ作るためにも必要で・・
「クエリ送信」の文字を置き換える方法が知りたいのですが

230 名前:Name_Not_Found mailto:sage [2008/10/29(水) 01:01:30 ID:???]
>webアプリ
>webアプリ
>webアプリ
>webアプリ

勝手に改変して利用して、
自作ですって公開するのは著作権に抵触するよ
自分で一からJavascript学んで出直してきなさい



231 名前:Name_Not_Found mailto:sage [2008/10/29(水) 02:18:36 ID:???]
そろそろライブラリに関する質問をどうにかした方がいいと思う

232 名前:Name_Not_Found mailto:sage [2008/10/29(水) 02:38:37 ID:???]
「クエリ送信」て type="submit" のデフォルトの文字列のこと?
nicEdit とも関係ないような

233 名前:Name_Not_Found mailto:sage [2008/10/29(水) 05:05:42 ID:???]
>>230
ちなみにNicEditはMITライセンス。
>自作ですって公開
ってのは明らかに真っ黒だけど、
元の著作権表示を行うなら勝手に改変して公開しても全く問題無し。

234 名前:Name_Not_Found [2008/10/29(水) 07:45:28 ID:IWnl6Gf3]
バブリング?やevent delegation?辺りのクロスブラウザ対応の質問になると思うのですが、

<div style="position:absolute;width:100px;height:100px;"><a href="google.com">button</a></div>
<div style="position:absolute;width:100px;height:100px;">A</div>
<div style="position:absolute;width:100px;height:100px;">B</div>

このように同じサイズのブロック要素でレイヤ構造を組んだときに、
IEは最背面ブロックの<A>のボタンの"utton"辺りはクリッカブル、
IE以外は最前面以外のレイヤーは完全に無反応という違いが出ますが、
IEの挙動をIE以外の環境で再現する方法論はありますでしょうか。

235 名前:212 mailto:sage [2008/10/29(水) 11:39:13 ID:???]
>>223
やっぱり文字化けしてるのかな

var Stream = new ActiveXObject("ADODB.Stream");
Stream.Open;
Stream.Type = 1;
Stream.Write(domObj.responseBody);
Stream.Position = 0;
Stream.Type = 2;
Stream.Charset = "euc-jp"; //別ページの文字コードがわからんから、適宜変更して
alert(Stream.ReadText);

responceTextじゃなくて
こんな感じでresponseBodyからエンコードしてやるといいんじゃないかな

236 名前:Name_Not_Found mailto:sage [2008/10/29(水) 11:57:13 ID:???]
>>214
できました。ありがとう。

237 名前:Name_Not_Found mailto:sage [2008/10/29(水) 14:58:45 ID:???]
どうしたアホ外人、出番だぞ

238 名前:Name_Not_Found [2008/10/29(水) 15:47:48 ID:+jnOtkwV]
質問です。
オンマウスでメニューツリーを表示したいのですが、
あるサイトを参考にして
親メニューは画像にして、オンマウスで違う画像に変え、
下に子メニューを持ってくるようにしました。
この親メニューを複数使いたいのですが、
どこを変えたらいいのかわからないです。

<SCRIPT type="text/javascript"><!--
function showMenu1(menu1,menu2){
document.getElementById(menu1).style.display = 'none';
document.getElementById(menu2).style.display = 'block';
}
--></SCRIPT>
<STYLE type="text/css"><!--
#M1A { display: block;}
#M1B { display: none;}
*/--></STYLE>

<DIV id="M1A" onMouseOver="showMenu1('M1A','M1B')"><img src="通常の画像"></DIV>
<DIV id="M1B" onMouseOver="showMenu1('M1A','M1B')" onMouseOut="showMenu1('M1B','M1A')"><img src="オンマウスで表示の画像">
<DIV>
<A href="">子メニュ1</A><BR>
<A href="">子メニュ2</A>
</DIV>
</DIV>

idの部分を変えるんだろうとは思うのですが、
アドバイスお願いします。

239 名前:Name_Not_Found mailto:sage [2008/10/29(水) 16:21:06 ID:???]
idと引数

240 名前:Name_Not_Found [2008/10/29(水) 19:16:17 ID:bBMTwy3L]
同じblogパーツが貼られているサイト間をリンクするタイプのblogパーツがありますが、
URL取得の仕組みがわかりません。
リファラーから取って来ているのか??
大まかな仕組みを教えて頂けないでしょうか?
Flashスレで聞く内容でしたらすみません。。。



241 名前:Name_Not_Found mailto:sage [2008/10/29(水) 20:14:02 ID:???]
スレチ

242 名前:238 mailto:sage [2008/10/29(水) 20:55:02 ID:???]
>>239
ありがとうございます。
引数というヒントで答えに辿りつけました。
感謝します。

243 名前:Name_Not_Found mailto:sage [2008/10/29(水) 23:26:19 ID:???]
すいません。objectタグのDOMなんですが

<html>
<head>
<title></title>
<script language="javascript" type="text/javascript">
function test(){
document.getElementById("box").data="2.PNG";
alert(document.getElementById("box").data);
}
</script>
</head>
<body>
<input type="button" value="push" onclick="test()"/>
<object id="box" data="1.PNG" width="200px" height="300px">
</body>
</html>

でボタンを押すとIE以外のブラウザではobjectで埋め込まれている
画像が変わります。(IEは変わりませんが、
alert警告では「2.PNG」と表示されます。)

divとかでobjectを囲んで丸ごと入れ替えるという方法はうまくいったのですが
IEでobject の埋め込みデータの中身だけを変える方法はないのでしょうか。
もしあったら教えてください。お願いします。

環境はXPSP3 の IE7 です

244 名前:Name_Not_Found mailto:sage [2008/10/29(水) 23:31:17 ID:???]
質問させてください。
onclick関数でHTMLのリンク要素のように他サイトに飛ばすことはできますでしょうか?
できるのなら方法を教えていただけませんか?

245 名前:Name_Not_Found mailto:sage [2008/10/29(水) 23:42:24 ID:???]
onclick="location.href='URL'"

246 名前:244 mailto:sage [2008/10/29(水) 23:54:24 ID:???]
>>245
ありがとうございます!できました。
ただ、欲を言えば新しいウィンドウで開きたいのですが、
そのような方法はありますでしょうか?

247 名前:Name_Not_Found mailto:sage [2008/10/30(木) 00:16:52 ID:???]
小出しにすんな死ね

248 名前:Name_Not_Found [2008/10/30(木) 00:17:20 ID:ef+iSf+5]
それはギャグなのか

249 名前:244 mailto:sage [2008/10/30(木) 01:30:22 ID:???]
みなさんごめんなさい。
onclick="window.open('URL','new');"
でうまくいきました。

>>247
試してみるまで気づかなかったもので、すみません。

>>248
ギャグではないのですが、失礼しました。

250 名前:Name_Not_Found [2008/10/30(木) 22:37:25 ID:Loz9bFuT]
質問です。
var array = [['']];
という2次元配列の宣言の仕方をとあるサイトで見かけたのですが、
これを new Array を使用して宣言しなおすとすると、
どのような宣言の仕方になるのでしょうか?
「[['']]」の具体的な意味(内容)を知りたく思います。
よろしくご教示ください。



251 名前:Name_Not_Found mailto:sage [2008/10/30(木) 23:12:06 ID:???]
>>250
var array = new Array();
array[0] = new Array('');

252 名前:250 mailto:sage [2008/10/31(金) 00:44:00 ID:???]
>>251
レスありがとうございます。
なるほど、array[0]に対して、「''」(中身がない)配列を加える感じっぽいですね。
勉強になりました。

253 名前:Name_Not_Found mailto:sage [2008/10/31(金) 01:24:27 ID:???]
>>252
ナンカチガウナー。Arrayコンストラクタの引数の扱い方をシラベナー。

var array = new Array();
array[0] = new Array();
array[0][0] = '';

254 名前:Name_Not_Found mailto:sage [2008/10/31(金) 01:39:43 ID:???]
>>253
別に間違ってない。
Array コンストラクタの引数が 1 つの場合、
それが数値の時はその長さの配列が作られるが、数値じゃない場合は最初の要素がその値になる。
結果として >250 も >251 も >253 も

var array = new Array(new Array(''));

もやってることは同じ。調べてみな。

255 名前:Name_Not_Found mailto:sage [2008/10/31(金) 02:05:13 ID:???]
>>254
いやこの辺が違うなって言ったの

> 「''」(中身がない)配列

256 名前:Name_Not_Found mailto:sage [2008/10/31(金) 07:45:44 ID:???]
’’ というのは空文字列の実体なので
new string() と同等の意味になるでしょ。
new string() と new Array('') が等価なのかな?

え?string()なんてない?
おじゃましました。

257 名前:Name_Not_Found mailto:sage [2008/10/31(金) 08:00:13 ID:???]
無知もここまでくると気持ち悪いな

258 名前:Name_Not_Found mailto:sage [2008/10/31(金) 08:47:36 ID:???]
var array = [['']];
→ var array = new Array(['']);
→ var array = new Array(new Array(''));
new Array(...)と[...]が違う結果になるのは ... の部分が
1個の整数のときだけだが、上の場合はいずれも該当しないから。
しかし個人的には [['']] の方が簡潔で見やすいと思うけどね。

259 名前:Name_Not_Found [2008/10/31(金) 09:21:43 ID:olHAtU/2]
206,211,219,223です。

>>235
返事がおくれました。

ADODB.StreamはIE7ではだめだそうです。

やはり無理か・・・と、思った矢先、
友達に相談したら希望の光が、
時間がなくまだ試していないのですが、

読み込み元に空のdivを作り、そのinnnerHTMLに
responseTextをぶちこむ、で自分をパースする。

うまくいったら書き込みます。


260 名前:Name_Not_Found mailto:sage [2008/10/31(金) 14:56:21 ID:???]
それでも化ける気がする
iframe.src と並んで最後の手段だね



261 名前:Name_Not_Found mailto:sage [2008/11/01(土) 12:07:21 ID:???]
anything from here offsetLeft,offsetTop,offsetWidthそしてoffsetHeight──静的配置要素の絶対位置を確実に取得する方法について
hkom.blog1.fc2.com/blog-entry-503.html
offsetTop/offsetLeft/offsetParentの闇 - Backstage of theater.js
d.hatena.ne.jp/susie-t/20061004/1159942798
Positionオブジェクトの枠線幅問題対策 - Backstage of theater.js
d.hatena.ne.jp/susie-t/20070218/1171760841

を読んでJavaScriptでの位置指定をクロスブラウザに完全に行うことが極めて困難だと知り、
ここ二年ばかりは熱心にJavaScriptにハマってましたが、ちょっと幻滅してしまいました。
ここに書かれている対策(table内の要素では位置指定を使わない、body要素でのborder, marginの計算を考慮に入れて
offsetParentsを足し込む、など)をすればうまく動くようですが、
どうも釈然としないものがあります。

・知人は位置指定にこだわるならJavaScriptでなくフラッシュを使うべきと言ってましたが、果たしてそうなんでしょうか?
そんなに位置指定の正確さってJavaScriptにおいて問題になりうるものなんでしょうか?(問題になるケースとしてどんなものがありますか?)
・例えば、矩形範囲のHTML要素を取得するのに、出来れば2px以内に誤差を抑えたいですよね。
しかし、上のリンク先を見る限りではtable要素内の要素の位置を正確に取得するのは限りなく困難です。
だから、JavaScriptで矩形範囲のHTML要素を取得しようとするのは無謀だというふうに考察したんですが、どのように思われますか?
・JavaScriptの闇というべき致命的欠点って他にありますか?

262 名前:261 mailto:sage [2008/11/01(土) 12:08:42 ID:???]
すみません、>>260の位置指定は、全部「絶対位置取得」の間違いでした。

263 名前:Name_Not_Found mailto:sage [2008/11/01(土) 13:03:55 ID:???]
JavaScriptの問題じゃなくてブラウザの実装の問題じゃないか

264 名前:Name_Not_Found mailto:sage [2008/11/01(土) 13:18:23 ID:???]
CSS

265 名前:261 mailto:sage [2008/11/01(土) 17:20:09 ID:???]
>>263
ブラウザの実装の問題として質問しました。深刻な問題ではないでしょうか?

266 名前:Name_Not_Found mailto:sage [2008/11/01(土) 17:57:35 ID:???]
>>265
>>263は「JavaScript言語の実装の問題ではなく、
DOMなど(JavaScript言語仕様では規定されていない)
オブジェクトモデルの実装の問題だ」といいたかったと思うの。

で、闇だ何だと大げさに騒ぎ立ててるけど、あなたの作ってるページは
枠線の幅が2pxを越えるテーブルが大量にネストしてたりするのかな?
昔懐かしのテーブルレイアウト全開でやってるならともかく、
そうでないならたとえテーブル利用時に正しく位置取得できなくても
そこまで大きな誤差が出ることはほとんどないのでは?

267 名前:261 mailto:sage [2008/11/01(土) 18:24:30 ID:???]
>>266
DOM実装の問題だという件、理解しました。

さて、闇が何を指すかを正確に理解していただかないとコミュニケーションが成立しない(闇だ闇じゃないだの不毛な平行線上の言い合いになる)ので、
事実を確認します。

d.hatena.ne.jp/susie-t/20061004/1159942798#200610041723
によれば、テーブル内の要素のoffsetParent, offsetLeft/Topは、ブラウザによって大きく異なります。
枠線が2pxを超えるか否かといったレベルの問題ではなく、そもそも何がoffsetParentになるかというのがブラウザによって違います。
例えば、Firefoxではposition:relative;なtd要素内のposition:absolute;は
body要素がoffsetParentになるけど、IEではtd要素がoffsetParentになります。
これは場合によっては、100px以上の誤差が発生しうることを意味します。

正確な位置取得は、矩形範囲のhtml要素を取得する関数を作る際には深刻なのではないかと考えました。
これは例えば、LDRizeのような事をするために表示領域内のhtml要素を取得する
必要がある時には便利な関数と思われますが、正確に位置を取得する必要があります。


268 名前:Name_Not_Found mailto:sage [2008/11/01(土) 18:38:46 ID:???]
>>267
ブラウザ間の実装が異なるならブラウザを判別するコードを使って実装の違いを吸収すればいいわけで
実際にそれぞれのブラウザの挙動の違いは詳しく分かっているわけだしそれを考慮したコードは書けるよね

CSSとかと違ってJavascriptはブラウザ毎に違うコードを実行するなんてことが簡単にできるからそんなに問題にはならないかと

269 名前:261 mailto:sage [2008/11/01(土) 18:47:15 ID:???]
>>268
ブラウザテストすればいいということですね。

しかし、>>267のような特例が無数にあることが問題です。
リンク先に出ているものだけで10個ありますが、この記事の筆者はこの途方もなく複雑な挙動に
「闇」を感じて以降調査を打ち止めにしたようです。
ということは、他にもたくさんある可能性があります。

それだけでなく、この記事が書かれたのが2006年なので、最新版では挙動が異なっている可能性もあります。

もし、矩形範囲のhtml要素を取得したいような場合に、自力であれこれ各ブラウザの挙動をテストして、
クロスブラウザなコードを書くのは極めて困難だと思いませんか?

270 名前:Name_Not_Found mailto:sage [2008/11/01(土) 18:58:49 ID:???]
>>269
お前はただ同意を求めてるだけなのか?
なら、困難だと思うよ。これで満足か?



271 名前:261 mailto:sage [2008/11/01(土) 19:06:56 ID:???]
>>269
すみません。問題点を明確にするために自分の意見を述べすぎました。
そのせいで、あらぬ誤解を生んだようです。
質問は>>261にあります。これについての回答を期待しています。

272 名前:Name_Not_Found mailto:sage [2008/11/01(土) 19:19:21 ID:???]
そもそも質問の意図がわからん
何がしたくて要素の絶対位置を取得したいのかで答えは変わってくる
用途によってはJSよりFlashを使った方が良いだろうし
全てのHTML&CSSに対して適用できるような手法が必要なのはライブラリを作って公開しようとしてる場合ぐらいではないかと

273 名前:Name_Not_Found mailto:sage [2008/11/01(土) 19:22:15 ID:???]
位置指定というか、px 単位での調整が必要ってどんな処理だ?
JavaScript のアウトプットって DOM が中心だから、
ブラウザの画面内で位置調整を行う方法って CSS に頼るしかない。
JS 側はクラスや ID や要素を指定した DOM を弄って、予め作った CSS に適用させる感じ。
もちろん、CSS に対応しているかどうか、
CSS がどんな描画されるかなどは実装依存(てか相当バグがある)だが、それは CSS の問題。
HTML を描画できるだけじゃ嫌、ピクセル単位で画面を調整したいってのは、それこそ Flash を使えばいい。
ただし言語仕様を Adobe が握ることになるので、
VerUp の度に拡張の嵐の憂き目に遭うだろうね。

274 名前:261 mailto:sage [2008/11/01(土) 20:02:33 ID:???]
>>272
確かに漠然とした質問でした。私自身問題を正確に理解できていないのもあります。

>全てのHTML&CSSに対して適用できるような手法が必要なのはライブラリを作って公開しようとしてる場合ぐらいではないかと
Webサイトやクライアントサイドのツールを自分が作るためのライブラリを作ろうとしています。
確かに、ユースケースを限定すれば、それほど深刻な問題ではなくなるのかもしれません。

>>273
>位置指定というか、px 単位での調整が必要ってどんな処理だ?
それを経験豊富な先輩方におたずねしたかったのです。

>CSS がどんな描画されるかなどは実装依存(てか相当バグがある)だが、それは CSS の問題
いや、offsetParentやoffsetLeftが何を指すかというのは、CSSの問題ではないと思います。
例えば、offsetLeftがoffsetParentのborderの外辺までの距離を指す場合もあるし、borderの内辺までの距離を指す場合もあります。
offsetLeftは、CSSのプロパティではないので、クライアントサイドJSをどのように実装するかという問題ですよね。

>ピクセル単位で画面を調整したいってのは、それこそ Flash を使えばいい。

やはり、JSでは困難なんでしょうか?

私の理解では、矩形範囲のhtml要素を取得することはFlashに出来ないですよね。
FlashはFlashの中のモノにしかアクセス出来ないので。
これが制約にはなりますが、フルFlashのサイトにするなどして回避はできそうです。

ただ、ldrizeのようなクライアントサイドツールを作る場合には、ほとんどJSしか選択肢がないですよね。
ldrizeはコードを見ると雑な処理で妥協しているところがあって、実際、挙動がおかしいことが多々あります。
ですが、長く使っているうちに、「これが仕様なのかな」と納得してしまいました。
あまりWebで位置取得の話題が深刻なテーマとして出てこないところを見ると、皆さん妥協してらっしゃるのかなと思いました。

しかし、正確な位置取得のライブラリがあっても良さそうなものですが、見かけません。
何がご存じのものがあれば教えて下さい。>all


275 名前:Name_Not_Found mailto:sage [2008/11/01(土) 20:45:56 ID:???]
オレの自前ライブラリの GetAbsPosSeikaku() が火を噴く時が来たようだ。

276 名前:Name_Not_Found mailto:sage [2008/11/01(土) 21:17:22 ID:???]
位置指定にこだわってるのは >261 なのに実例を出せと言ったら「こっちが訊いている」ってアホかよ

277 名前:Name_Not_Found mailto:sage [2008/11/01(土) 22:27:42 ID:???]
リンクにカーソルを載せたときにリンクと被らないようdivをポップアップウインドウ風に表示する、なんて場合に問題になるかもしれない

278 名前:261 mailto:sage [2008/11/02(日) 00:33:07 ID:???]
>>276
すみません、私が想定している実例を出せという意味でしたか。
であれば、矩形範囲のhtml要素の取得が実例です。
これが本当に実例になっているかは実体験が無いので分かりません。
なので、JavaScriptでpx単位の正確さを要求されるような例ってどんなのがありますかと>>261の最初の質問で聞きました。
てっきり、>>273は本当に実例になっているものを出せという質問かと思ってしまいました。

私はかねてから矩形範囲のhtml要素取得などのために、位置を扱うライブラリ作成を予定していました。
だから、位置取得にこだわっていますが、>>261のリンク先を読んで絶望してしまいました。
当初の予定では、まず位置を扱うライブラリを作成してから、さまざまな実例を試して、
矩形範囲のhtml要素取得もpx単位の厳密さを要するものなのかも実体験として把握するつもりでした。
しかし、ライブラリ作成の意欲を無くしてしまったので、まだpx単位の厳密さを要する実例を
実体験として検証出来ないでいる段階です。
そこで、>>261では、私のイメージ上では矩形範囲のhtml要素取得がpx単位の厳密さを要する実例になっている
と思うのですが、実体験としてそうした厳密さを要する実例を先輩方にお尋ねしました。


>>277
ありがとうございます。確かに問題になりそうです。
それ以外に、重なり合わないようにD&D可能なボックスを配置する際にも問題になるのではと考えました。
ドロップ時に衝突判定を行い、重なるようであれば重ならないような位置にズラしてドロップする方法をいくつか試行し、
どうしても重なるようであればD&Dを取り消し元の場所にボックスをドロップする、という処理を考えます。
これは矩形範囲のhtml要素の取得より有用かもしれません。
こういったことをやろうとされた方ややっているコードをご存じな方はいますか?
px単位での位置取得の正確さが要求されるような例ではないでしょうか?

279 名前:Name_Not_Found mailto:sage [2008/11/02(日) 08:21:41 ID:???]
グダグダ言ってないで適当なブラウザ上で「矩形範囲のhtml要素取得」とやらを実装してみろ。
elementFromPoint()もgetBoundingClientRect()も使わず、実用的な速度で動作し、
かつボックスの重なりも処理できるなら、それだけで画期的だ。
値がズレてるならズレたまま扱えば正しく要素を取れるんじゃねーの。

>>267で何やら言ってるが、getComputedStyle()やbox-sizingも試してみたのか。
CSSOM-ViewのWDは目を通したのか。

むしろ>>267なんかより厄介な問題が出てくると思うが、それは遭遇してから言ってこい。

280 名前:261 mailto:sage [2008/11/02(日) 08:55:45 ID:???]
>>279
これまでで一番有益なアドバイスでした。ありがとうございます。
CSSOM-Viewは初めて知りました。
さて、
hkom.blog1.fc2.com/blog-entry-503.html
の位置取得方法はお試しになりましたか?
これが私の知りうる限り一番正確に位置取得できる方法なんです。
実は>>267の問題もとりあえずはこれで解決できますが、ただ限られたケースしか使えないという欠点はあります。
ちなみに、やってみれば分かることですが、getComputedStyle()やbox-sizingは使い物になりません。
その理由はスペースの都合で割愛します。
要するに、知りうる限り、完全に正確に位置取得をする方法がないので、皆さんにおたずねしたいのです。



281 名前:Name_Not_Found mailto:sage [2008/11/02(日) 09:25:02 ID:???]
だからな、あんたは「正確、正確」と言うが、
どのブラウザも各ブラウザ基準で「正確に」値を出してるだろうが。
あんたが言う「正確」とは何基準だ?脳内か?何に統一したいんだ?

> getComputedStyle()やbox-sizingは使い物になりません

理由を書かねば話になんねーだろ。三行で書け。
古いMozillaでoffsetLeftがleftの計算値に一致しない現象を知ってる奴なら今でもgetComputedStyle()でやる。
つーか最初に一回だけ計ってその後の処理はstyle.leftで統一する。

282 名前:234 [2008/11/02(日) 09:46:12 ID:56s2bwm5]
>>234の件引き続き探してます
Mozillaの独自CSSなどで要素のbackgroundの透過設定が出来れば良いと思うんですが

283 名前:261 mailto:sage [2008/11/02(日) 09:46:57 ID:???]
>>281
>あんたが言う「正確」とは何基準だ?脳内か?何に統一したいんだ?
>>183の(3)です。

>理由を書かねば話になんねーだろ。三行で書け。
offsetLeft/Topの総和が座標値の概算値になります。
しかし、>>261のリンク先にあるようにoffsetLeft/Topの定義はブラウザ依存です。
だから、getComputedStyleを使っても問題の先送りになるだけです。

284 名前:Name_Not_Found mailto:sage [2008/11/02(日) 10:02:08 ID:???]
どうしたアホ外人、出番だぞ

285 名前:Name_Not_Found mailto:sage [2008/11/02(日) 10:15:12 ID:???]
>>283
>>183の(3)はoffset(Left|Top)の算出と何も関係ねーはずだが。

> offsetLeft/Topの総和が座標値の概算値になります
> getComputedStyleを使っても問題の先送りになるだけ

あんたがやりたいのは「正確な位置算出」であって「正確なoffset(Left|Top)算出」じゃないと思ったんだが、
違うのか。

286 名前:261 mailto:sage [2008/11/02(日) 10:34:14 ID:???]
> >>183の(3)はoffset(Left|Top)の算出と何も関係ねーはずだが。
>>183の(3)による座標値と一致している事が私の正確の定義です。

> あんたがやりたいのは「正確な位置算出」であって「正確なoffset(Left|Top)算出」じゃないと思ったんだが、
違うのか。

offsetLeft/Topの正確さは私は定義してないです。

どうも不毛な流れになってきたので、これで終わりにします。
有益なアドバイスありがとうございました。

287 名前:Name_Not_Found mailto:sage [2008/11/02(日) 10:35:27 ID:???]
関係ねーと言うか、IEのoffsetParentには位置指定以外にhasLayoutも絡むから、
offsetLeftで考える時点でab:(x,y)の座標系にはならんわな。
つーことは何だ。問題はIEなのか。IE以外なら何とかなるのか。

288 名前:Name_Not_Found mailto:sage [2008/11/02(日) 10:44:11 ID:???]
試してないけど、offsetParent と offsetLeft/Top じゃなくて、
getComputedStyle()/currentStyle で position:static 以外の要素を探して
left とか margin を足していけば良かったのでは。

289 名前:Name_Not_Found mailto:sage [2008/11/02(日) 11:02:35 ID:???]
>>282
261がそれを実現するライブラリを作ってくれるからしばしまて

290 名前:Name_Not_Found mailto:sage [2008/11/02(日) 12:55:58 ID:???]
こんにちは。アキハバラの○○無線で買ったウィンドウズのXPなんで
すが、標準装備とかいうので付いていたIEのバージョン6は、JavaScript
のバージョンでいうと1.5ということになりますか。
変な質問ですいません。



291 名前:Name_Not_Found mailto:sage [2008/11/02(日) 13:27:53 ID:???]
>>290
お前の居場所はここじゃない

292 名前:Name_Not_Found mailto:sage [2008/11/02(日) 14:54:04 ID:???]
IE6ならJavaScript1.3相当なんじゃね

このスレ、レベルが高すぎてついていけません

293 名前:Name_Not_Found mailto:sage [2008/11/02(日) 14:57:55 ID:???]
IE6は1.5だ。

294 名前:Name_Not_Found [2008/11/02(日) 15:15:04 ID:fDCBeq+A]
クリップボードのamazon URLからASIN番号を取り出すブックマークレットを作ろうとしているのですが、
原因不明のエラーで困っています。
javascript:asin=window.clipboardData.getData('Text');clip=asin.match(/dp\/.{10}/);clip2=clip.substring(3,13);alert(clip2);
↑が自作のブックマークレットですが、これだとサポートしていないメソッド…のエラーが
でて動作しません。しかし、
javascript:asin=window.clipboardData.getData('Text');clip=asin.match(/dp\/.{10}/);alert(clip);

javascript:clip="dp/4000223941";clip2=clip.substring(3,13);alert(clip2);
のように分けたものはそれぞれ意図通りに動作します。
文字数制限にひっかかってるわけでもないし、何が悪いんでしょうか?
ブラウザはIE6.0です。

295 名前:Name_Not_Found mailto:sage [2008/11/02(日) 16:28:42 ID:???]
いつも思うんだけどglobalフラグ立てないならexecにしとけ
javascript:alert(/dp\/(.{10})/.exec(clipboardData.getData('Text'))[1]);

296 名前:Name_Not_Found mailto:sage [2008/11/02(日) 16:34:35 ID:???]
質問です。下記コードでuberメソッド内のif節(depthが1以上)はどういう時に使われますか?具体例を教えて下さい。
以前から何度も例を考えてみましたが、どれもif文でdepathが0になるのでelse節しか実行されません。

Function.prototype.method = function(name, func){
 this.prototype[name] = func;
 return this;
};
Function.method('inherits', function(parent){
  var depth = 0, proto = this.prototype = new parent();
  this.method('uber', function uber(name){
   var func, ret, v = parent.prototype;
   if(depth){
    for(var i = d; i > 0; i -= 1){
     v = v.constructor.prototype;
    }
    func = v[name];
   }else{
    func = proto[name];
    if( func == this[name]) func = v[name];
   }
   depth += 1;
   ret = func.apply(this, Array.prototype.slice.apply(arguments, [1]));
   depth -= 1;
   return ret;
  });
  return this;
});

297 名前:294 [2008/11/02(日) 16:38:21 ID:fDCBeq+A]
>>295
すいませんヘボなもんで…。
わざわざ書き直してもらってありがとうございます。
バッチリ動作して感謝です!

298 名前:Name_Not_Found mailto:sage [2008/11/02(日) 20:25:00 ID:???]
>>295
横レスだけどglobalフラグ立てない場合は何でexec使った方がいいの?
慣れで常にmatch使ってるんだけど。

299 名前:Name_Not_Found mailto:sage [2008/11/02(日) 20:38:54 ID:???]
>>298
パフォーマンス的に有利だった気がする
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/match#section_5

300 名前:Name_Not_Found [2008/11/03(月) 01:21:09 ID:7/XJRJrH]
jquery で
table のどこをクリックしても、
その行の1列目の値を alert() したいのですが、
↓だと何がマズいでしょうか?

$("table tr").click(function () {
alert( $("$(this) td:first").text() );
});




301 名前:Name_Not_Found mailto:sage [2008/11/03(月) 07:13:44 ID:???]
>>299
なるほどありがとう。exec使うようにする。

>>300
jQueryあんまり覚えてないけど
$(this)はselectorじゃないから中に入れたらダメじゃない?
$(this).find("td:first").text()なら取れるはず

302 名前:300 [2008/11/03(月) 08:28:40 ID:7/XJRJrH]
> 301
できた!!
学習させて頂きました。m(_ _)m

303 名前:1/2 mailto:sage [2008/11/03(月) 19:24:45 ID:???]
お世話になります。
現在、下のサイトを参考にしてツールチップを作成しています。
www.dynamicdrive.com/dynamicindex5/dhtmltooltip2.htm
こちらのサンプルは、マウスを動かすとマウスについてくるようにツールチップが表示されます。
これを、マウスを動かした際には非表示、動かさない場合は表示というようにしたいと考えています。

マウスを動かした際に、現在のカーソル位置と一秒後のカーソル位置をsetTimeoutで比較して、
同じだった場合に表示処理を行うようにしたのですが、うまくいきません。
マウスを動かしツールチップが消去されたあとは再び表示されない状態です。
(setTimeoutのところで「引数が無効です」のエラーが出ています。イベントを渡したりしてみましたが駄目でした)
ご指導お願いいたします。

304 名前:2/2 mailto:sage [2008/11/03(月) 19:25:52 ID:???]
function setMouseMove(){
var beforeX = event.x;//現在の表示位置を取得
var beforeY = event.y;
setTimeout(showTooltip(beforeX, beforeY), 1000);//1秒ごとに表示位置を確認する
}
function showTooltip(beforeX, beforeY){
var afterX = event.x;//マウスが動いた場合の判断のため
var afterY = event.y;//1秒後の表示位置を取得する
if(beforeX==afterX && beforeY==afterY){
if(tipobj.style.visibility != "visible"){
positiontip();//同じ場所かつ非表示の場合、表示する。
}else{//すでに表示されてた場合は消去してまた表示
hideddrivetip();
positiontip();
}
}else{
hideddrivetip();//同じ場所でない場合は非表示処理
}
}
document.onmousemove=setMouseMove

305 名前:Name_Not_Found mailto:sage [2008/11/03(月) 20:19:49 ID:???]
setTimeout を使って自分自身を再帰的に呼び出す、という定石で setTimeout に出会った人は
setTimeout 自体に繰り返し処理機能があると勘違いしている人が多い。

つ setInterval

306 名前:Name_Not_Found mailto:sage [2008/11/03(月) 20:50:23 ID:???]
問題はむしろ別にありそうだね

307 名前:300 [2008/11/03(月) 23:20:10 ID:f+cnwmk6]
jquery の tablesorter + pager で作ったテーブルでクリックすると、
最初に表示された行のついては1列目の値が alert() されるのですが、
ページング処理で開いたテーブルをクリックしても
alert() されません。

ページサイズを増やし、
クリックされても alert() されなかった行を1ページ目で表示させ、
その行をクリックすれば、ちゃんと alert() されました。

どうしたら、ページング処理後の行でも
問題なく動くでしょうか?

308 名前:Name_Not_Found mailto:sage [2008/11/04(火) 10:24:27 ID:???]
>>307
いきなりtablesorterとpagerがわかっている前提で話されても困ると思うんだけど。
サンプル出さないとわからんよ。
>>300のやり方踏まえてエスパー回答してみると、table配下のtrにclickを設定したけど、
pagerとかいう奴でtrが置き換わり、そっちにはclickの設定がされてないのが理由じゃないの?

>>300を下のように変更してtableにclickを設定し、クリックされた時のイベントで
alertを実行すればいいんじゃね?
$("table").click(function(e) {
 alert($(e.target).text());
});

309 名前:296 mailto:sage [2008/11/04(火) 18:18:01 ID:???]
>>296お願いします。

310 名前:Name_Not_Found mailto:sage [2008/11/04(火) 20:43:55 ID:???]
どこから沸いたコードなの?



311 名前:Name_Not_Found mailto:sage [2008/11/04(火) 23:07:37 ID:???]
>>296
> どういう時に使われますか?
一生使われません

312 名前:Name_Not_Found [2008/11/05(水) 02:40:01 ID:ZJZlQtYZ]
styleswitcher.js(スタイルシートを切り替えるスクリプト)に関する質問です。
weblibrary.s224.xrea.com/weblog/webdesign/javascript/styleswitcherjs.html

index.htmlにインラインフレームを置き、その中にa.htmlとb.htmlをフレームで組んで表示しています。
やりたいことは、styleswitcherの切り替えスイッチをa.htmlに置いて、
a.htmlとb.htmlとindex.html(インラインフレームを置いてるページ)のスタイルシートを同時に切り替えることです。
a.htmlとb.htmlのフレーム内の同時切り替えは
www.gac.jp/article/index.php?stats=question&category=9&id=20437&command=msg
をそのまま用いることで成功しました。
できないのは、a.htmlからindex.htmlのスタイルシートを切り替えることです。
上記サイトで説明されてるようにsetActiveStyleSheet関数をいじればいいと思ったのですが、
どう変更すればいいのかわかりませんでした。手助けいただけると幸いです。

313 名前:312 mailto:sage [2008/11/05(水) 05:38:26 ID:???]
自己解決。すみませんでした。

314 名前:296 mailto:sage [2008/11/05(水) 10:37:44 ID:???]
>>310
出典は確かResigさんのblogだった気がします(覚えて無くてすみません)。

Crockfordさんのバージョンはこちらです。(内容的には同じです。)
d.hatena.ne.jp/brazil/20051011/1129031224

315 名前:Name_Not_Found [2008/11/05(水) 15:23:06 ID:p17cjZCi]
お願いします。

リンクのURLを動的に変換させたいのです。

function () {
var ADD_URL = "*.*.*/view.php?url="

window.location.replace(ADD_URL + window.location.href);
});

この場合,一度ページを表示してから,新URLが表示されます。

いきなり新URLで表示させるためにはどうしたらいいのでしょうか。



316 名前:Name_Not_Found mailto:sage [2008/11/05(水) 16:31:24 ID:???]
>>315
その無名の関数式をどうやって呼び出しているの?括弧の対応が
取れてないし…

317 名前:Name_Not_Found mailto:sage [2008/11/05(水) 17:44:01 ID:???]
中途半端なコピペとか

>いきなり新URLで表示させるためにはどうしたらいいのでしょうか。
最初から新URLにアクセスすればいいんじゃね

318 名前:Name_Not_Found mailto:sage [2008/11/05(水) 21:04:10 ID:???]
すみません、下記サイト(アダルト注意)のサンプル画像表示に使われているような
JavaScriptの使い方や解説などが載ったサイト、どこかにないでしょうか?
ググろうにもどういうワードで検索していいのか分からず、思いつく限りで検索してもても
見つからなかったので・・・
ttp://www.jgarage.net/shop/products/detail.php?product_id=10383#detailTop
ttp://www.dmm.co.jp/mono/pcgame/-/detail/=/cid=959hso5004/

319 名前:Name_Not_Found mailto:sage [2008/11/05(水) 21:33:58 ID:???]
>>314
uberで呼び出したメソッドの中で更にuberを使ってると1以上になるんじゃない?
なんか微妙なコードだなと思って原文見たら
最後に「最近よく考えてみたらuberとか使わなくね?無駄じゃね?」って感じの追記がしてあった。

320 名前:Name_Not_Found mailto:sage [2008/11/05(水) 21:41:27 ID:???]
>>318
処理に使われてるJavascriptを探してそれを示してください。
できなければこのスレにはあなたに相応しくありません。



321 名前:296 mailto:sage [2008/11/05(水) 22:09:21 ID:???]
>uberで呼び出したメソッドの中で更にuberを使ってると1以上になるんじゃない?

ありがとうございます。まあそれはそうで、ぶっちゃけ見ればすぐ分かる当たり前のことですよね(偉そうでごめんなさい)。
具体的にはどんな場合でしょうか?それが私の質問の主旨です。

そうですね、最近は古典的継承は使わずにプロトタイプ的継承やfunctionalな継承を
使うよう推奨してますよね、Crockfordさんは。
でも、古典的継承を実際見かけることも多いので、後学のために理解を深めておこうと思いまして。

322 名前:Name_Not_Found mailto:sage [2008/11/06(木) 00:54:17 ID:???]
>>320
初心者系のスレがなかったのでここで質問させてもらったのですが、失礼しました

323 名前:Name_Not_Found [2008/11/06(木) 11:29:20 ID:xhBpNM3i]
jqueryのajaxに関する質問です
$.ajax()で非同期でサーバを呼び出しているのですが、
これは、あるURLへの呼び出し&処理がまだ終了していない時に、
他のURLを呼び出しても問題ないのでしょうか?

324 名前:Name_Not_Found mailto:sage [2008/11/06(木) 11:39:15 ID:???]
nextSiblingやpreviousSiblingなどで返すElementですが、
IEだと必ずHTMLになるのに対して、FirefoxだとTextElementになることがあります。
これを常にHTMLになるようにする方法はないでしょうか?

一応nodeTypeをみて処理して解決してはいるのですが…

325 名前:Name_Not_Found mailto:sage [2008/11/06(木) 12:22:03 ID:???]
>>323
問題ないけどRFCの規定で2本までしか投げられないから3本目は待機させられるだろうね
Cometする場合は注意しないといけない

>>324
IEを恨みつつ(X)HTMLを全部1行に書く

326 名前:Name_Not_Found mailto:sage [2008/11/07(金) 01:38:43 ID:???]
>>321
えーと、どんな場合て?uberが何をするためのメソッドなのかを聞いてるん?

ところでこのuberだけどやっぱ変だよ。
わざわざdepthの数だけprototype.constructorを辿るように書いてあるのに、
肝心のconstructorプロパティをいじってないから常に最上位クラスを指す事になる。
d.hatena.ne.jp/brazil/20051012/1129035427
ここで作者から記事を改訂する予定だっていう返事が来た事が2005年に書かれてるけど、
今現在載ってるのを見てもconstructorに関する記述はそのまま。動作もおかしい。
作者自身使ったこと無いと言ってるし、多分テストも真面目にやってないのでは。

327 名前:Name_Not_Found mailto:sage [2008/11/07(金) 02:55:37 ID:???]
クロージャーというのがあってだな、

328 名前:Name_Not_Found mailto:sage [2008/11/07(金) 08:42:57 ID:???]
すいません。javascriptで書かれたブログパーツを
ブログでなくて自分で書いたページ(ブログじゃないページ)に
張るということができないかやってみたのですが

たとえば <script src="xxk/hoge.js" language="JavaScript"
type="text/javascript"></script>
というソースで配布されているブログパーツ(javaでFlash埋め込みを書き出す)を
張りたい場合、クロスドメインを解消すればいいんじゃないかと思って
webtips.open-log.net/index.php?JavaScript%2Fクロスドメイン制限の解除
(↑URL)や
www.ironhearts.com/diary/archives/001463.html 
に書いてあるに書いてある方法や自分のローカルにつくったHTMLで
やってみたのですができませんでした。

そもそも普通のページには張れないんでしょうか。
それとも別の方法があるんでしょうか。教えてくださいお願いします。

環境はIE7とFireFox3、テストした環境はland.to鯖とXPSP3のローカルです

329 名前:Name_Not_Found mailto:sage [2008/11/07(金) 09:53:28 ID:???]
>>328
そもそもスレ違いだし、ブログもただのHTMLなので普通は貼れるはず。
<html>とか<head>とか<body>がないってオチじゃない?
ブログパーツが何かわからんと何とも言えないけど。

330 名前:Name_Not_Found mailto:sage [2008/11/07(金) 10:18:50 ID:???]
>>328
HTMLだな、スレチ



331 名前:296 mailto:sage [2008/11/07(金) 10:56:56 ID:???]
>>326
ご回答ありがとうございます。

uberメソッドをどういう時に使うかという点で言えば、オーバーライドされた親クラスのメソッドを呼び出したい時に使うと
認識していますが、合ってますか?

で、私が>>296で質問したのは、uberの使い方ではなくて、if文内の(else節ではなくて)if節の部分が意味を持つ
のはどういう場合かという具体例を知りたいということです。
つまり、prototype.constructorをたどるのは何のためかというのが分からないということです。
というのも、prototype.constructorはデフォルトでは関数(クラス)自身を指すので、通常の場合は
else節が意味を持たないと考えて混乱してしまったんです。
実際にいろいろ具体例を作ってみたところ、どれもif節の部分(depth>=1)の部分を有効活用しているような
コードを作ることが出来ませんでした。

それから>>296の出典が分かりました。"Pro JavaScript Techniques"(John Resig)という本の41ページです。
uberメソッドが変と言われてもこれはResigさんもCrockfordさんもblogや本に書いているメソッドなので、
コードが間違っているというのは考えにくいような気がします。
>>326さんはどんな点で変だとお考えになったのかがよく理解できていないですが。

作者が使ったことないというのはどこに書いてありましたか?
(古典的継承の)「記事を使って以来使ったことがない」とは書いてありますが、
このメソッドをそもそも一度も使ったことが無いとは書いてある箇所は見あたりません。

332 名前:Name_Not_Found mailto:sage [2008/11/07(金) 11:52:15 ID:???]
>>329
>>330
スレチでしたか、すいませんでした。
とりあえずもうちょっと頑張ってみます。

ありがとうございました。

333 名前:Name_Not_Found mailto:sage [2008/11/07(金) 12:26:27 ID:???]
>>328

> (javaでFlash埋め込みを書き出す)を

javaではなく、javascript 勝手に省略するな!

334 名前:Name_Not_Found mailto:sage [2008/11/07(金) 15:42:16 ID:???]
おれはメーカーに勤務していたとき、職場での会話・雑談と効率の関係を、
人事部と上司の指示で調査したことがある。
その結果、会話(会社で仕事に関係する会話)、雑談(仕事と関係ない話)の時間が
多いほど仕事の効率が高く、プロジェクトの成功率が高いことがわかったんだ。
当時、最低でも10人以上でチームを作ってやる仕事ばかりだったけど、
参加人数が多いほど、雑談時間と効率が正比例の関係にあるという結果になった。

その結果は社内にも秘密とされた。(おれがいいふらしたけどねー!)
それは、雑談するほど効率がいいなんて、上司も人事部も認めたくなかったからなんだ。
ちなみに毎日2時間以上雑談をするチームが最も効率がよかった。(^o^)v

335 名前:Name_Not_Found mailto:sage [2008/11/07(金) 16:54:55 ID:???]
>>331
>コードが間違っているというのは考えにくいような気が
そう思うんですが>>326のブログによると実際に不備を認めた事があったらしいからそういう事もあるのかなと・・・。
>一度も使ったことが無いとは書いてある箇所は見あたりません
ごめん、「記事を使って以来使ったことがない」の事を言ったんだけど、
まあもちろん記事を書いた時は何度かテストしてるでしょうね。でも実用はしてないと。

>prototype.constructorをたどるのは何のためか
inheritsを使って (親)A→B→C→D(子) と継承したクラスを作ったとして、
uberを利用してDから呼んだCのメソッドがBのメソッドを呼び、そのBのメソッドがAのメソッドを呼んでた場合どうすればいいか?
この場合、D.prototype.constructor.prototype.constructor.prototype
とする事でBクラスのprototype(Aクラスのインスタンス)を参照できるので、それを
・・・という事を想定したコードだと自分は解釈したんだけど、
>>326でも書いたようにこういう風に使うためにはinherits時に各クラスのconstructorプロパティを調整する必要があります。
このコードだと、上記の例で言えばBCDクラスのconstructorプロパティは全部Aになってしまって、
prototype.constructorを段階的に辿る意味が全然無いんです。
A→B→C のケースなら直接parent.prototypeを読みに行くようになってるので問題無いかも知れませんが、
A→B→C→D→E→F などの深い階層の場合恐らくまともに動作しないのでは?

それと>>296の for(var i = d; は for(var i = depth; だよね?

336 名前:Name_Not_Found mailto:sage [2008/11/07(金) 17:08:35 ID:???]
スクリプトを実行したときにループ警告が出るのですが、これを出なくすることはできますか?
有限ループなのですが処理が多くて途中で何度も引っかかるのが面倒なので。

337 名前:Name_Not_Found mailto:sage [2008/11/07(金) 17:46:56 ID:???]
>>336
スクリプト側から設定できたら警告の意味ねーだろ
というわけでお前さんの質問は基本的にブラウザの設定の話になる
(そしてスレ違い)
ttp://support.microsoft.com/kb/175500/ja
IE4〜6ではこの方法でいけるそうだ
他のブラウザは知らん

ループを使うのをやめてsetTimeoutやsetIntervalに置き換える手もある

338 名前:Name_Not_Found mailto:sage [2008/11/08(土) 11:39:00 ID:???]
JavaScriptで、イベントの発生もとを取得するのはどうしたらいいですか。
<a href="#" onclick="f1(); return false">click</a>
function f1() {
 // ここで <a>要素を取得したい
}

339 名前:Name_Not_Found mailto:sage [2008/11/08(土) 12:11:54 ID:???]
>>388
クロスブラウザにするにはonclickで関数にeventという引数を渡すのがおすすめ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test(ev) {
var elt = ev.target || ev.srcElement;
alert(elt.innerHTML);
}
</script>
</head><body>
<div><a href="#" onclick="test(event)">xxxyyy</a></div>
</body></html>

340 名前:Name_Not_Found mailto:sage [2008/11/08(土) 12:45:54 ID:???]
おいおい、そんなものおすすめするなよ・・・



341 名前:Name_Not_Found [2008/11/08(土) 12:57:25 ID:tIO05utY]
正規表現に関する質問です。

引数として渡された関数の処理部分のみを(文字列として)
返すにはどうすればいいですか?

alert(a)にて、"return x + y;"が表示されるようにしたいです。

function test(func){
return func.toString().replace();
}
var a = test(function(x, y){
return x + y;
});
alert(a);

できれば以下のような無名関数でない場合についても教えてほしいです

function b(x,y){
return x + y;
}
var a = test(b);

よろしくお願いします。

342 名前:296 mailto:sage [2008/11/08(土) 13:07:58 ID:???]
>>335
ご説明ありがとうございます。ちょっと時間がとれないでいるので、
また時間がとれる時に自分で確認したいと思います。
はい、dはdepthの間違いでした。

343 名前:Name_Not_Found mailto:sage [2008/11/08(土) 13:33:50 ID:???]
>>341
.replace(/^[^{]+\{\s*|\s*\}[^}]*$/g, '');

344 名前:Name_Not_Found [2008/11/08(土) 13:39:53 ID:tIO05utY]
>>343
ありがとうございます。

なるほど、どちらにせよ結局括弧で囲まれてる訳ですね。。
気づきませんでした。

345 名前:Name_Not_Found mailto:sage [2008/11/08(土) 17:52:29 ID:???]
>>338
this

346 名前:Name_Not_Found mailto:sage [2008/11/08(土) 18:30:45 ID:???]
>>338
thisじゃ無理
event渡せ

347 名前:Name_Not_Found mailto:sage [2008/11/08(土) 18:32:20 ID:???]
ああ違う
thisを渡せって言いたかったのか。

348 名前:Name_Not_Found [2008/11/10(月) 02:48:15 ID:IkE1xeP/]
HighSlide JSがIEで動かず困っています。
以下のサンプルページすら動きません。
ttp://caramel-tea.com/sample_page/highslide.html

具体的には、サムネをクリックした際にjpgファイルのURLに遷移してしまい、
HighSlide JSの動きである拡大表示にならないのです。

例えばサンプルページの一番左の画像をクリックすると、
ttp://caramel-tea.com/wp-content/uploads/2006/10/sample.jpg
にページ遷移してしまい、単にIEでjpgを表示しているだけの状態になります。

IE6、IE7とも動きませんでした。
同じPCのほかのブラウザ(Firefox2、Safari for win)では
サムネをクリック時には画像が正しく拡大表示されました。

これは何が原因なんでしょうか?

349 名前:Name_Not_Found mailto:sage [2008/11/10(月) 03:45:58 ID:???]
>>348
手元のIE6は動いたな。インターネットオプションぐりぐりやってみたら?

350 名前:Name_Not_Found [2008/11/10(月) 12:09:01 ID:8hWHsSqU]
script.aculo.usのEffect.Foldの逆をやりたくて
ソースにUnfoldを書こうとしてます。
Effect.Scaleを2回やっているのはわかるんですが、
どう書いていいかわかりません。

知ってる方、誰か教えてもらえないでしょうか?




351 名前:Name_Not_Found [2008/11/10(月) 16:06:45 ID:8hWHsSqU]
たて続けに質問で悪いですが、

new Effect.SlideDown( "box" );

で、

'down()'はNullまたはオブジェクトではありません。
とエラーが出るんだけど理由がわからない。

どなたか理由を知ってる方教えてもらえないでしょうか?


352 名前:Name_Not_Found mailto:sage [2008/11/10(月) 16:43:58 ID:???]
>>351
そのエラーが出るサンプルコードをください

353 名前:Name_Not_Found [2008/11/10(月) 19:31:00 ID:zV68AOIx]
自分でソート条件を指定するので Array.sort( function(a,b){ return a-b; } );を使いたいのですが、
Firefoxだと、Array.sort( func ) は使えないのでしょうか。
IE7では動きましたが、FF3では動きませんでした。


もしだめで、prototype.jsなどで代替案などありましたらお願いします。

354 名前:Name_Not_Found mailto:sage [2008/11/10(月) 19:35:37 ID:???]
Firefox でももちろん使えるはずだけど。

355 名前:Name_Not_Found mailto:sage [2008/11/10(月) 20:57:00 ID:???]
動かなかった例を出してみてよ

356 名前:Name_Not_Found mailto:sage [2008/11/10(月) 21:29:55 ID:???]
お知恵を貸してください。
body内に以下のような構造があります。

<script type="text/javascript">
<!--
window.onload = function () {
var elm = document.getElementById('box1');
document.getElementById('box2').innerHTML = elm.innerHTML;
elm.innerHTML = '';
};
// -->
</script>
<div id="box1" class="xxx">hoge</div>
arekore
<div id="box2" class="yyy"></div>

onloadの無名関数でbox1の内容をbox2に移動するだけで、
このスクリプト自体は問題なく動作するんですが、
可能なら、
JavaScriptが有効な場合はbox1を非表示、無効の場合はbox1を表示したいんです。

idが確定している場合(関数より前にある場合)なら、
document.getElementById('box1').style.display='none';
とすればいいのはわかったんですが、
こういう構造のときはどのようにすればいいのかわかりませんでした。
なお、<head>内やbox1以降は手を出せません。
よって、box1を<noscript>で挟むという方法もつかえません。

よろしくお願いします。

357 名前:356 mailto:sage [2008/11/10(月) 21:34:00 ID:???]
わかりにくかったので追記です。
window.onload実行時に非表示じゃなくて、
box1が出現した時点でdisplay='none'にしておきたいということです。

358 名前:Name_Not_Found mailto:sage [2008/11/10(月) 21:41:15 ID:???]
>>356
クラスxxxに割り当てるスタイルをJavaScriptで書き換えればいけるんじゃないの

359 名前:Name_Not_Found [2008/11/10(月) 22:25:12 ID:8hWHsSqU]
351です。
端折って書きます。

html部分はPHPになってます。

echo ' <script type="text/javascript" src="prototype.js"></script>'."\n";
echo ' <script type="text/javascript" src="effects.js"></script>'."\n";
echo '</HEAD>'."\n";
echo '<BODY> <!-- ヘッダーエリア 開始 -->'."\n";
echo ' <div id="box"></div>'."\n";


javascriptの部分です。

Event.observe( window, 'load', onInit, false );
function onInit(){
new Effect.SlideDown( "box" );
}


360 名前:Name_Not_Found mailto:sage [2008/11/10(月) 22:48:36 ID:???]
>>356
<div id="box1" class="xxx">hoge</div>
<script type="text/javascript">
<!--
document.getElementById('box1').style.display = none;
// -->
</script>
iroiro
<div id="box2" class="yyy"></div>



361 名前:360 mailto:sage [2008/11/10(月) 22:53:05 ID:???]
ごめん
box1以降は手を出せねいのね。

消えます
document.getElementById('俺').style.display = none;

362 名前:Name_Not_Found [2008/11/10(月) 23:43:35 ID:ovMkJR/O]
【マジヤバイ】偽日本人爆増!国籍法改悪案まもなく成立へ【アト4日】
jfk.2ch.net/test/read.cgi/news4vip/1226313721/


363 名前:Name_Not_Found mailto:sage [2008/11/11(火) 04:41:00 ID:???]
ページが
・index(○○.com/index.htm)
・メニュー(menu.htm)
・コンテンツ1、2、3(1.htm、2.htm、3.htm)
とありまして
メインフレームが無い状態でコンテンツが開かれた場合メインフレームのページにジャンプさせる
ため

<script language="JavaScript"><!--
checkURL = "http://○○.com";
jpURL = "http://○○.com";
if(parent.location.href != checkURL) parent.location.href = jpURL;
// --></script>
という文をコンテンツ1、2、3に埋め込みました。

結果としてメニューでどれをクリックしても初期ページに戻ってしまうのですが
どのようにしたら改善されるでしょうか

参考にしたのは
「検索エンジンから来た場合にメインフレームのページにジャンプさせる」
と言うページです

364 名前:Name_Not_Found mailto:sage [2008/11/11(火) 08:18:36 ID:???]
メインフレームってIBMとかのアレか?

さておき、一度親フレームから子フレームを呼び出して
子フレームに埋め込んだ alert(parent.location.href) とかで
親フレームのURLを調べてみたらいいと思うよ。

365 名前:354 [2008/11/11(火) 09:54:44 ID:9y4+xSeq]
>>354-355
使えるようなので色々見てみると解決しました。ありがとうございます。

原因はprototype.jsのgetElementsByClassName()で受け取ったものが厳密には配列ではなかったようです。
IE7ではsort( func )が動作していたので勘違いしていました。

以下のようにして動作できました。
var foo = parent.getElementsByClassName(classname);
for (var i=0; i<foo.length; i++){
  bar.push( foo[i] );
}
hoge = bar.sort(function(a,b){ if(!a.tabIndex){return 1;} if(!b.tabIndex){return -1;} return a.tabIndex - b.tabIndex; });

366 名前:Name_Not_Found [2008/11/11(火) 21:00:22 ID:H1yNcsz7]
お世話になっております。
JAVA SCRIPTでフォームで送ったら
フォームで情報を成型してデータを格納して
確認のためメールで流して欲しいと要望があったので作成しようとしています。

現在
<FORM name="mail_form" method="POST" action="mailto:hogehoge@fuga.com"
enctype="text/plain">
<TEXTAREA rows="8" cols="40" name="comment">
</TEXTAREA><BR>
<INPUT type="submit" value="送信">
<INPUT TYPE="reset">
</FORM>
で中のコメントは送れるのはわかったのですが

下記のフォームの内容をメールで送りたいのですが
どのようにすれば出来るのでしょうか?


<FORM METHOD="GET" ACTION="resroom.cgi" NAME="form">
<INPUT TYPE="hidden" NAME="target" VALUE="table">
<INPUT TYPE="hidden" NAME="date" VALUE="2008/11/11">
<INPUT TYPE="hidden" NAME="act" VALUE="">
<TABLE> <TBODY> <TR> <TH>名前</TH>
<TD><INPUT SIZE=16 TYPE="text" NAME="name" MAXLENGTH=32> </TD>
<TD></TD> <TR>
<TD COLSPAN=11 ALIGN='center'>
<INPUT TYPE="button" NAME="but" VALUE="予約" onClick="JavaScript:argChk('book')">
<INPUT TYPE="button" NAME="but" VALUE="キャンセル" onClick="JavaScript:argChk('cancel')">
</TD> </TR> </TBODY></TABLE></FORM>

367 名前:Name_Not_Found mailto:sage [2008/11/11(火) 21:16:16 ID:???]
resroom.cgi の方で何とかする

368 名前:Name_Not_Found [2008/11/11(火) 22:26:02 ID:4uIaL5KQ]
AjaxのWebアプリケーションでデータを保存するために、XMLファイルの使用を検討しています。

PHPなどの力を借りずにJavaScriptの機能だけで、XMLファイルをサーバ上に(動的に)作成・書き換えすることはできますか?
※XMLオブジェクトを作成するのではなく、XMLファイルそのものを作成したいです。

369 名前:Name_Not_Found mailto:sage [2008/11/11(火) 22:30:46 ID:???]
>>368
ja.wikipedia.org/wiki/WebDAV

370 名前:368 [2008/11/11(火) 22:35:22 ID:4uIaL5KQ]
>>369
ありがとうございます。
WebDAVについて調べてみます。



371 名前:368 [2008/11/11(火) 22:53:19 ID:4uIaL5KQ]
アプリケーションを一般的な無料レンタルサーバの上で動かしたい(そのサーバ上で完結させたい)のでWebDAVは使えなそうです・・・残念

他に選択肢はありますか?

372 名前:Name_Not_Found mailto:sage [2008/11/11(火) 23:01:42 ID:???]
あきらめる。

373 名前:Name_Not_Found mailto:sage [2008/11/11(火) 23:02:25 ID:???]
>>368
>>3

374 名前:368 [2008/11/11(火) 23:08:51 ID:4uIaL5KQ]
>>372
ありがとうございました。

>>373
サーバ側に保存されているファイルは読み込むことができるので、「ローカルファイル」とはクライアント側のディスク上に保存されるファイルと解釈していました。

375 名前:Name_Not_Found mailto:sage [2008/11/12(水) 00:05:35 ID:???]
>>365
任意の値を受け入れるが、処理としては配列を前提とするという場合には、
foo = (typeof foo=='object' && foo.constructor==Array ? foo : [foo]);
あたりが定番。


376 名前:Name_Not_Found mailto:sage [2008/11/12(水) 00:53:20 ID:???]
>>365
戻り値が配列では無く、HTMLCollectionというのが原因なので、
prototype.jsを使っているなら
foo = $A(foo);
とか。

377 名前:Name_Not_Found [2008/11/12(水) 13:09:06 ID:dnhbbK1y]
お世話になっております。

JavaScriptでメールを開くってゆーのは出来るのでしょうか?
検索したけど見つからない、、、、

<a href="mailto:fugafuga@hogehoge.com">メールを出す</a>

をクリックしたのと同じような動作をしつつ
JavaScriptの処理を進めたいのです、、、

以上 情報をお持ちな方はご助力いただけますとありがとうございますっ


378 名前:Name_Not_Found mailto:sage [2008/11/12(水) 14:05:19 ID:???]
お世話になっております。

JavaScriptでExcelを開くってゆーのは出来るのでしょうか?
検索したけど見つからない、、、、

<a href="mailto:fugafuga@hogehoge.com">メールを出す</a>

をクリックしたのと同じような動作をしつつ
JavaScriptの処理を進めたいのです、、、


379 名前:Name_Not_Found mailto:sage [2008/11/12(水) 17:52:35 ID:???]
<a href="punipuni.xls">えくせるを出す</a>

380 名前:Name_Not_Found [2008/11/13(木) 02:04:21 ID:Dq+4kRPM]
お世話になっております。

■スクリプトの説明
bodyタグ内にある「HTML」「CSS」「Javscript」という3つの文字列に対して、
背景色を黒、文字色を白、太字にする。
IEに対応しています。

■質問(実現したいこと)
firefoxでは、document.body.createTextRange の部分でエラーが出る。
scriptタグ内のみを改修し、firefoxでも対応するにはどうすればよいでしょうか?

■制限事項
・bodyタグ内は一切、手を加えてはいけない(つまり該当文字列に対して<span id=""></span>などをつけてはいけない)。

------ソースここから-----------
<html>
<head>
<title></title>
<script type="text/javascript">
<!--
var words = new Array("HTML", "CSS", "JavaScript");

function test(){
  for(var i in words){
    keyword(words[i], "black", "white");
  }
}



381 名前:380 [2008/11/13(木) 02:05:40 ID:Dq+4kRPM]
// 続き

function keyword(word, bcolor, fcolor){
  var rng = document.body.createTextRange();
  while(rng.findText(word, 1)){
    rng.execCommand("backColor", false, bcolor);
    rng.execCommand("foreColor", false, fcolor);
    rng.execCommand("bold", false, null);
    rng.moveStart("character");
  }
}
//-->
</script>
</head>
<body onLoad="test();">
HTML<br>
CSS<br>
JavaScript<br>
<br>
<img src="hoge1.jpg" alt="HTML"><br>
<img src="hoge2.jpg" alt="CSS"><br>
<img src="hoge3.jpg" alt="JavaScript"><br>
</body>
</html>
------ソースここまで-----------

382 名前:380 [2008/11/13(木) 02:06:25 ID:Dq+4kRPM]
■試してみたこと
以下のようにやってみましたが、HTMLタグ内にある文字列まで変換されてしまうのでダメポです。

<script type="text/javascript">
<!--
var words = new Array("HTML", "CSS", "JavaScript");
function test(){
  for(var i in words){
    var reg = new RegExp("(" + words[i] + ")", "g");
    document.body.innerHTML = document.body.innerHTML.replace(reg,
    "<font style=\"background-color:black; color:white; font-weight:bold;\">$1</font>");
  }
}
//-->
</script>


以上、よろしくお願いいたします。


383 名前:Name_Not_Found mailto:sage [2008/11/13(木) 02:27:51 ID:???]
正規表現を工夫するか、innerHTMLを使うのをやめて1つずつノードを走査すればいい

384 名前:Name_Not_Found mailto:sage [2008/11/13(木) 10:59:59 ID:???]
>>380
>>383がレスしてるような感じだとこんなのかな
bodyを全部走査するからwordsの配列そのものを渡すようにしたのと、
パターン見終わったらspliceで削除するようにした。wordが何度も出てくるならspliceコメントアウトすればいいし。
function keyword(words, bcolor, fcolor, baseElem) {
  if (!baseElem) baseElem = document.body;
  var elems = baseElem.childNodes;

  var regs = [];
  for (var i=0,l=words.length; i<l; ++i) { regs[i] = new RegExp(words[i]); }
  
  for (var i=0,l=elems.length; i<l; ++i) {
    var elem = elems[i], text = elem.nodeValue;
    if ( !text || text == '\n') continue; // 文字以外は見る必要なし
    
    for (var j=0,m=regs.length; j<m; ++j) {
      var match = regs[j].exec(text);
      if (match) {
        var span = document.createElement('span');
        var spanStyle = span.style;
        spanStyle.backgroundColor = bcolor;
        spanStyle.color = fcolor;
        span.innerHTML = match[0];

        baseElem.insertBefore(span, elem.nextSibling); // 自分の次に追加
        baseElem.removeChild(elem); // 自分自身を削除
        regs.splice(j, 1); // もう使わないから削除
        break; // このパターンは終わったので抜ける
      }
    }
  }
}

385 名前:Name_Not_Found mailto:sage [2008/11/13(木) 16:08:57 ID:???]
ページが表示された際、1番最初のフォームのinput type="text"に自動的にフォーカスされるようにしたいです。

リファレンスをみたところfocusというメソッドがあるので、それを使えばいいのですけど、
jqueryを併用していて、focusが上書き(?)されているようで意図した動作をしてくれません。
擬似的に元のfocusメソッドを再現する方法等ないでしょうか・・・。

386 名前:Name_Not_Found mailto:sage [2008/11/13(木) 16:16:37 ID:???]
>>385
>>2
言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。

387 名前:Name_Not_Found mailto:sage [2008/11/13(木) 16:51:32 ID:???]
>>385ですが
なんかソース整理してたら普通に動作してくれました(:D)rz
すいませんでしたっ

388 名前:Name_Not_Found mailto:sage [2008/11/13(木) 17:46:52 ID:???]
それ目的でソース貼れって言ってるからおk

389 名前:Name_Not_Found mailto:sage [2008/11/13(木) 19:55:50 ID:???]
申し訳ない
次回から気をつけます。ご指摘ありがとうございました。

390 名前:Name_Not_Found [2008/11/13(木) 20:20:09 ID:cF/LvURE]
javascriptでソケット通信を行いたいんですが
jnext以外に方法はないんでしょうか?

また、他にjavascript以外でもソケット通信が可能ならその言語を教えてください



391 名前:Name_Not_Found mailto:sage [2008/11/13(木) 21:01:18 ID:???]
やっぱり質問は無しの方向で。
スレ汚しすまん

392 名前:Name_Not_Found mailto:sage [2008/11/13(木) 21:10:21 ID:???]
>>391
スレ違いだがJava Appletならサーバとの間でソケット通信
できるよ。ページを取り寄せたサーバ限定だけどね。

393 名前:Name_Not_Found mailto:sage [2008/11/13(木) 21:14:35 ID:???]
>>391>>390
です

394 名前:Name_Not_Found mailto:sage [2008/11/13(木) 21:18:03 ID:???]
質問は無しらしいが補足

ExternalInterface 使ってラップすれば ActionScript のソケット通信関連がそのまま使える。
ので、他鯖にも接続できる。Flex SDK 使えばタダだ。
ただし、Flash Player のソケット関連のセキュリティ制約、
843 番の影響もそのまま受けるので鯖に手を入れられないと難しい。まぁこれは Flash も同じ。

395 名前:380 [2008/11/14(金) 01:06:42 ID:eT5ZgTqu]
>>384
ありがとうございます。

しかし、bodyタグ内が以下のような場合、
-------------
<body>
HTML、CSS、Javascript<br>
DHTML、CSS、Javascript<br>
</body>
-------------
・「DHTML」の部分も「HTML」に書き換わってしまう。
・「CSS」「JavaScript」は最初に出てきたとこしか変化しない。

という問題が発生してしまいます。

なので、>>384さんのソースを参考にして、
それらにも対応できるよう、まずは自分でやってみます。

396 名前:Name_Not_Found mailto:sage [2008/11/14(金) 02:10:55 ID:???]
ブラウザ特有のAPIを使ってるJSを他のブラウザでも使えるようにしたいと思ってます。
そのJS自体を書き換えることなく APIをエミュレートするような方法は可能でしょうか?

参考になるサイト、書籍がありましたら教えていただけませんでしょうか?




397 名前:Name_Not_Found mailto:sage [2008/11/14(金) 02:20:39 ID:???]
ブラウザ特有の API というのが何を指してるのかわからん

398 名前:396 mailto:sage [2008/11/14(金) 09:05:32 ID:???]
たとえば、 addEventListener という API は IEでは使うことができません。
これを IEで使えるようにしたいのです。

addEventListener があったら attachEvent を実行するようにすればよいのかな
と思ったのですが、いろいろ調べてみるとタイミングが違うということがわかりまして、
どうやって互換性を維持すればよいのか知りたいと思ってます。

399 名前:Name_Not_Found mailto:sage [2008/11/14(金) 10:42:04 ID:???]
>>398
jQueryとかPrototype.jsみたいなライブラリ読んだら良いんじゃない?
中身解説サイトが結構あるからそれ見ながら読むと結構わかると思う

400 名前:Name_Not_Found [2008/11/14(金) 12:02:46 ID:niaTKV86]
質問です。
Dreamweaverで作ったリンクボタンで、
マウスオーバーしてる時は、イメージが変わるスクリプトを
フォームのサブミットで実装する方法を教えてください。
//自動生成されたjavaスクリプト
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//質問
<a href="/test.php" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image10','','/image/template/menu1.gif',1)"><img src="/image/template/menu.gif" name="Image10"></a>

<input type="image" src= "image/template/menu.gif" value="submit">



401 名前:Name_Not_Found [2008/11/14(金) 14:19:30 ID:/JbNyPzV]
質問です。
Ajax&javascriptでXMLを扱う方法について教えてください。
今、以下のようなXMLがあります。

<?xml version="1.0" encoding="utf-8" ?>
- <ZIP_result>
- <ADDRESS_value>
<value state="北海道" />
<value city="札幌市中央区" />
<value address="北一条西(1?19丁目)" />
<value company="none" />
</ADDRESS_value>
</ZIP_result>

Ajax.Request()でデータを取得し
取得したデータの処理は

function getData(data){
var response = data.responseXML.getElementsByTagName('ZIP_result');
var item = response[0].getElementsByTagName('ADDRESS_value');
var address = item[0].getElementsByTagName('value');

}

などとやっています。
ここでaddressの件数は8になっているところまではわかったのですが、
valueタグの中のstateとかcityとかにアクセスする方法がわかりません。

ご教授のほどよろしくお願い致します。

402 名前:401 [2008/11/14(金) 16:58:56 ID:/JbNyPzV]
こんな感じで取れました。

for(i = 0; i < address.length; i++){

if (address[i].getAttribute("state") != null) {
pref = address[i].getAttribute("state");
} else if (address[i].getAttribute("city") != null) {
city = address[i].getAttribute("city");
} else if (address[i].getAttribute("address") != null) {
addr = address[i].getAttribute("address");
}

}


403 名前:Name_Not_Found mailto:sage [2008/11/14(金) 17:29:31 ID:???]
>>398
IE6とかはHTMLElementのprototypeを拡張できないから
JSを書き換えずに動かすのは無理

404 名前:Name_Not_Found mailto:sage [2008/11/15(土) 16:02:48 ID:???]
質問致します。

replaceで置換後に、$1で取り出した文字列をencodeURIComponent関数で
かぶせたいのですが、「$1」という文字列そのものが入ってしまいます。

ご教授よろしくお願い致します。

<script type="text/javascript">
<!--
var str = "東京\n京都\n京橋";
str = str.replace(/(.*京.*)/g, "$1 → " + encodeURIComponent("$1"));
alert(str);
//-->
</script>

■動作結果■
東京 → %241
京都 → %241
京橋 → %241

■期待する動作■
東京 → %E6%9D%B1%E4%BA%AC
京都 → %E4%BA%AC%E9%83%BD
京橋 → %E4%BA%AC%E6%A9%8B

405 名前:Name_Not_Found mailto:sage [2008/11/15(土) 16:10:34 ID:???]
>>404
$1を使うと罵詈雑言が飛んでくるのがこのスレだ!
はやくにげてー

406 名前:Name_Not_Found mailto:sage [2008/11/15(土) 16:17:46 ID:???]
>>404
encodeURIComponent("$1")

これがおかしいよ

407 名前:Name_Not_Found [2008/11/15(土) 16:32:34 ID:X43o2fsc]
XML, Event, クロスブラウジングに関連して質問致します。

XMLDocumentオブジェクトを生成し、そのイベントを操作したいのですが、
調べてもイベントタイプの対応関係がよく分かりませんでした。
addEventListener(), attachEvent()にイベントタイプをそのまま突っ込んでも動きませんでした。

Mozilla系 : xmlDocument.addEventListener("load", listener);
IE系? : xmlDocument.onreadystatechange = listener;

上記の例はよく見かけたのですが、それ以外は見つかりませんでした。
ondataavailable, ontransformnodeの場合はどういった対応関係をとればよいのでしょうか?


あと、eventTarget["on" + type] = listener, eventTarget.attachEvent("on" + type, listener),
eventTarget.addEvenListener(type, listener)が必ずしも一致しない例って他にもあるのでしょうか?

408 名前:404 mailto:sage [2008/11/15(土) 16:34:10 ID:???]
>>406
はい。そこをどう直したらいいのかという質問でございます。

ちなみにencodeURIComponent($1)だと、そんな変数は無いと言われちゃいますし。


409 名前:Name_Not_Found mailto:sage [2008/11/15(土) 16:40:03 ID:???]
検索してif処理

410 名前:Name_Not_Found mailto:sage [2008/11/15(土) 17:14:38 ID:???]
質問です。document.writeするとき単独タグの終端マーカもエスケープ
すべきですか?



411 名前:Name_Not_Found mailto:sage [2008/11/15(土) 19:02:50 ID:???]
>>404
str = str.replace(/.*京.*/g, function(s) { return encodeURIComponent(s); });


>>410
空要素のこと?
ダメ文字は "</" だから "... />" は大丈夫

412 名前:356 mailto:sage [2008/11/15(土) 19:07:46 ID:???]
>>404
str = str.replace(/(.*京.*)/g, function(s){return s + " → " + encodeURIComponent(s);});

413 名前:404 mailto:sage [2008/11/15(土) 23:51:56 ID:???]
>>411 >>412
ありがとうございます!
「replaceの第二引数は無名関数も指定できる」 勉強になりました。

ってことは、最初のstrの文字列を、
var str = "<b>東京</b>\n<b>京都</b>\n<b>京橋</b>";
にして、
■期待する動作を
<b>東京</b> → %E6%9D%B1%E4%BA%AC
<b>京都</b> → %E4%BA%AC%E9%83%BD
<b>京橋</b> → %E4%BA%AC%E6%A9%8B
にしたいとすると、

こんな漢字でいいんですかね?
<script type="text/javascript">
<!--
var str = "<b>東京</b>\n<b>京都</b>\n<b>京橋</b>";
str = str.replace(/<b>.*京.*<\/b>/g,
        function(s){
          ss = s.replace(/<b>([^<>]+)<\/b>/, "$1");
          return (s + " → " + encodeURIComponent(ss));
        });
alert(str);
//-->
</script>

414 名前:Name_Not_Found mailto:sage [2008/11/16(日) 01:21:37 ID:???]
試せば分かるのにどうして聞くのだろう
それと、抜き出したい部分を()でくくっておけばfunctionの中でいちいち抽出する必要はないよ
第二引数で受け取れる。詳しくは以下参照
ttps://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/replace#.e5.bc.95.e6.95.b0.e3.81.a8.e3.81.97.e3.81.a6.e3.81.ae.e9.96.a2.e6.95.b0.e3.81.ae.e6.8c.87.e5.ae.9a

415 名前:404 mailto:sage [2008/11/16(日) 02:19:05 ID:???]
>>414
>>試せば分かるのにどうして聞くのだろう
→もちろん試してみて、期待通りの結果を得ましたが、
当方のプログラムに効率の悪い部分があったらご指摘を受けたかったからです。
現に「抜き出したい部分を()でくくっておけばfunctionの中でいちいち抽出する必要はない」
というご指摘、非常に感謝しております。

最終的にこれですね。
<script type="text/javascript">
<!--
var str = "<b>東京</b>\n<b>京都</b>\n<b>京橋</b>";
str = str.replace(/<b>(.*京.*)<\/b>/g,
        function(s, a){
          return (s + " → " + encodeURIComponent(a));
        });
alert(str);
//-->
</script>

416 名前:Name_Not_Found mailto:sage [2008/11/16(日) 02:29:24 ID:???]
>>415
解決乙。

417 名前:Name_Not_Found [2008/11/16(日) 02:38:39 ID:qgzRqUcQ]
JavaでStringオブジェクトとかのソースが公開されてるように、
JavaScriptでも既存の関数のソースって見れませんか?

418 名前:Name_Not_Found mailto:sage [2008/11/16(日) 05:01:14 ID:???]
Mozilla や WebKit ならオープンソースだから見れる
IE や Opera はたぶん見れない

419 名前:Name_Not_Found [2008/11/16(日) 09:31:10 ID:bO2fC3N0]
おはようございます。
javaスクリプトについて、2点質問させてください。

Aという情報検索画面があり、テキストに条件を入力して「検索」ボタンを押下することで、
検索結果がテーブルに表示される仕組みのプログラムを作成しています。
A画面に設置している「情報更新」ボタンを押下することで
B画面(情報変更画面)ポップアップが立ち上がります。

質問@B画面(ポップアップ)が立ち上がるのと同時に、
   A画面を操作不可(もしくは不可視)にすることはできますか?
質問AB画面には「閉じる」ボタンがあり、押下するとB画面が閉じます。
   B画面が閉じたことをきっかけにA画面に表示されている検索結果のテーブルの情報を
   最新化したいのですが、B画面が閉じたことをA画面で判定することはできないでしょうか。

以上です。
よろしくお願い致します。

420 名前:Name_Not_Found mailto:sage [2008/11/16(日) 09:33:01 ID:???]
>>419
どっちも可



421 名前:Name_Not_Found [2008/11/16(日) 09:59:07 ID:bO2fC3N0]
>>420
レスありがとうございます。
質問の書き方が悪かったようで申し訳ありません、
どのように実装すればいいのでしょうか?


422 名前:Name_Not_Found [2008/11/16(日) 11:43:26 ID:z+amVslg]
教えてください

<script type="text/javascript">
window.onclick = function() { alert("clicked");}
</script>

と入力してクリックすると常にメッセージを出すようにしようとしているのですが、
firefoxでは動くのにIEでは動きません。
環境OS:vista IE7
どうしてでしょうか?

423 名前:Name_Not_Found mailto:sage [2008/11/16(日) 11:59:14 ID:???]
document.onclick = function() { alert("clicked");} 


424 名前:422 [2008/11/16(日) 12:09:59 ID:z+amVslg]
>>423
ありがとうございます。
動きました。

425 名前:Name_Not_Found [2008/11/16(日) 15:43:58 ID:YMTZFDs6]
質問です。
<div>もしくは<span>の間に挟まれた<form>の中を操作するとき、
どう指定すればよいのでしょうか?
document.formNameだとundefinedとなってしまいます。
どなたかご存知でしたらお教えください。

426 名前:Name_Not_Found mailto:sage [2008/11/16(日) 16:17:00 ID:???]
formName が undefined になる意味がわからんが
id ふって getElementById でもすれば

427 名前:Name_Not_Found [2008/11/16(日) 16:39:11 ID:Zc8ItWlQ]
質問があります。よろしくお願いします。
例えば history.previous と同じような動作をする別の命令で
直前のページのURL(もちろん自サイト内)を取得する方法はありますか。

前のページへ戻る動作をしたいのですが、前ページはcgiを使用しているので
IEだとブラウザの戻るや history.back() では「警告 : ページの有効期限切れ 」
と出てフォームの再送信を要求されます。どなたかこの回避法をご教示下さい。
どうぞよろしくお願い致します。

428 名前:Name_Not_Found mailto:sage [2008/11/16(日) 17:34:25 ID:???]
>>421
そういう質問者より回答者の方がカキコが大量に必要となる様な聞き方じゃあ、
余程ヒマジンでないとレスしないよ。

少しでも自力で考えてサンプルを造って、動作不良の解決方法を問う様にすれば
少しはレスするヤシも居るだろうが。

429 名前:Name_Not_Found mailto:sage [2008/11/17(月) 02:49:29 ID:???]
>>425
getElementsByNameでOK
そうでなければgetElementsByTagName("FORM")で得たそれぞれに対してnameを確認する

>>427
リファラ

430 名前:Name_Not_Found mailto:sage [2008/11/17(月) 10:29:38 ID:???]
> 「警告 : ページの有効期限切れ 」

それってPOSTメソッドで取得したページでしょ。
document.referrer に従って戻ろうとしたところで、
前に見ていたのと同じページにはならないでしょ。
今の場合 document.referrer は
送信したクエリ情報を含まないURLだろうから。


action="/bbs" method="get"
name="msg" value="hello, world"

ページ /bbs?msg=hello%2C+world を取得。
このページ内のリンクをクリックして移動すれば
送出するリファラは ".../bbs?msg=hello%2C+world"。

action="/bbs" method="post"
name="msg" value="hello, world"

ページ /bbs を取得。
このページ内のリンクをクリックして移動すれば
送出するリファラは ".../bbs"。


リファラに従ってページ /bbs を取得(get)しても
送信内容は空っぽ。



431 名前:Name_Not_Found mailto:sage [2008/11/17(月) 18:04:17 ID:???]
CGIなら何とでも出来ます

432 名前:Name_Not_Found mailto:sage [2008/11/17(月) 19:33:01 ID:???]
なら最初からGETにしとけって話だな

433 名前:Name_Not_Found mailto:sage [2008/11/17(月) 20:54:33 ID:???]
cookieにonsubmitで保存すれば?

434 名前:Name_Not_Found mailto:sage [2008/11/17(月) 21:22:44 ID:???]
いちいちPOSTデータを再送信させるってことは
例えばそれが投稿フォームなんかだと2重・3重カキコになるわけだがいいのかね。

435 名前:Name_Not_Found mailto:sage [2008/11/17(月) 21:33:24 ID:???]
鯖でセッションつくれよ

436 名前:Name_Not_Found mailto:sage [2008/11/18(火) 01:52:21 ID:???]
今テーブルを動的に作ってるんですが、IEとFireFoxで挙動がちがくて困ってます。
やってることは、tr要素にappendChildでいくつかのtd要素を追加してtbodyにappendChildでいくつかのtr追加
というものです。このtd要素に背景画像をセットして、角の丸い枠の中にテキストを表示するんですが、
そこまでやると、エラーは吐かれないんですが、何故か


            その他の
(0,1)の背景画像  背景画像 テキスト
            たち(7枚)
という猛烈に崩れた形で表示されてしまいます。何が原因として考えられるのでしょうか?

437 名前:Name_Not_Found mailto:sage [2008/11/18(火) 05:58:10 ID:???]
ソースも貼らずに何言ってんだ

438 名前:Name_Not_Found mailto:sage [2008/11/18(火) 08:41:01 ID:???]
>>436
IEとFFxで大きく挙動が違うのはコードがHTML/DOM的に正しくない
場合に一番多く起こる。問題のある最低限のコードを貼る。
HTML側もJavaScript側も必要。

439 名前:Name_Not_Found mailto:sage [2008/11/18(火) 08:46:26 ID:???]
Firefoxのデザインが崩れるならFirebug使ってHTML見ればある程度予想つくとおもうけどなー

440 名前:Name_Not_Found mailto:sage [2008/11/18(火) 09:05:35 ID:???]
HTML、DOMってかCSSの影響が一番大きいとは思うがな



441 名前:Name_Not_Found mailto:sage [2008/11/18(火) 09:13:12 ID:???]
なーなーうっせー

442 名前:Name_Not_Found mailto:sage [2008/11/18(火) 10:09:35 ID:???]
ん?

443 名前:Name_Not_Found mailto:sage [2008/11/18(火) 14:18:15 ID:???]
にゃーにゃー

444 名前:Name_Not_Found mailto:sage [2008/11/18(火) 17:08:46 ID:???]
ModalBoxがIEで動かず困っています。
XHTML1.0なのですが、それが問題なのでしょうか?

445 名前:Name_Not_Found mailto:sage [2008/11/18(火) 17:17:56 ID:???]
>>436
まずそんな場合には、
tableかbody全体のinnerHTMLをコピーしてHTMLファイルに貼り付け、
HTMLとして各ブラウザで正常に表示出来るかどうかを検証する事から始めた方が良さげ。
で、そのHTMLでの問題点が判明すれば、JavaScriptでの要修正点もおのずと判る流れ。

446 名前:Name_Not_Found [2008/11/18(火) 23:19:31 ID:nTsdJ6Mo]
0〜9999999のランダムな数値を重複しないように表示したいのですが
googleで検索したところ
仮に0〜99のランダムな整数を重複しないように表示する場合

for(i = 0;i <100;i++) a[i] = i;

for(i = 0;i < 100;i++){
j=Math.floor( Math.random() * 100 );
buf = a[i];
a[i] = a[j];
a[j] = buf;
}
このように配列に一旦0〜99の数値を入力し
それをシャッフルするという方法が多数載っていました

しかしこの方法だと0〜9999999(1000万通り)の乱数を扱おうとすると
一千万個の要素を持つ配列が必要になります
これでは重過ぎて使えません

一旦配列に格納する方法ではない大きな範囲で重複しない乱数を得る方法はありあませんか

447 名前:Name_Not_Found mailto:sage [2008/11/18(火) 23:40:37 ID:???]
重複したらやり直す

448 名前:Name_Not_Found [2008/11/19(水) 00:05:30 ID:nTsdJ6Mo]
>>447
その方法でも重複チェックのために
今まで抽出した乱数を格納するための一千万個の要素を持った配列が必要になります

449 名前:Name_Not_Found mailto:sage [2008/11/19(水) 00:10:51 ID:???]
重複しないように祈る

450 名前:Name_Not_Found mailto:sage [2008/11/19(水) 00:25:40 ID:???]
重複チェック用に配列に格納するのは絶対条件っぽいし無理だろうね



451 名前:Name_Not_Found mailto:sage [2008/11/19(水) 00:54:20 ID:???]
>>446その表示する値の数の上限は?フラグはその数分だけで足りると思うけど
まさか一千万個全部表示するのか?

452 名前:Name_Not_Found mailto:sage [2008/11/19(水) 00:55:29 ID:???]
上限とかそういうのはスマートじゃないね
俺も無理だと思う

453 名前:Name_Not_Found mailto:sage [2008/11/19(水) 00:58:39 ID:???]
>>446
まさか本当に1000万個の数値を全て表示するとは思えないので、
var check = {};
rdm = Math.floor( Math.random() * 10000000 );
check[rdm] = true;
ってな感じで、一度表示した値をhashに入れて管理すれば?
重複した場合には、もう一度randam値を算出するか、
値をインクリメントして空きを探すかなどは実装次第。

454 名前:436 mailto:sage [2008/11/19(水) 02:04:17 ID:???]
どうやら主にtd要素のdisplayスタイルがblockになっていたのが原因のようでした。
ありがt

455 名前:Name_Not_Found [2008/11/19(水) 06:29:59 ID:jTBtxRkv]
>>450-453
ありがとう御座います
一千万個表示する事はまず無いと思いますが
特定の値が出るまでループしながら途中経過を表示したいので
配列に既に生成された乱数を入力するやり方だと
数分で数万の要素をもつ配列が出来てどんどん動作が遅くなっていきます

別のやり方を思いついたんですが
たとえば0〜99の数字が書いてある札があったとして
ひとつの数字を引き当てるまで札を引き続けるという状況を表すなら
札を一枚引いたら乱数の範囲を一つ狭めて0〜98の数字が書いた札から一枚選ぶ
というふうにすればこういうふうに出来る表現できると思います

for(i=0;i<100;i++){
rdm = Math.floor( Math.random() * (100-i) );
if(rdm==0){break;}
}
alert((i+1)+"回目で当たり");

これだと大きな配列は使わないのですが
当たりの数値が常に0でないといけないので汎用性は無いので
実現したい事とは異なるのですが

みなさん知恵を出してくださってありがとう御座いました

456 名前:Name_Not_Found mailto:sage [2008/11/19(水) 06:43:38 ID:???]
>>453
例えば rdm = 9999999 なんかが出ると
(代入文 check[999999] = true を実行すると)
配列 check のサイズは一気に 10000000 になっちゃうけど
その辺は大丈夫なん?

それとも length プロパティに 10000000 が代入されるだけで
undefined な要素の分まで実際にメモリ確保するわけじゃないのかな。

まぁ大丈夫じゃなかったとしても、例えば check["_" + rdm]とかにして
文字列変数にしちゃえば回避出来るけど。

457 名前:Name_Not_Found mailto:sage [2008/11/19(水) 08:37:11 ID:???]
>>455
あなたがやろうとしていることは数万要素のハッシュか配列を作ること
なしには絶対に実現できない。なぜなら、「既に出た要素」と
「まだ出ていない要素」を区別するにはそのどちらか、従って
最大5000000個の数を何らかの形で覚えておくしかないから。
だからあなたが試したそののろい方法で我慢するか、
あきらめるかのどっちか。

458 名前:Name_Not_Found mailto:sage [2008/11/19(水) 10:45:16 ID:???]
>>456
IE8とFirefox3で試してみたけどどっちも
check[999999] = true;実行してもメモリ使用量増えなかったし
普通の配列も連想配列的に処理してんじゃないのかな?

459 名前:Name_Not_Found mailto:sage [2008/11/19(水) 11:42:20 ID:???]
>>455
Math.randomはダメだけど、条件を満たす疑似乱数生成法はあるかもしれない。
数学板かプログラム技術板の乱数スレなら何かヒントがあるかも。

460 名前:Name_Not_Found mailto:sage [2008/11/19(水) 12:50:41 ID:???]
> 当たりの数値が常に0でないといけないので汎用性は無いので

いや、何か勘違いしてるでしょ。
汎用性云々以前に肝心の「重複しない」が全然実現出来てないじゃん。

その意味不明なアルゴリズムで「出現回数が高々1回」なのは
0と99の2つのみでしょ。



461 名前:Name_Not_Found [2008/11/19(水) 13:32:15 ID:63HhrnTx]
JavaScriptのコードから関数の名前を検索するにはどうすればいいですか?

関数の定義は以下の二通りで行われます。
function a(){}
var a = function(){}


var funcs = new Array();
document.hoge.hoge.value.replace(//g,function(){
funcs.push();
});

462 名前:Name_Not_Found mailto:sage [2008/11/19(水) 14:05:58 ID:???]
>>457
こういうのはどうかな。まずある数が出たか否かを1ビットで
表現することにして、10,000,000 / 32 = 312,500 要素の「0」の
配列を作る。Math.random()で1つ数を出すごとにこの配列でチェック
して「0」の時だけその数を出力して対応するビットを1に変更する。
これだけだと最後は遅くなりすぎるので、残り要素が10万になったら
残っている数を列挙して配列に入れ、シャッフルして順に出す。

463 名前:Name_Not_Found mailto:sage [2008/11/19(水) 14:23:36 ID:???]
>>461
何がしたいのか分からんがな
何その意味不明なコード

464 名前:Name_Not_Found [2008/11/19(水) 14:49:34 ID:63HhrnTx]
>>463
説明不足ですみません。

テキストエリアに入力されたJavaScriptnoコード(document.hoge.hoge.value)から
関数の名前(一覧)を取得したいのです。

しかし、肝心の関数の名前を検索するための正規表現が分からないのです。

アドバイスよろしくお願いします。

465 名前:Name_Not_Found mailto:sage [2008/11/19(水) 17:17:03 ID:???]
>>456
>>453は、
>var check = {};
[]じゃなくて{}。配列では無くObjectだから必要な要素しか作成しない。

またFirefoxの内部では、配列のindexが大きい場合には、
遅いが無駄な領域を使わないタイプの配列にするので、
indexが馬鹿デカい要素を加え、内容スカスカの配列になったからといって、
それほどコストが掛かる訳でも無い模様。
ttp://code.google.com/p/python-spidermonkey/source/browse/trunk/js/src/jsarray.cpp?r=18

466 名前:Name_Not_Found mailto:sage [2008/11/19(水) 17:52:08 ID:???]
>>464
var funcs = new Array();
document.hoge.hoge.value.split(/\n/).forEach(function(e){
var match = /(?:(?:function\s\s*(.*))|(?:var\s\s*(.*)\s*=\s*function))\s*\(\)\s*\{\}/.exec(e);
  if (match) {
    (match[1]) ? funcs.push(match[1]) : funcs.push(match[2]);
  }
});

こんな感じで取れたけど、正規表現は得意じゃないので効率は悪そう

467 名前:Name_Not_Found mailto:sage [2008/11/19(水) 18:29:52 ID:???]
>>464
俺が思ってたのと全然違ったw
これは463に感謝しなくてはならない

468 名前:Name_Not_Found [2008/11/19(水) 20:32:23 ID:f5hMCKE7]
>>461
>関数の定義は以下の二通りで行われます。
>function a(){}
>var a = function(){}

ってーことは、その関数が定義されたスコープで、例えばグローバルスコープだったら、
for(var prop_name in window){
if(typeof prop_name == "function"){
// ここで入力内容とwindow[prop_name]をごにょごにょする
}
}

とかすればいいんじゃないかな。
あれ、はずしてる?

469 名前:Name_Not_Found mailto:age [2008/11/19(水) 20:55:41 ID:???]
// ※「i」はtype="text"のinput要素
document.forms[0].i.style.width = "100px"

ってhtml文書の<script>タグ内に直書きすりゃ
ブラウザに表示したときにname属性値iのテキストフィールドの幅が100pxになるよな?

実際そう動くんだが、なぜかPC(※)によってはうまく動かない時があるんだ。
「うまく動かない」っていうのは、ブラウザ上に表示されたときに幅が変わっていなくって
マウスのポインタをこのテキストフィールドの上に持っていくと
急にJavaScriptが動いて幅が100pxに変わるんだ。onmouseoverとか使ってないのに。

意味わからんと思うがマジ困ってるんで誰かなんか知ってたら教えてくださいorz

※検証用に使っているPCはすべてWinXPSP2 IE6

470 名前:Name_Not_Found mailto:sage [2008/11/19(水) 21:15:32 ID:???]
IEの再描画のタイミングが腐ってるからだろ



471 名前:Name_Not_Found mailto:sage [2008/11/19(水) 21:22:04 ID:???]
>>469
俺も違うケースだけど描画が同じ環境のPCでも変わることがあるよ。
たぶんPCの性能差の問題。


472 名前:Name_Not_Found mailto:age [2008/11/19(水) 21:28:40 ID:???]
>>470
オレもそう思うんだが、なんとかせにゃいかんくって。。。

>>471
むしろ性能のいいPCのほうが起こっているんだが。。。

473 名前:Name_Not_Found [2008/11/19(水) 21:38:50 ID:63HhrnTx]
>>466-468
やっぱり正規表現を勉強するのが一番の近道のようですね。

>468
スクリプトはテキストエリアに入力されるだけであって、実行はされません。
(なんかすみません)

今回はどうもありがとうございました。



474 名前:Name_Not_Found [2008/11/19(水) 22:57:04 ID:UD83etHO]
アンカータグでPOSTしたくて以下のようにしたのですが
IE6とOpera9では動いたのですが
FireFox3.0.4でうまく動きません
何か間違ってるのでしょうか?

<form method="post">
<a href="" onclick="submit(); return false;">hoge</a>
</form>

475 名前:Name_Not_Found mailto:sage [2008/11/20(木) 00:16:25 ID:???]
なんか意図があって return false; な訳?

476 名前:474 mailto:sage [2008/11/20(木) 00:29:21 ID:???]
>>475
return false;しないとhref=""が効いてしまうから

477 名前:Name_Not_Found mailto:sage [2008/11/20(木) 00:35:52 ID:???]
で、そのsubmitはどこから沸いたの?

478 名前:474 mailto:sage [2008/11/20(木) 01:10:19 ID:???]
>>477
<input type="button" value="hoge" onclick="submit();" />から流用
Operaで動いたから採用した


479 名前:Name_Not_Found mailto:sage [2008/11/20(木) 01:26:42 ID:???]
普通にform.submit()すれば?

480 名前:474 mailto:sage [2008/11/20(木) 01:35:13 ID:???]
>>479
<a href="" onclick="form.submit(); return false;">hoge</a>にしてもダメだった



481 名前:Name_Not_Found mailto:sage [2008/11/20(木) 01:43:05 ID:???]
なにこの一問一答

482 名前:Name_Not_Found mailto:sage [2008/11/20(木) 01:51:15 ID:???]
479なんだけどさ
>>480よ、君に言いたいのは、「form要素のsubmitを呼び出せ」ということであって、form.submit()などどそのまま書けってことじゃない
>>1からテンプレを読んで質問してるんだろうから、それぐらいは理解してると思っていた俺がバカだった
自力でできないと思ったら直接答えをもらえるスレを見つけて教えてもらったほうがいい

483 名前:474 mailto:sage [2008/11/20(木) 02:17:30 ID:???]
>>482
やっと理解した。すまんね。

とりあえず以下のかたちで動いた
どうもありがとうございました

<form method="post" id="form_hoge">
<a href="" onclick="form_hoge.submit(); return false;">hoge</a>
</form>

484 名前:Name_Not_Found mailto:sage [2008/11/20(木) 02:21:48 ID:???]
最後にもうひとつだけ言っておく
idを直接叩くぐらいならgetElementByIdかdocument.formsから参照したほうがいい

485 名前:Name_Not_Found [2008/11/20(木) 15:50:52 ID:VAboEYhu]
多次元配列を使いたいのですがうまくいきません

ary[0] = [1,2,3,4,5];
ary[1] = [6,7,8,9,10];
ary[2] = [11,12,13,14,15];

document.wirte(ary[0][0]);

ary[0][1]としたら2を
ary[1][4]としたら10をとりたいのですが
どうしても配列になってないのか、数字が出力されません
どなたかご教授お願いいたします

486 名前:Name_Not_Found mailto:sage [2008/11/20(木) 15:54:45 ID:???]
var ary = [];

487 名前:Name_Not_Found mailto:sage [2008/11/20(木) 16:13:24 ID:???]
いやそれ以前に"wirte"って・・・

488 名前:Name_Not_Found [2008/11/20(木) 17:35:39 ID:JXYA5/g4]
解決しましたありがとうございました

489 名前:Name_Not_Found mailto:sage [2008/11/20(木) 17:42:09 ID:???]
>>488
お前どれだよw

490 名前:Name_Not_Found mailto:sage [2008/11/20(木) 18:21:41 ID:???]
>>489
言葉の特徴から>>485と思われ



491 名前:Name_Not_Found mailto:sage [2008/11/20(木) 20:17:10 ID:???]
>>415
いまさらだけど、replaceの第2引数に関数を指定するのは
古いsafariだと動かないよ。まぁ一応気をつけて。
ttp://la.ma.la/blog/diary_200512291411.htm

492 名前:Name_Not_Found mailto:sage [2008/11/20(木) 20:42:51 ID:???]
Safari2ってJavaScript1.2なのか?ww

493 名前:Name_Not_Found mailto:sage [2008/11/20(木) 21:01:59 ID:???]
>>491
気をつけるも何も、そんな古いブラウザは完全に無視で構わないのでは。
古いNetscapeでは日本語1文字がString.lengthで2となるので一応気を付けて、
と同じレベルの助言だと思われ。

494 名前:Name_Not_Found mailto:sage [2008/11/21(金) 15:08:20 ID:???]
超初歩的なことを教えてください。

<form name="abc" 〜〜>
formの各要素
</form>

があって、formの各要素を操作するためには、そのスクリプトは、
formタグのあとに記述しないとダメなんでしょうか?
ファイルの先頭から順次実行されていくということでしょうか?



495 名前:Name_Not_Found mailto:sage [2008/11/21(金) 15:47:21 ID:???]
>>494
超初歩というより超初期というべき。前提として今どきそんな
書き方しないしそのうち動かなくなるよ。

496 名前:Name_Not_Found mailto:sage [2008/11/21(金) 15:58:53 ID:???]
>>495
>前提として今どきそんな
>書き方しないしそのうち動かなくなるよ。
これはどういうことでしょう?
onloadとかを使うってことでしょうか?
俺って、頓珍漢?

497 名前:Name_Not_Found [2008/11/21(金) 16:34:36 ID:oxkU/2Au]
>>494
考え方自体は間違ってないよ。

JavaScriptはノード(大雑把に言うと要素、タグ)にアクセスして、
それらをゴニョゴニョするもの。だから、DOMにそのノードがぶら下がる
前ではどうにも出来ない。

んで、そのformのエレメントノードが生成されるのは</form>が読まれた後だから、</form>より後ろに書けばもちろんOK。

</form>より前でも、例えばwindow.onloadとか、なにかしらのイベントに
スクリプトの発動を任せることによって、目的のエレメントノードが生成
されるのを待つ、というのもよくある手段。

498 名前:Name_Not_Found mailto:sage [2008/11/21(金) 18:17:45 ID:???]
JavaScriptで、<input type="file"> で選んだローカルファイルの
絶対パスを調べることはできますか。
IEではvalue属性に絶対パスが入るそうですが、firefoxとsafariではファイル名のみが入ります。
絶対パスを調べる方法があれば教えてください。


499 名前:Name_Not_Found mailto:sage [2008/11/21(金) 18:23:42 ID:???]
Q16

500 名前:Name_Not_Found mailto:sage [2008/11/21(金) 18:26:07 ID:???]
>>499
できないということですね。ありがとうございました。



501 名前:Name_Not_Found mailto:sage [2008/11/21(金) 18:42:54 ID:???]
すみません、>>498の続きなんですけど、いいでしょうか。
やりたいこと:
1. あるフォームからサブウィンドウを表示させ、&l;tinput type="file"> を使ってローカルファイルを指定させる。
2. サブウィンドウで指定したファイルを、もとのウィンドウのフォームで送信する。

つまりサブウィンドウで複数のファイルを選択させ、それをメインウィンドウのフォームでまとめてアップロードするという仕様です。
こういうことって、>>498ができないと不可能なように思うのですが、なにかいい方法はありますか。

502 名前:Name_Not_Found mailto:sage [2008/11/21(金) 18:55:26 ID:???]
ActiveX

503 名前:Name_Not_Found mailto:sage [2008/11/21(金) 19:12:29 ID:???]
>>502
それはつまり、IE以外ではできないということでしょうか。残念です。

504 名前:Name_Not_Found mailto:sage [2008/11/22(土) 03:22:12 ID:???]
別ウィンドウにこだわらずに、同じウィンドウ内にボックスとしてフォームを表示してごまかすとか

505 名前:Name_Not_Found [2008/11/22(土) 14:55:15 ID:Xs6hMzbT]
一定時間でリンクとそれに使っている画像を変更することは出来ますか?

例えば

<a href="11111.html"><img src="11111.gif"></a>
3秒後
<a href="22222.html"><img src="22222.gif"></a>
3秒後
<a href="33333.html"><img src="33333.gif"></a>
3秒後
<a href="11111.html"><img src="11111.gif"></a>


という具合にしたいです。

画像だけ変えたり背景色だけ変えるのは出来たのですが、リンクと画像をいっぺんに変えるのがどうも出来ません。
ご教示お願いします。

506 名前:Name_Not_Found mailto:sage [2008/11/22(土) 15:20:26 ID:???]
innerHTML

507 名前:Name_Not_Found mailto:sage [2008/11/22(土) 17:47:26 ID:???]
>>501 やりたいことって、こんな感じじゃないの?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var count = 0;
function test() {
var a = document.getElementById('accum')
var b = document.getElementById('box')
var e = b.firstChild; b.removeChild(e);
a.appendChild(e); a.appendChild(document.createElement('br'));
b.innerHTML = "<input type='file' name='f" + (++count) + "'><\/div>";
}
</script>
</head><body>
<div id="box" style="border: solid blue 2px"><input type="file" name="f0"></div>
<div><button type="button" name="b0" onclick="test()">Add</button></div>
<div id="accum"></div>
</body></html>

508 名前:Name_Not_Found mailto:sage [2008/11/22(土) 17:58:32 ID:???]
>>505
var a = document.getElementById("hogehogelink");
var img = document.getElementById("hogehogeimg");
var hrefs = ["22222.html", "33333.html", "11111.html"];
var srcs = ["22222.gif", "33333.gif", "11111.gif"];
var i = 0;
setInterval(function() {
a.href = hrefs[i];
img.src = srcs[i];
i = (i+1) % 3;
}, 3000);


<a href="11111.html" id="hogehogelink"><img src="11111.gif" id="hogehogeimg"></a>

509 名前:Name_Not_Found mailto:sage [2008/11/22(土) 23:29:12 ID:???]
このようなjavascriptの記述があったとします。
var cf = new Crossfader( new Array('cf1','cf2','cf3','cf4'), 500, 2000 );

このcf1,cf2,cf3,cf4を毎回ランダムに並び替えて、
var cf = new Crossfader( new Array('cf3','cf2','cf1','cf4'), 500, 2000 );や
var cf = new Crossfader( new Array('cf3','cf4','cf2','cf1'), 500, 2000 );
などのようにする方法はありますか。


変数とループを使って、
for (num=0;num<4;i++){

… 'cf' + num …

}
のような記述を理想としています。

510 名前:509 mailto:sage [2008/11/22(土) 23:30:44 ID:???]
forループの記述を間違えました。
×for (num=0;num<4;i++){
○for (num=0;num<4;num++){
です。



511 名前:Name_Not_Found mailto:sage [2008/11/23(日) 08:16:23 ID:???]
>>509-510
配列 シャッフル で検索

512 名前:Name_Not_Found [2008/11/23(日) 16:22:07 ID:iwJeSzla]
var length = 19;
var num = Math.floor( Math.random() * length );

としたばあい、numには 0〜18の値がランダムで代入されますか?

513 名前:Name_Not_Found mailto:sage [2008/11/23(日) 17:33:26 ID:???]
うん

514 名前:Name_Not_Found [2008/11/23(日) 23:46:06 ID:iwJeSzla]
<div class="a0">
<a href="mountain.html"> mountain </a>
</div>

<div class="a1">
<a href="river.html"> river </a>
</div>

<div class="a2">
<a href="ocean.html"> ocean </a>
</div>


のように、1行目は連続する数字を含む文字列、2行目はそれぞれ異なる文字列、3列目は全て同じ文字列
をjavascriptで書きたいと思っています。
---------------------------------------------------------------
for ( i=0; i<3; i++ ){
 document.write( '<div class="a' + i + '">' );        //1行目
 …                                //2行目
 document.write( '</div>' );                   //3行目
}
---------------------------------------------------------------
ここまでは出来たのですが、2行目の記述がどうしても思いつきません。
どなたかご教示お願いいたします。
分かりにくい説明ですみません。

515 名前:Name_Not_Found [2008/11/23(日) 23:47:22 ID:iwJeSzla]
>>513
ご解答ありがとうございます
リロードしていませんでした。

516 名前:Name_Not_Found mailto:sage [2008/11/23(日) 23:52:41 ID:???]
>>514
あらかじめ2行目のURLとテキストを配列に格納しておく。

517 名前:Name_Not_Found [2008/11/23(日) 23:58:18 ID:iwJeSzla]
>>514
なるほど!
やってみます

518 名前:Name_Not_Found mailto:sage [2008/11/24(月) 00:20:15 ID:???]
urlはテキストに.htmlをつければいいから格納する必要ない

519 名前:Name_Not_Found mailto:sage [2008/11/24(月) 00:33:01 ID:???]
javascriptの外部ファイル呼び出しで、パスに「~」が入っているとエラーが出てしまうのですが
どうすればいいのでしょうか。

520 名前:519 mailto:sage [2008/11/24(月) 01:25:43 ID:???]
どうやら違ったみたいです。

<script…><!--
****▼▼****




****▲▲****
// --></script>

こういう記述があって、****▼▼**** 〜 ****▲▲**** の部分を抜き取って

function aaa(){
****▼▼****




****▲▲****
}
このような外部ファイルを作り、これをサーバーにアップしてheadタグ内に呼び出し、

<script…><!--
aaa();
// --></script>

このように記述すれば同じように動作するはずですよね?
なぜかエラーが出てしまいます。



521 名前:Name_Not_Found mailto:sage [2008/11/24(月) 01:52:25 ID:???]
そらそうよ・・・

522 名前:Name_Not_Found mailto:sage [2008/11/24(月) 02:52:40 ID:???]
なんでそんな采配のアレを言われなあかんのじゃ!!

523 名前:Name_Not_Found mailto:sage [2008/11/24(月) 04:54:45 ID:???]
>>520
違う点があるとすれば文字コードだが

524 名前:Name_Not_Found mailto:sage [2008/11/24(月) 06:05:32 ID:???]
スコープという概念はどうでもいいんだな。

525 名前:Name_Not_Found mailto:sage [2008/11/24(月) 06:47:01 ID:???]
ああそれだなorz

526 名前:520 mailto:sage [2008/11/24(月) 13:20:23 ID:???]
え、ダメなんですか?
もちろん****▼▼****このような記述は実際には書いてありません。
どうすればいいんですか???

527 名前:Name_Not_Found [2008/11/24(月) 14:07:14 ID:y9QYlAKD]
初歩的な質問かも知れませんが、
チェックボックスで現在選ばれている項目のvalueを知りたいのですが、
document.getElementsByName("hoge")[i].checked;
をループで回して一致したところでvalueを取り出すという方法より簡単なやり方はありませんか?

528 名前:Name_Not_Found mailto:sage [2008/11/24(月) 15:15:20 ID:???]
>>526
元のソースはグローバルスコープ
君が書いたのは関数aaa内のローカルスコープ
プログラムによっては違いが出るかもね
ソースを全部読んでみないことには何とも言えない

>>527
valueを取り出すチェックボックスが一つでいいなら
全てのチェックボックスにイベントハンドラでも仕込むとか

529 名前:Name_Not_Found [2008/11/24(月) 15:26:56 ID:y9QYlAKD]
>>527
では、イベントハンドラでやってみようかと思います。
ありがとうございました。

530 名前:Name_Not_Found [2008/11/24(月) 23:50:51 ID:Bvs2hz28]
<a href="URL" target="_blank">hoge</a>

<a href="URL" target="_blank"><img src="URL"></a>
というように innerHTML.replace で置換させたいのですが
正規表現をどのように書けばいいのか四苦八苦しています。
頭が固くて嫌になるのですが、教えていただけませんでしょうか?



531 名前:Name_Not_Found mailto:sage [2008/11/25(火) 01:25:26 ID:???]
replace(/<a href="(.*?)">.*?</a>/g,'<a href="$1"><img src="$1" /></a>')

今適当に書いたから動くかどうかは知らん

532 名前:Name_Not_Found mailto:sage [2008/11/25(火) 03:11:40 ID:???]
$1に余計なものまで取り込んでるね。動作には支障ないだろうけど。
あと検索部のスラッシュは要エスケープ。

533 名前:Name_Not_Found mailto:sage [2008/11/25(火) 05:45:31 ID:???]
ん?余計なものってなんだべ

534 名前:Name_Not_Found mailto:sage [2008/11/25(火) 06:18:32 ID:???]
'target="_blank' まで取り込んじゃってんじゃない?

これがIMGタグの方にも移植されるね

ただIMGタグにとっては無意味な属性値なのでブラウザは単に無視するだろう

だから動作には支障はないだろう

ってことかと

535 名前:530 mailto:sage [2008/11/25(火) 14:24:21 ID:???]
>>531-534
ありがとうです。十分です。
後方参照がんばります。


536 名前:Name_Not_Found [2008/11/25(火) 14:46:35 ID:X85ESXNq]
IE7

divの、
onmouseoverでフェードイン、
onmouseoutでフェードアウト、
を書いたんだけど、

そのdivの子divも同じイベントに反応してハンドラが動いちゃうんだけど、
なんで???

わけわかめ

おねがいします・・・。


537 名前:Name_Not_Found mailto:sage [2008/11/25(火) 14:57:38 ID:???]
>>536
>>2
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。

538 名前:Name_Not_Found [2008/11/25(火) 15:20:29 ID:X85ESXNq]
>>537
まとめた、
あとは頼むぜ

//html/////////////////////////////////////
<div id="relation_prpd_box">
<div>
<div id="relation_prod_header">
<div id="relation_prod_title"></div>
<div id="relation_prod_close"><img id="relation_prod_closebutton" src="132.jpg" alt="閉じる" width="71" height="21" border="0"></div>
</div>
</div>
</div>
//js/////////////////////////////////////
/*イベントハンドラ/フェードアウト・・・同様にフェードインも定義*/
function relationProdBoxFadeOut( evt ){
new Effect.Fade( $(_relationProdBox.targetId), {
from: 1.0,
to: 0.3,
afterFinishInternal: function(effect)
{
$(_relationProdBox.targetId).style.filter='alpha(opacity=30)';
$(_relationProdBox.targetId).style.mozOpacity=0.3;
$(_relationProdBox.targetId).style.opacity=0.3;
}
}
);
}

Event.observe( $(_relationProdBox.targetId), 'mouseover', relationProdBoxFadeIn, false );
Event.observe( $(_relationProdBox.targetId), 'mouseout', relationProdBoxFadeOut, false );


539 名前:Name_Not_Found mailto:sage [2008/11/25(火) 15:41:36 ID:???]
使ってるライブラリくらいちゃんと併記しろ

540 名前:Name_Not_Found [2008/11/25(火) 15:58:35 ID:X85ESXNq]
>>539
アウト



541 名前:Name_Not_Found mailto:sage [2008/11/25(火) 16:05:46 ID:???]
よよいのよい

542 名前:Name_Not_Found mailto:sage [2008/11/25(火) 18:18:11 ID:???]
なにこいつ?

543 名前:Name_Not_Found mailto:sage [2008/11/25(火) 21:15:09 ID:???]
何も糞も>>537>>539>>541あたりはいつものテンプレ脳のカスだろ。

>>536
mouseover/mouseoutイベントが子エレメントにも反応するのは正常動作。
それが嫌ならevent.targetでも見て、子エレメントなら処理を行わないようにするなどの対応が必要。
ttps://developer.mozilla.org/en/DOM/event.target

544 名前:536 mailto:sage [2008/11/25(火) 22:02:44 ID:???]
自己解決しました

545 名前:Name_Not_Found [2008/11/25(火) 23:09:05 ID:X85ESXNq]
538です。

>>543
正常動作なのか・・・。

>>event.targetでも見て、子エレメントなら処理を行わないようにする
なるほどね

さんきゅー




546 名前:Name_Not_Found mailto:sage [2008/11/26(水) 09:02:59 ID:???]
<form name="aaa">
<input name="bbb" type="radio" onClick="showInTextArea('ひとつめ')" checked />ひとつめ
<input name="bbb" type="radio" onClick="showInTextArea('ふたつめ')" />ふたつめ
<input name="bbb" type="radio" onClick="showInTextArea('みっつめ')" />みっつめ
<textarea name="ccc"></textarea>
</form>

<script type="text/javascript">
<!--
function showInTextArea(text) {
; /*なにしていいかわかんない*/
}
// -->
</script>

こんな感じで、ラジオボタンのチェックを変えるとテキストエリア内の文字を動的に変更するような
スクリプトを書きたいんですが、documentオブジェクトから要素の取得をするやり方は分かるのですが、
今回のように「挿入」する方法をわたしのチンパン脳では思いつけんのです。
諸兄のアドバイスを乞いたく存じます。

547 名前:Name_Not_Found mailto:sage [2008/11/26(水) 09:36:42 ID:???]
要素を取得まで出来るんなら
textareaを取得して、それのvalueを書き換えれば良いよ

挿入に拘るんならinnerHTML
こっちならtextareaを使う必要もなくなるからデザインとかに懲りたい向きにはこっち

548 名前:546 mailto:sage [2008/11/26(水) 10:39:09 ID:???]
<form name="aaa">
<input type="radio" name="bbb" onClick="showInTextArea('ひとつめ')" checked />ひとつめ<br />
<input type="radio" name="bbb" onClick="showInTextArea('ふたつめ')" />ふたつめ<br />
<input type="radio" name="bbb" onClick="showInTextArea('みっつめ')" />みっつめ<br />
</form>
<textarea name="ccc" id="ccc"></textarea>
</body>
</html>

<script type="text/javascript">
<!--
function showInTextArea(text) {
document.getElementById("ccc").value = text;
}
// -->
</script>

>>547
上記でほぼ思い通りに切り替わるようになりましたが、唯一…
あくまでinputのonClickでイベントを開始しているので、最初からチェックの入っている
「ひとつめ」だけは最初からテキストボックスに文字を入れることができませんでした。
(クリックしなおさないと文字が入らない)

ページをロードした瞬間チェックが入っているか否かを取得して関数のキックは無理でしょうか?

549 名前:Name_Not_Found [2008/11/26(水) 11:06:35 ID:LHihruDV]
>>548
onload時にinputを見ていってチェックが入ってればshowInTextArea()
を呼んでやったらいいのでは?

試してないから動くかどうかわかないけど

window.onload =function(){
for( var i =0; i < forms["aaa"].input["bbb"].length; i++){
if( forms["aaa"].input["bbb"][i].checked ) showInTextArea(forms["aaa"].input["bbb"][i].value)
}
}


550 名前:Name_Not_Found mailto:sage [2008/11/26(水) 13:58:08 ID:???]
なるほどonloadですか!
かなりいけそうです。どうもありがとうございました。感謝します。



551 名前:Name_Not_Found mailto:sage [2008/11/26(水) 22:14:20 ID:???]
質問です。
対象ブラウザはIE7,Firefox3,Opera9で。


やりたいことは、appendChild の別名をプロトタイプで設定したいのです。
親.appendChild(子) => 親.add(子) ということ。


イメージとしては

なんちゃら.prototype.add = function(element)
{
return this.appendChild(element);
}

こんな感じになるのかと漠然と思ってるんですが、「なんちゃら」の部分が
分からず探している状態です。
HTMLElement にしたら、いくつかのタグでは通ったんですが、select タグで通らず。
(「通らず」の挙動はブラウザでバラバラ)
ここで行き詰ってしまいました。


今のところ、createElement と getElement の直後で

element = document.createElement(tag);
element.add = element.appendChild;

ってなことやってるので、実現できてるって言えばできてるんですが、
どうも気持ち悪いので、分かる方にご教授願いたいです。

552 名前:Name_Not_Found mailto:sage [2008/11/26(水) 23:15:37 ID:???]
>>551
なんちゃら=Element
で良いのでは?
selectで動作が不安定なのは、
DOMのHTMLSelectElementでaddというメソッドが規定されているから。
ttp://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-94282980

553 名前:Name_Not_Found [2008/11/26(水) 23:55:22 ID:LHihruDV]
var Nanchara =Class.create();
Nanchara.prototype ={
initialize: function( _parentElem ) {
this.parentElem =_parentElem;
},
add : function(element){
return this.parentElem.appendChild(element);
}
}

new Nanchara( $('parent') ).add( $('child') );

ってことかな?


554 名前:Name_Not_Found [2008/11/26(水) 23:59:45 ID:LHihruDV]
( new Nanchara( $('parent') ) ).add( $('child') );
だったか・・・、


555 名前:Name_Not_Found [2008/11/27(木) 00:15:38 ID:EVh5utMf]
nanchara =new Nanchara( $('parent') );
nanchara.add($('child')).add($('Grandchild')).add('Great-grandchild').add(.....

ってできるといいなぁ
誰か考えて。


556 名前:Name_Not_Found [2008/11/27(木) 00:21:55 ID:EVh5utMf]
これでいけるか、

var Nanchara =Class.create();
Nanchara.prototype ={
initialize: function( _parentElem ) {
this.parentElem =_parentElem;
},
add : function(element){
return ( ( new Nanchara( $('parent') ) ).add( element ) );
}
}


557 名前:Name_Not_Found [2008/11/27(木) 00:25:37 ID:EVh5utMf]
うざいってか?

var Nanchara =Class.create();
Nanchara.prototype ={
initialize: function( _parentElem ) {
this.parentElem =_parentElem;
},
_appendChild : function(element){
this.parentElem.appendChild(element);
},
add : function(element){
return ( ( new Nanchara( $('parent') ) )._appendChild( element ) );
}
}


558 名前:Name_Not_Found mailto:sage [2008/11/27(木) 00:59:36 ID:???]
途中の所失礼します

今まで、 document.getElementByTagName などを使ってページの書き換えスクリプト(繰り返し、ifなどがやや多い)を作って使用していました。
が、XPath対応ブラウザも増えてきたことですしこの際スクリプトもXPath対応にしたいと思うのですが、XPathのチュートリアルとリファレンスがあるようなサイトがありましたら教えていただけると幸いです。

559 名前:Name_Not_Found mailto:sage [2008/11/27(木) 01:31:56 ID:???]
>>557
さすがエスパー

560 名前:551 mailto:sage [2008/11/27(木) 06:44:22 ID:???]
>>552
レスありがとうございます。


>selectで動作が不安定なのは、
>DOMのHTMLSelectElementでaddというメソッドが規定されているから。

うあそれは全く知りませんでした。
それだとやめといた方が融通が効くかな…。
今の方法で納得しておきます。



561 名前:551 mailto:sage [2008/11/27(木) 06:45:55 ID:???]
って、書き込んだ直後に思いついた。
名前変えりゃいいじゃん俺。push とか…。

またちょっと試してきます。

562 名前:Name_Not_Found mailto:sage [2008/11/27(木) 12:23:16 ID:???]
ecmaの方から誘導されてきました。
ボタンA(キーコード53)を押すと自動で
ボタンB(キーコード55)を押すスクリプトはどう書けばいいでしょうか。

563 名前:Name_Not_Found mailto:sage [2008/11/27(木) 14:07:57 ID:???]
ボタンBがへっこむってことだな?
「さすまた」みたいな道具で2ボタン同時押し。

564 名前:Name_Not_Found mailto:sage [2008/11/27(木) 17:24:41 ID:???]
>>562
ブラウザ上でキー出力はできない
Windows限定でよければWSH(JScript)使えばできるだろうけど、スレチ

565 名前:Name_Not_Found mailto:sage [2008/11/27(木) 20:24:26 ID:???]
>>562
たぶんできるよ

Gecko なら
https://developer.mozilla.org/en/DOM/document.createEvent

https://developer.mozilla.org/en/DOM/event.initKeyEvent

IE なら
msdn.microsoft.com/en-us/library/ms536390%28VS.85%29.aspx

msdn.microsoft.com/en-us/library/ms536423%28VS.85%29.aspx

試してないからホントにできるかはわからん

566 名前:Name_Not_Found mailto:sage [2008/11/27(木) 20:44:22 ID:???]
すみません
リンクをクリックした瞬間(またはクリックしたまま離さない状態)の時にも、
ステータスバーにリンク先を表示させないようにしたいのですが、Javascriptで可能でしょうか?
もし出来るなら、教えていただきたいのですが・・・

onMouseOver="status='〜〜';return true"で、ステータスバーにリンク先でない別の文字列を表示させるところまでは出来るのですが
リンクをクリックしたときにも全く表示させないようにしたいのです


567 名前:Name_Not_Found mailto:sage [2008/11/27(木) 20:49:29 ID:???]
>>566
誰がスパムサイトの幇助なんかするかwww

568 名前:Name_Not_Found mailto:sage [2008/11/27(木) 21:01:32 ID:???]
━━━本スレに書く事を許される者は以下の通り━━━━━
 一、ユーザに迷惑となるスクリプトを書かない者

569 名前:Name_Not_Found mailto:sage [2008/11/27(木) 21:06:26 ID:???]
>>567>>568
すみません。社内用のホームページで利用したいのです
ソースみれば分かってしまうのは仕方ないとして、
出来る限りサーバーのフォルダ構造を見せたくないので・・・教えてもらえませんか?

570 名前:Name_Not_Found mailto:sage [2008/11/27(木) 21:07:58 ID:???]
しつけーよ



571 名前:Name_Not_Found mailto:sage [2008/11/27(木) 21:12:43 ID:???]
>>569
見られたら悪いフォルダ構造にするお前がおかしい

まぁ、スパムサイトだろうけどなwww

572 名前:Name_Not_Found [2008/11/27(木) 21:13:33 ID:EVh5utMf]
ふらっしゅ

573 名前:Name_Not_Found mailto:sage [2008/11/27(木) 21:17:34 ID:???]
>>569
マジレスすると人を殺すための知識を
私は善人で絶対悪用しないので教えてください!
っていう人間に教えるわけないよね

しかも社内サイトで比較的悪用される可能性が低いんだからさ

574 名前:551 mailto:sage [2008/11/27(木) 21:53:36 ID:???]
>>551の件、HTMLElement.prototype.push として解決しました。
(OperaとFirefoxで確認。IEは無視ってか条件分けして元の処理のまま)

ありがとうございました。

575 名前:Name_Not_Found mailto:sage [2008/11/27(木) 21:58:48 ID:???]
>569
フォルダ構造を見られたくないだけなら、リンク先は常に固定にして、
「?page=ページ名」をサーバ側で解釈する方が確実ですね。

576 名前:Name_Not_Found mailto:sage [2008/11/27(木) 22:16:39 ID:???]
ひょっとしてJavaScriptとか全然関係なくて
httpd.confの
Options Indexes FollowSymlinks MultiViews
を消せばいいだけの話なんじゃないかという気がしてきた

577 名前:Name_Not_Found mailto:sage [2008/11/27(木) 22:25:20 ID:???]
>>573>>575
どうもすみません。ありがとうございます。

質問ばかりで申し訳ないのですが、
リンク先は常に固定して「?page=ページ名」の解釈というのは、どうやるんでしょう?
<a href="../xxx/○○.fp5">業務日報作成</a>
みたいな状態になってるんですが・・・




578 名前:Name_Not_Found mailto:sage [2008/11/27(木) 22:28:50 ID:???]
>>577
Apacheのmod_rewriteだろJK

お前、そんなに詳しくないなら、管理とかするな

579 名前:Name_Not_Found mailto:sage [2008/11/27(木) 22:36:22 ID:???]
>>577
……見られたくないとか以前に、基本が丸っきり抜けてるんですけど。


いまのあなたは、サンダル履きで山歩きの経験皆無なのに、
「山奥でキノコ狩りするんで毒キノコの見分け方教えて」と言ってるよーなもんです。

危なくて何も言えないですよ。ヘタなこと言ったら、
どんな間違った使われ方するかわかったもんじゃない。
遭難して死ぬのがオチ。ヘタな操作でサーバのデータぶっ飛ばすのがオチ。

580 名前:Name_Not_Found mailto:sage [2008/11/27(木) 22:41:25 ID:???]
どうでもいいからjavascriptの話しろよ



581 名前:Name_Not_Found mailto:sage [2008/11/27(木) 23:01:50 ID:???]
ただ煽りたいだけのテンプレ厨の自演と思われ。

582 名前:Name_Not_Found mailto:sage [2008/11/28(金) 01:28:21 ID:???]
htmlのformを使って入力データをブラウザからサーバに送っています。
文字コードがhtmlはShift-JIS、サーバ側はEUC-JPのため、
<input type="button" value="送信"
onclick="org=document.charset; document.charset='EUC-JP';
document.フォーム名.submit(); document.charset=org;">
という方法で送信ボタンクリック時に文字コードを変換しています。
実行ボタンを押して送信する場合はこれでうまくいくのですが、
フォームに入力してそのままエンターキーを押すという方法で送信した場合は、
このスクリプトが実行されないので望んだ結果になりません。
エンターキーを押して送信した場合でもこのスクリプトを実行させる方法はありますでしょうか。
onEnterのようなイベントハンドラがないかと思いさがしたのですが見つけられませんでした。
以上よろしくお願いします。

583 名前:Name_Not_Found mailto:sage [2008/11/28(金) 01:45:25 ID:???]
onSubmitとかダメなん

584 名前:Name_Not_Found mailto:sage [2008/11/28(金) 01:57:41 ID:???]
>>582
<form action="javascript:〜" method="post">

585 名前:582 mailto:sage [2008/11/28(金) 02:46:05 ID:???]
>>583
ありがとうございます。
<form onSubmit="org=document.charset; document.charset='EUC-JP';
return true; document.charset=org;">
で望む結果を得ることができました。

>>584
ありがとうございます。
<form action="javascript:org=document.charset; document.charset='EUC-JP';
document.フォーム名.action='http://〜'; document.InForm.submit(); document.charset=org;
name="フォーム名" method="GET">
としてみましたが、文字コードは変換されませんでした。それとエンターキーを2回押さないと送信されなくなりました。
もう少しいろいろと試してみます。

お二方ともどうもありがとうございました。

586 名前:Name_Not_Found mailto:sage [2008/11/28(金) 12:05:30 ID:???]
Javascriptを使ってFlashコンテンツのボタンをクリックとかできるかね?

587 名前:Name_Not_Found mailto:sage [2008/11/28(金) 12:47:12 ID:???]
>>586

できるよ!
でも、Flash側(ActionScript)でも、JavaScript受け取る準備をしておかないといけない

588 名前:Name_Not_Found [2008/11/28(金) 12:58:05 ID:Qe7lx2vO]
すみません、
document.getElementsByTagName
で取得するタグを複数してすることはできないんでしょうか?

document.getElementsByTagName(img,input)
document.getElementsByTagName(img|input)

などいろいろやってみましたがダメでした。

589 名前:Name_Not_Found mailto:sage [2008/11/28(金) 13:21:14 ID:???]
>>587
やっぱりそうなるか。
じゃ既存のFlashコンテンツをJSで操作することは不可能なのか…。

590 名前:Name_Not_Found mailto:sage [2008/11/28(金) 13:27:49 ID:???]
>>588
なんで
document.getElementsByTagName(img)
document.getElementsByTagName(input)
と2行にわけるのがダメなのか
一緒に処理したいなら、2行で取った後にまとめればよいと思うのだけど何か理由あり?



591 名前:Name_Not_Found mailto:sage [2008/11/28(金) 13:30:36 ID:???]
>>590
説明不足ですみません。その方法でもいいのですが、とあるライブラリを
改造している為、最終的に1つの配列にまとめる必要があります。

どうやらdocument.getElementsByTagNameで取得したものは配列ではないようで、
concatで結合することができませんでした。

592 名前:Name_Not_Found mailto:sage [2008/11/28(金) 13:34:14 ID:???]
>>591
getElements〜で返ってくるのはNodeList。

んで
>最終的に1つの配列にまとめる必要があります
本当に配列でいいの?
一つのNodeListじゃなくて?
配列でいいんだったらNodeListを配列に変換すればいいだけだけど

593 名前:Name_Not_Found mailto:sage [2008/11/28(金) 13:35:50 ID:???]
一つずつ取り出して、配列に突っ込めばいいじゃん

594 名前:Name_Not_Found mailto:sage [2008/11/28(金) 13:57:06 ID:???]
>>592
勝手に混乱してました。。ごめんなさい。
最終的には1つのNodeListでした。

「NodeList 結合」などで検索しましたが、NodeList同士を結合する関数は
用意されていないんでしょうか?

595 名前:592 mailto:sage [2008/11/28(金) 14:47:02 ID:???]
>>594
うーんNodeListをまとめる方法ないんじゃないかなあ
少なくとも俺は知らないんで他の識者の皆さんに任せた

596 名前:Name_Not_Found mailto:sage [2008/11/28(金) 14:54:28 ID:???]
まず、getElementsByTagNameで取得したNodeListにすべて共通のclassを付加して
その後に、getElementsByClassNameですべてのNodeListを取得すればいい

getElementsByClassNameが実装されてないブラウザでは、ライブラリがあるからそれを利用すればいいよ

597 名前:594 mailto:sage [2008/11/28(金) 15:09:26 ID:???]
>>595
いろいりご指摘頂きありがとうございました!

>>596
ありがとうございます。
なるほど、一旦classを付けるんですね。
試してみます。

598 名前:Name_Not_Found [2008/11/28(金) 15:14:27 ID:oS+ZctWs]
>>597
>>593の言うように順に取り出してまとめてやればいいんじゃないのかね
やっつけ仕事だけど

<html><body>
<form>
<input type="text" name="text1">
<input type="button" name="button1">
</form>
<a href="link1" name="link1">link1</a>
<a href="link2" name="link2">link2</a>
<a href="link3" name="link3">link3</a>
</body>

<script>
n1=document.getElementsByTagName("input").length;
n2=document.getElementsByTagName("a").length;

array1=new Array();
for(i=0;i<n1+n2;i++)
if(i<n1)array1[i]=document.getElementsByTagName("input")[i];
else array1[i]=document.getElementsByTagName("a")[i - n1];

for(i=0;i<array1.length;i++)alert(array1[i].name);
</script></html>


599 名前:Name_Not_Found mailto:sage [2008/11/28(金) 15:39:05 ID:???]
>>594
JavaScript 内だけで完結させるなら
NodeList を Array に変換すればいい

Array.prototype.slice.call を使ったり、ベタにやるなら

var elems = document.getElementsByTagName("div");
var nelems = elems.length;
var list = new Array(nelems);
for (var e = 0; e < nelems; e++) {
list[e] = elems[e];
}

で list を使う

>>596 の方法だと不要な class 属性値がつくことになるんで
思わぬところで副作用がでる可能性が…

600 名前:Name_Not_Found mailto:sage [2008/11/28(金) 16:06:28 ID:???]
>>599
>思わぬところで副作用がでる
というかNodeListではあるけどclass付与したときの静的キャッシュのような扱いになるから
それを理解して使わないとまずいよね
あと一時的に付与したclassを除去する関数もいるだろうな



601 名前:Name_Not_Found mailto:sage [2008/11/28(金) 16:53:14 ID:???]
>>596
ライブラリのgetElementsByClassNameって戻り値はNodeListじゃなくて配列じゃない?

602 名前:Name_Not_Found mailto:sage [2008/11/28(金) 18:56:22 ID:???]
OBJECTタグで読み込んだMFC ActiveXコントロールと、JavaScriptと連携して、
ActvieXコントロール側で保持している文字列を、サーバにPOSTしようとしています。

JavaScript側で、MFC ActiveXの保持している文字列を取得するには、
どういった方法があるのでしょうか。


603 名前:Name_Not_Found mailto:sage [2008/11/28(金) 19:10:24 ID:???]
>>601
実装による
ネイティブの getElementsByClassName がある場合、それを使うよう実装されている場合は NodeList をそのまま返すものが多い
ライブラリ内でエミュレートしているものはだいたい Array に検索結果を突っ込んでいるので、Array オブジェクトがそのまま返ってくる

要は、ライブラリがしっかりドキュメントなんかで「絶対 Array 返す」とうたっていない場合は返値のオブジェクトが何かわからんので注意しろ、ってこと

604 名前:Name_Not_Found mailto:sage [2008/11/28(金) 20:13:51 ID:???]
>>603
いや>>596がIEの場合はライブラリ使えって言ってるからね

605 名前:Name_Not_Found mailto:sage [2008/11/28(金) 21:31:18 ID:???]
>>587
ActionScript → JavaScript は ExternalInterface.call で
可能とは知ってたけど、逆も出来るん?

元質問者とは違うけど、自分も教えて欲しいです。

606 名前:Name_Not_Found [2008/11/29(土) 08:19:04 ID:burGaZI6]
すいません
JavaScriptで
「/」が文字列の中にあったらってどのように表記するのでしょうか?

if ( document.form.com.value == '' ) {
   alert( "コメントを入力してください" );
   document.form.poss.focus();
   return(0);
}

document.form.com.valueの中に/を含む文字列があったら↑の中のチェックで引っかかる
ようにしたいんです、、、

ご助力いただけますとありがたいですっ



607 名前:Name_Not_Found mailto:sage [2008/11/29(土) 08:27:11 ID:???]
if ( document.form.com.value.indexOf("/") != -1 ) alert("'/' があるよ");

608 名前:Name_Not_Found mailto:sage [2008/11/29(土) 08:28:25 ID:???]
if (document.form.com.value.indexOf("/") >= 0)

609 名前:Name_Not_Found mailto:sage [2008/11/29(土) 09:51:55 ID:???]
>>605
flash.external.ExternalInterface.addCallback('hoge', this, moge);
のようになってるFLASHの場合、JSで hoge() を実行すると、
FLASHの moge() が実行される。

610 名前:文系政経の学生さん mailto:sage [2008/11/29(土) 16:52:20 ID:???]
例えば0〜9999から重複しない値を得るには
重複してないか確認するとか
全数を配列に記憶しておくとか
スマートじゃないのでw
あらかじめ筋を立てておくといいんじゃないかな?

例えば
1桁は0〜9の10個の数字のArrayとする。
これを必要数の桁用意する。
各桁を任意の順にsortしておく
この各桁毎に10数えるカウンタを用意する
後はこのカウンタごとにカウンタの示すArrayの要素の値を
与えていけば…
コードで書けって?wだって今やっつけで書き込んでるだけだもん
ていうか、どこのレス?wwwスルーしてヨシ!w



611 名前:Name_Not_Found [2008/11/29(土) 21:23:51 ID:olu7+PcJ]
f1というidのiframeがあったとして
document.ElementById("f1")で取得したiframeのオブジェクトから
そのiframe内に表示しているwindowオブジェクトを取得するには
どうしたらいいですか?

612 名前:611 [2008/11/29(土) 21:25:46 ID:olu7+PcJ]
document.ElementById → document.getElementByIdでした

613 名前:Name_Not_Found [2008/11/30(日) 00:37:01 ID:paqqJfOA]
setTimeout()に0を指定して、()で囲んだ関数リテラルを渡してるスクリプトを
発見したんですが、この書き方のメリットって何でしょう??

setTimeout((function(){
 //実行分
}), 0);


614 名前:Name_Not_Found mailto:sage [2008/11/30(日) 00:37:48 ID:???]
ない

615 名前:Name_Not_Found mailto:sage [2008/11/30(日) 00:55:16 ID:???]
>>613
JavaScript実行しっぱなしだとブラウザが動かなくなるっしょ
setTimoutとか使って一瞬でもJavaScript終了してやるとブラウザ固まらなくてユーザーの不満度が減る
この目的のためには第二引数は0ミリ秒指定でもオッケーなんだけど、それが各ブラウザの仕様として担保されてる事なのかどうかは俺は知らない

616 名前:Name_Not_Found mailto:sage [2008/11/30(日) 01:29:12 ID:???]
誤解を招きそうな書き方になったが訂正はしない

617 名前:Name_Not_Found mailto:sage [2008/11/30(日) 08:26:37 ID:???]
UI スレッドのキューに push してると考えればいいと思う

var a = [];
for (var i = 5; i--; ){
setTimeout(function() { a.push(i); }, 0);
}

何ループにして何秒かかっても結果は全部 0 になる

618 名前:Name_Not_Found [2008/11/30(日) 09:10:59 ID:paqqJfOA]
>>615-617
ありがとうございます!!
ずっとsetTimeoutに渡された関数に気をとられてたんですが
setTimeout自体の動作に理解が足りてなかったです。。
めっちゃ助かりました。


619 名前:Name_Not_Found mailto:sage [2008/11/30(日) 09:22:52 ID:???]
皆さんが、1msecでもjavascriptの実行時間を早くするために心がけていることはありますか?

620 名前:Name_Not_Found mailto:sage [2008/11/30(日) 10:10:51 ID:???]
変な書き方をしないで、自分以外の人にも読んでもらいやすくする



621 名前:Name_Not_Found mailto:sage [2008/11/30(日) 10:27:44 ID:???]
例えば、imgエレメントにhref属性を付加するならsetAttributeですけど、onclickなどのイベントハンドラを付加するにはどうしたら良いのでしょう?
(imgNode.onclick = "hogehoge();";みたいじゃない書き方を探しています)

622 名前:Name_Not_Found mailto:sage [2008/11/30(日) 10:44:25 ID:???]
Q13?

623 名前:Name_Not_Found mailto:sage [2008/11/30(日) 10:51:00 ID:???]
>>622
あ、テンプレにあったんですね
すみません

でも、Firefoxなんですよねぇ

624 名前:Name_Not_Found mailto:sage [2008/11/30(日) 13:05:12 ID:???]
>>619
信じられないくらいに遅いIEでの文字列連結を考え、
大量に文字列を連結する場合には、配列に入れてからjoinさせるという定番対策とか。

625 名前:Name_Not_Found mailto:sage [2008/11/30(日) 13:38:41 ID:???]
>>623
FFxなどDOM Eventに準拠したブラウザではaddHandler()、
IEはattacheEvent()。あとは検索すれ。

626 名前:Name_Not_Found mailto:sage [2008/11/30(日) 13:55:45 ID:???]
>>619
有名なプログラムの本の高速化の章に書いている言葉を送ろう

高速化しない。

627 名前:Name_Not_Found mailto:sage [2008/11/30(日) 15:00:29 ID:???]
>>625
> addHandler()
すまんがこれはどのインターフェイス? DOM2? DOM3?

628 名前:Name_Not_Found mailto:sage [2008/11/30(日) 15:02:36 ID:???]
>>626
そんなことが書いてあるのかw

だけど本当そうだよね、拘りすぎるとドツボにはまる。
音質に拘るのと似てる気がする。

629 名前:Name_Not_Found mailto:sage [2008/11/30(日) 15:08:46 ID:???]
>>628
実際JavaScriptネタでググってみると、
時代遅れの酷いコードが上位に来る事も頻繁にあるので、
もうちょっと考えてコードを書いて欲しいなとは思うね。

630 名前:Name_Not_Found mailto:sage [2008/11/30(日) 15:17:33 ID:???]
>>626
『プログラミング作法』にも書いてあったな、ソレ



631 名前:Name_Not_Found mailto:sage [2008/11/30(日) 15:19:11 ID:???]
否、高速化はするべきだ

632 名前:Name_Not_Found mailto:sage [2008/11/30(日) 17:33:56 ID:???]
iframeでhtmlのソース読み込めるんだな
これでやりたい放題できそうだ

633 名前:Name_Not_Found mailto:sage [2008/11/30(日) 19:58:20 ID:???]
>>632
マジ?それ外部サイトのHTMLでは無理でしょ?それできたらマジすごいんだけど。

634 名前:Name_Not_Found mailto:sage [2008/11/30(日) 21:58:29 ID:???]
>>632
初耳だ。それをやろうとして挫折したので是非知りたい
どうやるんだ?あ、もちろんドメインは別で。

635 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:04:01 ID:???]
>>633,634
お前らはAjaxライブラリ群を知らんのかwwwざまぁ

636 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:36:42 ID:???]
>>635
ajaxライブラリに何を使おうが、ブラウザの制限なのだからサーバを介さない限り
外部サイトのHTMLはJSではアクセスできないでしょ? 何か勘違いしてないかい?

637 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:37:20 ID:???]
>>636
アクセスできるよw

638 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:44:27 ID:???]
>>637
だからそれはサーバを介した中継プログラムを使っているんでしょう。
技術的に無理なんだって。本当に仕組みわかって話していますか?

639 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:44:54 ID:???]
>>638
javascriptだけで出来るのにwww

640 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:48:55 ID:???]
もしかしてjsonpのこといっているのかい?今話しているのはただのHTMLの
ことだよ。それはできないと思う。



641 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:50:32 ID:???]
できたとしてもセキュリティホールだからなぁ…

642 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:51:34 ID:???]
生粋のjavascriptだけでw

643 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:54:33 ID:???]
約一名性格の悪い嘘つきがいるようだ。ソースも示せないのだから無視でいいよ。

644 名前:Name_Not_Found mailto:sage [2008/11/30(日) 22:57:57 ID:???]
自分が知らないと、嘘とするw

頑張って、prototype.jsと睨めっこしてなよ

645 名前:Name_Not_Found mailto:sage [2008/11/30(日) 23:17:54 ID:???]
嘘つきじゃなくて勘違いなんだろうね。

646 名前:Name_Not_Found mailto:sage [2008/11/30(日) 23:23:24 ID:???]
>>644
「自分が知らない」じゃなくて「世界中の人が知らない」だと思うw

647 名前:632 mailto:sage [2008/11/30(日) 23:32:24 ID:???]
一応言っておくけど、635ではないからな

ローカルでしか試してない。たぶん無理だと思う
昨日からjs始めたばっかりで、よくわかってない
iframeをelementCreateしてbodyあたりにappendChild
onreadychangeで読み込み終了ならiframeのdocument.all[0].innerHTMLみたいな実装をした

648 名前:Name_Not_Found mailto:sage [2008/11/30(日) 23:48:03 ID:???]
635は今頃一生懸命弁解を考えているだろうな…。まぁ逃げるか。

649 名前:Name_Not_Found mailto:sage [2008/12/01(月) 00:34:47 ID:???]
>>635
SSIが使える鯖で、.htaccess使ってました><
こんなオチ?

650 名前:Name_Not_Found mailto:sage [2008/12/01(月) 00:37:34 ID:???]
急にレスが増えたと思ったらなんだこりゃ



651 名前:Name_Not_Found mailto:sage [2008/12/01(月) 01:00:12 ID:???]
ただのかわいそうな子

652 名前:Name_Not_Found [2008/12/01(月) 02:22:47 ID:FN5hPgGj]
firefox を使って下記のページで jquery の ajaxComplete のテストを試しているのですが

www.openspc2.org/JavaScript/Ajax/ref/jQuery/ver1.0.3/ref/Ajax/ajaxComplete/sample/index.html

二回目以上押すと、「通信を終了しました」という alert が何度も表示されます。
押せば押すほど、alertの数が増えていきます。
IE7で試すと、正常に一回きり表示されるのでブラウザの問題だと思っています。
なにかアドオン等が悪さしているのかと思うのですが、ほかに同じ状況になる人いますでしょうか?
ちなみに firefoxのバージョンは 3.0.4 になります。



653 名前:Name_Not_Found mailto:sage [2008/12/01(月) 02:39:26 ID:???]
>>652
jquery触ってないから何に使うのか良く分からんけど
とりあえずoperaとsafariでも増えるね
ライブラリが悪いのか使い方が悪いのか知らんが

654 名前:Name_Not_Found [2008/12/01(月) 16:58:14 ID:Hy7eY5VA]
初歩的かもしれないけどごめんなさい。
redirect Scriptなんですが、
var browser_type=navigator.appName
var browser_version=parseInt(navigator.appVersion)
if (browser_type=="Microsoft Internet Explorer"&&browser_version>=4)
window.location.replace("hogehoge.com")
else
window.location="hoge.com"

って書いてしまうと、IE4以上のIEすべてがリダイレクトされますが、IE7を除外したい場合
だとか、IE6だけをリダイレクトしたいときにはどのように書けばいいんでしょうか?

655 名前:Name_Not_Found mailto:sage [2008/12/01(月) 17:08:07 ID:???]
browser_version>=4を書き換えればいいんじゃないですかね

656 名前:Name_Not_Found mailto:sage [2008/12/01(月) 17:11:06 ID:???]
>>654
どうでもいいけど、何で末尾にセミコロンがないんだ?

IE6だけをリダイレクトしたいんなら

if ((navigator.userAgent).indexOf("MSIE 6.0") > -1)
window.location.replace("hogehoge.com");
else
window.location="hoge.com";


657 名前:Name_Not_Found mailto:sage [2008/12/01(月) 17:44:05 ID:???]
セミコロンが無くてもなんか動作はしていたの気付きませんでした…
if (browser_type=="Microsoft Internet Explorer"&&browser_version<=6)
こんなんかな〜?とか思ったけど、>>656さんのやってみたら
バチリいけました、ありがとうございます。


658 名前:Name_Not_Found mailto:sage [2008/12/01(月) 18:07:32 ID:???]
セミコロンがないと、JavaScriptインタプリタが改行後にセミコロンがあると
解釈して勝手にセミコロンを入れるから実行はできるが、バグの元になるぞ

659 名前:Name_Not_Found mailto:sage [2008/12/01(月) 18:50:15 ID:???]
>>653

たしかに opera でもなりますねぇ。
一応説明では ajax の呼び出しが完了後に呼ばれるので
一回のみのはずなんですが。。。

もう少し調べてみます。

660 名前:652 mailto:sage [2008/12/01(月) 19:16:46 ID:???]
っていうか ajaxStart() 自体が複数回呼び出されてるみたいです



661 名前:Name_Not_Found mailto:sage [2008/12/01(月) 20:50:47 ID:???]
>>660
一回コレを呼ぶ必要があるんじゃない?
$("#result").unbind();

662 名前:661 mailto:sage [2008/12/01(月) 20:53:41 ID:???]
一回ってか毎回ね

663 名前:652 mailto:sage [2008/12/01(月) 22:14:58 ID:???]
>>661

おっしゃるとおりでした!
裏で何が起こってるのか分かりませんが、下記のコードで解決しました!

$("#result").ajaxStart(function(){
alert("通信を開始します");
});
$("#result").load("./sample.txt", function(data, stat){
alert(data);
});

$("#result").ajaxComplete(function(){
alert("complete");
$("#result").unbind();
});


ありがとうございます!

664 名前:Name_Not_Found mailto:sage [2008/12/02(火) 21:59:06 ID:???]
1画面の中に複数の<DIV>タグで区切られたinput Textがあります。

<DIV>
 <input type="text" id="TextBox1">
 <input type="text" id="TextBox2">
 <input type="submit" id="Button1">
</DIV>

<DIV>
 <input type="text" id="TextBox3">
 <input type="text" id="TextBox4">
</DIV>

2つ目のDIVタグの中にはボタンがなく、あるイベントで2つのテキストの内容をサーバーにPOSTしたいと思ってます。
1つ目のDIVタグはSubmitボタンがあるので、そっちに処理を任せるのですが、
2つ目のDIVタグ内の内容をサーバーにPOSTでsubmitするにはどのようなスクリプトになるでしょうか。

環境WindowsXP
ブラウザIEのみ

665 名前:664 mailto:sage [2008/12/02(火) 22:12:05 ID:???]
自己解決しました
DIVタグの周りにFORMタグをかぶせて、
document.formsのsubmit()でいけました。

666 名前:Name_Not_Found mailto:sage [2008/12/03(水) 03:17:31 ID:???]
function hoge(){
if(…)return true;
return false;}

<input type="submit" onclick="return hoge()" />

ラジオボタンで何も選択されてないとき次のページに飛ばないようにするための
書き方を探したらこんな風になっていたのですが、これのonclick="return hoge()"がいまいち理解出来ません。
onclick="hoge()"だったら返却値がfalseなら飛ばないんだろうなぁと思うのですが、return??

667 名前:Name_Not_Found mailto:sage [2008/12/03(水) 03:44:41 ID:???]
>onclick="hoge()"だったら返却値がfalseなら飛ばないんだろうなぁと思う

のならonclick="true"やonclick="false"にすればどうなるか試してみればいいんじゃないかな

668 名前:Name_Not_Found mailto:sage [2008/12/03(水) 04:10:22 ID:???]
書籍スレが死んでるのでこちらで質問させてください。
まったくの初心者で一からJavaScriptについて学びたいので教本になるものを探しているのですが、
・基礎 Ajax + JavaScript
・基礎からのJavaScript
・WebクリエイティブのためのDOM Scripting
これらの中から選ぶならどれが良いでしょうか?
また、他にもお勧めのテキストなどあれば教えてください。

669 名前:Name_Not_Found mailto:sage [2008/12/03(水) 04:36:26 ID:???]
>>668
他のプログラミング言語の経験はありますか?

670 名前:668 mailto:sage [2008/12/03(水) 04:53:10 ID:???]
>>669
まったくの初心者で他のプログラミング言語の経験もありません。
HTML+CSS手打ちでのサイト作成、DW操作ができる程度です。



671 名前:Name_Not_Found mailto:sage [2008/12/03(水) 07:42:43 ID:???]
全部読めばいいよ

672 名前:Name_Not_Found mailto:sage [2008/12/03(水) 09:49:41 ID:???]
ttp://www.html5.jp/library/graph_line.html
ここのライブラリを使って折線グラフを書くことはできました。

書いた後にcanvasをまっしろにしたいのですができません。
(F5を押すと当然消えますが、プログラムで消すようにしたいです)

グラフは消えるのですが、文字はどうやっても消えません。。
DOMのappendChildで<DIV>を作ってるようなのですが、
どうすればいいのでしょうか?

obj=document.getElementById("canvas");
for(i=0; i<obj.childNodes.length; i++){
obj.removeChild(obj.childNodes[i]);
}

こんなことをいろいろやってます。

673 名前:Name_Not_Found mailto:sage [2008/12/03(水) 09:50:52 ID:???]
基礎からのJavaScriptしかないじゃん。

674 名前:668 mailto:sage [2008/12/03(水) 10:05:13 ID:???]
>>673
この3冊は書籍スレの過去レスから調べたものです。
基本は押さえていると思い挙げましたが、他にお勧めの本があるかと思い質問いたしました。
初心者はコレ読めば良いだろうなと感じたもので結構ですのでお教えください。

675 名前:Name_Not_Found mailto:sage [2008/12/03(水) 14:51:13 ID:???]
オレのオススメは
「JavaScript+Ajax プログラミング・テクニック」佐藤信正著 メディア・テック出版
これ読めばJavaScriptの各種リテラルとかオブジェクトの関係とかがよく分かると思う。
比較的情報が新しいし、JavaScript全体を見渡すという点では初心者でも読みやすいよ。
ただしもっと奥深く知りたい場合は、他の本の方がいいかも。

本当なら初心者だろうが何だろうが、サイ本読めと言いたいけどね。

676 名前:Name_Not_Found mailto:sage [2008/12/03(水) 15:49:22 ID:???]
contentEditableで、
<p><font size="1">1行目</font></p> [enter]
をすると
<p><font size="1">1行目</font></p>
<p></p>
となってその際に、
2行目をクリックして選択した時に、
selection.createRange().parentElement()をクリック時イベント等で取得すると、
カーソルが2行目にあるのに、
1行目のpタグが取得できるんですが、
どうしてでしょうか?

mouseupイベントでsetInterval等で少し時間(500ms〜マシンスペック依存ぽい)を置いて、
もう一度parentElement調べると、
2行目が取れたりしててよくわかりません。


677 名前:Name_Not_Found [2008/12/03(水) 16:33:33 ID:gwGRSZ+n]
>>672
DOMを使ってDIV要素などの文字を格納した要素を生成し、
Canvasの領域上にうまく重なるように、
座標を指定した上で、その要素をappendする。

CANVAS使ってないんじゃね?

678 名前:668 mailto:sage [2008/12/03(水) 17:08:44 ID:???]
>>675
レスありがとうございます。
サイ本読むのが1番だとは思うのですが、最初にサイ本読むと
わけもわからずやる気が無くなりそうで恐れてます。
情報が新しいというのは良いですね。早速参考にさせていただきます。

679 名前:Name_Not_Found mailto:sage [2008/12/03(水) 17:35:42 ID:???]
getComputedStyle を高速化する方法って何かある?
document.defaultView をキャッシュしても遅いもんは遅い

DOM ツリー操作 → getComputedStyle → DOM ツリー操作
にならないよう気をつけてもダメなもんはダメ

どうしたらいいか知ってる人……いる?


680 名前:Name_Not_Found mailto:sage [2008/12/03(水) 19:59:05 ID:???]
>>679
便乗だが、こういうパフォーマンスチューニングでこれは読んどけっていう
サイトや本ってないですか。



681 名前:Name_Not_Found mailto:sage [2008/12/03(水) 22:44:48 ID:???]
昔は、WEBページに動き・見た目を良くする為の1つの方法としてJavaScriptが
使われて来たと思いますが、現在はFlash / ShilverLight等の出現もあってJavaScriptに

需要も含め求められる事はかなり少なくなって来ている気がするのですが、
実際のところどうなんでしょうか?


・入力値チェック
・ブラウザの制御
・Ajax



682 名前:Name_Not_Found mailto:sage [2008/12/03(水) 22:46:28 ID:???]
・ロマン

683 名前:Name_Not_Found mailto:sage [2008/12/03(水) 22:47:49 ID:???]
javascriptの歴史の中で今が最盛期

684 名前:Name_Not_Found [2008/12/03(水) 22:52:29 ID:gwGRSZ+n]
>>681
レスありがとうございます。
サイ本読むのが1番だとは思うのですが、最初にサイ本読むと
わけもわからずやる気が無くなりそうで恐れてます。
情報が新しいというのは良いですね。早速参考にさせていただきます。

685 名前:Name_Not_Found mailto:sage [2008/12/03(水) 23:10:19 ID:???]
あればテンプレ入りしてるんじゃないかな、うん

686 名前:Name_Not_Found mailto:sage [2008/12/04(木) 07:45:17 ID:???]
>>681
Flashは「四角い領域の中だけ」しか自由にならない。
「全ページがFlash」のページにする覚悟があるならいいけど。
Silverlightは言語JavaScriptじゃないの。もう1つあるらしいが。

687 名前:Name_Not_Found mailto:sage [2008/12/04(木) 13:25:31 ID:???]
>>684
初めてのJavaScriptの方読んでみたら?薄いからすぐ読めるし。

688 名前:Name_Not_Found mailto:sage [2008/12/04(木) 14:28:57 ID:???]
Ajax使えよ

689 名前:Name_Not_Found mailto:sage [2008/12/04(木) 15:54:43 ID:???]
behavior面白いな

690 名前:Name_Not_Found [2008/12/04(木) 16:04:08 ID:s4MApLgV]
>>686
Siliverlight1でJavaScript使えるけど、
Flashと同じような働きを期待するならSL2(C#)を使うしかない。
仕事でちょこっとだけやったけど、結構しんどかった。
すれ違いごめん。



691 名前:Name_Not_Found [2008/12/04(木) 23:55:59 ID:fCeXxTmK]
var a = function(){ /* 実行文 */ };
var b = (function(){ /* 実行文 */ });


のように関数リテラルを()で囲むのと囲まないのでは何が違うんでしょう?
たとえばbの場合は実行速度が速いとかメリットがあるんでしょうか??


692 名前:681 mailto:sage [2008/12/05(金) 00:15:00 ID:???]
>>686
なる程、そういう捕らえ方もありますね。
因みにですがinnerHTMlを使って動的にFlashの表示位置を移動させる事とかってJavaScriptで
制御できますか?


693 名前:JavaScript+CSS 初心者 mailto:sage [2008/12/05(金) 01:32:48 ID:???]
WEBページ内の背景画像を固定する為に次のコードをhtmlページの中に直接記述したところ問題無く
読み込めるのですが、CSSを外出しにしたところなぜかWEBページに反映されません。
一体何が原因なのでしょうか?

【OKなパターン】
<style type="text/css">
body
{
background-image: url("img/sky46.jpg");
background-repeat: no-repeat;
background-position: 50%;
background-attachment:fixed;
}
</style>

【NGなパターン】
<LINK href="StyleSheet.css" type=text/css rel=stylesheet/>

【StyleSheet.cssの中身】
body
{
background-image: url("img/sky46.jpg");
background-repeat: no-repeat;
background-position: 50%;
background-attachment:fixed;
}



694 名前:Name_Not_Found mailto:sage [2008/12/05(金) 01:40:31 ID:???]
object要素の動的リサイズについて教えてください。

function onResize()
{

}
window.onload = onResize;
window.onresize = onResize;

関数に入れるべきものが分かりません。
document.getElementById("test").width 等でサイズが変わらないので困っています。

695 名前:Name_Not_Found mailto:sage [2008/12/05(金) 01:49:57 ID:???]
>>693
5回ほど読んだがどこにJavaScriptが関係するのか分からない

696 名前:Name_Not_Found mailto:sage [2008/12/05(金) 02:23:53 ID:???]
>>693
><LINK href="StyleSheet.css" type=text/css rel=stylesheet/>
ちげーよ

<link href="StyleSheet.css" type="text/css" rel="stylesheet" />

あほか

697 名前:Name_Not_Found mailto:sage [2008/12/05(金) 04:53:16 ID:???]
俺ルールではrel, type, hrefの順番で書かないと爆死する

698 名前:Name_Not_Found mailto:sage [2008/12/05(金) 09:11:14 ID:???]
>>692
innerHTMLでobject/embedを書き換えるなんて毎回最初から
始まってしまうので役に立たないだろ。位置だけ動かすなら
position:absoluteの要素に入れておいてJavaScriptでXY座標を
変更するのが定石。過去スレ全集に山のようにサンプルあるから。
>>694
断片だけ示されてもそこだけからは判断できない。
動かない最小限の完全な例を作って貼る。何か簡単なとこで勘違い
して間違えているんだと思うがそれが何かはESPじゃないので
予想できないね。

699 名前:Name_Not_Found mailto:sage [2008/12/05(金) 09:53:52 ID:???]
>>696
ありがとうございます。解決しました。


htmlの場合だと""で囲まなくてもWEBページは理解してくれるのに、
CSSの読み込みを宣言する際には囲まなくはならないのでしょうか?
ちょっと不思議です。



700 名前:Name_Not_Found mailto:sage [2008/12/05(金) 10:03:41 ID:???]
>>699
xhtmlは""で囲まなくてはいけない。
htmlでも最近は囲む人が増えてきている。
今のうちに癖をつけておいたほうがいいぞ。



701 名前:Name_Not_Found mailto:sage [2008/12/05(金) 10:31:30 ID:???]
>>699
XML, XHTMLでは「囲まないものは不正」
HTMLでは「何は囲まなければ不正か厳密に決まっている」
不正なのに囲まなかった結果がどうなるかは「運まかせ」
つまり自分の手元ではたまたま動いても公開したページを
見ている人のブラウザではだめかも知れない。そんなのは
Web制作者として論外。修行し直してこい。


702 名前:679 mailto:sage [2008/12/05(金) 10:39:54 ID:???]
>>679 でした質問なんだが
誰にもわからない、ということで FA?

703 名前:Name_Not_Found mailto:sage [2008/12/05(金) 12:17:45 ID:???]
>>702
「高速化」は難しそうだね。最初に1回だけgetComputedStyleを呼んで
あとは変形内容をもとに自前で変化を計算するとか。でも変更内容に
よっては自前で計算するのが困難な値もあるからね。

704 名前:699 mailto:sage [2008/12/05(金) 12:27:47 ID:???]
>>700 >>701
ご丁寧にご指摘いただきありがとうございます。
今後気を付けます。


705 名前:Name_Not_Found mailto:sage [2008/12/05(金) 12:27:55 ID:???]
>>703
> でも変更内容によっては自前で計算するのが困難な値もあるからね
まさにそういう値を使わざるをえない状況なので、仕方ないのかー

Fx3 はマシだけど、Fx2 の getComputedStyle が遅すぎるので……
もう少しで Fx2 のサポート終わるから、シェアが落ちるのを気長に待つしかないのかな

706 名前:Name_Not_Found mailto:sage [2008/12/05(金) 12:58:45 ID:???]
var elt = document.getElementById('nanika');
var cs = getComputedStyle(elt, null);
elt.styleの変更はcsで分かるから一緒に保存しとくのもだめ?

707 名前:Name_Not_Found mailto:sage [2008/12/05(金) 13:17:13 ID:???]
言っておくけど getComputedStyle で取得したオブジェクトのプロパティにアクセスした時に
反映待ちの DOM 操作が一気に開始されるんだぞ

708 名前:699 mailto:sage [2008/12/05(金) 13:42:59 ID:???]
>>706
返ってくるプロパティって live だっけ?
(値変更が発生したらプロパティへ即座に反映される)

>>707 のいうとおりなら live だから、もしかしたらダメかも

ただ、キャッシュしたらどうなるかは試してなかったから、ちょっとやってみる

709 名前:Name_Not_Found mailto:sage [2008/12/05(金) 14:02:55 ID:???]
分からないなら無理に高速化なんてせずに時が解決してくれるのを待ちなさい

710 名前:Name_Not_Found mailto:sage [2008/12/06(土) 06:15:10 ID:???]

googlemapのAPIキーを取得して複数のページに地図を表示しています。
当然ですが、現在は各ページのヘッダ部にAPIキーを記述しています。
今後似たようなページが100枚を越える予定です。
で、APIキーの部分が変更されたときメンテナンスが大変なので
この部分だけを呼び出すようにしたいのですが、よい方法があったら
教えてください。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />

<script
src="maps.google.com/maps?file=api&v=2.61&key=
APIキー&datum=wgs84"
type="text/javascript" charset="utf-8"></script>
<title>  </title>
</head>

CSS板で聞いたら親切な方が
「外部にjavascriptの配列でも作って参照したらいい」
と指摘され、あちこち調べてみたのですが掴み所がわかりません。
よろしくお願いします。







711 名前:Name_Not_Found mailto:sage [2008/12/06(土) 07:21:23 ID:???]
悪い、CSS板のほう質問の意図読み間違えてた
配列関係ないや

外部ファイルに↓みたいな関数つくって

function loadAPI(){
document.write('<script src="maps.google.com/maps?file=api&v=2.61&key=');
document.write('APIキー&datum=wgs84" type="text/javascript" charset="utf-8"></script>');
}

<head>
〜略
<script type="text/javascript" src="hoge.js"></script>
<script type="text/javascript"><!--
loadAPI();
//--></script>
</head>

みたいにしてヘッダに埋め込むのが簡単でいいと思うよ

712 名前:Name_Not_Found mailto:sage [2008/12/06(土) 07:32:19 ID:???]
>>711
イメージがつかめました。
本当にありがとうございます!!



713 名前:Name_Not_Found mailto:sage [2008/12/06(土) 08:35:27 ID:???]
>>711
712です。無事動きました。
メンテナンスが楽になります。
ありがとうございました。

714 名前:Name_Not_Found mailto:sage [2008/12/06(土) 17:38:04 ID:???]
一度作っちゃえば grep 置換で一発だと思うが






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<242KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef