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

このエントリーをはてなブックマークに追加
━━━本スレに書く事を許される者は以下の通り━━━━━
 一、JavaScriptはJavaとは別物であると知っている者
 一、自ら学んでJavaScriptコードを書く意思を持つ者
 一、ユーザに迷惑となるスクリプトを書かない者
 一、質問を分かる日本語できちんと説明できる者
 一、トラブルを再現する最小限のサンプルを貼れる者
 一、テンプレ+FAQ>>2-10/過去ログ/関連資料を読める者
━━━━━━━━━━━━━━━━━━━━━━━━━━━
自力で書く気がない人は他のスレへ(テンプレ末尾参照)。
前スレ http://pc11.2ch.net/test/read.cgi/hp/1216867850/l50
[必読]過去スレ全集 http://wing2.jp/~mirrorhenkan/2ch/javascript/
  (ずべて同一)  http://www2.atpages.jp/mirror/2ch/javascript/
          http://usamimi.info/~mirrorhenkan/2ch/javascript/
[必読]ガイド http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide
(GuideをReferenceに→Netscape版言語仕様。多くの実装が準拠:ECMA-262.ed3)
FAQ・注意・過去ログ・仕様書・関連資料・関連スレ>>1-10
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!!
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度
 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8)
6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
7)質問はまっとうな(他人に理解できる)日本語で。
 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQその1】
Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
Q2. JavaScriptでローカルファイルを読み/書きたいのですが…
A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに…
Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが…
A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。
Q4. document.write(...)でページ内容を追加したいのですが…
A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。
 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、
 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。
 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。
Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが…
A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか
 <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。
Q6. DOMでtable要素にtr要素を追加しても表示されないのですが…
A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。
 tbody要素はtbodyタグを書いていなくても自動的に作成されます。
 またはtable.insertRow()/tbody.insertRow()を使いましょう。
Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが…
A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。
Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A8. 「document.forms.myform.elements[変数名].value」でどぞ。
 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
Q9. Aタグのonclickで動作指定してるのですが時々動きません…
A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
【FAQその2】
Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。
 IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q11. 100*1.15の結果が114.999…998となってしまうのですが…
A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。
Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが…
A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの
 new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0")
 を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。
Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();};
 という風に無名関数を作りましょう。中に書かれたコードが実行されます。
Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
 「"...this..."」とか「function(){...this...}」ではうまく行きません。
A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。
 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に
 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中)
Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが…
A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。
 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。
 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、
 offsetがマッチした位置、sが置き換え前の文字列全体になります。
Q16. input type="file"の値を設定(参照)できないのですが…
A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも
 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、
 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
 は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
 らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
 可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
 そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
 な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
 択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
6Name_Not_Found:2008/10/10(金) 15:17:39 ID:???
7Name_Not_Found:2008/10/10(金) 15:18:32 ID:???
【チュートリアルサイト・サンプルサイト】
規格が読めないならまずはチュートリアル。サンプルサイトも沢山ある。
(とほほは間違いが多いためこのスレでは批判的意見が多い)
(以下は精選すべきとの議論あるが進んでいないので玉石混淆)
MetaGraphic Cell
http://www2u.biglobe.ne.jp/~oz-07ams/prog/
どら猫本舗のリファレンスカウンター
http://www.doraneko.org/
はぎさんちのページ Mozilla's DOM Sample Project
http://cgi.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/mds.cgi
オブジェクトなJSの基礎講座
http://chaichan.web.infoseek.co.jp/src/2ndthema.htm
【関連スレ】
板違い、スレ違いに注意!サーバ側での処理はWebProg板へどぞ!
Webサイト制作初心者用質問スレ Part 202
http://pc11.2ch.net/test/read.cgi/hp/1222007442/l50
CSS /* CSS・スタイルシート質問スレ 上級者用【71th】 */
http://pc11.2ch.net/test/read.cgi/hp/1205680031/l50
CSS/DHTMLバグ辞典スレッド 【第5版】
http://pc8.2ch.net/test/read.cgi/hp/1144494359/l50
役に立つ書籍は? 4冊目
http://pc11.2ch.net/test/read.cgi/hp/1172823674/l50
JavaScript手取り足取りスレッド
http://pc11.2ch.net/test/read.cgi/hp/1205922529/l50
1行javascriptプログラミング
http://pc11.2ch.net/test/read.cgi/hp/1066750037/l50
WSH(・∀・)スレッド! Part 3
http://pc11.2ch.net/test/read.cgi/tech/1208948450/l50
8Name_Not_Found:2008/10/10(金) 19:20:27 ID:???
  >>1
      `・+。*・     (´・ω・`)
        。*゚  。☆―⊂、  つ 
      。*゚    :     ヽ  ⊃
      `+。**゚**゚       ∪~
9Name_Not_Found:2008/10/11(土) 00:21:46 ID:???
>>1(・ω・`)乙 これはポニテがうんたらかんたら
10Name_Not_Found:2008/10/11(土) 13:16:59 ID:mqs5DpPU
早速ですがCで言うところのexit()みたいな
実行を停止する関数や制御文のようなものはありますか?
リファレンスでそれっぽいのを見付けられませんでした
throw、return辺りが使えるのでしょうか

if(!a) {
 statement
}

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

if(a) exit
statement
11Name_Not_Found:2008/10/11(土) 13:32:54 ID:???
>>7
イタタタタタタタタタタタタタタタタタタタタタタ
12Name_Not_Found:2008/10/11(土) 13:37:33 ID:???
>>10
if(a) return;
statement
13Name_Not_Found:2008/10/11(土) 14:29:50 ID:???
ありがとうございます
一番上のブロック(?)でもreturnが使えるんですね
14Name_Not_Found:2008/10/11(土) 14:41:00 ID:???
つかえないよ
15Name_Not_Found:2008/10/11(土) 15:41:02 ID:???
設計から見直せ
16Name_Not_Found:2008/10/11(土) 17:49:23 ID:???
グローバルスコープでreturnとか
17Name_Not_Found:2008/10/11(土) 18:03:45 ID:???
どこに返るんだよっていう
18Name_Not_Found:2008/10/11(土) 18:08:19 ID:???
釜山?
19Name_Not_Found:2008/10/11(土) 19:32:34 ID:???
前スレ994です
994-995さんレスありがとうございました。
20Name_Not_Found:2008/10/12(日) 00:11:02 ID:???
帰る家がない(´;ω;`)
2110:2008/10/12(日) 05:51:19 ID:???
使えませんでした…
ですがどうやらexitで終わるみたいです
IE、Firefoxで使えるならリファレンスにちゃんと書いといて欲しい…

>>15
分岐によってstatementの量が極端に違う場合少ない方を
ネストの深い方に入れてインデントを減らすコーディングは
設計と関係無いような…
22Name_Not_Found:2008/10/12(日) 06:29:53 ID:???
エー、ちゃんと終わるの?構文エラーではなく?
2310:2008/10/12(日) 06:48:08 ID:???
returnだとスクリプト全体が実行されませんが
exitだと実行されます
未定義関数や他の名前を書いても終わるのでエラーぽいです
2410: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時以降は適用されなくなりました
今後の実装がどうなるかわからないので
趣味の範囲でなら未定義関数を終了と考えて良さそうです
2510:2008/10/12(日) 07:43:22 ID:???
エラーコンソール見たらexit is not definedて出てました
止めといた方が良さそうですねorz
しかし終了できないプログラミング言語って
止まれない車と同じくらい危険な気が…
26Name_Not_Found:2008/10/12(日) 08:19:15 ID:???
>>25
まあなんでも書き方次第だよ
27Name_Not_Found:2008/10/12(日) 09:49:35 ID:???
あほじゃないの。自分がやらせたい動作全体を1つの関数
にして最初にそれを1回呼び出すだけにしておけば、その中で
returnを使えば終わりにできるでしょ。その程度の構造の
工夫もできないんじゃ向いてないよ。
2810:2008/10/12(日) 09:52:32 ID:???
アホなんでネストが何段にもなってるとこんがらがっちゃうんですよね
終わったことは早く忘れてしまいたいというか

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

if(a) hoge()

みたいな書き方すれば1段で抑えられそうですね
2910:2008/10/12(日) 09:58:49 ID:???
>>27
頭悪いのはその通りですけど
一部の頭の良い人しか使えないプログラミング言語ってどうなんですか?
上り坂で減速するテクニックがあれば車にブレーキ要らないですか?
30Name_Not_Found:2008/10/12(日) 10:44:33 ID:???
ここの人たちに何言っても無駄だから突っかかんの止めな
万人向けのプログラミング言語なんてないし、嫌なら使うなって話

ココ行け
JavaScript 手取り足取りスレッド
http://pc11.2ch.net/test/read.cgi/hp/1205922529/
3110:2008/10/12(日) 10:58:52 ID:???
誘導ありがとうございます
アホな初心者でもわかるようなことを偉そうに煽られたもんで
つい反応してしまいました
32Name_Not_Found:2008/10/12(日) 11:03:38 ID:???
window.moveBy() って
IE専用?
33Name_Not_Found:2008/10/12(日) 11:23:06 ID:???
<button onclick="aaa.value = '1'; submit();">osu</button>
aaaはhidden項目のnameです。
firefoxだとエラーになってしまうのですが、firefoxに対応するにはどう書けばいいのでしょうか。
34Name_Not_Found:2008/10/12(日) 12:07:13 ID:???
>>33
onclick="this.form.elements.aaa.value='1'; this.form.submit()"
35Name_Not_Found:2008/10/12(日) 12:08:41 ID:???
何段にもなってこんがらがらせる方が悪いと思うが、
内側の関数から例外をthrowして最外側でその例外をcatchして
普通に終わるようにすれば機械的に変換できると思うな。
36Name_Not_Found:2008/10/12(日) 14:14:26 ID:???
グローバルスコープにだらだら書き連ねるような幼稚な設計を見直せと言っているのに
37Name_Not_Found:2008/10/12(日) 22:50:15 ID:???
prototype.js ってどうなの。jQueryと比べて
38Name_Not_Found:2008/10/13(月) 14:06:23 ID:???
どうと言われてもな
39Name_Not_Found:2008/10/13(月) 19:02:44 ID:???
斜め読みでも雰囲気は分かるはずだからまずは読めばいいよ
40Name_Not_Found:2008/10/14(火) 01:55:22 ID:???
event.explicitOriginalTarget - MDC
http://developer.mozilla.org/en/DOM/event.explicitOriginalTarget

のanonymous contentとは何ですか?
無名のコンテント?
41Name_Not_Found:2008/10/14(火) 14:12:58 ID:???
>>40
anonymous contentでぐぐって勉強すれば。
42Name_Not_Found:2008/10/14(火) 14:49:11 ID:???
解答率低すぎて質問スレとして機能してねえw
43Name_Not_Found:2008/10/14(火) 16:02:40 ID:???
prototype.jsはプログラムの書けない人が使うものですか?
44Name_Not_Found:2008/10/14(火) 16:06:37 ID:???
はい
4543:2008/10/14(火) 16:58:39 ID:???
じゃ習うのやめます。やれ、やれとうるさい人がいるもので。
ありがとうございました。
46Name_Not_Found:2008/10/14(火) 17:27:38 ID:???
そんなことねーよ
47Name_Not_Found: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>
48Name_Not_Found:2008/10/14(火) 21:35:49 ID:???
なんでevalをdeleteする必要があるのか?
4947: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 名義で公開されているコードです)
50Name_Not_Found:2008/10/14(火) 22:05:52 ID:???
>>47
バグなんじゃね?
3で直ってるなら問題ないと思う
51Name_Not_Found:2008/10/14(火) 22:06:53 ID:???
リロードしてなかった
5247:2008/10/14(火) 22:32:51 ID:???
>>50

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

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

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

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


ありがとうございます。


(他の皆様、もし更に具体的にご存知の事がありましたら、引き続きよろしくお願いします)
53Name_Not_Found:2008/10/15(水) 13:29:10 ID:???
cookieというのはスタンダロンでも使えますか?自分用に使いたい
のですが。よろしくお願いいたします。
54Name_Not_Found:2008/10/15(水) 14:53:50 ID:???
>>53
いまいち。出直しておいで
55Name_Not_Found:2008/10/15(水) 18:44:55 ID:???
>>53
他のブラウザは知らんけど、Firefox3ならデフォルトで、
/D:/foo/bar/
などとファイルが置かれているディレクトリがパスになりcookie登録/参照可能。
56Name_Not_Found:2008/10/16(木) 10:02:02 ID:???
すいません。コードの中でJScript objectを指定するように、という
エラーが出るのですがどんなことが考えられますか?ラインは当て
にならなくてどの部分かよくわかりません。
57Name_Not_Found:2008/10/16(木) 10:08:54 ID:???
>>56
とりあえず落ち着いて>>1を読んでこい
5856:2008/10/16(木) 10:33:09 ID:???
>>57さま
回答ありがとうございます。1を3回読んでみましたが解決しませんでした。
よろしくお願いします。
59Name_Not_Found:2008/10/16(木) 10:35:08 ID:???
>>58
なら今度は>>1を理解してからこい
60Name_Not_Found:2008/10/16(木) 10:37:40 ID:???
マジレスまがいのレスするからつけ上がるんだボケ
61Name_Not_Found:2008/10/16(木) 10:39:38 ID:???
>>60
いつもの人をからかってるだけなんだからマジレスで水を差すなよ
62Name_Not_Found:2008/10/16(木) 11:20:18 ID:???
>>56
そのエラーが出る最小限の例題を作って貼って。
作る能力がないならこのスレはあなたのためのものではない。
6356:2008/10/16(木) 12:13:00 ID:???
>>62さん
親切なお答えありがとうございます。自分で見つけてやってみます。
少しはヒントなりいただけるかなと思ったのですが、残念です。
64Name_Not_Found:2008/10/16(木) 13:03:53 ID:???
>>62の意味もわかってないとか・・
65Name_Not_Found:2008/10/16(木) 13:16:44 ID:???
ダメだこりゃ

次いってみよー
66Name_Not_Found:2008/10/16(木) 13:32:18 ID:???
>>63
とりあえずエラーが出る自分のコードをコピペして貼ったらいいよ。って>>62は言ってるのね。
口で説明してもよくわからないから。
エラーとは関係ない部分は削ってコード貼れば大抵誰かが教えてくれる
67Name_Not_Found: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文の意味を教えてください。お願いいたします。
68Name_Not_Found: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)のようにオブジェクトを代入してしまうとその条件に当てはまりますね。
6967: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になりますね。
70Name_Not_Found:2008/10/17(金) 22:39:32 ID:???
正規表現を使って、
xmlファイル中の<Url>http:〜〜</Url>のhttp:〜〜の部分を取り出して、
配列に格納したいのですが、以下の正規表現ではうまくいきません。
ご指摘お願いします。

var url_list = source.match(/<Url>(.+?)</Url>/g);
ちなみに、変数sourceはString型で、そこにxmlが書かれています。
71Name_Not_Found:2008/10/17(金) 22:46:45 ID:???
エスケープせなあかんとちゃいまっか。gもいらん。
7270:2008/10/17(金) 22:58:12 ID:???
ご指摘ありがとうございます
エスケープってのは特定の文字を置換することですよね。
もう少し頑張ってみます。
73Name_Not_Found:2008/10/18(土) 00:47:41 ID:???
エスケープってのは特別な意味を持つ文字を普通の文字として使うってこと
タグ内の /(スラッシュ) をエスケープしてないから
/<Url>(.+?)</Url>/ が /<Url>(.+?)</ で終わってる

だから /<Url>(.+?)<\/Url>/
\を付けるとエスケープできる。ただこれじゃ望み通りの結果は得られんだろうけど。
74Name_Not_Found:2008/10/18(土) 10:41:50 ID:???
サブマッチ使えばできるけど
折角XML形式になってるのに、何故DOMを使わないのかと
XMLの意味がない
75Name_Not_Found:2008/10/18(土) 14:28:26 ID:cTQJu4p+
【質問】 js内にある、多次元連想配列を、サーバー側に送る際の形式について
【状況】 Postで、送ろうと思っていますが、何も考えず送ってみた所、[object Object]となり、そっかオブジェクトだ…と困っています。

全然、解決策が見えないのです… どたなかお知恵を下さい
よろしくお願い申し上げる;;
76Name_Not_Found:2008/10/18(土) 14:36:58 ID:???
>>75
サーバ側でどう使いたいか不明だけど、とりあえず JSON 形式にエンコードしてみれば?
77Name_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など)のどっちでも、
エンコード/デコード用のライブラリが公開されているだろうし。
78Name_Not_Found:2008/10/18(土) 15:17:44 ID:???
>>76 >>77
なるほど。確かに文字列ですね。
XMLよりも、jsonに馴染んでるので、jsonにしてみます。

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

本当にありがとうございました
79Name_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でダメでした。
8079:2008/10/19(日) 22:26:18 ID:gRo9N6p6
>>79
> 当然ながら'2chxnet'.match(/^2ch\.net$/) もマッチするんですよね。

> 当然ながら'2chxnet'.match(/^2ch.net$/) もマッチするんですよね。
の間違いです。すいません。
81Name_Not_Found:2008/10/19(日) 22:32:18 ID:???
>>79
Fx3.03では2ch.netにマッチする
82Name_Not_Found:2008/10/19(日) 23:06:24 ID:???
バックスラッシュを入力したつもりがIMだかエディタだかの都合で円記号になってたりしないよな?
83Name_Not_Found:2008/10/19(日) 23:44:52 ID:???
Fx2.0.0.17でも2ch.netにマッチしたよ
8479:2008/10/20(月) 00:27:45 ID:BoxSCXfb
>>82
流石にそれはないです。

みなさんありがとうございます。当然マッチしますよねぇ。
うーん、なんなんだろう。
8579:2008/10/20(月) 00:42:05 ID:BoxSCXfb
>>82
あぁ、すいません。どうやら円記号が原因だったみたいです。
こういう場合どうすればいいんでしょうか。
8679:2008/10/20(月) 01:04:25 ID:BoxSCXfb
option+¥(半角)キーで\ですね。MS以外のUnicode環境では気をつけないとダメですね。
皆さまありがとうございました。
87Name_Not_Found:2008/10/20(月) 12:43:14 ID:8cRDKNUU
tooltip.jsでのポップアップに関する質問です。
現在、以下のようになっていますが、ポップアップする画像の
位置をマウスの右上に変更したいのですが、どうしたらよろしいでしょうか?

現在の様子のサンプル
http://www.geocities.jp/chelcy_0603/tooltip/
「aaaaaaa」のところにスクリプトが適用されています。
88Name_Not_Found:2008/10/20(月) 13:24:19 ID:???
>>87
tooltip.jsをどこからもってきたのかよくわからないけど、
表示する位置はその中にべた書きしてあるから作者に要望出してみたら?
それか自分でxとかyをいじれば色々変えられるし
89Name_Not_Found:2008/10/20(月) 13:27:02 ID:7Z5AQA80
>>86
逆じゃん?当方、Macで10年ちかくJS書いているけど、
普通にチルダの右のキー → バックスラッシュ
Opt + チルダの右のキー → Yen記号
だと思う。

>>87
なにがわからないのかを書かないと。
まるっと作ってほしいのなら手取り足取りスレへ。
9087:2008/10/20(月) 15:02:12 ID:???
>>88
ということは表示位置の変更はcssではなく、
.jsの方をいじる必要があるということですね?

>>89
表示位置変更のために、cssのpositionやtop、leftといった部分の値の変更
をしていたんですが、上手くいかず解決法も分からなかったので質問させて
いただきました。
誘導案内どうもです
91Name_Not_Found: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とかの意味がなくなるけど
9287:2008/10/21(火) 15:47:57 ID:???
>>91
ありがとうございます!
やはり.js内のその辺が表示位置合わせに関連してくるのですね。
93Name_Not_Found:2008/10/21(火) 17:02:38 ID:???
729 名前:Name_Not_Found[] 投稿日:2008/10/20(月) 08:43:32 ID:SH1zPud3
JavaScriptでとっても滑らか!画像切替のシンプルな技
http://ascii.jp/elem/000/000/180/180999/

こういうのってJavascriptをわざわざ使う必要あんのか?
94Name_Not_Found:2008/10/21(火) 18:56:23 ID:???
>>93
発言の真意が、
1. エフェクト不要
2. Flashを使え
のどちらかは知らんが、"適度"なエフェクトには価値があるだろ。
こんな軽い効果では、無効な環境では全く表示されないFlashよりも、
とりあえず画像は表示されるJavaScriptで実現した方が良いのは確かだし。
9579:2008/10/22(水) 02:11:01 ID:Wjx9Fs/I
>>89
すいません。10年やってる人に恐縮ですが、
ことえりだと環境設定で¥と\の使い分けが設定できるので、
逆とかじゃなくて設定の違いだと思いますよ。
96Name_Not_Found: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側で代入すればいいのでしょうか?
97Name_Not_Found:2008/10/22(水) 19:25:45 ID:???
こういうサーバーサイドの言語での配列やオブジェクトを
JSに直接渡そうとする質問が定期的に出てくる理由が分からない
98Name_Not_Found:2008/10/22(水) 19:36:12 ID:???
全部同一人物だと思えばスルーしたくなってくるだろ?
99Name_Not_Found:2008/10/22(水) 21:19:29 ID:gv4QIdNy
http://javascript123.seesaa.net/article/106660331.html
コレを導入しようとしているんですが、
ページを開いた時点でチェックボックスが空なのに内容が表示されてしまいます。
サンプルはきちんと動くのに、コピペしただけの自分のところで動かない理由が良く分かりません・・
ヘルプお願いします。
100Name_Not_Found:2008/10/22(水) 21:24:43 ID:???
俺は全く問題なかった。
サンプルコピペで動かないなら動作環境ぐらい書けよ。
101Name_Not_Found:2008/10/22(水) 21:47:24 ID:gv4QIdNy
PHPの中に書き込んでIEでプレビューしてます。

最初チェックはずれてるときは表示されてて、
一度チェック入れてはずすと消えます。
次チェックすると出てきます
102Name_Not_Found:2008/10/22(水) 22:13:27 ID:???
>>99
>>1
どこが分からないのか説明できないなら手取り足取りスレへ
103Name_Not_Found:2008/10/22(水) 22:37:11 ID:gv4QIdNy
了解です。 移動します。
104Name_Not_Found:2008/10/22(水) 22:46:09 ID:gv4QIdNy
display:none; 付けるのを忘れていただけみたいです。
CSSのコピペを忘れていました。
105Name_Not_Found:2008/10/22(水) 22:53:39 ID:???
コピペもできないってどういうことなの?プンプン
106Name_Not_Found:2008/10/23(木) 10:12:17 ID:???
DOMchange的なイベントって搭載されているブラウザってどれですか?
例えばFirebugってドキュメントツリーが変わった時にそれが反映されて表示されますよね。
そういったことを自分のアプリでやりたいと考えてます。
107Name_Not_Found:2008/10/23(木) 11:42:05 ID:???
ドキュメント読み込み完了後にスクリプトから!importantなスタイルを適用するにはどうしたらいいですか?
ただし、あらかじめ用意したCSSファイルを適用するのではなくて、動的にCSSルールを生成して適用するものとします。
試しに、elem.style.background = '#ccc !important'; をボタンクリックで実行させたところ、Fx3では何も変化がありませんでした。
108Name_Not_Found:2008/10/23(木) 17:39:22 ID:???
>>106
CSSのexpression使ってやる方法どこかで見た気がしたなあと思ってググったらあった
ttp://d.hatena.ne.jp/amachang/20080530/1212120953
これで要求を満たしてるのかどうかよくわからんが
109106:2008/10/23(木) 18:47:30 ID:???
>>108 これは面白い方法ですね。確かにこれでいけそうです。ありがとうございます。
Firebugのソースざっと見てみたんですが、ちょっとすぐに分かりそうになかったので、また時間が出来た時に見てみます。
110Name_Not_Found:2008/10/23(木) 23:15:48 ID:???
質問です。

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

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

よろしくお願いします。
111Name_Not_Found:2008/10/24(金) 00:04:20 ID:???
>>106 >>108
DOMNodeInserted、DOMSubtreeModifiedとか。Firefox限定だけど。

>>110
正規表現じゃだめ?
112Name_Not_Found:2008/10/24(金) 00:07:39 ID:???
divにappendChild(p)して
そのpの中にaを付け加えたいんですが
どうやってpを取得すればいいですか?
お願いします
113Name_Not_Found:2008/10/24(金) 00:10:50 ID:Y49ehIFq
>>112
よく分からない質問だな。appendChild(p)するということは
そのpは変数とかに入っているんだよな。ということは今更
取得も何もないと思うが(変数に入ってないのならappendChild()
するときに入れればいいと思うし)。
114Name_Not_Found:2008/10/24(金) 00:12:49 ID:???
なるほど
aを持つpを作ってからそれをappendChildすればいいんですね
ありがとうございます
115Name_Not_Found:2008/10/24(金) 00:18:07 ID:???
逆でもいい
116Name_Not_Found:2008/10/24(金) 02:03:10 ID:???
ExplorerCanvas(excanvas.js) について質問です。

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

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

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

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

よろしくお願いいたします。
117Name_Not_Found:2008/10/24(金) 05:52:33 ID:???
>>111
正規表現を考えてみたところ、
サブドメインを判断するのが難しそうなのですが、
何か参考になるようなサイトはないでしょうか。
よろしくお願いします。
また、正規表現以外の方法でも構いませんので引き続きよろしくお願いします。
118Name_Not_Found:2008/10/24(金) 09:15:38 ID:???
>>117
"正規表現" "URL抽出" に一致する日本語のページ 約 2,300 件中 1 - 10 件目 (0.09 秒)

答えを求めているように見えるけど、もう少し自分で調べような
119Name_Not_Found:2008/10/24(金) 16:23:03 ID:???
URLじゃなくてドメイン抽出だろとつっこんでみるテスト
120Name_Not_Found:2008/10/24(金) 18:15:43 ID:???
再帰処理について質問です。

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

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




ああ
あい
あう
いあ
・・・・・
あああ
ああい
ああう
あいあ
・・・・・
121120: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>
122Name_Not_Found:2008/10/24(金) 18:48:11 ID:???
気軽に「最も」とかいうなよ
123Name_Not_Found:2008/10/24(金) 19:12:54 ID:???
もっともだ
124Name_Not_Found:2008/10/24(金) 19:21:41 ID:???
(ht|f)tp(s)?:\/\/([\w-~\.]+?)\/
125120:2008/10/24(金) 19:51:52 ID:???
>>122
ご自分の感覚でかまいませんので、
よろしくお願いします。m(_ _)m
126Name_Not_Found:2008/10/24(金) 20:50:14 ID:???
JSでやる以上再起処理という時点で「最も軽い」という要件を満たさない気がする
127Name_Not_Found:2008/10/24(金) 22:11:01 ID:???
>>126
JSでやる上で「最も軽い」でしょ
128Name_Not_Found:2008/10/24(金) 22:17:59 ID:???
>>127
分盲乙
129Name_Not_Found:2008/10/24(金) 23:11:22 ID:???
>>128
文盲乙
130Name_Not_Found: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>
131Name_Not_Found:2008/10/24(金) 23:55:22 ID:???
appendChild('a')だと、親要素の中にaを追加できますが
中ではなくて、親要素の直後に追加したい場合はどのようにすれば良いのでしょうか
132Name_Not_Found:2008/10/25(土) 00:05:47 ID:???
nextSibling insertBefore
133Name_Not_Found:2008/10/25(土) 00:10:54 ID:???
>>127
JSは関数呼び出しのコストが高くつくから速度が必要なときに再帰でやるのは悪手という常識
134Name_Not_Found:2008/10/25(土) 00:13:53 ID:???
JS、板違い
ここはJavaScript
135Name_Not_Found:2008/10/25(土) 00:22:31 ID:4ixLRwLT
ボタンを押すと、特定の画像の現在の座標を取得できるような方法を教えてください
136Name_Not_Found:2008/10/25(土) 00:42:02 ID:???
特定の画像のオフセット + その親要素のオフセット + その親要素の…

と遡って全部足せばいい。
137Name_Not_Found:2008/10/25(土) 01:05:51 ID:???
>>136
それだとブラウザのバグ絡みで不味くなかったっけか
138Name_Not_Found:2008/10/25(土) 03:23:52 ID:???
ブラウザによってダメなのがわけわからない
139120:2008/10/25(土) 03:38:12 ID:???
>>130
レスありがとうございます。
繰り返しを使った方法は知っていましたが再帰の勉強中でして、
できれば再帰を使った方法をお願いしたいです。m(_ _)m
140120:2008/10/25(土) 03:39:54 ID:???
>>126
他の言語での処理が早いのは知ってる。
141Name_Not_Found:2008/10/25(土) 03:46:58 ID:???
>>127,129,140
>>126はJavaScriptで再帰処理すると速度的に不利になるよと言ってるんだよ
142120:2008/10/25(土) 05:05:54 ID:???
>>141
今は他言語との比較を問題にしている訳ではないのだが?
143Name_Not_Found:2008/10/25(土) 05:44:04 ID:???
>>142
頭のめぐりが悪そうなので丁寧に書いてやろう

JavaScriptの再帰はループに比べて遅いので速度がほしいときはループで書け
他言語との比較とか誰も問題にしてねえよカス
144Name_Not_Found:2008/10/25(土) 06:05:23 ID:???
再帰処理の勉強がしたいだけなので、パフォーマンスは関係ないって話じゃないのか。
145Name_Not_Found:2008/10/25(土) 06:19:04 ID:???
処理速度を最も軽くするにはどう書けばいいでしょうか?
146Name_Not_Found:2008/10/25(土) 06:33:03 ID:???
>>142
こいつは・・・w
147Name_Not_Found: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>
148Name_Not_Found:2008/10/25(土) 08:56:22 ID:???
宿題じゃね?
149Name_Not_Found: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で役に立ちませんでした
150Name_Not_Found: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
151Name_Not_Found:2008/10/25(土) 12:57:55 ID:???
>>150
正規表現リテラルはオブジェクトを1つだけ作ってあとはそれを
使いまわす。オブジェクトリテラル(ではなく正式にはオブジェクト
式)はそこを実行するたびに新しいオブジェクトを生成する(だから
リテラルではないわけだ)。
152Name_Not_Found:2008/10/25(土) 13:02:31 ID:???
>>149
>objnowimage.src=url

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

そのほかアレコレ順番を変えてみましたが、結果は変らずでした
154150: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!

となりますね。

ありがとうございます。
155Name_Not_Found: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
156Name_Not_Found:2008/10/25(土) 13:29:19 ID:???
>>153
onerrorが作動するのは正しい動きじゃないの?
157Name_Not_Found:2008/10/25(土) 14:25:18 ID:???
質問です。メンバが見つかりませんと出るのですがど
ういう原因が考えられますか。IE6-SP2を使用です。
158Name_Not_Found:2008/10/25(土) 14:26:29 ID:???
ハア???
159Name_Not_Found:2008/10/25(土) 15:06:45 ID:???
これはまた・・・・レベルの高い質問だな
160Name_Not_Found:2008/10/25(土) 16:11:41 ID:???
メール欄
161Name_Not_Found: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は同じオブジェクトを参照するべきである
(後者が正しい)ように思えますね。
162Name_Not_Found:2008/10/25(土) 16:41:01 ID:???
>>143
文盲乙

釣りじゃなければレスをもう一度見ろやカス
163Name_Not_Found:2008/10/25(土) 17:23:06 ID:???
>>161
ありがとうございます。

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

この部分を解釈するとやっぱりそうなるんですかね。
しかし解り難い・・・
164Name_Not_Found:2008/10/25(土) 19:27:32 ID:???
>>162
おいおい、いまさら「再帰を使った方法をお願いしたい」まで巻き戻すのかよ
165Name_Not_Found:2008/10/25(土) 20:49:47 ID:???
昨日の今日で何が「いまさら」だよw
166Name_Not_Found:2008/10/25(土) 22:04:52 ID:???
>>165

こいつアスペルガー症候群じゃね?
167Name_Not_Found:2008/10/25(土) 22:15:05 ID:???
負け惜しみ乙www
168Name_Not_Found:2008/10/25(土) 23:13:25 ID:???
ところで、>>130>>147 の所要時間を計測してみたんだけど、
手元のノートPCのFxで 2400msec .vs. 340msec と再帰版が
圧倒的に速かった。もちろん出力まで含めての時間ね。
再帰が遅いとかわめいてた人たち、>>147 より速いの書いてみて
くんないかな。無駄口を叩き合うより優れたコードで競う方が
有意義でしょ?
169Name_Not_Found:2008/10/25(土) 23:17:24 ID:???
170Name_Not_Found:2008/10/25(土) 23:20:24 ID:???
いやだから、>>130>>147 の作者なんだけど。
まあ2ちゃんだから信用しないというのなら勝手だが。
171Name_Not_Found:2008/10/25(土) 23:28:19 ID:???
負けるなホレ氏。
172Name_Not_Found: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>
173Name_Not_Found: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>
174nanasi:2008/10/26(日) 01:57:49 ID:EVWZmOp/
JavaScript がオフになっているかどうかはどうすればわかりますか?
175Name_Not_Found:2008/10/26(日) 02:32:15 ID:???
<noscript>JavaScriptがオフだよ お兄ちゃん!</noscript>
176Name_Not_Found: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はすでに閉じてるから可能のハズって気もするんですが。
可能ならどうやればいいんでしょうか?
ご教示お願いします。
177Name_Not_Found:2008/10/26(日) 03:22:24 ID:???
(function () {
document.getElementsByTagName("h2")[0].style.display = "none";
})();

h2 は閉じてるから問題ない
178Name_Not_Found:2008/10/26(日) 03:25:52 ID:???
179Name_Not_Found: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";
})();
180Name_Not_Found:2008/10/26(日) 06:08:42 ID:???
1,2,3,4,5,...とあるボタンを、Allというボタンを押すと順番に全てを押すような動きをさせたいのですが、どうしたらいいでしょうか
181Name_Not_Found:2008/10/26(日) 06:40:37 ID:???
>>180
Allのときに1,2,3,4,5への呼び出しメッセージを送る。
多分順番に届く。
182Name_Not_Found: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 Positionhttp://hartshorne.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)です
183182: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の値)を差し引いて補正します。
184182:2008/10/26(日) 10:57:07 ID:???
言い忘れてましたが、Windows環境ではウィンドウを最大化すると、standard modeで右上端がcl:(0,0)となります。
つまり、clientX/Yが2未満な領域に移動すると、コンテンツの右クリックメニューは出てこなくなります。

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

http://www.dhw.ac.jp/faculty/#header
このサイトの下ににある、このページの先頭へのリンクをクリックすると
普通は一気に上までいくけど
なんでこのサイトのはゆっくり上がるんだろ?
どんな技術使えばこんなになるの?なんかいいな
186Name_Not_Found:2008/10/26(日) 13:53:49 ID:???
>>181
どう描けばいいでしょうか
187Name_Not_Found:2008/10/26(日) 14:15:43 ID:???
>>185 clickハンドラ内でscrollByをsetInterval。
188120:2008/10/26(日) 15:41:12 ID:???
>>147
レスありがとうございます。
順番を無視すればより早くなるかもしれませんが、整頓して出力する方法を探していたもので。
適するかどうか以前に再帰をよく知らなかったので勉強になりました。
ありがとうございました。m(_ _)m

ちなみに、私のノートでも再帰を使ったほうが倍近く早いです。
これは繰り返し文を使うと遅くなるという事でしょうか。^^;
189Name_Not_Found: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";
}
}
}
}
}
これでは初期状態では思い通りになっているものの、ソートをすると色が戻ってしまいます。
ソート後も色を維持できる方法があればご教授下さい。
190Name_Not_Found:2008/10/26(日) 17:14:07 ID:???
>>187
おーありがとうございます
ぐぐったら出てきました
勉強してきます
191Name_Not_Found:2008/10/26(日) 20:52:24 ID:iJZnswBP
メールで注文する計算フォームを修正していますが動いてくれません。
コードはサンプルページを参考に記述しました。
どこが間違ってるでしょうか?
ページを下記へアップしました。
http://uproda11.2ch-library.com/src/11129760.html.shtml

メール送信を最終的にしたいので借りているCGIのフォーム設定に原因があるのかと
思ったりしましたが。分りません。
192Name_Not_Found:2008/10/26(日) 21:02:13 ID:???
>>191
<FORM>がないのに</FORM>があるじゃん

つうかここで質問するようなことじゃないだろ
193191:2008/10/26(日) 21:08:43 ID:iJZnswBP
すみません、そこは削除してしまいましたが実際はあります。
が、やはりここで聴くことじゃないですか?
194Name_Not_Found:2008/10/26(日) 22:17:25 ID:???
>>193
>>1
 一、自ら学んでJavaScriptコードを書く意思を持つ者
 一、質問を分かる日本語できちんと説明できる者

最初の文面にCGIと出ているのでURLは開いていませんが、
HTMLまたはCGIの内容と思われるのでここではスレチと言う事になります。
195191:2008/10/26(日) 22:42:00 ID:iJZnswBP
>>194 
そっか。そうですよね。すみませんでした。
レスありがとう御座いましたm(_ _)m
196Name_Not_Found:2008/10/26(日) 23:06:25 ID:???
>>189
http://www.makoto3.net/DHTML_IE_NEO2/neo2-0109.html

データバインド懐かしいな。
昔は結構便利でよく使っていたけど、IE専用だったのがネックだったな。
PHPが普及してからは全く使わなくなってしまった。
197Name_Not_Found:2008/10/27(月) 00:04:20 ID:???
JSでMath.rint()はどう書けばいいの?
198Name_Not_Found:2008/10/27(月) 00:21:18 ID:???
Math.round
199Name_Not_Found:2008/10/27(月) 01:48:06 ID:???
>>196
見逃していました、ありがとうございます

CGIやSSIが使えないサーバーで、頻繁に更新するファイルを、
極一部の身内での利用に重宝しています
200Name_Not_Found:2008/10/27(月) 08:33:50 ID:???
DOMノードの属性を全て取得するにはどうしたらいいですか?

hasAttribute()で特定の属性を持つか判定したり、getAttribute()で特定の属性の値を取得できますが、
ノードの属性はDOMノードのプロパティから取得できるとは限らないので、for-inでは取得できません。
201Name_Not_Found:2008/10/27(月) 09:02:43 ID:???
DontEnumが付いてるのは列挙できない
(俺が知らないだけで抜け道はあるのかも)

列挙するためのライブラリとか読むとDontEnumがついてそうなメンバの名前を持っておいて、
それが存在するかどうか一つ一つ確かめているみたい
202200:2008/10/27(月) 09:22:26 ID:???
>>201
DontEnum属性がついてると列挙できないのは分かるんですが、
DOMノードの場合ですとそもそも属性がプロパティになっているとは限らないですよね。
例えばHTML DOMの場合は全てのHTML属性に対して、その属性名をキャメライズした名前のプロパティを持ちます。
しかし一般のXMLの場合は、全ての属性がプロパティから取得できるとは限りません。
そんな場合に全ての属性を取得するにはどうしたらいいでしょう?
203Name_Not_Found:2008/10/27(月) 09:38:28 ID:???
>>202
element.attributesでNamedNodeMapが返ってくる
てかDOMの仕様書読め
204200:2008/10/27(月) 09:52:29 ID:???
>>203
ありがとうございます。これからは仕様書読むようにします。
205Name_Not_Found: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の動作に制限がかかることが
あるのでしょうか?

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

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

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

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

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

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

function ch(chsrc)なのに
onClick="chsrc(this.src)"これでは動作するわけがない。
208Name_Not_Found:2008/10/28(火) 16:55:08 ID:???
>>206
Document.loadXML()では駄目?
209Name_Not_Found:2008/10/28(火) 17:09:39 ID:???
responseXML は空なのか
210Name_Not_Found: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>
211Name_Not_Found:2008/10/28(火) 17:47:32 ID:8Nu1VnzO
206です。

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

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

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

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

responceTextをそのままalertかテキストファイルに書き出したら文字化けしてるんじゃないかな
読込先のcharset指定が無かったり異常だったりするとXMLHttpRequestはutf-8扱いしてしまうんで
読込先がeucやsjisで書かれていると文字化けしちゃう
その場合は文字コードをあわせてやらなきゃいけない
213Name_Not_Found:2008/10/28(火) 18:16:46 ID:???
>>206
CGIを裏で動かしてプロキシにした方が解析もできるしいいと思うんだけど無理?
JavaScriptで解析とか重くなりそうだけど。

>>210
どういうこと?
changeHogeがどういうことする関数かわからないんだけど、
選択をキャンセルするどのタイミングでどうやると起こるわけ?
214Name_Not_Found:2008/10/28(火) 18:46:38 ID:???
>>211
208も言ってるように普通loadXMLを使う。

>>210
onchangeは、変わってしまってから発生するイベントだからreturn falseしても無駄。
onchangeするたびに変わった値をpreviousValueという変数に格納すればいい。
215Name_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
216Name_Not_Found:2008/10/28(火) 19:52:23 ID:8Nu1VnzO
211です。

上のエラーメッセージは"テキストの内容に無効な文字が見つかりました"
でした。
がっくし・・・。
217Name_Not_Found:2008/10/28(火) 21:58:10 ID:XUCuP6no
いきなりですが、質問です。

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

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

似た症例が過去に無いでしょうか?
素直にCGI使った方が良いのだろうか?
218Name_Not_Found:2008/10/28(火) 22:04:37 ID:???
>>217
意味不明。再現可能なミニマムコードを提示してくれ。
219Name_Not_Found:2008/10/28(火) 22:10:49 ID:8Nu1VnzO
206,211です。

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

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

まいったな、それができないんですよね・・・、
なんかいい方法ないかな・・・。
220217:2008/10/28(火) 22:27:52 ID:XUCuP6no
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://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>
221217: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);
}
});
});
222217:2008/10/28(火) 22:29:15 ID:XUCuP6no
>>218
>>220-221に即席サンプルアップしました。
IE7とFFでラジオボタンの挙動を比べてみて。
223Name_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と思ってるようです。

だめだこりゃ、あきらめました。
224217:2008/10/28(火) 22:39:52 ID:XUCuP6no
>>217でname属性の書き換えができていない模様と書きましたが
DebugBarで確認したらしっかり書き変わってました。
もしかしてIE7の不具合?
225Name_Not_Found:2008/10/28(火) 23:08:03 ID:???
>>224
jQeuryは知らんけどこういう不具合があるよん
http://www.tagindex.com/kakolog/q4bbs/501/719.html
226217: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');
}
});
});
227Name_Not_Found:2008/10/28(火) 23:38:23 ID:DCyLLWdN
nicEditのいじりかたについて聞きたいのですがココでいいですか?
228Name_Not_Found:2008/10/28(火) 23:52:20 ID:???
そんなもんわざわざいじるくらいなら
HTMLタグ打ちを勉強した方が良いかと
229Name_Not_Found:2008/10/29(水) 00:52:15 ID:xl6MBZyt
webアプリ作るためにも必要で・・
「クエリ送信」の文字を置き換える方法が知りたいのですが
230Name_Not_Found:2008/10/29(水) 01:01:30 ID:???
>webアプリ
>webアプリ
>webアプリ
>webアプリ

勝手に改変して利用して、
自作ですって公開するのは著作権に抵触するよ
自分で一からJavascript学んで出直してきなさい
231Name_Not_Found:2008/10/29(水) 02:18:36 ID:???
そろそろライブラリに関する質問をどうにかした方がいいと思う
232Name_Not_Found:2008/10/29(水) 02:38:37 ID:???
「クエリ送信」て type="submit" のデフォルトの文字列のこと?
nicEdit とも関係ないような
233Name_Not_Found:2008/10/29(水) 05:05:42 ID:???
>>230
ちなみにNicEditはMITライセンス。
>自作ですって公開
ってのは明らかに真っ黒だけど、
元の著作権表示を行うなら勝手に改変して公開しても全く問題無し。
234Name_Not_Found:2008/10/29(水) 07:45:28 ID:IWnl6Gf3
バブリング?やevent delegation?辺りのクロスブラウザ対応の質問になると思うのですが、

<div style="position:absolute;width:100px;height:100px;"><a href="http://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以外の環境で再現する方法論はありますでしょうか。
235212: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からエンコードしてやるといいんじゃないかな
236Name_Not_Found:2008/10/29(水) 11:57:13 ID:???
>>214
できました。ありがとう。
237Name_Not_Found:2008/10/29(水) 14:58:45 ID:???
どうしたアホ外人、出番だぞ
238Name_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の部分を変えるんだろうとは思うのですが、
アドバイスお願いします。
239Name_Not_Found:2008/10/29(水) 16:21:06 ID:???
idと引数
240Name_Not_Found:2008/10/29(水) 19:16:17 ID:bBMTwy3L
同じblogパーツが貼られているサイト間をリンクするタイプのblogパーツがありますが、
URL取得の仕組みがわかりません。
リファラーから取って来ているのか??
大まかな仕組みを教えて頂けないでしょうか?
Flashスレで聞く内容でしたらすみません。。。
241Name_Not_Found:2008/10/29(水) 20:14:02 ID:???
スレチ
242238 :2008/10/29(水) 20:55:02 ID:???
>>239
ありがとうございます。
引数というヒントで答えに辿りつけました。
感謝します。
243Name_Not_Found: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 です
244Name_Not_Found:2008/10/29(水) 23:31:17 ID:???
質問させてください。
onclick関数でHTMLのリンク要素のように他サイトに飛ばすことはできますでしょうか?
できるのなら方法を教えていただけませんか?
245Name_Not_Found:2008/10/29(水) 23:42:24 ID:???
onclick="location.href='URL'"
246244:2008/10/29(水) 23:54:24 ID:???
>>245
ありがとうございます!できました。
ただ、欲を言えば新しいウィンドウで開きたいのですが、
そのような方法はありますでしょうか?
247Name_Not_Found:2008/10/30(木) 00:16:52 ID:???
小出しにすんな死ね
248Name_Not_Found:2008/10/30(木) 00:17:20 ID:ef+iSf+5
それはギャグなのか
249244:2008/10/30(木) 01:30:22 ID:???
みなさんごめんなさい。
onclick="window.open('URL','new');"
でうまくいきました。

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

>>248
ギャグではないのですが、失礼しました。
250Name_Not_Found:2008/10/30(木) 22:37:25 ID:Loz9bFuT
質問です。
var array = [['']];
という2次元配列の宣言の仕方をとあるサイトで見かけたのですが、
これを new Array を使用して宣言しなおすとすると、
どのような宣言の仕方になるのでしょうか?
「[['']]」の具体的な意味(内容)を知りたく思います。
よろしくご教示ください。
251Name_Not_Found:2008/10/30(木) 23:12:06 ID:???
>>250
var array = new Array();
array[0] = new Array('');
252250:2008/10/31(金) 00:44:00 ID:???
>>251
レスありがとうございます。
なるほど、array[0]に対して、「''」(中身がない)配列を加える感じっぽいですね。
勉強になりました。
253Name_Not_Found:2008/10/31(金) 01:24:27 ID:???
>>252
ナンカチガウナー。Arrayコンストラクタの引数の扱い方をシラベナー。

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

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

もやってることは同じ。調べてみな。
255Name_Not_Found:2008/10/31(金) 02:05:13 ID:???
>>254
いやこの辺が違うなって言ったの

> 「''」(中身がない)配列
256Name_Not_Found:2008/10/31(金) 07:45:44 ID:???
’’ というのは空文字列の実体なので
new string() と同等の意味になるでしょ。
new string() と new Array('') が等価なのかな?

え?string()なんてない?
おじゃましました。
257Name_Not_Found:2008/10/31(金) 08:00:13 ID:???
無知もここまでくると気持ち悪いな
258Name_Not_Found:2008/10/31(金) 08:47:36 ID:???
var array = [['']];
→ var array = new Array(['']);
→ var array = new Array(new Array(''));
new Array(...)と[...]が違う結果になるのは ... の部分が
1個の整数のときだけだが、上の場合はいずれも該当しないから。
しかし個人的には [['']] の方が簡潔で見やすいと思うけどね。
259Name_Not_Found:2008/10/31(金) 09:21:43 ID:olHAtU/2
206,211,219,223です。

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

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

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

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

うまくいったら書き込みます。
260Name_Not_Found:2008/10/31(金) 14:56:21 ID:???
それでも化ける気がする
iframe.src と並んで最後の手段だね
261Name_Not_Found:2008/11/01(土) 12:07:21 ID:???
anything from here offsetLeft,offsetTop,offsetWidthそしてoffsetHeight──静的配置要素の絶対位置を確実に取得する方法について
http://hkom.blog1.fc2.com/blog-entry-503.html
offsetTop/offsetLeft/offsetParentの闇 - Backstage of theater.js
http://d.hatena.ne.jp/susie-t/20061004/1159942798
Positionオブジェクトの枠線幅問題対策 - Backstage of theater.js
http://d.hatena.ne.jp/susie-t/20070218/1171760841

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

・知人は位置指定にこだわるならJavaScriptでなくフラッシュを使うべきと言ってましたが、果たしてそうなんでしょうか?
そんなに位置指定の正確さってJavaScriptにおいて問題になりうるものなんでしょうか?(問題になるケースとしてどんなものがありますか?)
・例えば、矩形範囲のHTML要素を取得するのに、出来れば2px以内に誤差を抑えたいですよね。
しかし、上のリンク先を見る限りではtable要素内の要素の位置を正確に取得するのは限りなく困難です。
だから、JavaScriptで矩形範囲のHTML要素を取得しようとするのは無謀だというふうに考察したんですが、どのように思われますか?
・JavaScriptの闇というべき致命的欠点って他にありますか?
262261:2008/11/01(土) 12:08:42 ID:???
すみません、>>260の位置指定は、全部「絶対位置取得」の間違いでした。
263Name_Not_Found:2008/11/01(土) 13:03:55 ID:???
JavaScriptの問題じゃなくてブラウザの実装の問題じゃないか
264Name_Not_Found:2008/11/01(土) 13:18:23 ID:???
CSS
265261:2008/11/01(土) 17:20:09 ID:???
>>263
ブラウザの実装の問題として質問しました。深刻な問題ではないでしょうか?
266Name_Not_Found:2008/11/01(土) 17:57:35 ID:???
>>265
>>263は「JavaScript言語の実装の問題ではなく、
DOMなど(JavaScript言語仕様では規定されていない)
オブジェクトモデルの実装の問題だ」といいたかったと思うの。

で、闇だ何だと大げさに騒ぎ立ててるけど、あなたの作ってるページは
枠線の幅が2pxを越えるテーブルが大量にネストしてたりするのかな?
昔懐かしのテーブルレイアウト全開でやってるならともかく、
そうでないならたとえテーブル利用時に正しく位置取得できなくても
そこまで大きな誤差が出ることはほとんどないのでは?
267261:2008/11/01(土) 18:24:30 ID:???
>>266
DOM実装の問題だという件、理解しました。

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

http://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要素を取得する
必要がある時には便利な関数と思われますが、正確に位置を取得する必要があります。
268Name_Not_Found:2008/11/01(土) 18:38:46 ID:???
>>267
ブラウザ間の実装が異なるならブラウザを判別するコードを使って実装の違いを吸収すればいいわけで
実際にそれぞれのブラウザの挙動の違いは詳しく分かっているわけだしそれを考慮したコードは書けるよね

CSSとかと違ってJavascriptはブラウザ毎に違うコードを実行するなんてことが簡単にできるからそんなに問題にはならないかと
269261:2008/11/01(土) 18:47:15 ID:???
>>268
ブラウザテストすればいいということですね。

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

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

もし、矩形範囲のhtml要素を取得したいような場合に、自力であれこれ各ブラウザの挙動をテストして、
クロスブラウザなコードを書くのは極めて困難だと思いませんか?
270Name_Not_Found:2008/11/01(土) 18:58:49 ID:???
>>269
お前はただ同意を求めてるだけなのか?
なら、困難だと思うよ。これで満足か?
271261:2008/11/01(土) 19:06:56 ID:???
>>269
すみません。問題点を明確にするために自分の意見を述べすぎました。
そのせいで、あらぬ誤解を生んだようです。
質問は>>261にあります。これについての回答を期待しています。
272Name_Not_Found:2008/11/01(土) 19:19:21 ID:???
そもそも質問の意図がわからん
何がしたくて要素の絶対位置を取得したいのかで答えは変わってくる
用途によってはJSよりFlashを使った方が良いだろうし
全てのHTML&CSSに対して適用できるような手法が必要なのはライブラリを作って公開しようとしてる場合ぐらいではないかと
273Name_Not_Found:2008/11/01(土) 19:22:15 ID:???
位置指定というか、px 単位での調整が必要ってどんな処理だ?
JavaScript のアウトプットって DOM が中心だから、
ブラウザの画面内で位置調整を行う方法って CSS に頼るしかない。
JS 側はクラスや ID や要素を指定した DOM を弄って、予め作った CSS に適用させる感じ。
もちろん、CSS に対応しているかどうか、
CSS がどんな描画されるかなどは実装依存(てか相当バグがある)だが、それは CSS の問題。
HTML を描画できるだけじゃ嫌、ピクセル単位で画面を調整したいってのは、それこそ Flash を使えばいい。
ただし言語仕様を Adobe が握ることになるので、
VerUp の度に拡張の嵐の憂き目に遭うだろうね。
274261: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
275Name_Not_Found:2008/11/01(土) 20:45:56 ID:???
オレの自前ライブラリの GetAbsPosSeikaku() が火を噴く時が来たようだ。
276Name_Not_Found:2008/11/01(土) 21:17:22 ID:???
位置指定にこだわってるのは >261 なのに実例を出せと言ったら「こっちが訊いている」ってアホかよ
277Name_Not_Found:2008/11/01(土) 22:27:42 ID:???
リンクにカーソルを載せたときにリンクと被らないようdivをポップアップウインドウ風に表示する、なんて場合に問題になるかもしれない
278261: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単位での位置取得の正確さが要求されるような例ではないでしょうか?
279Name_Not_Found:2008/11/02(日) 08:21:41 ID:???
グダグダ言ってないで適当なブラウザ上で「矩形範囲のhtml要素取得」とやらを実装してみろ。
elementFromPoint()もgetBoundingClientRect()も使わず、実用的な速度で動作し、
かつボックスの重なりも処理できるなら、それだけで画期的だ。
値がズレてるならズレたまま扱えば正しく要素を取れるんじゃねーの。

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

むしろ>>267なんかより厄介な問題が出てくると思うが、それは遭遇してから言ってこい。
280261:2008/11/02(日) 08:55:45 ID:???
>>279
これまでで一番有益なアドバイスでした。ありがとうございます。
CSSOM-Viewは初めて知りました。
さて、
http://hkom.blog1.fc2.com/blog-entry-503.html
の位置取得方法はお試しになりましたか?
これが私の知りうる限り一番正確に位置取得できる方法なんです。
実は>>267の問題もとりあえずはこれで解決できますが、ただ限られたケースしか使えないという欠点はあります。
ちなみに、やってみれば分かることですが、getComputedStyle()やbox-sizingは使い物になりません。
その理由はスペースの都合で割愛します。
要するに、知りうる限り、完全に正確に位置取得をする方法がないので、皆さんにおたずねしたいのです。
281Name_Not_Found:2008/11/02(日) 09:25:02 ID:???
だからな、あんたは「正確、正確」と言うが、
どのブラウザも各ブラウザ基準で「正確に」値を出してるだろうが。
あんたが言う「正確」とは何基準だ?脳内か?何に統一したいんだ?

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

理由を書かねば話になんねーだろ。三行で書け。
古いMozillaでoffsetLeftがleftの計算値に一致しない現象を知ってる奴なら今でもgetComputedStyle()でやる。
つーか最初に一回だけ計ってその後の処理はstyle.leftで統一する。
282234:2008/11/02(日) 09:46:12 ID:56s2bwm5
>>234の件引き続き探してます
Mozillaの独自CSSなどで要素のbackgroundの透過設定が出来れば良いと思うんですが
283261:2008/11/02(日) 09:46:57 ID:???
>>281
>あんたが言う「正確」とは何基準だ?脳内か?何に統一したいんだ?
>>183の(3)です。

>理由を書かねば話になんねーだろ。三行で書け。
offsetLeft/Topの総和が座標値の概算値になります。
しかし、>>261のリンク先にあるようにoffsetLeft/Topの定義はブラウザ依存です。
だから、getComputedStyleを使っても問題の先送りになるだけです。
284Name_Not_Found:2008/11/02(日) 10:02:08 ID:???
どうしたアホ外人、出番だぞ
285Name_Not_Found:2008/11/02(日) 10:15:12 ID:???
>>283
>>183の(3)はoffset(Left|Top)の算出と何も関係ねーはずだが。

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

あんたがやりたいのは「正確な位置算出」であって「正確なoffset(Left|Top)算出」じゃないと思ったんだが、
違うのか。
286261:2008/11/02(日) 10:34:14 ID:???
> >>183の(3)はoffset(Left|Top)の算出と何も関係ねーはずだが。
>>183の(3)による座標値と一致している事が私の正確の定義です。

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

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

どうも不毛な流れになってきたので、これで終わりにします。
有益なアドバイスありがとうございました。
287Name_Not_Found:2008/11/02(日) 10:35:27 ID:???
関係ねーと言うか、IEのoffsetParentには位置指定以外にhasLayoutも絡むから、
offsetLeftで考える時点でab:(x,y)の座標系にはならんわな。
つーことは何だ。問題はIEなのか。IE以外なら何とかなるのか。
288Name_Not_Found:2008/11/02(日) 10:44:11 ID:???
試してないけど、offsetParent と offsetLeft/Top じゃなくて、
getComputedStyle()/currentStyle で position:static 以外の要素を探して
left とか margin を足していけば良かったのでは。
289Name_Not_Found:2008/11/02(日) 11:02:35 ID:???
>>282
261がそれを実現するライブラリを作ってくれるからしばしまて
290Name_Not_Found:2008/11/02(日) 12:55:58 ID:???
こんにちは。アキハバラの○○無線で買ったウィンドウズのXPなんで
すが、標準装備とかいうので付いていたIEのバージョン6は、JavaScript
のバージョンでいうと1.5ということになりますか。
変な質問ですいません。
291Name_Not_Found:2008/11/02(日) 13:27:53 ID:???
>>290
お前の居場所はここじゃない
292Name_Not_Found:2008/11/02(日) 14:54:04 ID:???
IE6ならJavaScript1.3相当なんじゃね

このスレ、レベルが高すぎてついていけません
293Name_Not_Found:2008/11/02(日) 14:57:55 ID:???
IE6は1.5だ。
294Name_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です。
295Name_Not_Found:2008/11/02(日) 16:28:42 ID:???
いつも思うんだけどglobalフラグ立てないならexecにしとけ
javascript:alert(/dp\/(.{10})/.exec(clipboardData.getData('Text'))[1]);
296Name_Not_Found: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;
});
297294:2008/11/02(日) 16:38:21 ID:fDCBeq+A
>>295
すいませんヘボなもんで…。
わざわざ書き直してもらってありがとうございます。
バッチリ動作して感謝です!
298Name_Not_Found:2008/11/02(日) 20:25:00 ID:???
>>295
横レスだけどglobalフラグ立てない場合は何でexec使った方がいいの?
慣れで常にmatch使ってるんだけど。
299Name_Not_Found:2008/11/02(日) 20:38:54 ID:???
300Name_Not_Found:2008/11/03(月) 01:21:09 ID:7/XJRJrH
jquery で
table のどこをクリックしても、
その行の1列目の値を alert() したいのですが、
↓だと何がマズいでしょうか?

$("table tr").click(function () {
alert( $("$(this) td:first").text() );
});
301Name_Not_Found:2008/11/03(月) 07:13:44 ID:???
>>299
なるほどありがとう。exec使うようにする。

>>300
jQueryあんまり覚えてないけど
$(this)はselectorじゃないから中に入れたらダメじゃない?
$(this).find("td:first").text()なら取れるはず
302300:2008/11/03(月) 08:28:40 ID:7/XJRJrH
> 301
できた!!
学習させて頂きました。m(_ _)m
3031/2:2008/11/03(月) 19:24:45 ID:???
お世話になります。
現在、下のサイトを参考にしてツールチップを作成しています。
http://www.dynamicdrive.com/dynamicindex5/dhtmltooltip2.htm
こちらのサンプルは、マウスを動かすとマウスについてくるようにツールチップが表示されます。
これを、マウスを動かした際には非表示、動かさない場合は表示というようにしたいと考えています。

マウスを動かした際に、現在のカーソル位置と一秒後のカーソル位置をsetTimeoutで比較して、
同じだった場合に表示処理を行うようにしたのですが、うまくいきません。
マウスを動かしツールチップが消去されたあとは再び表示されない状態です。
(setTimeoutのところで「引数が無効です」のエラーが出ています。イベントを渡したりしてみましたが駄目でした)
ご指導お願いいたします。
3042/2: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
305Name_Not_Found:2008/11/03(月) 20:19:49 ID:???
setTimeout を使って自分自身を再帰的に呼び出す、という定石で setTimeout に出会った人は
setTimeout 自体に繰り返し処理機能があると勘違いしている人が多い。

つ setInterval
306Name_Not_Found:2008/11/03(月) 20:50:23 ID:???
問題はむしろ別にありそうだね
307300:2008/11/03(月) 23:20:10 ID:f+cnwmk6
jquery の tablesorter + pager で作ったテーブルでクリックすると、
最初に表示された行のついては1列目の値が alert() されるのですが、
ページング処理で開いたテーブルをクリックしても
alert() されません。

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

どうしたら、ページング処理後の行でも
問題なく動くでしょうか?
308Name_Not_Found: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());
});
309296:2008/11/04(火) 18:18:01 ID:???
>>296お願いします。
310Name_Not_Found:2008/11/04(火) 20:43:55 ID:???
どこから沸いたコードなの?
311Name_Not_Found:2008/11/04(火) 23:07:37 ID:???
>>296
> どういう時に使われますか?
一生使われません
312Name_Not_Found:2008/11/05(水) 02:40:01 ID:ZJZlQtYZ
styleswitcher.js(スタイルシートを切り替えるスクリプト)に関する質問です。
http://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のフレーム内の同時切り替えは
http://www.gac.jp/article/index.php?stats=question&category=9&id=20437&command=msg
をそのまま用いることで成功しました。
できないのは、a.htmlからindex.htmlのスタイルシートを切り替えることです。
上記サイトで説明されてるようにsetActiveStyleSheet関数をいじればいいと思ったのですが、
どう変更すればいいのかわかりませんでした。手助けいただけると幸いです。
313312:2008/11/05(水) 05:38:26 ID:???
自己解決。すみませんでした。
314296:2008/11/05(水) 10:37:44 ID:???
>>310
出典は確かResigさんのblogだった気がします(覚えて無くてすみません)。

Crockfordさんのバージョンはこちらです。(内容的には同じです。)
http://d.hatena.ne.jp/brazil/20051011/1129031224
315Name_Not_Found:2008/11/05(水) 15:23:06 ID:p17cjZCi
お願いします。

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

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

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

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

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

316Name_Not_Found:2008/11/05(水) 16:31:24 ID:???
>>315
その無名の関数式をどうやって呼び出しているの?括弧の対応が
取れてないし…
317Name_Not_Found:2008/11/05(水) 17:44:01 ID:???
中途半端なコピペとか

>いきなり新URLで表示させるためにはどうしたらいいのでしょうか。
最初から新URLにアクセスすればいいんじゃね
318Name_Not_Found: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/
319Name_Not_Found:2008/11/05(水) 21:33:58 ID:???
>>314
uberで呼び出したメソッドの中で更にuberを使ってると1以上になるんじゃない?
なんか微妙なコードだなと思って原文見たら
最後に「最近よく考えてみたらuberとか使わなくね?無駄じゃね?」って感じの追記がしてあった。
320Name_Not_Found:2008/11/05(水) 21:41:27 ID:???
>>318
処理に使われてるJavascriptを探してそれを示してください。
できなければこのスレにはあなたに相応しくありません。
321296:2008/11/05(水) 22:09:21 ID:???
>uberで呼び出したメソッドの中で更にuberを使ってると1以上になるんじゃない?

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

そうですね、最近は古典的継承は使わずにプロトタイプ的継承やfunctionalな継承を
使うよう推奨してますよね、Crockfordさんは。
でも、古典的継承を実際見かけることも多いので、後学のために理解を深めておこうと思いまして。
322Name_Not_Found:2008/11/06(木) 00:54:17 ID:???
>>320
初心者系のスレがなかったのでここで質問させてもらったのですが、失礼しました
323Name_Not_Found:2008/11/06(木) 11:29:20 ID:xhBpNM3i
jqueryのajaxに関する質問です
$.ajax()で非同期でサーバを呼び出しているのですが、
これは、あるURLへの呼び出し&処理がまだ終了していない時に、
他のURLを呼び出しても問題ないのでしょうか?
324Name_Not_Found:2008/11/06(木) 11:39:15 ID:???
nextSiblingやpreviousSiblingなどで返すElementですが、
IEだと必ずHTMLになるのに対して、FirefoxだとTextElementになることがあります。
これを常にHTMLになるようにする方法はないでしょうか?

一応nodeTypeをみて処理して解決してはいるのですが…
325Name_Not_Found:2008/11/06(木) 12:22:03 ID:???
>>323
問題ないけどRFCの規定で2本までしか投げられないから3本目は待機させられるだろうね
Cometする場合は注意しないといけない

>>324
IEを恨みつつ(X)HTMLを全部1行に書く
326Name_Not_Found:2008/11/07(金) 01:38:43 ID:???
>>321
えーと、どんな場合て?uberが何をするためのメソッドなのかを聞いてるん?

ところでこのuberだけどやっぱ変だよ。
わざわざdepthの数だけprototype.constructorを辿るように書いてあるのに、
肝心のconstructorプロパティをいじってないから常に最上位クラスを指す事になる。
http://d.hatena.ne.jp/brazil/20051012/1129035427
ここで作者から記事を改訂する予定だっていう返事が来た事が2005年に書かれてるけど、
今現在載ってるのを見てもconstructorに関する記述はそのまま。動作もおかしい。
作者自身使ったこと無いと言ってるし、多分テストも真面目にやってないのでは。
327Name_Not_Found:2008/11/07(金) 02:55:37 ID:???
クロージャーというのがあってだな、
328Name_Not_Found:2008/11/07(金) 08:42:57 ID:???
すいません。javascriptで書かれたブログパーツを
ブログでなくて自分で書いたページ(ブログじゃないページ)に
張るということができないかやってみたのですが

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

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

環境はIE7とFireFox3、テストした環境はland.to鯖とXPSP3のローカルです
329Name_Not_Found:2008/11/07(金) 09:53:28 ID:???
>>328
そもそもスレ違いだし、ブログもただのHTMLなので普通は貼れるはず。
<html>とか<head>とか<body>がないってオチじゃない?
ブログパーツが何かわからんと何とも言えないけど。
330Name_Not_Found:2008/11/07(金) 10:18:50 ID:???
>>328
HTMLだな、スレチ
331296: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さんはどんな点で変だとお考えになったのかがよく理解できていないですが。

作者が使ったことないというのはどこに書いてありましたか?
(古典的継承の)「記事を使って以来使ったことがない」とは書いてありますが、
このメソッドをそもそも一度も使ったことが無いとは書いてある箇所は見あたりません。
332Name_Not_Found:2008/11/07(金) 11:52:15 ID:???
>>329
>>330
スレチでしたか、すいませんでした。
とりあえずもうちょっと頑張ってみます。

ありがとうございました。
333Name_Not_Found:2008/11/07(金) 12:26:27 ID:???
>>328

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

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

その結果は社内にも秘密とされた。(おれがいいふらしたけどねー!)
それは、雑談するほど効率がいいなんて、上司も人事部も認めたくなかったからなんだ。
ちなみに毎日2時間以上雑談をするチームが最も効率がよかった。(^o^)v
335Name_Not_Found: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; だよね?
336Name_Not_Found:2008/11/07(金) 17:08:35 ID:???
スクリプトを実行したときにループ警告が出るのですが、これを出なくすることはできますか?
有限ループなのですが処理が多くて途中で何度も引っかかるのが面倒なので。
337Name_Not_Found:2008/11/07(金) 17:46:56 ID:???
>>336
スクリプト側から設定できたら警告の意味ねーだろ
というわけでお前さんの質問は基本的にブラウザの設定の話になる
(そしてスレ違い)
ttp://support.microsoft.com/kb/175500/ja
IE4〜6ではこの方法でいけるそうだ
他のブラウザは知らん

ループを使うのをやめてsetTimeoutやsetIntervalに置き換える手もある
338Name_Not_Found:2008/11/08(土) 11:39:00 ID:???
JavaScriptで、イベントの発生もとを取得するのはどうしたらいいですか。
<a href="#" onclick="f1(); return false">click</a>
function f1() {
 // ここで <a>要素を取得したい
}
339Name_Not_Found: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>
340Name_Not_Found:2008/11/08(土) 12:45:54 ID:???
おいおい、そんなものおすすめするなよ・・・
341Name_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);

よろしくお願いします。
342296:2008/11/08(土) 13:07:58 ID:???
>>335
ご説明ありがとうございます。ちょっと時間がとれないでいるので、
また時間がとれる時に自分で確認したいと思います。
はい、dはdepthの間違いでした。
343Name_Not_Found:2008/11/08(土) 13:33:50 ID:???
>>341
.replace(/^[^{]+\{\s*|\s*\}[^}]*$/g, '');
344Name_Not_Found:2008/11/08(土) 13:39:53 ID:tIO05utY
>>343
ありがとうございます。

なるほど、どちらにせよ結局括弧で囲まれてる訳ですね。。
気づきませんでした。
345Name_Not_Found:2008/11/08(土) 17:52:29 ID:???
>>338
this
346Name_Not_Found:2008/11/08(土) 18:30:45 ID:???
>>338
thisじゃ無理
event渡せ
347Name_Not_Found:2008/11/08(土) 18:32:20 ID:???
ああ違う
thisを渡せって言いたかったのか。
348Name_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)では
サムネをクリック時には画像が正しく拡大表示されました。

これは何が原因なんでしょうか?
349Name_Not_Found:2008/11/10(月) 03:45:58 ID:???
>>348
手元のIE6は動いたな。インターネットオプションぐりぐりやってみたら?
350Name_Not_Found:2008/11/10(月) 12:09:01 ID:8hWHsSqU
script.aculo.usのEffect.Foldの逆をやりたくて
ソースにUnfoldを書こうとしてます。
Effect.Scaleを2回やっているのはわかるんですが、
どう書いていいかわかりません。

知ってる方、誰か教えてもらえないでしょうか?
351Name_Not_Found:2008/11/10(月) 16:06:45 ID:8hWHsSqU
たて続けに質問で悪いですが、

new Effect.SlideDown( "box" );

で、

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

どなたか理由を知ってる方教えてもらえないでしょうか?
352Name_Not_Found:2008/11/10(月) 16:43:58 ID:???
>>351
そのエラーが出るサンプルコードをください
353Name_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などで代替案などありましたらお願いします。
354Name_Not_Found:2008/11/10(月) 19:35:37 ID:???
Firefox でももちろん使えるはずだけど。
355Name_Not_Found:2008/11/10(月) 20:57:00 ID:???
動かなかった例を出してみてよ
356Name_Not_Found: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>で挟むという方法もつかえません。

よろしくお願いします。
357356:2008/11/10(月) 21:34:00 ID:???
わかりにくかったので追記です。
window.onload実行時に非表示じゃなくて、
box1が出現した時点でdisplay='none'にしておきたいということです。
358Name_Not_Found:2008/11/10(月) 21:41:15 ID:???
>>356
クラスxxxに割り当てるスタイルをJavaScriptで書き換えればいけるんじゃないの
359Name_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" );
}
360Name_Not_Found: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>
361360:2008/11/10(月) 22:53:05 ID:???
ごめん
box1以降は手を出せねいのね。

消えます
document.getElementById('俺').style.display = none;
362Name_Not_Found:2008/11/10(月) 23:43:35 ID:ovMkJR/O
【マジヤバイ】偽日本人爆増!国籍法改悪案まもなく成立へ【アト4日】
http://jfk.2ch.net/test/read.cgi/news4vip/1226313721/
363Name_Not_Found: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に埋め込みました。

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

参考にしたのは
「検索エンジンから来た場合にメインフレームのページにジャンプさせる」
と言うページです
364Name_Not_Found:2008/11/11(火) 08:18:36 ID:???
メインフレームってIBMとかのアレか?

さておき、一度親フレームから子フレームを呼び出して
子フレームに埋め込んだ alert(parent.location.href) とかで
親フレームのURLを調べてみたらいいと思うよ。
365354: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; });
366Name_Not_Found:2008/11/11(火) 21:00:22 ID:H1yNcsz7
お世話になっております。
JAVA SCRIPTでフォームで送ったら
フォームで情報を成型してデータを格納して
確認のためメールで流して欲しいと要望があったので作成しようとしています。

現在
<FORM name="mail_form" method="POST" action="mailto:[email protected]"
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>
367Name_Not_Found:2008/11/11(火) 21:16:16 ID:???
resroom.cgi の方で何とかする
368Name_Not_Found:2008/11/11(火) 22:26:02 ID:4uIaL5KQ
AjaxのWebアプリケーションでデータを保存するために、XMLファイルの使用を検討しています。

PHPなどの力を借りずにJavaScriptの機能だけで、XMLファイルをサーバ上に(動的に)作成・書き換えすることはできますか?
※XMLオブジェクトを作成するのではなく、XMLファイルそのものを作成したいです。
369Name_Not_Found:2008/11/11(火) 22:30:46 ID:???
370368:2008/11/11(火) 22:35:22 ID:4uIaL5KQ
>>369
ありがとうございます。
WebDAVについて調べてみます。
371368:2008/11/11(火) 22:53:19 ID:4uIaL5KQ
アプリケーションを一般的な無料レンタルサーバの上で動かしたい(そのサーバ上で完結させたい)のでWebDAVは使えなそうです・・・残念

他に選択肢はありますか?
372Name_Not_Found:2008/11/11(火) 23:01:42 ID:???
あきらめる。
373Name_Not_Found:2008/11/11(火) 23:02:25 ID:???
374368:2008/11/11(火) 23:08:51 ID:4uIaL5KQ
>>372
ありがとうございました。

>>373
サーバ側に保存されているファイルは読み込むことができるので、「ローカルファイル」とはクライアント側のディスク上に保存されるファイルと解釈していました。
375Name_Not_Found:2008/11/12(水) 00:05:35 ID:???
>>365
任意の値を受け入れるが、処理としては配列を前提とするという場合には、
foo = (typeof foo=='object' && foo.constructor==Array ? foo : [foo]);
あたりが定番。
376Name_Not_Found:2008/11/12(水) 00:53:20 ID:???
>>365
戻り値が配列では無く、HTMLCollectionというのが原因なので、
prototype.jsを使っているなら
foo = $A(foo);
とか。
377Name_Not_Found:2008/11/12(水) 13:09:06 ID:dnhbbK1y
お世話になっております。

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

<a href="mailto:[email protected]">メールを出す</a>

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

以上 情報をお持ちな方はご助力いただけますとありがとうございますっ
378Name_Not_Found:2008/11/12(水) 14:05:19 ID:???
お世話になっております。

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

<a href="mailto:[email protected]">メールを出す</a>

をクリックしたのと同じような動作をしつつ
JavaScriptの処理を進めたいのです、、、
379Name_Not_Found:2008/11/12(水) 17:52:35 ID:???
<a href="punipuni.xls">えくせるを出す</a>
380Name_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");
  }
}
381380: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>
------ソースここまで-----------
382380: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>


以上、よろしくお願いいたします。
383Name_Not_Found:2008/11/13(木) 02:27:51 ID:???
正規表現を工夫するか、innerHTMLを使うのをやめて1つずつノードを走査すればいい
384Name_Not_Found: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; // このパターンは終わったので抜ける
      }
    }
  }
}
385Name_Not_Found:2008/11/13(木) 16:08:57 ID:???
ページが表示された際、1番最初のフォームのinput type="text"に自動的にフォーカスされるようにしたいです。

リファレンスをみたところfocusというメソッドがあるので、それを使えばいいのですけど、
jqueryを併用していて、focusが上書き(?)されているようで意図した動作をしてくれません。
擬似的に元のfocusメソッドを再現する方法等ないでしょうか・・・。
386Name_Not_Found:2008/11/13(木) 16:16:37 ID:???
>>385
>>2
言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
387Name_Not_Found:2008/11/13(木) 16:51:32 ID:???
>>385ですが
なんかソース整理してたら普通に動作してくれました(:D)rz
すいませんでしたっ
388Name_Not_Found:2008/11/13(木) 17:46:52 ID:???
それ目的でソース貼れって言ってるからおk
389Name_Not_Found:2008/11/13(木) 19:55:50 ID:???
申し訳ない
次回から気をつけます。ご指摘ありがとうございました。
390Name_Not_Found:2008/11/13(木) 20:20:09 ID:cF/LvURE
javascriptでソケット通信を行いたいんですが
jnext以外に方法はないんでしょうか?

また、他にjavascript以外でもソケット通信が可能ならその言語を教えてください
391Name_Not_Found:2008/11/13(木) 21:01:18 ID:???
やっぱり質問は無しの方向で。
スレ汚しすまん
392Name_Not_Found:2008/11/13(木) 21:10:21 ID:???
>>391
スレ違いだがJava Appletならサーバとの間でソケット通信
できるよ。ページを取り寄せたサーバ限定だけどね。
393Name_Not_Found:2008/11/13(木) 21:14:35 ID:???
>>391>>390
です
394Name_Not_Found:2008/11/13(木) 21:18:03 ID:???
質問は無しらしいが補足

ExternalInterface 使ってラップすれば ActionScript のソケット通信関連がそのまま使える。
ので、他鯖にも接続できる。Flex SDK 使えばタダだ。
ただし、Flash Player のソケット関連のセキュリティ制約、
843 番の影響もそのまま受けるので鯖に手を入れられないと難しい。まぁこれは Flash も同じ。
395380: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さんのソースを参考にして、
それらにも対応できるよう、まずは自分でやってみます。
396Name_Not_Found:2008/11/14(金) 02:10:55 ID:???
ブラウザ特有のAPIを使ってるJSを他のブラウザでも使えるようにしたいと思ってます。
そのJS自体を書き換えることなく APIをエミュレートするような方法は可能でしょうか?

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


397Name_Not_Found:2008/11/14(金) 02:20:39 ID:???
ブラウザ特有の API というのが何を指してるのかわからん
398396:2008/11/14(金) 09:05:32 ID:???
たとえば、 addEventListener という API は IEでは使うことができません。
これを IEで使えるようにしたいのです。

addEventListener があったら attachEvent を実行するようにすればよいのかな
と思ったのですが、いろいろ調べてみるとタイミングが違うということがわかりまして、
どうやって互換性を維持すればよいのか知りたいと思ってます。
399Name_Not_Found:2008/11/14(金) 10:42:04 ID:???
>>398
jQueryとかPrototype.jsみたいなライブラリ読んだら良いんじゃない?
中身解説サイトが結構あるからそれ見ながら読むと結構わかると思う
400Name_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">
401Name_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とかにアクセスする方法がわかりません。

ご教授のほどよろしくお願い致します。
402401: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");
}

}
403Name_Not_Found:2008/11/14(金) 17:29:31 ID:???
>>398
IE6とかはHTMLElementのprototypeを拡張できないから
JSを書き換えずに動かすのは無理
404Name_Not_Found: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
405Name_Not_Found:2008/11/15(土) 16:10:34 ID:???
>>404
$1を使うと罵詈雑言が飛んでくるのがこのスレだ!
はやくにげてー
406Name_Not_Found:2008/11/15(土) 16:17:46 ID:???
>>404
encodeURIComponent("$1")

これがおかしいよ
407Name_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)が必ずしも一致しない例って他にもあるのでしょうか?
408404:2008/11/15(土) 16:34:10 ID:???
>>406
はい。そこをどう直したらいいのかという質問でございます。

ちなみにencodeURIComponent($1)だと、そんな変数は無いと言われちゃいますし。
409Name_Not_Found:2008/11/15(土) 16:40:03 ID:???
検索してif処理
410Name_Not_Found:2008/11/15(土) 17:14:38 ID:???
質問です。document.writeするとき単独タグの終端マーカもエスケープ
すべきですか?
411Name_Not_Found:2008/11/15(土) 19:02:50 ID:???
>>404
str = str.replace(/.*京.*/g, function(s) { return encodeURIComponent(s); });


>>410
空要素のこと?
ダメ文字は "</" だから "... />" は大丈夫
412356:2008/11/15(土) 19:07:46 ID:???
>>404
str = str.replace(/(.*京.*)/g, function(s){return s + " → " + encodeURIComponent(s);});
413404: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>
414Name_Not_Found: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
415404: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>
416Name_Not_Found:2008/11/16(日) 02:29:24 ID:???
>>415
解決乙。
417Name_Not_Found:2008/11/16(日) 02:38:39 ID:qgzRqUcQ
JavaでStringオブジェクトとかのソースが公開されてるように、
JavaScriptでも既存の関数のソースって見れませんか?
418Name_Not_Found:2008/11/16(日) 05:01:14 ID:???
Mozilla や WebKit ならオープンソースだから見れる
IE や Opera はたぶん見れない
419Name_Not_Found:2008/11/16(日) 09:31:10 ID:bO2fC3N0
おはようございます。
javaスクリプトについて、2点質問させてください。

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

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

以上です。
よろしくお願い致します。
420Name_Not_Found:2008/11/16(日) 09:33:01 ID:???
>>419
どっちも可
421Name_Not_Found:2008/11/16(日) 09:59:07 ID:bO2fC3N0
>>420
レスありがとうございます。
質問の書き方が悪かったようで申し訳ありません、
どのように実装すればいいのでしょうか?
422Name_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
どうしてでしょうか?
423Name_Not_Found:2008/11/16(日) 11:59:14 ID:???
document.onclick = function() { alert("clicked");} 
424422:2008/11/16(日) 12:09:59 ID:z+amVslg
>>423
ありがとうございます。
動きました。
425Name_Not_Found:2008/11/16(日) 15:43:58 ID:YMTZFDs6
質問です。
<div>もしくは<span>の間に挟まれた<form>の中を操作するとき、
どう指定すればよいのでしょうか?
document.formNameだとundefinedとなってしまいます。
どなたかご存知でしたらお教えください。
426Name_Not_Found:2008/11/16(日) 16:17:00 ID:???
formName が undefined になる意味がわからんが
id ふって getElementById でもすれば
427Name_Not_Found:2008/11/16(日) 16:39:11 ID:Zc8ItWlQ
質問があります。よろしくお願いします。
例えば history.previous と同じような動作をする別の命令で
直前のページのURL(もちろん自サイト内)を取得する方法はありますか。

前のページへ戻る動作をしたいのですが、前ページはcgiを使用しているので
IEだとブラウザの戻るや history.back() では「警告 : ページの有効期限切れ 」
と出てフォームの再送信を要求されます。どなたかこの回避法をご教示下さい。
どうぞよろしくお願い致します。
428Name_Not_Found:2008/11/16(日) 17:34:25 ID:???
>>421
そういう質問者より回答者の方がカキコが大量に必要となる様な聞き方じゃあ、
余程ヒマジンでないとレスしないよ。

少しでも自力で考えてサンプルを造って、動作不良の解決方法を問う様にすれば
少しはレスするヤシも居るだろうが。
429Name_Not_Found:2008/11/17(月) 02:49:29 ID:???
>>425
getElementsByNameでOK
そうでなければgetElementsByTagName("FORM")で得たそれぞれに対してnameを確認する

>>427
リファラ
430Name_Not_Found: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)しても
送信内容は空っぽ。
431Name_Not_Found:2008/11/17(月) 18:04:17 ID:???
CGIなら何とでも出来ます
432Name_Not_Found:2008/11/17(月) 19:33:01 ID:???
なら最初からGETにしとけって話だな
433Name_Not_Found:2008/11/17(月) 20:54:33 ID:???
cookieにonsubmitで保存すれば?
434Name_Not_Found:2008/11/17(月) 21:22:44 ID:???
いちいちPOSTデータを再送信させるってことは
例えばそれが投稿フォームなんかだと2重・3重カキコになるわけだがいいのかね。
435Name_Not_Found:2008/11/17(月) 21:33:24 ID:???
鯖でセッションつくれよ
436Name_Not_Found:2008/11/18(火) 01:52:21 ID:???
今テーブルを動的に作ってるんですが、IEとFireFoxで挙動がちがくて困ってます。
やってることは、tr要素にappendChildでいくつかのtd要素を追加してtbodyにappendChildでいくつかのtr追加
というものです。このtd要素に背景画像をセットして、角の丸い枠の中にテキストを表示するんですが、
そこまでやると、エラーは吐かれないんですが、何故か


            その他の
(0,1)の背景画像  背景画像 テキスト
            たち(7枚)
という猛烈に崩れた形で表示されてしまいます。何が原因として考えられるのでしょうか?
437Name_Not_Found:2008/11/18(火) 05:58:10 ID:???
ソースも貼らずに何言ってんだ
438Name_Not_Found:2008/11/18(火) 08:41:01 ID:???
>>436
IEとFFxで大きく挙動が違うのはコードがHTML/DOM的に正しくない
場合に一番多く起こる。問題のある最低限のコードを貼る。
HTML側もJavaScript側も必要。
439Name_Not_Found:2008/11/18(火) 08:46:26 ID:???
Firefoxのデザインが崩れるならFirebug使ってHTML見ればある程度予想つくとおもうけどなー
440Name_Not_Found:2008/11/18(火) 09:05:35 ID:???
HTML、DOMってかCSSの影響が一番大きいとは思うがな
441Name_Not_Found:2008/11/18(火) 09:13:12 ID:???
なーなーうっせー
442Name_Not_Found:2008/11/18(火) 10:09:35 ID:???
ん?
443Name_Not_Found :2008/11/18(火) 14:18:15 ID:???
にゃーにゃー
444Name_Not_Found:2008/11/18(火) 17:08:46 ID:???
ModalBoxがIEで動かず困っています。
XHTML1.0なのですが、それが問題なのでしょうか?
445Name_Not_Found:2008/11/18(火) 17:17:56 ID:???
>>436
まずそんな場合には、
tableかbody全体のinnerHTMLをコピーしてHTMLファイルに貼り付け、
HTMLとして各ブラウザで正常に表示出来るかどうかを検証する事から始めた方が良さげ。
で、そのHTMLでの問題点が判明すれば、JavaScriptでの要修正点もおのずと判る流れ。
446Name_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万通り)の乱数を扱おうとすると
一千万個の要素を持つ配列が必要になります
これでは重過ぎて使えません

一旦配列に格納する方法ではない大きな範囲で重複しない乱数を得る方法はありあませんか
447Name_Not_Found:2008/11/18(火) 23:40:37 ID:???
重複したらやり直す
448Name_Not_Found:2008/11/19(水) 00:05:30 ID:nTsdJ6Mo
>>447
その方法でも重複チェックのために
今まで抽出した乱数を格納するための一千万個の要素を持った配列が必要になります
449Name_Not_Found:2008/11/19(水) 00:10:51 ID:???
重複しないように祈る
450Name_Not_Found:2008/11/19(水) 00:25:40 ID:???
重複チェック用に配列に格納するのは絶対条件っぽいし無理だろうね
451Name_Not_Found:2008/11/19(水) 00:54:20 ID:???
>>446その表示する値の数の上限は?フラグはその数分だけで足りると思うけど
まさか一千万個全部表示するのか?
452Name_Not_Found:2008/11/19(水) 00:55:29 ID:???
上限とかそういうのはスマートじゃないね
俺も無理だと思う
453Name_Not_Found:2008/11/19(水) 00:58:39 ID:???
>>446
まさか本当に1000万個の数値を全て表示するとは思えないので、
var check = {};
rdm = Math.floor( Math.random() * 10000000 );
check[rdm] = true;
ってな感じで、一度表示した値をhashに入れて管理すれば?
重複した場合には、もう一度randam値を算出するか、
値をインクリメントして空きを探すかなどは実装次第。
454436:2008/11/19(水) 02:04:17 ID:???
どうやら主にtd要素のdisplayスタイルがblockになっていたのが原因のようでした。
ありがt
455Name_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でないといけないので汎用性は無いので
実現したい事とは異なるのですが

みなさん知恵を出してくださってありがとう御座いました
456Name_Not_Found:2008/11/19(水) 06:43:38 ID:???
>>453
例えば rdm = 9999999 なんかが出ると
(代入文 check[999999] = true を実行すると)
配列 check のサイズは一気に 10000000 になっちゃうけど
その辺は大丈夫なん?

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

まぁ大丈夫じゃなかったとしても、例えば check["_" + rdm]とかにして
文字列変数にしちゃえば回避出来るけど。
457Name_Not_Found:2008/11/19(水) 08:37:11 ID:???
>>455
あなたがやろうとしていることは数万要素のハッシュか配列を作ること
なしには絶対に実現できない。なぜなら、「既に出た要素」と
「まだ出ていない要素」を区別するにはそのどちらか、従って
最大5000000個の数を何らかの形で覚えておくしかないから。
だからあなたが試したそののろい方法で我慢するか、
あきらめるかのどっちか。
458Name_Not_Found:2008/11/19(水) 10:45:16 ID:???
>>456
IE8とFirefox3で試してみたけどどっちも
check[999999] = true;実行してもメモリ使用量増えなかったし
普通の配列も連想配列的に処理してんじゃないのかな?
459Name_Not_Found:2008/11/19(水) 11:42:20 ID:???
>>455
Math.randomはダメだけど、条件を満たす疑似乱数生成法はあるかもしれない。
数学板かプログラム技術板の乱数スレなら何かヒントがあるかも。
460Name_Not_Found:2008/11/19(水) 12:50:41 ID:???
> 当たりの数値が常に0でないといけないので汎用性は無いので

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

その意味不明なアルゴリズムで「出現回数が高々1回」なのは
0と99の2つのみでしょ。
461Name_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();
});
462Name_Not_Found:2008/11/19(水) 14:05:58 ID:???
>>457
こういうのはどうかな。まずある数が出たか否かを1ビットで
表現することにして、10,000,000 / 32 = 312,500 要素の「0」の
配列を作る。Math.random()で1つ数を出すごとにこの配列でチェック
して「0」の時だけその数を出力して対応するビットを1に変更する。
これだけだと最後は遅くなりすぎるので、残り要素が10万になったら
残っている数を列挙して配列に入れ、シャッフルして順に出す。
463Name_Not_Found:2008/11/19(水) 14:23:36 ID:???
>>461
何がしたいのか分からんがな
何その意味不明なコード
464Name_Not_Found:2008/11/19(水) 14:49:34 ID:63HhrnTx
>>463
説明不足ですみません。

テキストエリアに入力されたJavaScriptnoコード(document.hoge.hoge.value)から
関数の名前(一覧)を取得したいのです。

しかし、肝心の関数の名前を検索するための正規表現が分からないのです。

アドバイスよろしくお願いします。
465Name_Not_Found: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
466Name_Not_Found: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]);
  }
});

こんな感じで取れたけど、正規表現は得意じゃないので効率は悪そう
467Name_Not_Found:2008/11/19(水) 18:29:52 ID:???
>>464
俺が思ってたのと全然違ったw
これは463に感謝しなくてはならない
468Name_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]をごにょごにょする
}
}

とかすればいいんじゃないかな。
あれ、はずしてる?
469Name_Not_Found: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
470Name_Not_Found:2008/11/19(水) 21:15:32 ID:???
IEの再描画のタイミングが腐ってるからだろ
471Name_Not_Found:2008/11/19(水) 21:22:04 ID:???
>>469
俺も違うケースだけど描画が同じ環境のPCでも変わることがあるよ。
たぶんPCの性能差の問題。
472Name_Not_Found:2008/11/19(水) 21:28:40 ID:???
>>470
オレもそう思うんだが、なんとかせにゃいかんくって。。。

>>471
むしろ性能のいいPCのほうが起こっているんだが。。。
473Name_Not_Found:2008/11/19(水) 21:38:50 ID:63HhrnTx
>>466-468
やっぱり正規表現を勉強するのが一番の近道のようですね。

>468
スクリプトはテキストエリアに入力されるだけであって、実行はされません。
(なんかすみません)

今回はどうもありがとうございました。

474Name_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>
475Name_Not_Found:2008/11/20(木) 00:16:25 ID:???
なんか意図があって return false; な訳?
476474:2008/11/20(木) 00:29:21 ID:???
>>475
return false;しないとhref=""が効いてしまうから
477Name_Not_Found:2008/11/20(木) 00:35:52 ID:???
で、そのsubmitはどこから沸いたの?
478474:2008/11/20(木) 01:10:19 ID:???
>>477
<input type="button" value="hoge" onclick="submit();" />から流用
Operaで動いたから採用した
479Name_Not_Found:2008/11/20(木) 01:26:42 ID:???
普通にform.submit()すれば?
480474:2008/11/20(木) 01:35:13 ID:???
>>479
<a href="" onclick="form.submit(); return false;">hoge</a>にしてもダメだった
481Name_Not_Found:2008/11/20(木) 01:43:05 ID:???
なにこの一問一答
482Name_Not_Found:2008/11/20(木) 01:51:15 ID:???
479なんだけどさ
>>480よ、君に言いたいのは、「form要素のsubmitを呼び出せ」ということであって、form.submit()などどそのまま書けってことじゃない
>>1からテンプレを読んで質問してるんだろうから、それぐらいは理解してると思っていた俺がバカだった
自力でできないと思ったら直接答えをもらえるスレを見つけて教えてもらったほうがいい
483474: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>
484Name_Not_Found:2008/11/20(木) 02:21:48 ID:???
最後にもうひとつだけ言っておく
idを直接叩くぐらいならgetElementByIdかdocument.formsから参照したほうがいい
485Name_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をとりたいのですが
どうしても配列になってないのか、数字が出力されません
どなたかご教授お願いいたします
486Name_Not_Found:2008/11/20(木) 15:54:45 ID:???
var ary = [];
487Name_Not_Found:2008/11/20(木) 16:13:24 ID:???
いやそれ以前に"wirte"って・・・
488Name_Not_Found:2008/11/20(木) 17:35:39 ID:JXYA5/g4
解決しましたありがとうございました
489Name_Not_Found:2008/11/20(木) 17:42:09 ID:???
>>488
お前どれだよw
490Name_Not_Found:2008/11/20(木) 18:21:41 ID:???
>>489
言葉の特徴から>>485と思われ
491Name_Not_Found:2008/11/20(木) 20:17:10 ID:???
>>415
いまさらだけど、replaceの第2引数に関数を指定するのは
古いsafariだと動かないよ。まぁ一応気をつけて。
ttp://la.ma.la/blog/diary_200512291411.htm
492Name_Not_Found:2008/11/20(木) 20:42:51 ID:???
Safari2ってJavaScript1.2なのか?ww
493Name_Not_Found:2008/11/20(木) 21:01:59 ID:???
>>491
気をつけるも何も、そんな古いブラウザは完全に無視で構わないのでは。
古いNetscapeでは日本語1文字がString.lengthで2となるので一応気を付けて、
と同じレベルの助言だと思われ。
494Name_Not_Found:2008/11/21(金) 15:08:20 ID:???
超初歩的なことを教えてください。

<form name="abc" 〜〜>
formの各要素
</form>

があって、formの各要素を操作するためには、そのスクリプトは、
formタグのあとに記述しないとダメなんでしょうか?
ファイルの先頭から順次実行されていくということでしょうか?

495Name_Not_Found:2008/11/21(金) 15:47:21 ID:???
>>494
超初歩というより超初期というべき。前提として今どきそんな
書き方しないしそのうち動かなくなるよ。
496Name_Not_Found:2008/11/21(金) 15:58:53 ID:???
>>495
>前提として今どきそんな
>書き方しないしそのうち動かなくなるよ。
これはどういうことでしょう?
onloadとかを使うってことでしょうか?
俺って、頓珍漢?
497Name_Not_Found:2008/11/21(金) 16:34:36 ID:oxkU/2Au
>>494
考え方自体は間違ってないよ。

JavaScriptはノード(大雑把に言うと要素、タグ)にアクセスして、
それらをゴニョゴニョするもの。だから、DOMにそのノードがぶら下がる
前ではどうにも出来ない。

んで、そのformのエレメントノードが生成されるのは</form>が読まれた後だから、</form>より後ろに書けばもちろんOK。

</form>より前でも、例えばwindow.onloadとか、なにかしらのイベントに
スクリプトの発動を任せることによって、目的のエレメントノードが生成
されるのを待つ、というのもよくある手段。
498Name_Not_Found:2008/11/21(金) 18:17:45 ID:???
JavaScriptで、<input type="file"> で選んだローカルファイルの
絶対パスを調べることはできますか。
IEではvalue属性に絶対パスが入るそうですが、firefoxとsafariではファイル名のみが入ります。
絶対パスを調べる方法があれば教えてください。
499Name_Not_Found:2008/11/21(金) 18:23:42 ID:???
Q16
500Name_Not_Found:2008/11/21(金) 18:26:07 ID:???
>>499
できないということですね。ありがとうございました。
501Name_Not_Found:2008/11/21(金) 18:42:54 ID:???
すみません、>>498の続きなんですけど、いいでしょうか。
やりたいこと:
1. あるフォームからサブウィンドウを表示させ、&l;tinput type="file"> を使ってローカルファイルを指定させる。
2. サブウィンドウで指定したファイルを、もとのウィンドウのフォームで送信する。

つまりサブウィンドウで複数のファイルを選択させ、それをメインウィンドウのフォームでまとめてアップロードするという仕様です。
こういうことって、>>498ができないと不可能なように思うのですが、なにかいい方法はありますか。
502Name_Not_Found:2008/11/21(金) 18:55:26 ID:???
ActiveX
503Name_Not_Found:2008/11/21(金) 19:12:29 ID:???
>>502
それはつまり、IE以外ではできないということでしょうか。残念です。
504Name_Not_Found:2008/11/22(土) 03:22:12 ID:???
別ウィンドウにこだわらずに、同じウィンドウ内にボックスとしてフォームを表示してごまかすとか
505Name_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>


という具合にしたいです。

画像だけ変えたり背景色だけ変えるのは出来たのですが、リンクと画像をいっぺんに変えるのがどうも出来ません。
ご教示お願いします。
506Name_Not_Found:2008/11/22(土) 15:20:26 ID:???
innerHTML
507Name_Not_Found: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>
508Name_Not_Found: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>
509Name_Not_Found: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 …

}
のような記述を理想としています。
510509:2008/11/22(土) 23:30:44 ID:???
forループの記述を間違えました。
×for (num=0;num<4;i++){
○for (num=0;num<4;num++){
です。
511Name_Not_Found:2008/11/23(日) 08:16:23 ID:???
>>509-510
配列 シャッフル で検索
512Name_Not_Found:2008/11/23(日) 16:22:07 ID:iwJeSzla
var length = 19;
var num = Math.floor( Math.random() * length );

としたばあい、numには 0〜18の値がランダムで代入されますか?
513Name_Not_Found:2008/11/23(日) 17:33:26 ID:???
うん
514Name_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行目の記述がどうしても思いつきません。
どなたかご教示お願いいたします。
分かりにくい説明ですみません。
515Name_Not_Found:2008/11/23(日) 23:47:22 ID:iwJeSzla
>>513
ご解答ありがとうございます
リロードしていませんでした。
516Name_Not_Found:2008/11/23(日) 23:52:41 ID:???
>>514
あらかじめ2行目のURLとテキストを配列に格納しておく。
517Name_Not_Found:2008/11/23(日) 23:58:18 ID:iwJeSzla
>>514
なるほど!
やってみます
518Name_Not_Found:2008/11/24(月) 00:20:15 ID:???
urlはテキストに.htmlをつければいいから格納する必要ない
519Name_Not_Found:2008/11/24(月) 00:33:01 ID:???
javascriptの外部ファイル呼び出しで、パスに「~」が入っているとエラーが出てしまうのですが
どうすればいいのでしょうか。
520519:2008/11/24(月) 01:25:43 ID:???
どうやら違ったみたいです。

<script…><!--
****▼▼****




****▲▲****
// --></script>

こういう記述があって、****▼▼**** 〜 ****▲▲**** の部分を抜き取って

function aaa(){
****▼▼****




****▲▲****
}
このような外部ファイルを作り、これをサーバーにアップしてheadタグ内に呼び出し、

<script…><!--
aaa();
// --></script>

このように記述すれば同じように動作するはずですよね?
なぜかエラーが出てしまいます。
521Name_Not_Found:2008/11/24(月) 01:52:25 ID:???
そらそうよ・・・
522Name_Not_Found:2008/11/24(月) 02:52:40 ID:???
なんでそんな采配のアレを言われなあかんのじゃ!!
523Name_Not_Found:2008/11/24(月) 04:54:45 ID:???
>>520
違う点があるとすれば文字コードだが
524Name_Not_Found:2008/11/24(月) 06:05:32 ID:???
スコープという概念はどうでもいいんだな。
525Name_Not_Found:2008/11/24(月) 06:47:01 ID:???
ああそれだなorz
526520:2008/11/24(月) 13:20:23 ID:???
え、ダメなんですか?
もちろん****▼▼****このような記述は実際には書いてありません。
どうすればいいんですか???
527Name_Not_Found:2008/11/24(月) 14:07:14 ID:y9QYlAKD
初歩的な質問かも知れませんが、
チェックボックスで現在選ばれている項目のvalueを知りたいのですが、
document.getElementsByName("hoge")[i].checked;
をループで回して一致したところでvalueを取り出すという方法より簡単なやり方はありませんか?
528Name_Not_Found:2008/11/24(月) 15:15:20 ID:???
>>526
元のソースはグローバルスコープ
君が書いたのは関数aaa内のローカルスコープ
プログラムによっては違いが出るかもね
ソースを全部読んでみないことには何とも言えない

>>527
valueを取り出すチェックボックスが一つでいいなら
全てのチェックボックスにイベントハンドラでも仕込むとか
529Name_Not_Found:2008/11/24(月) 15:26:56 ID:y9QYlAKD
>>527
では、イベントハンドラでやってみようかと思います。
ありがとうございました。
530Name_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 で置換させたいのですが
正規表現をどのように書けばいいのか四苦八苦しています。
頭が固くて嫌になるのですが、教えていただけませんでしょうか?
531Name_Not_Found:2008/11/25(火) 01:25:26 ID:???
replace(/<a href="(.*?)">.*?</a>/g,'<a href="$1"><img src="$1" /></a>')

今適当に書いたから動くかどうかは知らん
532Name_Not_Found:2008/11/25(火) 03:11:40 ID:???
$1に余計なものまで取り込んでるね。動作には支障ないだろうけど。
あと検索部のスラッシュは要エスケープ。
533Name_Not_Found:2008/11/25(火) 05:45:31 ID:???
ん?余計なものってなんだべ
534Name_Not_Found:2008/11/25(火) 06:18:32 ID:???
'target="_blank' まで取り込んじゃってんじゃない?

これがIMGタグの方にも移植されるね

ただIMGタグにとっては無意味な属性値なのでブラウザは単に無視するだろう

だから動作には支障はないだろう

ってことかと
535530:2008/11/25(火) 14:24:21 ID:???
>>531-534
ありがとうです。十分です。
後方参照がんばります。
536Name_Not_Found:2008/11/25(火) 14:46:35 ID:X85ESXNq
IE7

divの、
onmouseoverでフェードイン、
onmouseoutでフェードアウト、
を書いたんだけど、

そのdivの子divも同じイベントに反応してハンドラが動いちゃうんだけど、
なんで???

わけわかめ

おねがいします・・・。
537Name_Not_Found:2008/11/25(火) 14:57:38 ID:???
>>536
>>2
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
538Name_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 );
539Name_Not_Found:2008/11/25(火) 15:41:36 ID:???
使ってるライブラリくらいちゃんと併記しろ
540Name_Not_Found:2008/11/25(火) 15:58:35 ID:X85ESXNq
>>539
アウト
541Name_Not_Found:2008/11/25(火) 16:05:46 ID:???
よよいのよい
542Name_Not_Found:2008/11/25(火) 18:18:11 ID:???
なにこいつ?
543Name_Not_Found:2008/11/25(火) 21:15:09 ID:???
何も糞も>>537>>539>>541あたりはいつものテンプレ脳のカスだろ。

>>536
mouseover/mouseoutイベントが子エレメントにも反応するのは正常動作。
それが嫌ならevent.targetでも見て、子エレメントなら処理を行わないようにするなどの対応が必要。
ttps://developer.mozilla.org/en/DOM/event.target
544536:2008/11/25(火) 22:02:44 ID:???
自己解決しました
545Name_Not_Found:2008/11/25(火) 23:09:05 ID:X85ESXNq
538です。

>>543
正常動作なのか・・・。

>>event.targetでも見て、子エレメントなら処理を行わないようにする
なるほどね

さんきゅー


546Name_Not_Found: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オブジェクトから要素の取得をするやり方は分かるのですが、
今回のように「挿入」する方法をわたしのチンパン脳では思いつけんのです。
諸兄のアドバイスを乞いたく存じます。
547Name_Not_Found:2008/11/26(水) 09:36:42 ID:???
要素を取得まで出来るんなら
textareaを取得して、それのvalueを書き換えれば良いよ

挿入に拘るんならinnerHTML
こっちならtextareaを使う必要もなくなるからデザインとかに懲りたい向きにはこっち
548546: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でイベントを開始しているので、最初からチェックの入っている
「ひとつめ」だけは最初からテキストボックスに文字を入れることができませんでした。
(クリックしなおさないと文字が入らない)

ページをロードした瞬間チェックが入っているか否かを取得して関数のキックは無理でしょうか?
549Name_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)
}
}
550Name_Not_Found:2008/11/26(水) 13:58:08 ID:???
なるほどonloadですか!
かなりいけそうです。どうもありがとうございました。感謝します。
551Name_Not_Found: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;

ってなことやってるので、実現できてるって言えばできてるんですが、
どうも気持ち悪いので、分かる方にご教授願いたいです。
552Name_Not_Found: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
553Name_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') );

ってことかな?
554Name_Not_Found:2008/11/26(水) 23:59:45 ID:LHihruDV
( new Nanchara( $('parent') ) ).add( $('child') );
だったか・・・、
555Name_Not_Found:2008/11/27(木) 00:15:38 ID:EVh5utMf
nanchara =new Nanchara( $('parent') );
nanchara.add($('child')).add($('Grandchild')).add('Great-grandchild').add(.....

ってできるといいなぁ
誰か考えて。
556Name_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 ) );
}
}
557Name_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 ) );
}
}
558Name_Not_Found:2008/11/27(木) 00:59:36 ID:???
途中の所失礼します

今まで、 document.getElementByTagName などを使ってページの書き換えスクリプト(繰り返し、ifなどがやや多い)を作って使用していました。
が、XPath対応ブラウザも増えてきたことですしこの際スクリプトもXPath対応にしたいと思うのですが、XPathのチュートリアルとリファレンスがあるようなサイトがありましたら教えていただけると幸いです。
559Name_Not_Found:2008/11/27(木) 01:31:56 ID:???
>>557
さすがエスパー
560551:2008/11/27(木) 06:44:22 ID:???
>>552
レスありがとうございます。


>selectで動作が不安定なのは、
>DOMのHTMLSelectElementでaddというメソッドが規定されているから。

うあそれは全く知りませんでした。
それだとやめといた方が融通が効くかな…。
今の方法で納得しておきます。
561551:2008/11/27(木) 06:45:55 ID:???
って、書き込んだ直後に思いついた。
名前変えりゃいいじゃん俺。push とか…。

またちょっと試してきます。
562Name_Not_Found:2008/11/27(木) 12:23:16 ID:???
ecmaの方から誘導されてきました。
ボタンA(キーコード53)を押すと自動で
ボタンB(キーコード55)を押すスクリプトはどう書けばいいでしょうか。
563Name_Not_Found:2008/11/27(木) 14:07:57 ID:???
ボタンBがへっこむってことだな?
「さすまた」みたいな道具で2ボタン同時押し。
564Name_Not_Found:2008/11/27(木) 17:24:41 ID:???
>>562
ブラウザ上でキー出力はできない
Windows限定でよければWSH(JScript)使えばできるだろうけど、スレチ
565Name_Not_Found:2008/11/27(木) 20:24:26 ID:???
566Name_Not_Found:2008/11/27(木) 20:44:22 ID:???
すみません
リンクをクリックした瞬間(またはクリックしたまま離さない状態)の時にも、
ステータスバーにリンク先を表示させないようにしたいのですが、Javascriptで可能でしょうか?
もし出来るなら、教えていただきたいのですが・・・

onMouseOver="status='〜〜';return true"で、ステータスバーにリンク先でない別の文字列を表示させるところまでは出来るのですが
リンクをクリックしたときにも全く表示させないようにしたいのです
567Name_Not_Found:2008/11/27(木) 20:49:29 ID:???
>>566
誰がスパムサイトの幇助なんかするかwww
568Name_Not_Found:2008/11/27(木) 21:01:32 ID:???
━━━本スレに書く事を許される者は以下の通り━━━━━
 一、ユーザに迷惑となるスクリプトを書かない者
569Name_Not_Found:2008/11/27(木) 21:06:26 ID:???
>>567>>568
すみません。社内用のホームページで利用したいのです
ソースみれば分かってしまうのは仕方ないとして、
出来る限りサーバーのフォルダ構造を見せたくないので・・・教えてもらえませんか?
570Name_Not_Found:2008/11/27(木) 21:07:58 ID:???
しつけーよ
571Name_Not_Found:2008/11/27(木) 21:12:43 ID:???
>>569
見られたら悪いフォルダ構造にするお前がおかしい

まぁ、スパムサイトだろうけどなwww
572Name_Not_Found:2008/11/27(木) 21:13:33 ID:EVh5utMf
ふらっしゅ
573Name_Not_Found:2008/11/27(木) 21:17:34 ID:???
>>569
マジレスすると人を殺すための知識を
私は善人で絶対悪用しないので教えてください!
っていう人間に教えるわけないよね

しかも社内サイトで比較的悪用される可能性が低いんだからさ
574551:2008/11/27(木) 21:53:36 ID:???
>>551の件、HTMLElement.prototype.push として解決しました。
(OperaとFirefoxで確認。IEは無視ってか条件分けして元の処理のまま)

ありがとうございました。
575Name_Not_Found:2008/11/27(木) 21:58:48 ID:???
>569
フォルダ構造を見られたくないだけなら、リンク先は常に固定にして、
「?page=ページ名」をサーバ側で解釈する方が確実ですね。
576Name_Not_Found:2008/11/27(木) 22:16:39 ID:???
ひょっとしてJavaScriptとか全然関係なくて
httpd.confの
Options Indexes FollowSymlinks MultiViews
を消せばいいだけの話なんじゃないかという気がしてきた
577Name_Not_Found:2008/11/27(木) 22:25:20 ID:???
>>573>>575
どうもすみません。ありがとうございます。

質問ばかりで申し訳ないのですが、
リンク先は常に固定して「?page=ページ名」の解釈というのは、どうやるんでしょう?
<a href="../xxx/○○.fp5">業務日報作成</a>
みたいな状態になってるんですが・・・


578Name_Not_Found:2008/11/27(木) 22:28:50 ID:???
>>577
Apacheのmod_rewriteだろJK

お前、そんなに詳しくないなら、管理とかするな
579Name_Not_Found:2008/11/27(木) 22:36:22 ID:???
>>577
……見られたくないとか以前に、基本が丸っきり抜けてるんですけど。


いまのあなたは、サンダル履きで山歩きの経験皆無なのに、
「山奥でキノコ狩りするんで毒キノコの見分け方教えて」と言ってるよーなもんです。

危なくて何も言えないですよ。ヘタなこと言ったら、
どんな間違った使われ方するかわかったもんじゃない。
遭難して死ぬのがオチ。ヘタな操作でサーバのデータぶっ飛ばすのがオチ。
580Name_Not_Found:2008/11/27(木) 22:41:25 ID:???
どうでもいいからjavascriptの話しろよ
581Name_Not_Found:2008/11/27(木) 23:01:50 ID:???
ただ煽りたいだけのテンプレ厨の自演と思われ。
582Name_Not_Found: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のようなイベントハンドラがないかと思いさがしたのですが見つけられませんでした。
以上よろしくお願いします。
583Name_Not_Found:2008/11/28(金) 01:45:25 ID:???
onSubmitとかダメなん
584Name_Not_Found:2008/11/28(金) 01:57:41 ID:???
>>582
<form action="javascript:〜" method="post">
585582: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回押さないと送信されなくなりました。
もう少しいろいろと試してみます。

お二方ともどうもありがとうございました。
586Name_Not_Found:2008/11/28(金) 12:05:30 ID:???
Javascriptを使ってFlashコンテンツのボタンをクリックとかできるかね?
587Name_Not_Found:2008/11/28(金) 12:47:12 ID:???
>>586

できるよ!
でも、Flash側(ActionScript)でも、JavaScript受け取る準備をしておかないといけない
588Name_Not_Found:2008/11/28(金) 12:58:05 ID:Qe7lx2vO
すみません、
document.getElementsByTagName
で取得するタグを複数してすることはできないんでしょうか?

document.getElementsByTagName(img,input)
document.getElementsByTagName(img|input)

などいろいろやってみましたがダメでした。
589Name_Not_Found:2008/11/28(金) 13:21:14 ID:???
>>587
やっぱりそうなるか。
じゃ既存のFlashコンテンツをJSで操作することは不可能なのか…。
590Name_Not_Found:2008/11/28(金) 13:27:49 ID:???
>>588
なんで
document.getElementsByTagName(img)
document.getElementsByTagName(input)
と2行にわけるのがダメなのか
一緒に処理したいなら、2行で取った後にまとめればよいと思うのだけど何か理由あり?
591Name_Not_Found:2008/11/28(金) 13:30:36 ID:???
>>590
説明不足ですみません。その方法でもいいのですが、とあるライブラリを
改造している為、最終的に1つの配列にまとめる必要があります。

どうやらdocument.getElementsByTagNameで取得したものは配列ではないようで、
concatで結合することができませんでした。
592Name_Not_Found:2008/11/28(金) 13:34:14 ID:???
>>591
getElements〜で返ってくるのはNodeList。

んで
>最終的に1つの配列にまとめる必要があります
本当に配列でいいの?
一つのNodeListじゃなくて?
配列でいいんだったらNodeListを配列に変換すればいいだけだけど
593Name_Not_Found:2008/11/28(金) 13:35:50 ID:???
一つずつ取り出して、配列に突っ込めばいいじゃん
594Name_Not_Found:2008/11/28(金) 13:57:06 ID:???
>>592
勝手に混乱してました。。ごめんなさい。
最終的には1つのNodeListでした。

「NodeList 結合」などで検索しましたが、NodeList同士を結合する関数は
用意されていないんでしょうか?
595592:2008/11/28(金) 14:47:02 ID:???
>>594
うーんNodeListをまとめる方法ないんじゃないかなあ
少なくとも俺は知らないんで他の識者の皆さんに任せた
596Name_Not_Found:2008/11/28(金) 14:54:28 ID:???
まず、getElementsByTagNameで取得したNodeListにすべて共通のclassを付加して
その後に、getElementsByClassNameですべてのNodeListを取得すればいい

getElementsByClassNameが実装されてないブラウザでは、ライブラリがあるからそれを利用すればいいよ
597594:2008/11/28(金) 15:09:26 ID:???
>>595
いろいりご指摘頂きありがとうございました!

>>596
ありがとうございます。
なるほど、一旦classを付けるんですね。
試してみます。
598Name_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>
599Name_Not_Found: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 属性値がつくことになるんで
思わぬところで副作用がでる可能性が…
600Name_Not_Found:2008/11/28(金) 16:06:28 ID:???
>>599
>思わぬところで副作用がでる
というかNodeListではあるけどclass付与したときの静的キャッシュのような扱いになるから
それを理解して使わないとまずいよね
あと一時的に付与したclassを除去する関数もいるだろうな
601Name_Not_Found:2008/11/28(金) 16:53:14 ID:???
>>596
ライブラリのgetElementsByClassNameって戻り値はNodeListじゃなくて配列じゃない?
602Name_Not_Found:2008/11/28(金) 18:56:22 ID:???
OBJECTタグで読み込んだMFC ActiveXコントロールと、JavaScriptと連携して、
ActvieXコントロール側で保持している文字列を、サーバにPOSTしようとしています。

JavaScript側で、MFC ActiveXの保持している文字列を取得するには、
どういった方法があるのでしょうか。
603Name_Not_Found:2008/11/28(金) 19:10:24 ID:???
>>601
実装による
ネイティブの getElementsByClassName がある場合、それを使うよう実装されている場合は NodeList をそのまま返すものが多い
ライブラリ内でエミュレートしているものはだいたい Array に検索結果を突っ込んでいるので、Array オブジェクトがそのまま返ってくる

要は、ライブラリがしっかりドキュメントなんかで「絶対 Array 返す」とうたっていない場合は返値のオブジェクトが何かわからんので注意しろ、ってこと
604Name_Not_Found:2008/11/28(金) 20:13:51 ID:???
>>603
いや>>596がIEの場合はライブラリ使えって言ってるからね
605Name_Not_Found:2008/11/28(金) 21:31:18 ID:???
>>587
ActionScript → JavaScript は ExternalInterface.call で
可能とは知ってたけど、逆も出来るん?

元質問者とは違うけど、自分も教えて欲しいです。
606Name_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の中に/を含む文字列があったら↑の中のチェックで引っかかる
ようにしたいんです、、、

ご助力いただけますとありがたいですっ

607Name_Not_Found:2008/11/29(土) 08:27:11 ID:???
if ( document.form.com.value.indexOf("/") != -1 ) alert("'/' があるよ");
608Name_Not_Found:2008/11/29(土) 08:28:25 ID:???
if (document.form.com.value.indexOf("/") >= 0)
609Name_Not_Found:2008/11/29(土) 09:51:55 ID:???
>>605
flash.external.ExternalInterface.addCallback('hoge', this, moge);
のようになってるFLASHの場合、JSで hoge() を実行すると、
FLASHの moge() が実行される。
610文系政経の学生さん:2008/11/29(土) 16:52:20 ID:???
例えば0〜9999から重複しない値を得るには
重複してないか確認するとか
全数を配列に記憶しておくとか
スマートじゃないのでw
あらかじめ筋を立てておくといいんじゃないかな?

例えば
1桁は0〜9の10個の数字のArrayとする。
これを必要数の桁用意する。
各桁を任意の順にsortしておく
この各桁毎に10数えるカウンタを用意する
後はこのカウンタごとにカウンタの示すArrayの要素の値を
与えていけば…
コードで書けって?wだって今やっつけで書き込んでるだけだもん
ていうか、どこのレス?wwwスルーしてヨシ!w
611Name_Not_Found:2008/11/29(土) 21:23:51 ID:olu7+PcJ
f1というidのiframeがあったとして
document.ElementById("f1")で取得したiframeのオブジェクトから
そのiframe内に表示しているwindowオブジェクトを取得するには
どうしたらいいですか?
612611:2008/11/29(土) 21:25:46 ID:olu7+PcJ
document.ElementById → document.getElementByIdでした
613Name_Not_Found:2008/11/30(日) 00:37:01 ID:paqqJfOA
setTimeout()に0を指定して、()で囲んだ関数リテラルを渡してるスクリプトを
発見したんですが、この書き方のメリットって何でしょう??

setTimeout((function(){
 //実行分
}), 0);
614Name_Not_Found:2008/11/30(日) 00:37:48 ID:???
ない
615Name_Not_Found:2008/11/30(日) 00:55:16 ID:???
>>613
JavaScript実行しっぱなしだとブラウザが動かなくなるっしょ
setTimoutとか使って一瞬でもJavaScript終了してやるとブラウザ固まらなくてユーザーの不満度が減る
この目的のためには第二引数は0ミリ秒指定でもオッケーなんだけど、それが各ブラウザの仕様として担保されてる事なのかどうかは俺は知らない
616Name_Not_Found:2008/11/30(日) 01:29:12 ID:???
誤解を招きそうな書き方になったが訂正はしない
617Name_Not_Found:2008/11/30(日) 08:26:37 ID:???
UI スレッドのキューに push してると考えればいいと思う

var a = [];
for (var i = 5; i--; ){
setTimeout(function() { a.push(i); }, 0);
}

何ループにして何秒かかっても結果は全部 0 になる
618Name_Not_Found:2008/11/30(日) 09:10:59 ID:paqqJfOA
>>615-617
ありがとうございます!!
ずっとsetTimeoutに渡された関数に気をとられてたんですが
setTimeout自体の動作に理解が足りてなかったです。。
めっちゃ助かりました。
619Name_Not_Found:2008/11/30(日) 09:22:52 ID:???
皆さんが、1msecでもjavascriptの実行時間を早くするために心がけていることはありますか?
620Name_Not_Found:2008/11/30(日) 10:10:51 ID:???
変な書き方をしないで、自分以外の人にも読んでもらいやすくする
621Name_Not_Found:2008/11/30(日) 10:27:44 ID:???
例えば、imgエレメントにhref属性を付加するならsetAttributeですけど、onclickなどのイベントハンドラを付加するにはどうしたら良いのでしょう?
(imgNode.onclick = "hogehoge();";みたいじゃない書き方を探しています)
622Name_Not_Found:2008/11/30(日) 10:44:25 ID:???
Q13?
623Name_Not_Found:2008/11/30(日) 10:51:00 ID:???
>>622
あ、テンプレにあったんですね
すみません

でも、Firefoxなんですよねぇ
624Name_Not_Found:2008/11/30(日) 13:05:12 ID:???
>>619
信じられないくらいに遅いIEでの文字列連結を考え、
大量に文字列を連結する場合には、配列に入れてからjoinさせるという定番対策とか。
625Name_Not_Found:2008/11/30(日) 13:38:41 ID:???
>>623
FFxなどDOM Eventに準拠したブラウザではaddHandler()、
IEはattacheEvent()。あとは検索すれ。
626Name_Not_Found:2008/11/30(日) 13:55:45 ID:???
>>619
有名なプログラムの本の高速化の章に書いている言葉を送ろう

高速化しない。
627Name_Not_Found:2008/11/30(日) 15:00:29 ID:???
>>625
> addHandler()
すまんがこれはどのインターフェイス? DOM2? DOM3?
628Name_Not_Found:2008/11/30(日) 15:02:36 ID:???
>>626
そんなことが書いてあるのかw

だけど本当そうだよね、拘りすぎるとドツボにはまる。
音質に拘るのと似てる気がする。
629Name_Not_Found:2008/11/30(日) 15:08:46 ID:???
>>628
実際JavaScriptネタでググってみると、
時代遅れの酷いコードが上位に来る事も頻繁にあるので、
もうちょっと考えてコードを書いて欲しいなとは思うね。
630Name_Not_Found:2008/11/30(日) 15:17:33 ID:???
>>626
『プログラミング作法』にも書いてあったな、ソレ
631Name_Not_Found:2008/11/30(日) 15:19:11 ID:???
否、高速化はするべきだ
632Name_Not_Found:2008/11/30(日) 17:33:56 ID:???
iframeでhtmlのソース読み込めるんだな
これでやりたい放題できそうだ
633Name_Not_Found:2008/11/30(日) 19:58:20 ID:???
>>632
マジ?それ外部サイトのHTMLでは無理でしょ?それできたらマジすごいんだけど。
634Name_Not_Found:2008/11/30(日) 21:58:29 ID:???
>>632
初耳だ。それをやろうとして挫折したので是非知りたい
どうやるんだ?あ、もちろんドメインは別で。
635Name_Not_Found:2008/11/30(日) 22:04:01 ID:???
>>633,634
お前らはAjaxライブラリ群を知らんのかwwwざまぁ
636Name_Not_Found:2008/11/30(日) 22:36:42 ID:???
>>635
ajaxライブラリに何を使おうが、ブラウザの制限なのだからサーバを介さない限り
外部サイトのHTMLはJSではアクセスできないでしょ? 何か勘違いしてないかい?
637Name_Not_Found:2008/11/30(日) 22:37:20 ID:???
>>636
アクセスできるよw
638Name_Not_Found:2008/11/30(日) 22:44:27 ID:???
>>637
だからそれはサーバを介した中継プログラムを使っているんでしょう。
技術的に無理なんだって。本当に仕組みわかって話していますか?
639Name_Not_Found:2008/11/30(日) 22:44:54 ID:???
>>638
javascriptだけで出来るのにwww
640Name_Not_Found:2008/11/30(日) 22:48:55 ID:???
もしかしてjsonpのこといっているのかい?今話しているのはただのHTMLの
ことだよ。それはできないと思う。
641Name_Not_Found:2008/11/30(日) 22:50:32 ID:???
できたとしてもセキュリティホールだからなぁ…
642Name_Not_Found:2008/11/30(日) 22:51:34 ID:???
生粋のjavascriptだけでw
643Name_Not_Found:2008/11/30(日) 22:54:33 ID:???
約一名性格の悪い嘘つきがいるようだ。ソースも示せないのだから無視でいいよ。
644Name_Not_Found:2008/11/30(日) 22:57:57 ID:???
自分が知らないと、嘘とするw

頑張って、prototype.jsと睨めっこしてなよ
645Name_Not_Found:2008/11/30(日) 23:17:54 ID:???
嘘つきじゃなくて勘違いなんだろうね。
646Name_Not_Found:2008/11/30(日) 23:23:24 ID:???
>>644
「自分が知らない」じゃなくて「世界中の人が知らない」だと思うw
647632:2008/11/30(日) 23:32:24 ID:???
一応言っておくけど、635ではないからな

ローカルでしか試してない。たぶん無理だと思う
昨日からjs始めたばっかりで、よくわかってない
iframeをelementCreateしてbodyあたりにappendChild
onreadychangeで読み込み終了ならiframeのdocument.all[0].innerHTMLみたいな実装をした
648Name_Not_Found:2008/11/30(日) 23:48:03 ID:???
635は今頃一生懸命弁解を考えているだろうな…。まぁ逃げるか。
649Name_Not_Found:2008/12/01(月) 00:34:47 ID:???
>>635
SSIが使える鯖で、.htaccess使ってました><
こんなオチ?
650Name_Not_Found:2008/12/01(月) 00:37:34 ID:???
急にレスが増えたと思ったらなんだこりゃ
651Name_Not_Found:2008/12/01(月) 01:00:12 ID:???
ただのかわいそうな子
652Name_Not_Found:2008/12/01(月) 02:22:47 ID:FN5hPgGj
firefox を使って下記のページで jquery の ajaxComplete のテストを試しているのですが

http://www.openspc2.org/JavaScript/Ajax/ref/jQuery/ver1.0.3/ref/Ajax/ajaxComplete/sample/index.html

二回目以上押すと、「通信を終了しました」という alert が何度も表示されます。
押せば押すほど、alertの数が増えていきます。
IE7で試すと、正常に一回きり表示されるのでブラウザの問題だと思っています。
なにかアドオン等が悪さしているのかと思うのですが、ほかに同じ状況になる人いますでしょうか?
ちなみに firefoxのバージョンは 3.0.4 になります。

653Name_Not_Found:2008/12/01(月) 02:39:26 ID:???
>>652
jquery触ってないから何に使うのか良く分からんけど
とりあえずoperaとsafariでも増えるね
ライブラリが悪いのか使い方が悪いのか知らんが
654Name_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("http://hogehoge.com")
else
window.location="http://hoge.com"

って書いてしまうと、IE4以上のIEすべてがリダイレクトされますが、IE7を除外したい場合
だとか、IE6だけをリダイレクトしたいときにはどのように書けばいいんでしょうか?
655Name_Not_Found:2008/12/01(月) 17:08:07 ID:???
browser_version>=4を書き換えればいいんじゃないですかね
656Name_Not_Found:2008/12/01(月) 17:11:06 ID:???
>>654
どうでもいいけど、何で末尾にセミコロンがないんだ?

IE6だけをリダイレクトしたいんなら

if ((navigator.userAgent).indexOf("MSIE 6.0") > -1)
window.location.replace("http://hogehoge.com");
else
window.location="http://hoge.com";
657Name_Not_Found:2008/12/01(月) 17:44:05 ID:???
セミコロンが無くてもなんか動作はしていたの気付きませんでした…
if (browser_type=="Microsoft Internet Explorer"&&browser_version<=6)
こんなんかな〜?とか思ったけど、>>656さんのやってみたら
バチリいけました、ありがとうございます。
658Name_Not_Found:2008/12/01(月) 18:07:32 ID:???
セミコロンがないと、JavaScriptインタプリタが改行後にセミコロンがあると
解釈して勝手にセミコロンを入れるから実行はできるが、バグの元になるぞ
659Name_Not_Found:2008/12/01(月) 18:50:15 ID:???
>>653

たしかに opera でもなりますねぇ。
一応説明では ajax の呼び出しが完了後に呼ばれるので
一回のみのはずなんですが。。。

もう少し調べてみます。
660652:2008/12/01(月) 19:16:46 ID:???
っていうか ajaxStart() 自体が複数回呼び出されてるみたいです
661Name_Not_Found:2008/12/01(月) 20:50:47 ID:???
>>660
一回コレを呼ぶ必要があるんじゃない?
$("#result").unbind();
662661:2008/12/01(月) 20:53:41 ID:???
一回ってか毎回ね
663652: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();
});


ありがとうございます!
664Name_Not_Found: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のみ
665664:2008/12/02(火) 22:12:05 ID:???
自己解決しました
DIVタグの周りにFORMタグをかぶせて、
document.formsのsubmit()でいけました。
666Name_Not_Found: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??
667Name_Not_Found:2008/12/03(水) 03:44:41 ID:???
>onclick="hoge()"だったら返却値がfalseなら飛ばないんだろうなぁと思う

のならonclick="true"やonclick="false"にすればどうなるか試してみればいいんじゃないかな
668Name_Not_Found:2008/12/03(水) 04:10:22 ID:???
書籍スレが死んでるのでこちらで質問させてください。
まったくの初心者で一からJavaScriptについて学びたいので教本になるものを探しているのですが、
・基礎 Ajax + JavaScript
・基礎からのJavaScript
・WebクリエイティブのためのDOM Scripting
これらの中から選ぶならどれが良いでしょうか?
また、他にもお勧めのテキストなどあれば教えてください。
669Name_Not_Found:2008/12/03(水) 04:36:26 ID:???
>>668
他のプログラミング言語の経験はありますか?
670668:2008/12/03(水) 04:53:10 ID:???
>>669
まったくの初心者で他のプログラミング言語の経験もありません。
HTML+CSS手打ちでのサイト作成、DW操作ができる程度です。
671Name_Not_Found:2008/12/03(水) 07:42:43 ID:???
全部読めばいいよ
672Name_Not_Found: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]);
}

こんなことをいろいろやってます。
673Name_Not_Found:2008/12/03(水) 09:50:52 ID:???
基礎からのJavaScriptしかないじゃん。
674668:2008/12/03(水) 10:05:13 ID:???
>>673
この3冊は書籍スレの過去レスから調べたものです。
基本は押さえていると思い挙げましたが、他にお勧めの本があるかと思い質問いたしました。
初心者はコレ読めば良いだろうなと感じたもので結構ですのでお教えください。
675Name_Not_Found:2008/12/03(水) 14:51:13 ID:???
オレのオススメは
「JavaScript+Ajax プログラミング・テクニック」佐藤信正著 メディア・テック出版
これ読めばJavaScriptの各種リテラルとかオブジェクトの関係とかがよく分かると思う。
比較的情報が新しいし、JavaScript全体を見渡すという点では初心者でも読みやすいよ。
ただしもっと奥深く知りたい場合は、他の本の方がいいかも。

本当なら初心者だろうが何だろうが、サイ本読めと言いたいけどね。
676Name_Not_Found: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行目が取れたりしててよくわかりません。
677Name_Not_Found:2008/12/03(水) 16:33:33 ID:gwGRSZ+n
>>672
DOMを使ってDIV要素などの文字を格納した要素を生成し、
Canvasの領域上にうまく重なるように、
座標を指定した上で、その要素をappendする。

CANVAS使ってないんじゃね?
678668:2008/12/03(水) 17:08:44 ID:???
>>675
レスありがとうございます。
サイ本読むのが1番だとは思うのですが、最初にサイ本読むと
わけもわからずやる気が無くなりそうで恐れてます。
情報が新しいというのは良いですね。早速参考にさせていただきます。
679Name_Not_Found:2008/12/03(水) 17:35:42 ID:???
getComputedStyle を高速化する方法って何かある?
document.defaultView をキャッシュしても遅いもんは遅い

DOM ツリー操作 → getComputedStyle → DOM ツリー操作
にならないよう気をつけてもダメなもんはダメ

どうしたらいいか知ってる人……いる?
680Name_Not_Found:2008/12/03(水) 19:59:05 ID:???
>>679
便乗だが、こういうパフォーマンスチューニングでこれは読んどけっていう
サイトや本ってないですか。
681Name_Not_Found:2008/12/03(水) 22:44:48 ID:???
昔は、WEBページに動き・見た目を良くする為の1つの方法としてJavaScriptが
使われて来たと思いますが、現在はFlash / ShilverLight等の出現もあってJavaScriptに

需要も含め求められる事はかなり少なくなって来ている気がするのですが、
実際のところどうなんでしょうか?


・入力値チェック
・ブラウザの制御
・Ajax

682Name_Not_Found:2008/12/03(水) 22:46:28 ID:???
・ロマン
683Name_Not_Found:2008/12/03(水) 22:47:49 ID:???
javascriptの歴史の中で今が最盛期
684Name_Not_Found:2008/12/03(水) 22:52:29 ID:gwGRSZ+n
>>681
レスありがとうございます。
サイ本読むのが1番だとは思うのですが、最初にサイ本読むと
わけもわからずやる気が無くなりそうで恐れてます。
情報が新しいというのは良いですね。早速参考にさせていただきます。
685Name_Not_Found:2008/12/03(水) 23:10:19 ID:???
あればテンプレ入りしてるんじゃないかな、うん
686Name_Not_Found:2008/12/04(木) 07:45:17 ID:???
>>681
Flashは「四角い領域の中だけ」しか自由にならない。
「全ページがFlash」のページにする覚悟があるならいいけど。
Silverlightは言語JavaScriptじゃないの。もう1つあるらしいが。
687Name_Not_Found:2008/12/04(木) 13:25:31 ID:???
>>684
初めてのJavaScriptの方読んでみたら?薄いからすぐ読めるし。
688Name_Not_Found:2008/12/04(木) 14:28:57 ID:???
Ajax使えよ
689Name_Not_Found:2008/12/04(木) 15:54:43 ID:???
behavior面白いな
690Name_Not_Found:2008/12/04(木) 16:04:08 ID:s4MApLgV
>>686
Siliverlight1でJavaScript使えるけど、
Flashと同じような働きを期待するならSL2(C#)を使うしかない。
仕事でちょこっとだけやったけど、結構しんどかった。
すれ違いごめん。
691Name_Not_Found:2008/12/04(木) 23:55:59 ID:fCeXxTmK
var a = function(){ /* 実行文 */ };
var b = (function(){ /* 実行文 */ });


のように関数リテラルを()で囲むのと囲まないのでは何が違うんでしょう?
たとえばbの場合は実行速度が速いとかメリットがあるんでしょうか??
692681:2008/12/05(金) 00:15:00 ID:???
>>686
なる程、そういう捕らえ方もありますね。
因みにですがinnerHTMlを使って動的にFlashの表示位置を移動させる事とかってJavaScriptで
制御できますか?
693JavaScript+CSS 初心者: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;
}

694Name_Not_Found:2008/12/05(金) 01:40:31 ID:???
object要素の動的リサイズについて教えてください。

function onResize()
{

}
window.onload = onResize;
window.onresize = onResize;

関数に入れるべきものが分かりません。
document.getElementById("test").width 等でサイズが変わらないので困っています。
695Name_Not_Found:2008/12/05(金) 01:49:57 ID:???
>>693
5回ほど読んだがどこにJavaScriptが関係するのか分からない
696Name_Not_Found: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" />

あほか
697Name_Not_Found:2008/12/05(金) 04:53:16 ID:???
俺ルールではrel, type, hrefの順番で書かないと爆死する
698Name_Not_Found:2008/12/05(金) 09:11:14 ID:???
>>692
innerHTMLでobject/embedを書き換えるなんて毎回最初から
始まってしまうので役に立たないだろ。位置だけ動かすなら
position:absoluteの要素に入れておいてJavaScriptでXY座標を
変更するのが定石。過去スレ全集に山のようにサンプルあるから。
>>694
断片だけ示されてもそこだけからは判断できない。
動かない最小限の完全な例を作って貼る。何か簡単なとこで勘違い
して間違えているんだと思うがそれが何かはESPじゃないので
予想できないね。
699Name_Not_Found:2008/12/05(金) 09:53:52 ID:???
>>696
ありがとうございます。解決しました。


htmlの場合だと""で囲まなくてもWEBページは理解してくれるのに、
CSSの読み込みを宣言する際には囲まなくはならないのでしょうか?
ちょっと不思議です。

700Name_Not_Found:2008/12/05(金) 10:03:41 ID:???
>>699
xhtmlは""で囲まなくてはいけない。
htmlでも最近は囲む人が増えてきている。
今のうちに癖をつけておいたほうがいいぞ。
701Name_Not_Found:2008/12/05(金) 10:31:30 ID:???
>>699
XML, XHTMLでは「囲まないものは不正」
HTMLでは「何は囲まなければ不正か厳密に決まっている」
不正なのに囲まなかった結果がどうなるかは「運まかせ」
つまり自分の手元ではたまたま動いても公開したページを
見ている人のブラウザではだめかも知れない。そんなのは
Web制作者として論外。修行し直してこい。
702679:2008/12/05(金) 10:39:54 ID:???
>>679 でした質問なんだが
誰にもわからない、ということで FA?
703Name_Not_Found:2008/12/05(金) 12:17:45 ID:???
>>702
「高速化」は難しそうだね。最初に1回だけgetComputedStyleを呼んで
あとは変形内容をもとに自前で変化を計算するとか。でも変更内容に
よっては自前で計算するのが困難な値もあるからね。
704699:2008/12/05(金) 12:27:47 ID:???
>>700 >>701
ご丁寧にご指摘いただきありがとうございます。
今後気を付けます。
705Name_Not_Found:2008/12/05(金) 12:27:55 ID:???
>>703
> でも変更内容によっては自前で計算するのが困難な値もあるからね
まさにそういう値を使わざるをえない状況なので、仕方ないのかー

Fx3 はマシだけど、Fx2 の getComputedStyle が遅すぎるので……
もう少しで Fx2 のサポート終わるから、シェアが落ちるのを気長に待つしかないのかな
706Name_Not_Found:2008/12/05(金) 12:58:45 ID:???
var elt = document.getElementById('nanika');
var cs = getComputedStyle(elt, null);
elt.styleの変更はcsで分かるから一緒に保存しとくのもだめ?
707Name_Not_Found:2008/12/05(金) 13:17:13 ID:???
言っておくけど getComputedStyle で取得したオブジェクトのプロパティにアクセスした時に
反映待ちの DOM 操作が一気に開始されるんだぞ
708699:2008/12/05(金) 13:42:59 ID:???
>>706
返ってくるプロパティって live だっけ?
(値変更が発生したらプロパティへ即座に反映される)

>>707 のいうとおりなら live だから、もしかしたらダメかも

ただ、キャッシュしたらどうなるかは試してなかったから、ちょっとやってみる
709Name_Not_Found:2008/12/05(金) 14:02:55 ID:???
分からないなら無理に高速化なんてせずに時が解決してくれるのを待ちなさい
710Name_Not_Found: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="http://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の配列でも作って参照したらいい」
と指摘され、あちこち調べてみたのですが掴み所がわかりません。
よろしくお願いします。



711Name_Not_Found:2008/12/06(土) 07:21:23 ID:???
悪い、CSS板のほう質問の意図読み間違えてた
配列関係ないや

外部ファイルに↓みたいな関数つくって

function loadAPI(){
document.write('<script src="http://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>

みたいにしてヘッダに埋め込むのが簡単でいいと思うよ
712Name_Not_Found:2008/12/06(土) 07:32:19 ID:???
>>711
イメージがつかめました。
本当にありがとうございます!!

713Name_Not_Found:2008/12/06(土) 08:35:27 ID:???
>>711
712です。無事動きました。
メンテナンスが楽になります。
ありがとうございました。
714Name_Not_Found:2008/12/06(土) 17:38:04 ID:???
一度作っちゃえば grep 置換で一発だと思うが
715Name_Not_Found:2008/12/06(土) 22:26:50 ID:???
mootoolsの v1.11をダウンロードできるところはありますでしょうか?

よろしくお願いします。
716Name_Not_Found:2008/12/06(土) 22:36:21 ID:???
http://mootools.net/download/get/mootools-1.1.1-core-yc.js

公式にあるじゃん
アホなの?死ぬの?
717Name_Not_Found:2008/12/07(日) 01:33:01 ID:???
1つのHTML文書のp要素などを日本語と英語の両方並べて書いて、lang属性(enかja)によって
例えばボタンを押すなどで、すべての要素について日本語か英語の文どちらかを表示できるようにしたいのです
調べたところ表示・非表示はstyle.displayをblockかhideかで切り替えるようなのですが
「すべての要素」の「lang属性を指定」する方法がわかりません
それともまったく別の賢いやり方があるのでしょうか(そもそも別ファイルにするとか)
718Name_Not_Found:2008/12/07(日) 02:16:04 ID:???
>>717
IEサポートしないなら、
*[lang|="..."] { display: ... } とか書いた外部スタイルシートを2種類用意して、
document.styleSheets[n].disabledを切り替えるとか。

> そもそも別ファイルにする
俺ならこうします。
719Name_Not_Found:2008/12/07(日) 03:37:01 ID:???
>>718
ありがとうございます

>> そもそも別ファイルにする
>俺ならこうします。
うーんそうですか
なにせファイル数が多い+文書中で日本語と英語共通(表示切替不要)の部分も多いため
なんとか1ファイルで切替ができれば、と思ったのですが
720Name_Not_Found:2008/12/07(日) 04:04:07 ID:???
>>717
<script>
function langchange( gengo ) {
var tagname = document.body.getElementsByTagName("*");
for ( i = 0; i < tagname.length; i++ ) {
if ( tagname[i].lang ) {
if( tagname[i].lang == gengo ) { tagname[i].style.display = "block"; }
else { tagname[i].style.display = "none"; }
}
}
}
</script>

<h2 lang="en">My name is Obama.</h2>
<h2 lang="ja">私は小浜です。</h2>
<p lang="en">Yes, we can!</p>
<p lang="ja">俺たちは出来るんだぜ!</p>
<p><input type="button" value="日本語" onclick="langchange( 'ja' )" />
<input type="button" value="英語" onclick="langchange( 'en' )" /></p>

これではだめかい?
721Name_Not_Found:2008/12/07(日) 04:29:37 ID:???
getElementByID()

document.all()

どっちを使って要素にアクセス(innerHTMLの書き換え等)を行った方が良いのでしょうか?
722Name_Not_Found:2008/12/07(日) 05:11:01 ID:???
723Name_Not_Found:2008/12/07(日) 06:33:04 ID:???
W3C標準のほう
724Name_Not_Found:2008/12/07(日) 06:43:34 ID:???
動く方
725Name_Not_Found:2008/12/07(日) 09:17:18 ID:???
これは何でIEだけ表示出来ないのかわかる人いる?

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>hogehoge</title>
<script src="http://maps.google.co.jp/maps?file=api&v=2&key= 1234hogehogehoge…"
type="text/javascript"></script>
<script type="text/javascript">

//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(12.345670000000003, 123.456789), 16);

var point = new GLatLng(12.345670000000003, 123.456789);

var offset = new GSize(0, -20);

map.openInfoWindowHtml(point,'<a href="http://www. hoge.jp/" target="_blank">hogehoge</a><br>なんれれすか<br> なんれれすかなんれれすか', offset)
})

}
}
//]]>
</script>
726Name_Not_Found:2008/12/07(日) 09:19:38 ID:???
あ、もちろん表示させる部分には

<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 450px; height: 300px"></div>
</body>

な感じで入ってます。
オペラも見れないんだっけ?
727Name_Not_Found:2008/12/07(日) 19:35:30 ID:???
>>720
あ、ありがとうございます・・・
見事望んでいた動作が実現できました
>>720さま、本当にありがとうございました
728721:2008/12/07(日) 19:45:06 ID:???
>>722
ありがとうございます。今後は、getElementById()を使う事にします。
729Name_Not_Found:2008/12/08(月) 09:19:40 ID:vh6OrxB2
Javascriptの関数一覧表があるサイトのURLを教えて下さい。
730Name_Not_Found:2008/12/08(月) 09:21:32 ID:???
731Name_Not_Found:2008/12/08(月) 09:50:20 ID:???
なんだ罠か
732Name_Not_Found:2008/12/08(月) 09:52:28 ID:vh6OrxB2
よく分からないんですが
var suuji= 100
hage = suuji.関数()

のような記述がJavascriptによくありますが
なんで変数と関数をドットで繋ぐのですか?

一般的なプログラムの場合は
hage = 関数(suuji)
となると思うのですが
ドットで繋いだ場合は別の意味になるのでしょうか?
733Name_Not_Found:2008/12/08(月) 10:29:00 ID:???
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
734Name_Not_Found:2008/12/08(月) 10:32:13 ID:???
OOP を勉強してから出直しな
735Name_Not_Found:2008/12/08(月) 11:08:52 ID:???
>>732
ドット演算子なんて一般的なプログラムのほとんどで使うと思うんだけども
736Name_Not_Found:2008/12/08(月) 11:31:10 ID:???
長いですがすみません。

<HTML>
<HEAD>
<TITLE>test</TITLE>
<SCRIPT SRC="jformat.js" LANGUAGE="JavaScript"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">

<!--
//
function Zprob(Z) {
A = 0.000005383; B = 0.0000488906; C = 0.0000380036;
D = 0.0032776263; E = 0.0211410061; F = 0.049867347;
XZ =(((((Z*A+B)*Z+C)*Z+D)*Z+E)*Z+F)*Z+1;
xxval=-16*Math.log(XZ);
prob =Math.exp(xxval);
if (prob>1) {prob=0};
return prob;
}
//
737Name_Not_Found:2008/12/08(月) 11:31:40 ID:???
function tscore() {
xsd=1;
xmean=eval(document.tscorefrm.mean.value);
xsd=eval(document.tscorefrm.sd.value);
xdata=eval(document.tscorefrm.data.value);
xzval=0;
xtscore=50;
if (xsd>0) {
xzval=(xdata-xmean)/xsd;
xtscore=xzval*10+50;
}
idz=0;
if (xzval<0) {idz=1;xzval=Math.abs(xzval)}
xpval=Zprob(xzval)*50;
if (idz==1) {xpval=100-xpval}
//
738Name_Not_Found:2008/12/08(月) 11:32:52 ID:???
subwin=window.open("","output","toolbar=no,location=no,directobries=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,width=600,height=400");
if (navigator.appVersion.charAt(0)>=3) {subwin.opener=self};
with(subwin) {
document.clear();
msg ="<HTML><HEAD><TITLE>分析結果</TITLE></HEAD>";
msg+='<BODY BGCOLOR="#ffffff" TEXT="#000000">';
msg+="<H3><TT>偏差値の計算<BR>";
msg+="--------------------------------<BR>";
msg+="平 均 値:"+xmean+"<BR>";
msg+="標準偏差:"+xsd+"<BR>";
msg+="<P>デ ー タ:"+xdata+"<BR>";
msg+="<P>z得点 :"+format(xzval,7,3)+"<BR>";
msg+="偏 差 値:"+format(xtscore,7,1)+"<BR>";
msg+="上位"+format(xpval,5,1)+"%内にいます。<BR>";
msg+="--------------------------------</TT></H3>";
msg+="</BODY></HTML>";
document.write(msg);
document.close();
}
if (navigator.appVersion.charAt(0)>=3) {subwin.focus()};
}
739Name_Not_Found:2008/12/08(月) 11:34:02 ID:???
//
function setfocus() {
window.document.tscorefrm.mean.focus();
}
//
function msgDel() {
if (confirm("入力データを消去します。")) {
document.tscorefrm.mean.value="";
document.tscorefrm.sd.value="";
document.tscorefrm.data.value="";
setfocus();
}
}

// -->

</SCRIPT>
</HEAD>

オブジェクトを指定してくださいエラーが出ます。すでに2か所ほどミスを
発見しなおしたのですが、まだエラーが出てしまいます。どこがおかしいのでしょうか?
よろしくおねがいします。
740Name_Not_Found:2008/12/08(月) 11:35:39 ID:???
それぞれの関数についてテストしてみたの?
741Name_Not_Found:2008/12/08(月) 15:53:13 ID:zbU2kcRG
>>732
ドット演算子は「親から子、子から孫へ識別子を辿る」
と考えると分かりやすい。(かな?)
直接アクセスできる関数(オブジェクト)と
親から辿らないとアクセスできない子関数(メソッド)との違い。
742Name_Not_Found:2008/12/08(月) 15:54:19 ID:zbU2kcRG
>>736
format関数が定義されていない。
参考にした原文には定義されてるはずだから探してみたら。
743Name_Not_Found:2008/12/08(月) 18:13:09 ID:???
>>732
基本型には対応したオブジェクトクラスがあって、これらがラッパーになってる。
例えば数値(100とか)なら、指定されたプロパティやメソッドにアクセスすると
JavaScriptがその数値に対応したNumberラッパーオブジェクトを内部的に生成する。
そして、数値の代わりにこのNumberオブジェクトを使用する。
このオブジェクトにはプロパティやメソッドが定義されてるから、それらを使用できる。

ちなみにこの内部的に生成されるNumberオブジェクトは一時的なものだから、
プロパティやメソッドへのアクセスが終了すれば不要になるから、
自動的にシステムによって回収されてしまう。
この内部的な生成・破棄はJavaScriptの内部で勝手に行なわれるので
ユーザはいとも数値をオブジェクトのように扱うことができる。

それが気持ち悪いなら、下記のように数値オブジェクトを自分で生成して使ってみたら。
suuji = new Number(100);
744Name_Not_Found:2008/12/08(月) 18:37:42 ID:A5kjxiVF
jQueryを使って、iframeの読み込まれる側から、親ウインドウの要素を
操作する事ってできますか?できるとしたら、どのようにするのでしょうか?
745Name_Not_Found:2008/12/09(火) 03:03:26 ID:???
その@(改行が多すぎると弾かれてしまう為)

なぜか次のCSSでテーブルの外枠に何も線(+色)が描画されません。
一体なぜでしょうか?

【HTML】
<table class="table_class">
<tr>
<td class="AAA">
A
</td>
<td class="AAA_2">
B
</td>
</tr>
</table>
746Name_Not_Found:2008/12/09(火) 03:05:19 ID:???
そのA(改行が多すぎると弾かれてしまう為)

【CSS】
table.table_class
{
border-width:2px;
border-color:red;
}
td.AAA
{
width: 200px;
height: 17px;
text-align: left;
border: 2px blue solid;
}
td.AAA_2
{
width: 400px;
height: 17px;
border: 2px blue solid;
}
747Name_Not_Found:2008/12/09(火) 03:05:43 ID:???
>>745
なんでここで聞くんだよ

CSS初心者スレッド=4th=
http://pc11.2ch.net/test/read.cgi/hp/1218200382/
こっちでやれカス
748Name_Not_Found:2008/12/09(火) 03:26:07 ID:???
>>745
スレタイも読めねぇのか、このカス
749Name_Not_Found:2008/12/09(火) 04:02:35 ID:???
もうちょっと穏やかに煽れないのか?
750Name_Not_Found:2008/12/09(火) 14:01:01 ID:jHOv9JTX
オライリーのjavascript第5版のhttp.jsのHTTP.get()で
タイムアウト処理の時にもrequest.readyStateが4になるのはなぜ???

そんで
options.errorHandler(request.status, request.statusText);

request.statusが0になって
request.statusTextが空文字になって
おまけに最後に
timer()が実行される。。

ちなみにサーバサイドは
1 #!/usr/bin/python
2 #coding:utf-8
3 import cgi
4 import cgitb; cgitb.enable()
5 import time
6
7 form = cgi.FieldStorage()
8 p1 = form.getvalue("p1")
9 time.sleep(10)
10
11 print "Content-Type: text/plain;charset=utf-8"
12 print

って感じで10秒停止させて、HTTP.get()は10秒未満の数値を指定。ブラウザはFx3。
751Name_Not_Found:2008/12/10(水) 10:25:21 ID:???
「Firefox abort」でググればトップに出てくるけどな
752Name_Not_Found:2008/12/10(水) 13:40:22 ID:QzCz+UV3
>>751
なるほど。・・・バグ?
753Name_Not_Found:2008/12/10(水) 16:43:45 ID:b8Z1dkjt
var len = 100;
var num1 = Math.floor( Math.random() * len );
var num2 = Math.floor( Math.random() * len );
var num3 = Math.floor( Math.random() * len );
var num4 = Math.floor( Math.random() * len );

とすることで、num1 〜 num4に0〜99のランダムの値を代入できたのですが、
たまに重複してしまいます。
(num1とnum3両方に50が入るなど)
これを避けるにはどうすれば良いでしょうか?
754Name_Not_Found:2008/12/10(水) 16:49:36 ID:???
ifで判断してやり直したら?
755Name_Not_Found:2008/12/10(水) 18:59:57 ID:???
クリックされたボタンやラジオボタンによって、読み込むcssを変更することは出来ますか。
例えばボタン1をクリックしたら「css1.css」を読み込んで、ボタン2がクリックされたら「css2.css」を読み込むなど。
756Name_Not_Found:2008/12/10(水) 19:02:51 ID:???
>>755
「CSS 切り替え」でググレカス。
757Name_Not_Found:2008/12/10(水) 19:08:16 ID:???
>>756
( ´∀`)
758Name_Not_Found:2008/12/10(水) 19:50:50 ID:???
>>753
var m = []; //比較対象を格納

function hoge(a) {
var n = 0;
var count = 0;
var flag = true;
m[m.length] = -1;
while (flag){
n = Math.floor( Math.random() * a );
for (var i = 0; i < m.length; i++) {
if (n == m[i]) {
flag = true; //比較対象に同じものがあればループを抜けない
break;
}
flag = false;
}
if (++count > 100) flag = false; //念のため回数上限100
}
m[m.length - 1] = n; //クリアした値を比較対象に格納
return n;
}

var len = 100;
var num1 = hoge(len);
var num2 = hoge(len);
var num3 = hoge(len);
var num4 = hoge(len);

こんな感じ。
759Name_Not_Found:2008/12/10(水) 20:32:01 ID:???
<script type="text/javascript"><!--
function calc() {
    …
    …
}

calc();
//--></script>

とすると、関数calcは正常に動作しますが、

<script type="text/javascript"><!--
function calc() {
    …
    …
}

document.write('<INPUT TYPE="button" VALUE="button" ONCLICK="calc();">');
//--></script>

とすると、「button」をクリックしても関数calcが動作せずに、真っ白のページになってしまいます。
なぜでしょうか。
解決策を教えてください。
760Name_Not_Found:2008/12/10(水) 22:50:39 ID:???
>>759
解決しました
761Name_Not_Found:2008/12/11(木) 07:04:22 ID:???
load(≒onload)についての質問です。

Operaで、1 ページAを表示 -> 2 ページBを表示 -> 3 ページAに「戻る」 -> 4 ページBに「進む」とした時、
4の時点でイベントを発生させる方法はあるのでしょうか。

---

具体的には以下のような状態です。


ページA, Bにスクリプトを仕込んでいて、cookieにページの状態を保存しています。
状態はA, Bどちらにも共通のもので、どちらでも変更が可能です。

1 ページAを表示
 → loadでcookie読んで状態を反映。
2 ページBに移動
 → load(≒onload)でcookie読んで状態を反映。
2.5 ページBで状態を変更

このあと、3 ページAに「戻る」と、IEを除くブラウザではonloadが呼ばれず、
ページBでの状態変更がページAに反映されなかったので、
空の関数をunloadに仕込んで、ページAでもloadが呼ばれるようにしました。
( ※ Firefoxはpageshowでもかまわなかったのですが、単に手間の問題です )

ここで 3.5 ページAで状態を変更したあと、4 ページBに「進む」と、
Operaのみ、loadが発生せず、変更をページBに反映させられません。

---

loadを発生させるか、あるいはFirefoxにおけるpageshowのようなものか、
その他何か適当な方法があるか教えて頂きたいのです。
よろしくお願いします。
762Name_Not_Found:2008/12/11(木) 14:36:24 ID:???
戻る や 進む に依存した設計はバグの元って話
763Name_Not_Found:2008/12/11(木) 15:46:33 ID:???
記憶が曖昧なんでアレだけど、Operaで進むや戻る使ったときって
キャッシュを使うだけじゃなくてJavaScriptの状態も記憶しておいて
それを再現するんじゃなかったかな?
764763:2008/12/11(木) 15:56:56 ID:???
うん 今試してきたけどあってた
んでページ作者だとこの挙動を無効化できるそうなので
http://www.hyuki.com/yukiwiki/wiki.cgi?EfficientJavaScript#i30
これ参考にして試してみたら?
俺はやった事ないからうまく行くかどうかは知らない
765761:2008/12/11(木) 16:55:39 ID:???
回答ありがとうございます。

>763-764

>キャッシュ
要するにそういうことです。
Firefoxだとunloadをセットすればキャッシュは無効になるんですが、
Operaは「戻る」だとunloadが発生しないのでキャッシュがクリアされないんです。

で、URLの先のページでキャッシュ制御を見つけられました。
history.navigationMode = 'compatible';
ありがとうございました。


>762
依存て…(苦笑) 考えなしにそんなこと言われても。

むしろユーザーに「"戻る" "進む"は使うな」と言えるなら、
ページ移動したあと、必ずloadが発生するから、何も考えなくてもよかったんですけどね。
でも、ユーザーが「戻る」「進む」を使うのは普通に想定される話なので、
それに適切に対応する方法を探していた。それだけの話なんですよ。
「使われるかもしれない」に対応するのは当然ですよね?
766763:2008/12/11(木) 17:22:50 ID:???
>>765
まあ762の言う事もわからんではない
ブラウザの進むや戻るの動作を規定してる規格なんてないわけだし
今後新しいブラウザが出た場合にまた困る事があるかもしれない

その場合でも1秒に1回現在時刻をクッキーに記憶させて、
前回記録された時間が2秒以上前だったらページ遷移が行われたものとみなして
onloadの関数を実行するとか抜け道はありそう

ユーザーがSSD使ってるとひどい事になりそうだけど
767763:2008/12/11(木) 18:08:01 ID:???
というかクッキーじゃなくて変数でいいか
768Name_Not_Found:2008/12/11(木) 21:25:30 ID:???
>>766
新しいブラウザはpageshowを実装して解決。

javascriptの実行状態を残すのに、pageshowに相当するイベントを
実装してない今のOperaが変なだけ。
769Name_Not_Found:2008/12/11(木) 22:06:38 ID:???
でもOperaの方が実装早かったしー
770Name_Not_Found:2008/12/11(木) 22:30:25 ID:???
Operaの強力なキャッシュ機能はモバイルとかで魅力的
つーか戻れば前の状態を維持してるしユーザーもそれを予想してるんだから
戻るたびに初期化イベントを走らせる設計はどうなの?ってのは少し同意できる
初期化ボタンを設けて必要なら初期化、の方が俺は好き

ブラウザ間の足並みがそろわないのは何とかしてほしいが
771Name_Not_Found:2008/12/12(金) 00:38:11 ID:???
designmodeにしたiframe内でonkeyupとかのイベントってどうやったら使えるの?
772Name_Not_Found:2008/12/12(金) 09:20:01 ID:m9oz4Dqt
初心者です
質問したいのですが

function a(){
window.botton.value="やったね";
}
<input name=botton onmouseover="a()">

としてカーソルを合わせた時に、枠内に文字を表示させたのですが
同じページ内に別の枠を作ってそっちも同様にしたい場合は
新たに別の名前のfunctionを作って書くしかないのですか?
a()を使い回せないでしょうか?表示させる文字は同じく“やったね”でいいです。

※今は下記の様にしています。

function b(){
window.botton2.value="やったね";
}
<input name=botton2 onmouseover="b()">

※ボタンの名前(name=botton2)は変えたくないです。

よろしくお願いします
773Name_Not_Found:2008/12/12(金) 10:19:49 ID:???
botton()笑
774Name_Not_Found:2008/12/12(金) 10:31:13 ID:???
>>772
ボタンの名前をパラメタで渡す。一番素直なのはボタンそれぞれに
IDをつけて
function a(id) {
document.getElementById(id).value = '...';
}
とすることだと思うけどね。
775Name_Not_Found:2008/12/12(金) 10:44:25 ID:???
function a(id) {
document.getElementById(id).value = "やったね";
}
<input onmouseover="a('botton')">
<input onmouseover="a('botton2')">
<div id="botton"></div>
<div id="botton2"></div>

こんな感じか。ぼっとん便所、なつかしいな。
776Name_Not_Found:2008/12/12(金) 11:42:51 ID:???
関数使わなくてもいいって思った
<input onmouseover="ここに直接書いてもいいんじゃね?value変えるだけなら。" onClick="クリックされたときの関数()">
777Name_Not_Found:2008/12/12(金) 13:01:42 ID:???
未だにbuttonがなぜボタンなのか
納得いかない奴は多々いるはず
778Name_Not_Found:2008/12/12(金) 13:52:04 ID:50TTQbtS
ブラウザの戻る動作したときに処理を行わせるために
history.nextが存在すれば戻るを実行した、と判断して
処理を行わせようとしたのですが

Permission denied to get property History.next

とFirebugで表示されてうまく動作しません。
History.nextは直接アクセスできないのでしょうか?
779Name_Not_Found:2008/12/12(金) 13:54:42 ID:???
ページ遷移をしたら、そのページのスクリプトは実行できないだろ
780772:2008/12/12(金) 14:10:21 ID:m9oz4Dqt
みなさんありがとうございました。
理解できました。

名前がbottonなのはネットで見つけたスクリプトを改造しただけだからです。
781Name_Not_Found:2008/12/12(金) 14:30:47 ID:???
ボットンw
782Name_Not_Found:2008/12/12(金) 15:17:06 ID:???
>>778
うん。Historyオブジェクトはセキュリティ的に微妙なため
アクセス制約が強く掛けられている。
783778:2008/12/12(金) 15:35:38 ID:50TTQbtS
>>782
回答ありがとう御座います。

なんかHistory使えないようなので
別のやり方考えてみます。
784Name_Not_Found:2008/12/12(金) 22:07:07 ID:okwaYZ8K
>>783
CSSで a:link と a:visited のスタイルを適当に設定しておいて、
該当するリンク先をhref属性に持つa要素を作って、
ドキュメントにぶら下げて、
その色を見る、

ってのをやってうまくいったことがある。
nextかどうかはわからんが、historyに含まれているかどうかはわかる。
まだMacIEとかあった頃だし、最近のブラウザでも出来るかどうかは知らん。
785Name_Not_Found:2008/12/12(金) 22:56:46 ID:???
質問と全く関係ないうえ最悪なマーケティング方法だな
786Name_Not_Found:2008/12/12(金) 23:20:17 ID:???
>>784
っつーか、それ楽天がやってた方式だろ。
さも自分が考えたかのように書いちゃって、自慢したいお年頃?
787Name_Not_Found:2008/12/12(金) 23:41:50 ID:WHLSXnXH
あいまいな質問で申し訳ないのですが
Divタグを使ってスクロールしても画像が付いてこない問題を解決したいです

画像の上にある文字は普通にスクロールしますし、ためしに普通の画像をおいてみたら
それもちゃんとスクロールしてたので何かしらJavaScriptで変なこと書いちゃったのだと思いますが…

最初に<div id="a"><img src="b.gif" name="c"></div>みたいな感じで1pxの画像を敷き詰めておいて、
サーバから取得した画像リストでswapImage、moveTo、showしてます。
あとはドラッグで特定エリアに動かせるようにSET_DHTML("hoge"+CURSOR_MOVE,〜)も使ってるのですが
この辺の機能使うとdivタグでのスクロールが聞かないとかあるんでしょうか?

ソースもだせなくてすみませんが、もし何か分かるようでしたらよろしくお願いします。
788Name_Not_Found:2008/12/13(土) 03:07:25 ID:???
お前の使ってるライブラリが何かなんて知るかよ
789Name_Not_Found:2008/12/13(土) 08:11:26 ID:???
swapImageってなんぞやと思ってググったら、
それっぽいのが見つかった気がしなくもない。

俺ができる精一杯のアドバイスは、使ってる関数を作ったとこに聞くか、
自分で挙動を全部調べて考えるか、2つに1つだ。
ここで適切なアドバイスを期待するのは無茶だ。
790Name_Not_Found:2008/12/13(土) 08:45:12 ID:???
1pxの画像を敷き詰めるというのが何のためにやってるのか分からん。
791Name_Not_Found:2008/12/13(土) 13:39:35 ID:???
アジャックスは必要ですか?
792778:2008/12/13(土) 13:50:50 ID:T6CDbLgn
タブブラウザでタブのフォーカスが別のタブに
移動した際に処理をさせたいのですが
何かやり方はないのでしょうか?

window.onblurのイベントハンドラで処理をさせてみたのですが
うまく動きませんでした。
793Name_Not_Found:2008/12/13(土) 13:51:25 ID:???
アジャックスって2ちゃん用語?
794Name_Not_Found:2008/12/13(土) 16:13:20 ID:???
>>787
SET_DHTML から察するに、ttp://www.walterzorn.com/dragdrop/dragdrop_e.htm だな。

この中でstyle.positionいじってる。それだけの話。


>>791
必要な人には有用。不要な人には不要。
795Name_Not_Found:2008/12/14(日) 03:45:28 ID:???
アジャ?
796Name_Not_Found:2008/12/14(日) 11:42:15 ID:3ofB3ntc
onload時にすべての a 要素にonclick属性を付加したいのですが
その際に既存のonclickを上書きしないで新しい属性を付加する方法は
ありますか?

var list_a = document.getElementsByTagName('a');
for(var i = 0; i < list_a.length; i++){
var item = list_a.item(i);
item.onclick = ohayou + item.onclick;
}

このように書いてみたのですがうまく動いてくれませんでした。
797Name_Not_Found:2008/12/14(日) 11:44:18 ID:???
gugure kasu
798Name_Not_Found:2008/12/14(日) 14:35:10 ID:???
>>796
どこぞに function ohayou(){ ... } があるんだな?

---

var list_a = document.getElementsByTagName('a');

for (var i = 0; i < list_a.length; i++)
{
if (typeof(list_a[i].onclick) == 'function')
{
list_a[i].onclick = (function(func)
{
return function(){ func(); ohayou(); };
})(list_a[i].onclick);
}
else
{
list_a[i].onclick = ohayou;
}
}

---

>>797
質問スレでそれは、>2-10読まないボケ共と内容同レベル。
799Name_Not_Found:2008/12/14(日) 17:18:00 ID:???
addEventListener()
attachEvent()
800796:2008/12/14(日) 18:03:34 ID:BASxjhoS
>>798

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

そのコードを利用することで無事上書きせずに処理を追加することができました。
ありがとうございました。

>>799
ググってみたら、処理を追加する関数があったんですね。
教えてくださってありがとうございます。
801Name_Not_Found:2008/12/14(日) 18:39:23 ID:???
すべての a 要素にonclick属性を付加するよりベターな方法はもうちょっと先かな
802Name_Not_Found:2008/12/14(日) 19:23:53 ID:???
>>798の回答レベルが低すぎだろ
-クロージャーを量産する愚
-ハンドラ内でthisをあてにするボケ共が多いんだからcall必須
-アホ外人が俗に言うイベントデリゲーションでやれ
803Name_Not_Found:2008/12/14(日) 19:45:04 ID:???
>>802
イベントどころか意味そのものを分かってない>796が
作ってるプログラムが対象なんだぞ?
そんなもの検討せにゃならんと考えるお前の存在がむしろ不思議。
何も考えず、単純ベタベタでどんなバカブラウザでも
「この程度できて当たり前」な処理で済ませりゃ十分じゃねーか。
804Name_Not_Found:2008/12/14(日) 20:05:10 ID:???
JavaScript内に入れるコメントについてお尋ねします。
通常のWindowsアプリ等のプログラム(VB.net / C#)の場合には
コードの中にコメントを入れるのはごくごく普通だと思うのですが

ことJavaScriptの場合には、ユーザに簡単にコメントが見られてしまうので入れない方が良いのでしょうか?
ただ疑問に思うのは、別にコメントを入れたからといってそのコメントを足掛かりにしてユーザがWEBページを
アップしているサーバに対して何がしかのアタックを掛けてくるとは思えないのですが。

WEB開発のベテランの方アドバイスをお願いします。

また、コメントをどうしても入れたいけど(メンテナンスのし易さの為)ユーザにみは見られたく無い
という場合には、CGI(php/ ASP.net)側にコメントを残す方法しかないのでしょうか?
805Name_Not_Found:2008/12/14(日) 20:15:39 ID:???
コメント読まれたぐらいで穴が見つかるようなシステムは糞だな。
セキュリティのためなら、開発者が理解しやすいコードにした方がよほど安全。
あとは読む人間の頭の程度に合わせればいいだけの話で、一般化できるもんでもない。
806Name_Not_Found:2008/12/14(日) 20:31:27 ID:???
>>804
難読化しろ
コメントも取ってくれるから
807Name_Not_Found:2008/12/14(日) 22:06:42 ID:???
>>804
コメントだけを問題にするなら、自動でコメント削除する
プログラム作れば済む話だと思うが。
コメント書いてる開発時のプログラムをそのまま使う必要なんてない。


もっと根本的な問題を指摘すると、>>805の言う通り、
コメント書いた程度で穴がバレるか怖がってるようなら、
どうせ書かなくても危ないのは変わらん。
プログラム自体、使うべきじゃない。
808Name_Not_Found:2008/12/14(日) 22:53:30 ID:???
>>806
JavaScriptの難読化とはどうすれば良いのでしょうか?

809Name_Not_Found:2008/12/14(日) 22:56:31 ID:???
難読化でググればいくらでもサービスでてくるから好きなの使って
810Name_Not_Found:2008/12/14(日) 23:35:59 ID:???

>>807
それなら簡単に作れます。
公開前にコメントを全て削除するバッチ(*exe)でも作ろうかと思います。

それが一番手っ取りばやいかもしれませんね。

>>809
ちょっと疑問なのが「難読化」というのは100%コメントを見られない様にするのでは無くて
コメントを簡単には見られない様にする、という事ですよね?

とするとやはりリリース前にコメントをソースコードから削除するプログラムを作ってから
やった方が確実なのでしょうか?


811Name_Not_Found:2008/12/15(月) 01:34:52 ID:???
>>810
難読化っていうのはソースコード全体を人間に読みにくくすること
コメントを削除するのはもちろん、
変数やオブジェクト名を機械的な名前に置き換えたり
コード自体を何を書いてるのか分からないような形にしたりする

100%の対策なんかじゃないけど、少なくともコメントを削除するだけよりかはよほど効果があるよ
812Name_Not_Found:2008/12/15(月) 01:40:07 ID:???
なぜ、javascriptに知られてはいけないようなことを書くのかが分からない
813Name_Not_Found:2008/12/15(月) 01:55:27 ID:???
は?
814Name_Not_Found:2008/12/15(月) 01:57:35 ID:???
自意識過剰
815Name_Not_Found:2008/12/15(月) 02:31:18 ID:???
>>811
興味がわいたので調べてみます。

>>812
秘密
816Name_Not_Found:2008/12/15(月) 05:59:59 ID:???
>>812
分かるか分からないかはともかく需要があるから存在してるんだろ
817Name_Not_Found:2008/12/15(月) 11:20:50 ID:???
>>815
javascriptって全部人に読まれる前提じゃないの?w
818Name_Not_Found:2008/12/15(月) 12:10:30 ID:???
どれほどのコードか見てみたいからちょっと貼ってよここに。
819Name_Not_Found:2008/12/15(月) 15:32:17 ID:???
>>818みたいなコードを勝手に読んでああだこうだ指摘してくる親切でうっとうしい人対策として効果的
820Name_Not_Found:2008/12/15(月) 15:35:05 ID:???
>>812
性癖なんだろ
821Name_Not_Found:2008/12/15(月) 16:25:00 ID:???
<list>
<cap>参加リスト</cap>
<koumoku>
<namae>太郎</namae>
<nenrei dataA="001">30</nenrei>
<seibetu>男</seibetu>
</koumoku>
<koumoku>
<namae>花子</namae>
<nenrei dataA="002">28</nenrei>
<seibetu>女</seibetu>
</koumoku>
</list>

というXMLファイルがあったとして
「dataA」の要素を参照するにはどうすればよいのでしょうか。

var targetNames = XML_Data.getElementsByTagname('nenrei');
window.alert(targetNames[0].nodeValue);

でnenreiタグの値を参照することができるのはわかるのですが
その後に続く要素を参照するやり方がわかりません。
822Name_Not_Found:2008/12/15(月) 16:30:29 ID:???
<nenrei dataA="001">30</nenrei>
この書き方がおかしい
823Name_Not_Found:2008/12/15(月) 16:36:45 ID:???
>>821
>その後に続く要素

「後に続く」が具体的に何を指しているのか分からんのだが。


<seibetu>のことだとしたら、nenreiを取る意味はない。
2番目の<seibetu>(=女)を表示するなら

var list_koumoku = XML_Data.getElementsByTagname('koumoku');
var seibetu = list_koumoku[1].getElementsByTagname('seibetu');
window.alert(seibetu[0].nodeValue);

とすりゃいい。
824Name_Not_Found:2008/12/15(月) 16:41:10 ID:???
>>822
XMLファイルは例なんです。
今やろうとしていることは
ニコニコ動画のコメントファイル(XML)の解析なんですが

そのコメントファイルの中を見たところ

<chat anonymity="1" date="1229257940"…(省略)>
コメント
</chat>

となっていたのでこのXMLファイルの例を書いてみました。
825Name_Not_Found:2008/12/15(月) 16:43:55 ID:???
>>823

すみません。書き方がわるかったです。
要は「dataA」の要素を参照するにはどうすればいいのか
ってことです。
826Name_Not_Found:2008/12/15(月) 17:05:42 ID:???
>>825
HTMLやXMLでは「要素」というのは<名前>...</名前>で囲まれた
範囲のことなんだが、その用語づかいで合っているかね。
827Name_Not_Found:2008/12/15(月) 17:10:20 ID:???
>>826

すみません。値っていう表現でよろしいでしょうか?

<nenrei dataA="001">

というdataAに格納されている値を参照したいのです。
828Name_Not_Found:2008/12/15(月) 18:07:19 ID:MjrW5BF4
>>827
その場合、
「nenrei要素のdataA属性の値」
というのが正解。用語覚えんの大事だよ。

var nenrei = XMLData.getElementsByTagName("nenrei")[0];
dataA = nenrei.getAttribute("dataA");

--


<nenrei dataA="001">30</nenrei> → 要素(エレメントノード)
30 → 要素のノードバリュー
<nenrei dataA="001"> → 開始タグ
</nenrei> → 終了タグ
dataA="001" → 属性(名前“dataA”、値“001”)
829827:2008/12/15(月) 18:08:18 ID:MjrW5BF4
間違えた。
30はエレメントノードのchildNodes[0]のノードバリュー。
830821:2008/12/15(月) 19:05:41 ID:???
>>827

ありがとうございます。勉強になります。

さっそく頂いたスクリプトを組み込んでみましたが

結果「null」が帰ってきてしまいます。

何が原因だと考えられますか?
831828:2008/12/15(月) 22:20:17 ID:MjrW5BF4
おれ、828じゃん!

>>830
XMLDataってのは、そんな定数がある訳じゃなくて、
読み込んだXMLのデータのことだよ?
832815:2008/12/15(月) 22:33:19 ID:???
>>817
なぜ人にソースを見られたくないかと言うと、自分が苦労して辿りついたソース
に簡単に他人に見られてしまうと自分の労力が無駄になりますよね?
それがやーなのですよ。

>>819
良い人じゃないか。


833Name_Not_Found:2008/12/15(月) 23:13:32 ID:???
>>832
自分は他人様のコードなど参考にしたことがないような物言いだね。
だったらJavaScriptで書くことが間違っていると思うな。
834Name_Not_Found:2008/12/15(月) 23:15:19 ID:???
そのうち
「見られるのが普通だからスマートなコードを書こう」
って思えるようになるよ
835821:2008/12/15(月) 23:23:15 ID:???
>>828

すみません番号間違えました…orz

調べたところXMLファイルになぜか「dataA="001"」を追加したのに
なぜかlocalhostからXMLファイルをブラウザを通して見てみると
「dataA="001"」が無い状態になっていました。

改めてそのXMLファイルをテキストエディタで開くとちゃんと「dataA="001"」
が記述されていました。

何が原因なのかよくわかりません…。
836Name_Not_Found:2008/12/15(月) 23:24:14 ID:???
>>833
他人に見せても構わない人が公開したコードを参考にしたからと言って
自分は隠してはいけないっていう論理が間違っていると思うな。
露出狂のチンコ見たんだからお前もマンコ見せろって言ってるようなもんだろ
837835:2008/12/15(月) 23:33:48 ID:???
すみません。解決しました。
ありがとうございました。
838Name_Not_Found:2008/12/15(月) 23:35:42 ID:???
JavaScript の世界には露出狂しかいないけどな
隠すのはリンゴを食べちゃったおかしな人だけ
839Name_Not_Found:2008/12/15(月) 23:37:13 ID:???
>>832
なぜ赤の他人にアドバイスしたくないかと言うと、自分が苦労して辿りついたノウハウ
を簡単に他人にまねされてしまうと自分の労力が無駄になりますよね?
それがやーなのですよ。

と、カキコを読んだ皆が感じたとオモタ。
840815:2008/12/16(火) 00:15:27 ID:???
>>833
自分は人のソースを参考にさせて貰ってるけど、
人には参考にさせたくないんだよ。
だからgoogleアドセンスの*jsファイルも難読化してるでしょ?
そんな理屈。
841Name_Not_Found:2008/12/16(火) 00:16:10 ID:???
>>832
要は「オレって誰も知らねーこと知ってるぜ!」っていう自己満足を満喫してる、プログラマもどき
世界の誰もお前みてーなやつに媚びねーよwww
842Name_Not_Found:2008/12/16(火) 00:19:35 ID:???
>>840
Googleのコードは難読化なんてしてない。

もし、お前が読めないのなら、それはお前が到底Googleの技量に及ばない証し。
843Name_Not_Found:2008/12/16(火) 00:20:23 ID:???
そもそも隠したいならネットで公開しなければいいじゃない
844Name_Not_Found:2008/12/16(火) 00:24:43 ID:???
Google のは難読化したいんじゃなくて
byte 単位で転送量を減らしたいからだけどな
845Name_Not_Found:2008/12/16(火) 00:54:38 ID:???
>>844
なるほどw

>>841
俺は、WEB系の開発は趣味だからね。
死ねよ。

>>843
趣味w

846Name_Not_Found:2008/12/16(火) 01:14:07 ID:???
>>804
あたまがわるい
847Name_Not_Found:2008/12/16(火) 01:51:45 ID:???
質問者とその後は別人のような気がするな
その後の人はいろいろ残念な感じだ
848Name_Not_Found:2008/12/16(火) 06:40:24 ID:???
>>838
その例えだとリンゴ派が後の主流になるんじゃないかなw
849Name_Not_Found:2008/12/16(火) 06:46:31 ID:???
自分のプログラムを公開して

自分「こいつをどう思う?」
他人「すごく・・・汚いです・・・」

こう言われ続けて絶え間なく改善する気概を持った奴だけが
まともなプログラムを書けるようになる。
非公開で自分しか見ないプログラムの経験しかない奴は
絶対におかしなクセを持ってるし、常識で済む処理を非常識に解決しようとする。
850Name_Not_Found:2008/12/16(火) 07:41:30 ID:???
そうですか
よかったっすね
851Name_Not_Found:2008/12/16(火) 08:15:45 ID:???
こんな奴に何言っても意味ないだろw
チャリ2列で走ってる厨房工房が車から見てどれだけ危険か、
本人に正確に教えられる奴なんていないんだから。
何でも自分で経験しなきゃ分からんし、こいつは経験するつもりもないだろ。
852Name_Not_Found:2008/12/16(火) 08:20:51 ID:???
そうですか
よかったっすね
853Name_Not_Found:2008/12/16(火) 17:55:42 ID:???
1個のクッキーが4KBまでで同一ドメインならそれを20個まで使えるってことは
同一ページでも最大80KBまで保存可能ってことですか?
854Name_Not_Found:2008/12/16(火) 18:32:52 ID:???
HTMLやJavaScriptコードのなんちゃって暗号化(難読化)を図っているサイトに限って
何故だかことごとくトホホ度全開のショボショボページなのはどうしてですか?

ああいう人たちに限ってどうしてああ自意識過剰なんだぜ?
855Name_Not_Found:2008/12/16(火) 18:35:47 ID:???
必死に女性専用車両探してるブスみたいな
856Name_Not_Found:2008/12/16(火) 18:36:51 ID:???
>>854
しょぼいから隠したいんだろ
857Name_Not_Found:2008/12/16(火) 18:43:21 ID:???
しょぼいサイトを作ることで>>854のような攻撃的な人間を釣り
難読化を肯定する理由として利用するため
858Name_Not_Found:2008/12/16(火) 19:12:01 ID:???
大したことのないスキルで満足してる奴に限ってオレはすごいことできると
思うんだろうな。逆にスキルが行くとこまで行ってる奴はこんなの誰でも
できると思うだろ。隠すなんて発想もない。
859Name_Not_Found:2008/12/16(火) 20:18:50 ID:???
>>854
サイズがでかいコードの場合は YUI Compressor なんかで圧縮かけてやると転送量がいい具合に減る(それが暗号化にみえる)

Yahoo! はこんなガイドラインも出してる
ttp://developer.yahoo.com/performance/

オライリーから本も出た
http://www.oreilly.co.jp/books/9784873113616/

もちろん、単純に暗号化したいから使ってるやつもいる
860Name_Not_Found:2008/12/17(水) 10:53:17 ID:???
GACは氏に増したか?
8611/2:2008/12/17(水) 11:05:01 ID:???
jqueryを使っています。
下記(親)のような、onload時に特定のdivにhtml(子)を読み込ませる処理をしています。

読み込まれた特定のspanをクリックすると何かしらのイベントが発生させるような$('ここ')の指定はどのようにすればいいのでしょうか?

※ 逆に、親に直書きしてみると思い通りの動作になります。(1の内容という文字列をクリックすると、「1の内容」というダイアログが表示される)
なのでコード本体は問題なく、$('ここ')の指定方法が悪いんだろうなぁと思います。

よろしくお願いします。
8622/2:2008/12/17(水) 11:05:25 ID:JWcdRDQf
- 親 --
<html>
<head>
 <title>テスト</title>
 jquery読み込み
 <script>
 $(function(){
  // clickableBox-xをクリックしたときにどうにかなる処理
  $('span.clickable-1').click(function(){
   alert($('span.clickable-1').text());
  });
 });
 window.onload = function(){
  // onloadでreadableBoxに何か読ませる処理
  $('#readableBox').load('なにがし');
 }
 </script>
</head>

<body>
<div id="readableBox" class="readableBox"></div>
</body>
</html>

- 子(読み込まれるhtml) --
<span id="clickableBox-1" class="clickableBox-1">1の内容</span>
<span id="clickableBox-2" class="clickableBox-2">2の内容</span>
<span id="clickableBox-3" class="clickableBox-3">3の内容</span>
863Name_Not_Found:2008/12/17(水) 13:09:38 ID:???
>>861
読みこんだ子のhtmlをどうやて親に組み込んでるのかが重要だと思うんだけど、
そこの部分はどうしてんの?
864861:2008/12/17(水) 14:28:26 ID:???
>>863
ちょっと例が悪かったです。
>>862のwindow.onloadの処理は実際には

$('#readableBox').load('子(読み込まれるhtml));

となります。 これだけです。
865Name_Not_Found:2008/12/17(水) 17:12:29 ID:???
>>864
あぁ、そういうことか。勘違いしてた。
単純にloadされるまえにclickハンドラの処理しちゃってるからでしょ。

load関数はcallbak関数指定できるから
load('読み込むhtml', function(){
  // clickableBox-xをクリックしたときにどうにかなる処理
  $('span.clickable-1').click(function(){
   alert($('span.clickable-1').text());
  });
})
ってやればよいんじゃね。
ってか、$(function(){})ってやってるのに、そのあとにwindow.onloadをやってる意味がよくわからないな。
$(function(){ $('divの#').load(上のやつ) })
でいいと思うけど。
866861:2008/12/17(水) 18:19:57 ID:???
>>865
ありがとうございます! 非常に助かりました。
イベントに起因させたい関数はコールバック関数で指定しないとイカンのですね。

> window.onloadをやってる意味
言い訳はしませぬ。
867Name_Not_Found:2008/12/17(水) 19:31:17 ID:cOZZjn8x
子画面のwindow.close()で親画面がよく固まるだけどなんでかな?
868Name_Not_Found:2008/12/17(水) 20:31:26 ID:???
>>856
それだ!
869Name_Not_Found:2008/12/18(木) 00:37:32 ID:???
オブジェクトリテラルでプロパティ名を指定するとき
識別子と文字列と両方指定できますが、何が違うんでしょうか?
つまり
{ name: "hoge" } と { "name": "hoge" } は何が違うんですか?
870Name_Not_Found:2008/12/18(木) 00:54:27 ID:???
>>869
こういう状況で必要。普通は気にしなくていい。
{ "a:b": "c" }
871Name_Not_Found:2008/12/18(木) 09:46:29 ID:???
あの、読み出し専用プロパティに値を代入するとどうなるんですか?
872869:2008/12/18(木) 10:51:09 ID:???
>>870
なるほど、そんな使い方もあるんですね。
ありがとうございました。
873Name_Not_Found:2008/12/18(木) 11:36:14 ID:???
>>871
何も起こらないかエラーになるか。ブラウザによって違うかもね。
874Name_Not_Found:2008/12/18(木) 11:50:18 ID:WXdNe9oM
最近サクサクみていた動画共有サイトがあるのですが
突然先週末くらいから「インターネットサイト○○は開けません。操作は中断されました」
というエラーが出るようになり見れなくなりました。
使ってるブラウザはIE6なのですが、firefoxをインストールしたら、それでは見れました。
(でも重いので削除してIE6に戻したのですが・・)
いろいろ調べて試行錯誤してみると、javascriptをオフにすると見れるようになったんです。
でも先週まではオフにしなくても見れたのに何故でしょうか。
また、ダウンロードの時間も長くなりました。原因は何ですか?
875Name_Not_Found:2008/12/18(木) 11:53:22 ID:???
>>874
そのサイトの運営に聞きなさい。
876Name_Not_Found:2008/12/18(木) 17:16:06 ID:???
>>859
コメント込みで100KBのファイルが60KB程度になるから使っているけど、
他人にコードを読まれて評価されるのが怖いヘタレと、
圧縮しているのは転送量削減目的では無く、単にケチ臭い難読化だけの為だと思っているアホがいるとは困ったもんだね。
まあアホ避けとして、俺の所のようにヘッダ部分に未圧縮ファイルのURLを書くのをお勧め。
877Name_Not_Found:2008/12/18(木) 17:58:37 ID:???
過ぎたことを蒸し返すやつは何なの
アホなの?
878Name_Not_Found:2008/12/18(木) 18:16:30 ID:???
アホなんだろ
879Name_Not_Found:2008/12/18(木) 23:58:56 ID:???
var now = new Date();
var xday = new Date(2008, 12-1, 24);
count = Math.ceil( (xday.getTime() - now.getTime()) / (24*60*60*1000) );
document.write("クリスマスイブまであと");
document.write(count);
document.write("日!");

こういうものなんですが、countの部分をかっこ良さげな画像の数字を入れ替えていく
というものにするにはどうしたら良さげ?
880Name_Not_Found:2008/12/19(金) 01:06:55 ID:???
>>879
たぶんこんな感じ。
var count = "" + count;
var html = ""
for (var i = 0; i < count.length; i++) {
 var num = count.charAt(0);
 html += '<img src=\"./img/' + num + '.png\" alt=\"' + num + '\">';
}
document.write(html);
881Name_Not_Found:2008/12/19(金) 01:07:39 ID:???
charAt(i)だった。
882Name_Not_Found:2008/12/19(金) 01:53:50 ID:???
insertHTML を使用して、読み込み完了後に 背景画像を挿入しています。
しかし、もとのHTMLによっては、文字やエディットなどより手前に来てしまいます。
その背景画像の z-index 0 にしても効果ありません。

背景画像が手前に来ないようにするには、 他のものをすべて z-index の値を書き換えるか、 読み込みの段階で
タグを挿入しておくしか方法がないのでしょうか?


883Name_Not_Found:2008/12/19(金) 02:04:02 ID:???
>>882
背景画像の設定方法と使ってるブラウザとだめな具体例をplz。
884Name_Not_Found:2008/12/19(金) 02:40:13 ID:???
z-index: -900 とかにすればいいんでナイノ
885Name_Not_Found:2008/12/19(金) 02:59:33 ID:???
>>880
ぬりがとう、やってみる!
886Name_Not_Found:2008/12/20(土) 02:22:00 ID:???
変数が宣言されているかどうかを調べる方法はありますか?
宣言されていない変数を書いたらエラーが出てしまいますし、無理でしょうか。
887Name_Not_Found:2008/12/20(土) 02:31:43 ID:???
>>886
typeof(v) == "undefined"
未定義ならtrue、ただし宣言だけで中身がないvar v;もtrue

でもプロパティじゃなくて変数にチェックが必要なんてどういう状況?
888Name_Not_Found:2008/12/20(土) 02:34:58 ID:???
あれ?javascriptって変数宣言しなくてもグローバルスコープになるだけでエラーでたりしなくない?
889Name_Not_Found:2008/12/20(土) 02:37:35 ID:???
>>888
代入はそう。宣言もなにもしてない変数を読もうとするとエラー。
typeofは演算子だから例外。
890Name_Not_Found:2008/12/20(土) 02:42:51 ID:???
>>889
そうだったんだ、ありがとう。一つ賢くなった。
891Name_Not_Found:2008/12/20(土) 02:43:46 ID:zJxlXjcL
jsonとPHPを使って開発を行っています
PHPに値を投げると、PHPで受け取った段階で日本語の値が文字化けしてしまいます。
投げる直前では化けていません。
jsonpというのを使っています。
値はGETで受け取っています。
化け方が見たことないような化け方で
<81>??<86>|
みたいな文字列になります。
URLエンコードは試してみてもだめでした。
今環境が手元になくて情報が少なく申し訳ないのですが、もし似たような経験おありの方いらっしゃいましたら、何か教えて頂けないでしょうか。
お願いします。
892Name_Not_Found:2008/12/20(土) 03:01:33 ID:???
>>887-889
ありがとうございます。勉強になりました。
URLを読んでGETの引数を取得しているので、それを場合によって省略できるようにしようと考えていました。
893Name_Not_Found:2008/12/20(土) 07:16:33 ID:???
<script type="text/javascript">
<!--
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=
[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp
('\\b'+e(c)+'\\b','g'),k[c])}}return p}('0("1 2!");',3,3,'alert|Hello|PHP'.split('|'),0,{}))
// -->
</script>
894Name_Not_Found:2008/12/20(土) 11:34:50 ID:???
ぐぐれ化す
895Name_Not_Found:2008/12/20(土) 12:35:28 ID:???
ググレカレー
896Name_Not_Found:2008/12/20(土) 14:36:29 ID:???
HTMLコメント内に--を書くな
897Name_Not_Found:2008/12/21(日) 08:17:10 ID:???
<embed src='./wav.wav' autostart="false" width="0" height="0" id="MUSIC">
<span onClick="javascript:MUSIC.autostart='true'">foo</span>

と書いてみましたが、音楽が鳴りません。

idMUSICをembedにせず、
<bgsound id="MUSIC" src="" loop="1">
にしたら音楽が再生されるんですが、IEでしか動作しないんです。
どうしたらjavascriptでwavファイルを呼び出して再生できるんでしょうか?教えてください。
898Name_Not_Found:2008/12/21(日) 08:40:51 ID:???
>>897
IDを指定して要素を取得するには「document.getElementById('ID名')」
が本来必要ではないかね。IE専をやめたいならそれなりに勉強するんでしょ。
899Name_Not_Found:2008/12/21(日) 08:50:38 ID:???
>>898
document.getElementById('ID名')ですか。ありがとうございます。

なぜ、bgsound要素だと取得が不要なのでしょうか。なぞは深まるばかりです。
900Name_Not_Found:2008/12/21(日) 12:19:45 ID:???
>>892
もしかしてevalぶち込んでパースなんてしてる?

>>899
bgsoundだからじゃない、IEだから。
IEは独自拡張でwindow["id名"]でも取得できて、それはwindow.id名と書いても同じ。
そしてwindowは省略可能だからid名で直接アクセスできる。
901Name_Not_Found:2008/12/21(日) 19:26:28 ID:???
HTML5が流行るまではFlash使ったほうが賢明だと思うけど
902Name_Not_Found:2008/12/22(月) 02:55:06 ID:???
突然すみません
WMP(プレーヤー)埋込の再生するファイルをinputから書き換えたいのですが
どのようにすればいいかヒントを教えてください。お願いします
一応PS3のブラウザで動かしたいと思っています
903Name_Not_Found:2008/12/22(月) 03:12:43 ID:???
904Name_Not_Found:2008/12/22(月) 14:06:05 ID:hhrrZLSs
質問させてください。
JavaScriptを使ったXSSなどの攻撃についてですが、
http://d.hatena.ne.jp/HiromitsuTakagi/20040427
ここでは、だいぶ前の記事ですが、NetScapeではdocument.cookieへの参照をオフにする機能が搭載されたと書いてあります。
FirefoxやIEの場合は、このような機能はないのでしょうか??
また、クライアント側でクッキーを掠め取られる可能性を考えなければいけないのは、JavaScriptだけでOKなのでしょうか??
他のスクリプトもブラウザで動いたりするのかなと・・
若干スレ違いっぽくて恐縮ですが、アドバイスいただけると嬉しいです。
905Name_Not_Found:2008/12/22(月) 14:47:22 ID:???
>>904
クライアントサイドで動くのがjsだけだと思ってる池沼が沸いてるな
906Name_Not_Found:2008/12/22(月) 17:30:46 ID:???
質問です

wikipediaやブログなどである「B」ボタンを押すと<b></b>タグがテキストエリア出るというのをやりたいです

できればマウス操作などで反転させたところを<b></b>で囲むというのがいいのですが、
単純にボタンを押したらタグをテキストエリアに出力するものでも、なんでもかまいません

よろしくお願いします
907Name_Not_Found:2008/12/22(月) 17:36:10 ID:???
ここは丸投げスレではありませんよ僕ちゃん
908Name_Not_Found:2008/12/22(月) 20:32:22 ID:???
ついでにテキストエリアの背景がグラビアアイドルの水着になってランダム
で変わるやつもできたら教えて。
909Name_Not_Found:2008/12/22(月) 20:48:01 ID:???
>>908
まず画像をzipでうp、話はそれからだ!
910Name_Not_Found:2008/12/22(月) 22:04:20 ID:/DsY0F1r
JavaScriptの途中でPHPのソースを実行したいのですがどのようにすればいいのでしょうか?

function submit_on(){
 if (confirm("データを登録しますか?")){
  ここにPHPでINSERTしたい
 }
}

function submit_on(){
 if (confirm("データを登録しますか?")){
  <?php
    ココに書いてもOK?
  ?>
 }
}
911Name_Not_Found:2008/12/22(月) 22:05:33 ID:???
ごめん
912Name_Not_Found:2008/12/22(月) 22:39:58 ID:???
>>910
> function submit_on(){
>  if (confirm("データを登録しますか?")){
>   <?php
>     ココに書いてもOK?
>   ?>
>  }
> }

何ら問題はないんだが
ブラウザが受け取った時点で php は既に解釈・実行は終わってるんだよ
913Name_Not_Found:2008/12/22(月) 22:42:36 ID:???
え?何ら問題はないの??
914Name_Not_Found:2008/12/22(月) 22:45:49 ID:???
ココに書いてもOKじゃないしセキュリティもダメダメじゃん
POSTをうまく使え
915912:2008/12/22(月) 22:50:25 ID:???
答え方に失敗した

JavaScript 中に php を埋め込むことには問題はないが
ご要望のことはできない
916Name_Not_Found:2008/12/22(月) 23:30:35 ID:???
>>914
POSTをフラグにするってことかな?
917Name_Not_Found:2008/12/23(火) 04:25:08 ID:???
なにいってんだこいつら
918Name_Not_Found:2008/12/23(火) 06:13:08 ID:???
>>904
httponlyでググれ
919Name_Not_Found:2008/12/23(火) 12:58:50 ID:???
>>910
javascript実行中にPHP処理したいってことならAjaxでがんばれ。
920Name_Not_Found:2008/12/24(水) 11:36:22 ID:kU2lY9tn
配列aryに格納した値をstdという独自の関数で出力したいのですが
うまくいきません
どのようにしたらよろしいでしょうか?

ary = new array();
ary[0] = 1;
ary[1] = 2;

function std(ary) {
document.write($ary[0]);
document.write("<br>");
document.write($ary[1]);
}

std(ary);
921Name_Not_Found:2008/12/24(水) 11:38:07 ID:???
配列にすらなっていないと思われ
922Name_Not_Found:2008/12/24(水) 12:09:37 ID:???
$ary[0] の $ は何だ!
923Name_Not_Found:2008/12/24(水) 13:07:11 ID:DvJhAaVW
http://www.s-memo.net/blog/2007/03/javascriptget_1.php

function getRequest(){
if(location.search.length > 1) {
var get = new Object();
var ret = location.search.substr(1).split("&");
for(var i = 0; i < ret.length; i++) {
var r = ret[i].split("=");
get[r[0]] = r[1];
}
return get;
} else {
return false;
}
}
var get = getRequest();

っていう上記のサイトで公開されてる、getを取得するコードがあるのですが
たとえばhttp://xxxxxxx/xxx.html?id[0]=3&id[1]=43のようにidが配列の場合
get[id[0]]とやってみたのですがうまく取得できません
どのように書けばよろしいでしょうか?
924Name_Not_Found:2008/12/24(水) 13:33:02 ID:???
>>920
perlかなにかしらんけど勝手に別の言語の仕様を持ち込むなとw
「同じ漢字だから通じるよね」と中国人に向かって「手紙」
(訳:トイレットペーパー)と言ってるようなもんだ。全然通じてないから。

var ary = new Array();
ary[0] = 1;
function f(a) { alert(a[0]); }
f(ary);

>>923
これも文法レベルの問題。さきに答えを書くとget["id[0]"]

>get[id[0]]
var v = id[0];
var param = get[v];
と書き換えれば、なにやってるかわかるよね?
925Name_Not_Found:2008/12/24(水) 13:35:50 ID:???
いちおう補足しておくと、r[0]の中身は"id[0]"というString。
location.searchはjavascript片じゃないただの文字列だから
変数名のつもりだろうと変数として扱われない。
926Name_Not_Found:2008/12/24(水) 14:12:31 ID:???
>>924-925
ありがとうございます
おかげさまで無事getを取得できました
927Name_Not_Found:2008/12/25(木) 12:43:51 ID:???
iPod3みたいにPCを傾けても画像をいつも垂直に表示するようにできますか?
928Name_Not_Found:2008/12/25(木) 13:41:00 ID:???
>>927
無理。HDDの対衝撃用センサーを利用して傾き検知する話は聞いたことあるけど
そんなニッチなもんブラウザから利用できない。
929Name_Not_Found:2008/12/25(木) 13:47:25 ID:???
質問なのですがページを表示したときに
インラインフレーム内の文字列をJAVASCRIPTで置換する場合は
どうすればいいのでしょうか?
インラインフレーム内のページは外部サイトなのでJAVASCRIPTを書き込むことは出来ません。
よってインラインフレームの外のページにJAVASCRIPTを書き込もうと思っています。
宜しくお願いします。
930Name_Not_Found:2008/12/25(木) 13:52:49 ID:???
>>929
外部ドメインの別フレームには手出しできなかったはず
931Name_Not_Found:2008/12/25(木) 13:55:28 ID:???
>>930
そうなんですか?
JavaScript:document.body.innerHTML=document.body.innerHTML.split('ー').join('━━━(゚∀゚)━━━');focus();
↑みたいなことをインラインフレーム内でも出来たらいいなと思って質問したのですが・・・やっぱりムリでしょうか・・
932Name_Not_Found:2008/12/25(木) 13:58:29 ID:???
>>931
それできたらmixi.jpあたりをインラインフレームに表示して
cookieにあるセッションID盗むわw
933927:2008/12/25(木) 15:13:47 ID:???
>>928
そうですか。残念です。ご回答ありがとうございました。
934Name_Not_Found:2008/12/25(木) 16:29:40 ID:???
っ 録画編集
935Name_Not_Found:2008/12/25(木) 16:34:00 ID:???
>>931
無理。それを許すとWebセキュリティ崩壊。
「クロスドメインアクセス」でググれ
936Name_Not_Found:2008/12/25(木) 16:40:07 ID:???
開かずに開けば万事解決
937Name_Not_Found:2008/12/25(木) 17:53:06 ID:4zdACj0F
オブジェクトが、指定したクラスかどうかを確認することはできますか?
(オブジェクト == クラス名) のようなかんじで…

やりたいのは下のようなものです。
GEvent.addListener(map, "click", function(overlay, latlng) {
    if(overlay == GMarker){ //GMarkerはクラス
        overlay.hide();
    }
});
938Name_Not_Found:2008/12/25(木) 17:59:22 ID:???
>>937
GMarker.prototypeをぶっ壊してなければ
overlay.constructor == GMarker
939Name_Not_Found:2008/12/25(木) 18:04:37 ID:???
これわすれてた/(^o^)\
overlay instanceof GMarker
940937:2008/12/25(木) 19:03:22 ID:???
>>938,939
ありがとうございます!
おかげさまで解決しました!!
941Name_Not_Found:2008/12/26(金) 06:24:13 ID:Nx3KOY24
JQueryでselectタグに対してfocusイベントで背景色を変えたい
でもIEだと1クリックでメニューが開かなくなる
(フォーカスはされる。その状態でクリックするとメニューが開く)

何か良い策ってありますか?

ttp://jsajax.com/jQueryEventFocusArticle1052.aspx
のselectタグ版を作りたいという事です
942Name_Not_Found:2008/12/26(金) 09:00:44 ID:???
<a href="foo.html" class="bar1" onClick="return false;">
と書いて、
・javascriptが無効ならfoo.htmlに飛ぶリンク
はできたんですが、
・javascriptが有効ならclassの属性値をbar2→bar3→bar1と変更
というのを追加したいです。
ご教授くださいますようお願いいたします。
943Name_Not_Found:2008/12/26(金) 11:03:38 ID:???
ほっす
944Name_Not_Found:2008/12/26(金) 11:55:50 ID:???
>>942
onclick="chg(this); return false"
として関数chgは次のように。
function chg(e) {
if(e.className == 'bar1') e.className = 'bar2';
else if(e.className == 'bar2') e.className = 'bar3';
else e.className = 'bar1';
}
945Name_Not_Found:2008/12/26(金) 13:23:36 ID:???
>>944
できました。ありがとうございます。
elseの構文を追加したり、減らしたりしたらbarの数値を大きくしたり小さくしたりできるんですね
助かりました。ありがとうございました。
946Name_Not_Found:2008/12/26(金) 16:08:51 ID:pCIRs1bd
質問です

<!--
google.load("feeds", "1");
function initialize() {
var feed = new google.feeds.Feed("http://xxx.com/rss");
feed.setNumEntries(10);
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById("feed");
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
container.innerHTML += "<a href='" + entry.link + "' target=_blank>" + entry.title + "</a>";
}
}
});
}
google.setOnLoadCallback(initialize);
//-->

この場合のrssの配列を逆にしたい(一番最後のエントリーから読み込みたい)のですが
ぐぐったらreverse()を使えば良いと言うのは分かったのですが
いろいろ試してみてもどこに組み込めば良いのか謎です
教えてください
947Name_Not_Found:2008/12/26(金) 16:14:00 ID:???
var reverseEnteries = result.feed.entries.reverse();
であとはresult.feed.entriesを置き換えるか

for (var i = result.feed.entries.length -1; i >= 0; i--)
ループの回し方を逆方向にする。
948Name_Not_Found:2008/12/26(金) 16:58:27 ID:BqyGXeyD
>>947
ありがとうございます。置き換えて動作させることが出来ました。
この場合、rssに存在する一番最後のエントリのみを表示させる事は無理っぽいですかね?
feed.setNumEntries(10)とかだと最新10の中からのリバースなので
feed.setNumEntries(100)みたいに取りあえず全部取り込んでおいて最後だけを表示するみたいな
949Name_Not_Found:2008/12/26(金) 17:32:24 ID:???
>>948
できるけどさすがにそんな基本まで答え言いたくないw

[0,1,2,3,4,5]の配列から最後の要素を取り出してごらん。
やり方は二種類あって、ヒントは
・length-1
・「最後」=「逆順の最初」
950Name_Not_Found:2008/12/26(金) 20:57:27 ID:???
やさしすぐる
951Name_Not_Found:2008/12/27(土) 01:19:31 ID:???
この際だからpop()して
952Name_Not_Found:2008/12/27(土) 13:20:42 ID:???
htmlに埋め込まれたswfがあってさ
swfにはテキストボックスと、それにリンクする再生ボタンがあるんだけど、
htmlに書かれた開始を押すと、swfのテキストボックスに特定の文字入れて再生ボタンを押す、
みたいなことをjavascriptで、したいんだけど簡単?
何でぐぐったらいいかワード教えてくれ
953Name_Not_Found:2008/12/27(土) 15:46:35 ID:???
他人が作ったswfなんだろ?
無理
954Name_Not_Found:2008/12/27(土) 17:52:28 ID:???
仕様によるけど公開オプションあるなら
955Name_Not_Found:2008/12/27(土) 18:01:09 ID:???
JW Player http://www.longtailvideo.com/players/
を調べてるのですが、単純にローカルでflvを再生する事すら出来ません
同じフォルダにindex..htmlとswfobject.jsとplayer.swfとtest.flvを置いて
htmlの中身は
<div id="container">あ</div>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var s1 = new SWFObject("player.swf","ply","500","500","9");
s1.addParam("allowscriptaccess","always");
s1.addParam("flashvars","file=test.flv");
s1.write("container");
</script>
です。この状態でもプレーヤーが表示され、再生ボタンをクリックすると再生が始まります
この再生をjavascriptから実行したいのですが、出来ません
var player = document.getElementById('ply');
player.sendEvent("PLAY");
とすれば出来るよ!と http://developer.longtailvideo.com/trac/wiki/FlashAPI に書いてありますが
「オブジェクトはそんなプロパティやメソッドサポートしてねーよ」と弾かれます

JW Playerを使いこなしている方、是非Javascriptからプレーヤーを操作する方法を教えて下さい
956Name_Not_Found:2008/12/27(土) 18:18:15 ID:???
Flashのセキュリティの問題だったみたいです
>>955は無かったことに
957Name_Not_Found:2008/12/27(土) 18:28:18 ID:???
function addSelect(){
 select = document.createElement('select');
 select.setAttribute('name', 'select1');
  for(var i=0; i<10; i++){
   opt = document.createElement('option');
   opt.innerHTML = i;
   opt.setAttribute('value', i)
   select.appendChild(opt)
 }
 document.body.appendChild(select);
}

IE7でname属性が反映されなくて困っています。

createElementメソッドでform要素を作成すると、
name属性の設定ができないバグがあることは知っています。
何か回避方法はあるでしょうか?

ちなみに、追加したselect要素に対してすぐに他の処理(共通で使う関数を使用)を加える必要がある為、
DOMに反映されるタイミング保障されないinnerHTMLメソッドは使用したくありません。
958Name_Not_Found:2008/12/27(土) 18:31:24 ID:???
>>957
>>4 Q.13

テンプレも読めないやつは質問するな
959Name_Not_Found:2008/12/27(土) 18:45:06 ID:m4W2RrNt
>>958

Q13 とはまったく関係ない質問をしているのですが・・・。

setAttributeメソッドでなくとも、
element.name = 'xxx' としてもJavascriptでname属性の参照が出来ない、
ということについての回避策が無いかを聞いているのですが。
960Name_Not_Found:2008/12/27(土) 19:00:46 ID:m4W2RrNt
>>959

補足になりますが、name属性の参照は document.getElementsByNameメソッドを
使用するケースです。
firefox等では、createElementメソッドで追加を行うと、追加した要素の数が、lengthプロパティーで参照できますが、
IE6,7では常に0が返ってきます。

ちなみに、Q13 ですが、classに関する記述は間違いではないでしょうか?
以下のように記述すればsetAttributeメソッドでIE6,7でも反映できます。
(IE以外は'class'で指定する必要があるので、
element.className で記述を統一できるという意味ではあっているともいえますが)

element.setAttribute('className', 'aaa')

961Name_Not_Found:2008/12/27(土) 19:07:45 ID:???
バグだって知ってるなら回避策も知ってていいと思うんだが
962Name_Not_Found:2008/12/27(土) 19:34:16 ID:m4W2RrNt
>>961

innerHTMLメソッド(DOMに反映されるタイミングが保障されないので使いたくない)か、
IE6でしか有効でない回避策しか知らないので、その他に回避策が無いかここで聞いてみてるのです。
963Name_Not_Found:2008/12/27(土) 20:44:48 ID:???
>>960
> 以下のように記述すればsetAttributeメソッドでIE6,7でも反映できます。
> element.setAttribute('className', 'aaa')
バグを回避するためにバグを利用するのはどうかな、と。
964Name_Not_Found:2008/12/27(土) 20:47:49 ID:???
まあMac版のIE5のCSSハックとかも、バグを回避するためにバグを使うんだが
MSはやくブラウザから撤退しないかなあw
965Name_Not_Found:2008/12/27(土) 21:34:39 ID:m4W2RrNt
>>963

なるほど。
その通りですね。失礼しました。
966Name_Not_Found:2008/12/27(土) 22:36:28 ID:???
>>963
しかしIE6,7でclass属性値を変更する方法がそれしかないのも事実

>>960
でも
>element.className で記述を統一できるという意味ではあっているともいえますが)
は完全に間違い

IE6,7だけ特別扱いするしかない、というのが現状かと
他のブラウザならclassで変更すればいい
IE8ではこの問題FIXされてるから
967Name_Not_Found:2008/12/27(土) 22:50:14 ID:???
ん、HTMLならclassNameプロパティでええやん。仕様通りでIEでも動く。
968966:2008/12/28(日) 12:14:29 ID:???
>>967
あ、そっちのプロパティ? ならいいや
カンチガイ スマソ
969Name_Not_Found:2008/12/30(火) 01:55:19 ID:JpQ8Ys2m
初めて書き込みします。
javascriptはライブラリを設置する程しかできませんので、
教えていただきたいのですが、

bodyの背景を3つくらい用意し、
それを一定時間でフェードイン・フェードアウトさせ、
自動的に切り替わるようにしたいのですが、
どういうスクリプトになるのでしょうか?
(3つの背景をループさせて表示したい)

本とか見てるのですが、
全くチンプンカンプンで・・・泣きそうです。。

すみません、どなたか教えていただけないでしょうか?
もしくはヒントだけでもお願いします・・・
970Name_Not_Found:2008/12/30(火) 02:00:20 ID:???
諦めたら?
971Name_Not_Found:2008/12/30(火) 05:43:24 ID:???
おい、<!--   //-->ってなによ?
ぐぐってもでてこねぇよ
初心者基本サイトいっても説明されてねぇし突拍子にでてくるんだけどさ。
この間に書かれたとこはスクリプトの重要な部分ですよ、的な感じでおk?
972Name_Not_Found:2008/12/30(火) 05:47:02 ID:???
あ、今適当にサイト巡回してたら書いてたわ すいませんでした
973Name_Not_Found:2008/12/30(火) 06:51:40 ID:???
「        」  ←画像を配置したい場所

○×□△■…  ←配置したい画像
 
 
・ ○×□△■…という画像をクリックすると、押した順番に画像を配置したい場所に左詰めで配置されていく。

・ 画像を2回押すと、その画像が、配置したい場所からなくなる。空いた部分は寄せて隙間をなくす。

・3回目に押すと一番右側に再配置する
 
というスクリプトをつくりたいのですが、”空いた部分は寄せて隙間をなくす。”の部分で困っています。

document.getElementById(imgy).src = document.getElementById(imgy2).src;
の部分で
document.getElementById(...)はnullまたはオブジェクトではありません
というエラーメッセージがでてきます。

ソースコードです。
http://w5.abcoroti.com/~trpg2maho/cgi-bin/up/source3/No_0383.txt
よろしければ原因と解決法をご教授ください。
 
974Name_Not_Found:2008/12/30(火) 07:30:25 ID:???
>>973
そのエラーが出る行の前で「i/y/imgy/imgy2」とった変数を、
alertやtextareaに出して確認するといい。恐らく存在しない
場所を参照してsrcを書き換えようとしている。

それと、img属性にvalue要素をつけて数字として参照する
方法は行儀悪いし、左に寄せる処理自体も怪しい。

複数のブラウザで確認したり、デバッグ機能を持った
アドオンを導入すると問題解決につながりやすいよ。
975Name_Not_Found:2008/12/30(火) 11:04:51 ID:???
>>973
押した回数で判断するより
表示したい場所に画像があるかないかで判断したほうがよくない?
あれば削除なければ挿入って感じにすれば
勝手に左詰めになるし簡単だと思うよ
976Name_Not_Found:2008/12/30(火) 12:34:55 ID:???
>>973
y に代入する値を間違えているんじゃない?
画像の id の番号を代入するべきだと思うけど、value の値を代入してる。
その為、for ループに入らないから変数 imgy2 は undefined のままで、
ループに続く最後の画像を消す為の行でエラーになる。
977Name_Not_Found:2008/12/30(火) 14:18:04 ID:???
おまいら親切だなぁ
978Name_Not_Found:2008/12/30(火) 15:33:51 ID:???
JavaScriptだと最高何年までの計算ができるのですか?たとえば、
西暦1256年の7月27日のことも求められますか。限界を教えてください。
979Name_Not_Found:2008/12/30(火) 16:13:03 ID:???
>>978
ここを読め。
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-9_Date_Objects.html
ただし、グレゴリオ暦が使われるようになる前の年代だと役に立たない
んじゃないか?そっから先は歴史の話なので洩れは知らん。
980Name_Not_Found:2008/12/30(火) 16:14:00 ID:???
981973:2008/12/30(火) 19:13:18 ID:???
>>974-6
お忙しい中ありがとうございます!
おかげ様でどうにか希望通りの動作をしてくれました。


>そのエラーが出る行の前で「i/y/imgy/imgy2」とった変数を、
>alertやtextareaに出して確認するといい。恐らく存在しない
>場所を参照してsrcを書き換えようとしている。

var imgy = "img"+ y + i;
の出力結果が「img(yi)」 //本当は「imag(y+i)がほしい」
var imgy2 = "img" + y+1+i;
の出力結果もどうようなミスが原因で参照できない値を書き換えようとしてました。


>それと、img属性にvalue要素をつけて数字として参照する
>方法は行儀悪いし、左に寄せる処理自体も怪しい。


行儀が悪い、とは具体的にはどういうことですか?


>押した回数で判断するより
>表示したい場所に画像があるかないかで判断したほうがよくない?
>あれば削除なければ挿入って感じにすれば
>勝手に左詰めになるし簡単だと思うよ

挿入する仕様より一番右側に新たに追加する仕様が希望だったので。

982Name_Not_Found:2008/12/30(火) 22:16:42 ID:???
なんだか分からんが、>>973 の仕様をもとに作ってみた。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function push(n) {
var d = document.getElementById('d0'), i = document.getElementById('i'+n)
if(i) { d.removeChild(i); return; }
i = document.createElement('img')
i.id = 'i'+n; i.src = 't'+n+'.png'; d.appendChild(i);
}
</script>
</head><body>
<div id="d0" style="height: 40px"></div><div>
<button type="button" onclick="push(0)"><img src="t0.png"></button>
<button type="button" onclick="push(1)"><img src="t1.png"></button>
<button type="button" onclick="push(2)"><img src="t2.png"></button>
<button type="button" onclick="push(3)"><img src="t3.png"></button>
</div></body></html>
983Name_Not_Found:2008/12/30(火) 22:18:13 ID:???
984Name_Not_Found:2008/12/30(火) 22:57:59 ID:???
>>973
おれもつくってみた。
http://www.smihica.com/souko/tes/t.html
http://www.smihica.com/souko/tes/t.js
>>982
それだと3回目に右にでないんじゃね?


大晦日はひまだなー、、、あれ俺なにしてんだろ、
985Name_Not_Found:2008/12/31(水) 01:43:02 ID:???
>>984
大晦日は明日じゃね?
986Name_Not_Found:2008/12/31(水) 01:58:12 ID:???
>>985
大晦日は今日じゃね?
987Name_Not_Found:2008/12/31(水) 04:10:19 ID:???
あれ、今日か?まだあけおめじゃないのか?
でも一日ぐらいずれてもわかんなくね?普通。
988Name_Not_Found:2008/12/31(水) 07:56:16 ID:???
>>984
なんだか元質問者の仕様が曖昧でよく分からんね。直してみたが。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var st = {}
function push(n) {
var d = document.getElementById('d0'), i = document.getElementById('i'+n)
if(i) { d.removeChild(i); return; }
i = document.createElement('img')
i.id = 'i'+n; i.src = 't'+n+'.png';
if(d.firstChild == null || (st[i] = !st[i])) d.appendChild(i);
else d.insertBefore(i, d.firstChild);
}
</script>
</head><body>
<div id="d0" style="height: 40px"></div><div>
<button type="button" onclick="push(0)"><img src="t0.png"></button>
<button type="button" onclick="push(1)"><img src="t1.png"></button>
<button type="button" onclick="push(2)"><img src="t2.png"></button>
<button type="button" onclick="push(3)"><img src="t3.png"></button>
</div></body></html>
989Name_Not_Found:2008/12/31(水) 07:59:33 ID:???
990Name_Not_Found:2008/12/31(水) 09:23:56 ID:???
いつもと違ってみんな優しいな。こういう時のスレは後日見直しても
気分良いし、ためになるから大好きだ。

>>981
>img属性にvalue要素をつけて数字として参照する方法は行儀悪い

・普通はimgにvalueは使われない
・valueに設定された「文字列」を「数字」として扱ってる

あたりが行儀悪いって言いたいのでは?
991973:2008/12/31(水) 10:24:19 ID:???
うまく仕様が伝えられなく申し訳ないです。
○△×△△

「○×△」

○△×△△△△
でも
「○×△」
が返ってきてほしいので、
>>982の動作が考えてた仕様と同じです。
http://kissho.xii.jp/1/src/1jyou59747.zip.html

>>990
>普通はimgにvalueは使われない
そうなんですね。
サンプルのソース少しずついじりながら
とりあえず動くことを目標にしながらの独学なので
気づきにくいこと指摘していただけるのでうれしいです。
992Name_Not_Found:2008/12/31(水) 10:44:41 ID:???
当然の事ではありますが、WEBシステムを作る場合には、CGI(perl / php …)側でのチェック処理を
必ずやらなくてはならないですよね?

という事は、クライアント環境でいちいちJavaScriptなんかでチェックを行う必要ってあるんですか?
※唯一考えられるデメリットとしては、全くクライアント環境でチェックを行っていない場合には
サーバへのアクセスが頻繁に発生してしまいパフォーマンスに影響が出るのでは無いかとは思いますが。

あと、矛盾するかもしれませんがクライアント環境でチェック処理を行う場合には通常は、JavaScriptを使いますが
これをVBSにしVBS+PHPとかでWEBシステムを組む事は出来るんですか?
ASPならVBS + VBという組み合わせで既存システムにはありますが、VBS+PHP(perl)とか聞いた事が無いです。


993Name_Not_Found:2008/12/31(水) 10:47:39 ID:???
994Name_Not_Found:2008/12/31(水) 10:49:42 ID:???
>>992
VBScript でも当然同等のことはできるけど、動作するのは IE のみ。
995Name_Not_Found:2008/12/31(水) 10:51:47 ID:???
>>992
特定の企業向けシステムなら、VBSでもいいだけど、閲覧者を限定しない
システムでVBSを使ったりしたら、このへんに晒されるだけだ
http://pc11.2ch.net/test/read.cgi/hp/1214073928/
996Name_Not_Found:2008/12/31(水) 11:37:15 ID:???
>>994
あざーす。


>>995
、、、まさかVBS+phpとかの組み合わせだとまずいとは知りませんでしたw

勉強になりました。
997Name_Not_Found:2008/12/31(水) 12:47:04 ID:???
998Name_Not_Found:2008/12/31(水) 13:17:51 ID:???
乙梅
999Name_Not_Found:2008/12/31(水) 13:19:17 ID:5XVow6Nm
うめ
1000Name_Not_Found:2008/12/31(水) 13:20:01 ID:5XVow6Nm
うめ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。