+ JavaScript の質問用スレッド vol.32 +
━━━━━JavaScript質問スレ道場訓━━━━━
一、礼節を重んじ常に努力精進すること
一、ブラクラに打ち勝つ精神力を持つこと
一、心身の優れたJavaScriptを学ぶこと
一、雑草の如く生涯JavaScriptを貫くこと
一、感謝と反省を忘れないこと
以上
━━━━━━━━━━━━━━━━━━━━━━
このスレに書き込むことが許されるものは以下のとおり
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・FAQ・過去ログや関連資料を読むことができる者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
(質問時、回答時にはなるべく対象環境を明記しよう)
前スレ
ttp://pc5.2ch.net/test/read.cgi/hp/1095310099/l50 FAQ・過去ログ・関連資料・その他質問スレは
>>1-10
【質問を書く上で】 弱気な表現は避ける 弁解じみた表現は良くない。また、まわりくどい。 ex) 超初心者で何もわかりませんが…… <そんなことより自分で試したことをた方が答えやすい> 情報を小出しにしない 読み手は馬鹿にされた気分になる。 無駄な倒置も不要だ。 使用したブラウザ、バージョン、OSくらい書こう。 感情的にならない 何の説明なく決め付ける文はよい印象を与えない。 また態度の大きい人は嫌われる。 ex) 答えられねぇんなら黙ってろ!!! <お前だけだよ> 無視するべきものは無視する 無能、知ったかぶり、宗教的主張、煽り、ぬるぽ等。 表記ミスに注意 内容がどんなにすばらしくても文字使いにミスがあると誤解を招く。 曖昧文は書かない いくつにも解釈できる文章は絶対に書かない。 ex) ここではきものをぬいでください。 「」など無駄な強調は避ける 読みにくい。♪や顔文字も同様である。 ソースは要点を整理して出す。 そのまま貼って動かせると試してもらいやすい。 長い場合はアップロードしてURIを貼る。
8 :
Name_Not_Found :04/11/06 00:23:47 ID:ML99/SFi
おつ。
【FAQ】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. document.write(...)でページ内容を追加したいのですが… A3. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Gecko(N6/N7/Moz等)で対応済。 Q4. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A4. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるしかない。 Q5. Aタグのonclickで動作指定してるのですが時々動きません… A5. 「onclick="...;return false"」としないとページ移動しちゃうから。 Q6. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A6. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q7. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A7. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 例:「obj.p0=obj.p1=...=obj.p8=0;」⇔「for(i=0;i<9;i++) obj['p'+i]=0;」。 Q8. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A8. IEではe.currentStyle、Geckoではwindow.getComputedStyle()を使います。 Q9. 100*1.15の結果が114.999…998となってしまうのですが… A9. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q10. 見よう見まねでHTML+CSSを書いてDOMで操作してますがうまく行きません。 A10. HTMLとCSSがきちんと理解できてない人にはDOMでの操作は難しいですね。
>>1 d_(∵) GoodJob
d \
/  ̄
「\_
Z
もつカレー
すいません。。。質問なんですが。。。 <td class="style"><a onClick="MM_openBrWindow('ore01.html','WINDOW','scrollbars=yes,resizable=yes,width=400,height=350')">NO.01</a></td> これでオンマウスにいたいんですが、わかる方教えてください。。。
14 :
Name_Not_Found :04/11/07 02:06:09 ID:KIlcCmzA
↑ あ、それオレもわかんない、オレにおせぇて〜
>>13 ためしに、onClick を onmousemove に変更するとどうなりますか。
onClick→onMouseOver
イベント属性をキャメルな書き方にする慣習をやめよう。 いつまでも古臭い AS の独自拡張みたいで、不細工だから。
>>16 13は、「オンマウスにいたい」と書いているわけですが。
>>18 「オンマウスにいたい」ってどういう意味ですか?
オンマウスに痛い
オンマウスに遺体
オンマウス二位タイ
ああ、ってことは一位がいるわけですな?
で、一位はonMouseMove?
…んなわけないかヽ(`Д´)ノ
通訳きぼん!
>>17 どう書けばいいの?
キャメルってらくだ? 煙草?
>>19 × onMouseOver
○ onmouseover
HTMLでは大文字小文字関係ないからどっちでも動作するが
JavaScript側では全部小文字でないと駄目だしね。
21 :
13 :04/11/07 13:23:40 ID:Bpy7kHAg
すいません、皆さんありがとうございます。 色々試してみました。 でもでどうしても指のボタンは出ないんですよね...(汗) 一応、ポップアップで開く事は開くんですが、マウスの指が出ないんです。 何なんでしょうかね?
23 :
13 :04/11/07 13:40:32 ID:???
>>22 何となくニュアンスで受け取ってもらえると嬉しいんですが。。。
指?カーソルが変わらないって言いたいのか? そりゃ href 属性がないし CSS を使っている様子もないから当然。 詳細は CSS 質問スレへ
日本語の不自由な奴につきあう気はない。用語を勉強してこい。
CSSスレへ誘導したってあの日本語じゃ望み薄でしょ。 体よく追っぱらうってとこか。
わからないからって逃げんなよ、とはいってもオレも わからない
>>27 別に本人じゃなくたっていいから、どういう問題かはっきり
させて見なよ。このスレの回答者が回答できないような問題
じゃないことはまあ明らかでは?
29 :
◆q7u/null4U :04/11/07 18:58:10 ID:Y0F1+xUV
>>20 event handler は HTML からの Script Summoner.
HTML の世界にあって Script 世界への橋渡しをする存在なのだ.
言い換えると HTML 世界の規則に縛られる.
DTD が HTML4.01 ならば大文字小文字混在でも問題はない.
DTDが XHTML ならば " 大文字は好ましくないよん. " と注意されるだけなのさ.
どちらにしても Script 世界とは 別の話.
30 :
19 :04/11/07 19:41:08 ID:???
>>20 HTMLの属性内に書いてるんだからOnClickでもonClickでもOKでは?
何か問題でもあるの?
>>21 style="cursor:hand;"
>>29 そう、Scriptとは別の世界。でもScriptで大文字使って動かないと
いってる奴は実在して、そういうのはダサイと洩れは思う。それだけ。
>>30 HTMLの「属性内に」書いてあっても
<body onload="document.links[0].onMouseOver=function() { alert('?'); }">
やってみなよ、動かないから。いやまあ、そういう話じゃない
んだろうけど。でも全部小文字の方がカコイイと洩れは思うね。
大元の
>>17 は洩れではないんで彼がどういうつもりかは知らん。
洩れは好みの話をしてるだけ。
>>20 の○×は Script中の話を
してるだけ(JavaScriptスレだしね)。
>>20 にもそう書いたよな。
32 :
19 :04/11/07 19:56:20 ID:???
>>31 「属性内」→「属性名」 だ。スマソ。脳内置換ありがdw
結局、カッコイイかどうかの問題なんでしょうか?
漏れは長いイベント名はどこが切れ目かわかりにくいから単語の頭は大文字にしてまつ。
33 :
13 :04/11/07 20:59:22 ID:???
みなみなさんすいませんです。。
<td class="style"><a onClick="MM_openBrWindow('ore01.html','WINDOW','scrollbars=yes,resizable=yes,width=400,
height=350')">NO.01</a></td>
これの"style"っていうのがCSS名前なんす。
>>30 ありがとうございます、"cursor:hand;"←これって
どこに入れたらいいんでしょうか。。。?
>>33 相変わらず判りにくいが、一言で言えば板違い。
35 :
13 :04/11/07 21:18:30 ID:???
>>34 すいません。。。
CSSのこの<td class="style">っていうのは数字の大きさを決めてるんす。
CSS名前??? 言いたい事はわかるが頼むから最低限のHTML/CSS/JSの専門用語を覚えてくれ
37 :
13 :04/11/07 21:38:12 ID:???
cssは外部テキストなんす。
38 :
34 :04/11/07 21:55:43 ID:???
ぶっちゃけるが、オレはわかんないぞ、文句あんのか?あ?
39 :
19 :04/11/07 21:57:54 ID:???
<td class="style"><a style="cursor:hand;" onClick="MM_openBrWindow('ore01.html','WINDOW','scrollbars=yes,resizable=yes,width=400, height=350')">NO.01</a></td> ココまで書かぬと分からぬか! ふとどき者め! 出直して参れ!
0
41 :
13 :04/11/07 22:46:42 ID:???
>>39 どうもありがとうございます!出来ました〜!!
42 :
19 :04/11/08 00:16:38 ID:???
43 :
17 :04/11/08 00:32:43 ID:???
>>31 わけわかってない部分があるな。とりあえず次を読んで自力で理解してくれ。
text/html なレスポンスを受け取って、それをいきなり JS の規則ではパースしない。
至極当然ながら、HTML の規則でパースする。
HTML は イベント属性の属性値を条件付の CDATA としている。
条件とは、エンティティを展開する、ということ。
<p onclick="alert("foo&bar" + this.className)" class="baz">
→ alert("foo&bar" + this.className) というテキストデータとみなす。
HTML の規則による解析後、通常の既定では JS として解釈される。
JS の解析では、JS のイベントプロパティは次の様に書き換えられる。
(HTMLParagraphElement p).onclick=function ( ) { alert( "foo&bar" + this.className) }
(HTML の)イベント属性に特別なのは、JS がスコープオブジェクトを作ること。従って、
<p onclick="alert("foo&bar" + className)" class="baz">
と this 抜きに書いても問題無い。
44 :
17 :04/11/08 00:34:50 ID:???
おまえら、酷い無知ですね。仕様や勧告をまともに読んだ事ないだろ。
http://www.w3.org/TR/html4/strict.dtd を見てみれば分かるが、onClick なんて定義はされていない。小文字で、onclick である。
たとえ HTML が大文字小文字を無視する規格であっても、
わざわざ DTD の通りに書かない上に、大文字小文字を混在させる、
という姿勢は感心しない。
しかし、これが XHTML になると深刻である。
http://www.w3.org/TR/xhtml11/DTD/xhtml11-flat.dtd 無知なおまえらの XHTML が糞であるという事実を知る術はないから、
とりあえず、パースしようと試みるだろう。
標準準拠なパーサ (xerces など) を使っている場合、
既定のままでは、エラーと見なされてパースされない。
その例外処理にソースコードにして数十数百行というコストが発生する。
XHTML を書くなら、DTD の定義通りに書かなければならない。
なぜか大漁
46 :
43 :04/11/08 00:39:41 ID:???
展開されてしまった。 × <p onclick="alert("foo&bar" + this.className)" class="baz"> ○ <p onclick="alert("foo&bar" + this.className)" class="baz">
エンティティの展開なんてこの話題ではどこにも出て来て ないだろうが。知識のひけらかしだったら誰も求めてないから。さいなら。
Webグラマにはうるさいの多いな 自分のコードがどの環境で動くかだけ見てりゃいいんだよ 俺はパフォーマンス追及派なんで清書好きは合わんなね 実稼動するか、効率的か、どうか。まずそれだけは抑えるだけ。
清書は効率が悪いですかそうですか プッ
洩れも
>>48 には爆笑だね。そんな奴にまっとうなコードが
書ける訳はないよね。
>>48 あなたは、一生オナニーしながら
自分の書いたコードのメンテしてなさい。
釣れるね。この煽りw まだいけるかな?
53 :
Name_Not_Found :04/11/08 08:47:05 ID:y8bDLVOJ
<APPLET CODE ="△△△.class" WIDTH=140 HEIGHT=240> </APPLET> ってタグ入れてIEで出力させようとしたら load: class △△△ not found って出るのですが 環境変数の設定が間違っているのかな・・・?
54 :
48 :04/11/08 09:07:09 ID:???
55 :
48 :04/11/08 09:11:53 ID:???
54書くのにブロックされたから 誰が必死なのか、明解 そういうスレだからさよなら〜
テキストリンク <a href="#" onClick="foods(1)" >1</a> のonclick内を追加し、予め表示されている下記のmap内の一部を動的に変えたいと思います。 <map name="1"> <area shape="rect" coords="102,482,130,524" href="#" onClick="hoge('./folder/08.html','hage','scrollbars=no,width=680,height=550')"> </map> やりたいことは、function hoge()で別ウィンドウが開くのですが、 08.htmlという部分を、違うhtmlファイルを開くようにしたいのです。 関数を作って、onclickで、やるのでしょうか? javascriptが分からないので、記述方法を教えてくれたらありがたいです。 よろしくお願いします。
>>56 飛び先は適当な変数に入れておくことにして,初期値を
08.htmlにする。onclickの動作でその変数の内容を変更。
hogeにはその変数の値を渡す。
規則的な名前の付いたオブジェクトが3つほどありまして、 <img src="〜〜" name="n1" 〜〜 <img src="〜〜" name="n2" 〜〜 <img src="〜〜" name="n3" 〜〜 これを独自のオブジェクトを定義する要領で変数的に扱いたいのですが、 for(j=1;j<=3;j++){ OBJ="document.n"+j; OBJ.src=〜〜〜.src; } こんな感じにしたいのですが、うまく作動しません。 エラーすら出ません。 何か良い方法ないでしょうか。
OBJ = document.images["n"+j]; images[名前]でアクセスできたかどうかは忘れた
61 :
56 :04/11/09 10:31:14 ID:???
>>57 すみません、、、。
やることはなんとなく分かるのですが、記述方法を全く知らないので、
できれば教えてほしいのですが、、、。
62 :
58 :04/11/09 11:08:20 ID:???
>>59 出来ました〜
ありがとうございました。助かりました。
>>60 すいません。ピンとこないFAQもあったのですが、理解してから見返すと
意味が分かるものも出てきました。精進するので勘弁してください。
>>61 こんなこと言えた身分では無いですけど、同じ質問する立場として一言。
前スレで誰かが言ってましたが、ここは一から手取り足取り教えるスレッドではないですよ。
ある程度理解してて、行き詰ったとき質問すると、ピンポイントで答えが返ってくるスレです。
「手取り足取り教えるJavaScriptスレ」を別に作った方が よければ考えようよ。「気が向いた時だけ」ならそっちの 解答者もやってもいいと思っている。
ちかごろまたマ板やム板にいそうなプロが通りすがってるので
ちびった
>>63 が避難場所をもとめています.
65 :
63 :04/11/09 13:57:03 ID:???
いや別になくたっていいよ。でもこのスレに手とり足取り な奴がくるともめるよね。洩れももめさせてるけどさ(ry
思うに、初心者に分からせるように教えるというのもそれなり のワザが要るのであって、半可通には難しいという気がする。
頑張りたくない人はコピペですぐ動くものを欲しがらないか?
69 :
67 :04/11/09 22:59:29 ID:???
たててから4時間半弱で、あっち17レス、こっち1レス。 あ、漏れはこっち派です。
スレルールを斜め読みなので、失礼があれば御容赦を。 今までIE6のみだったのをFireFoxにも対応しようと、自作JScriptの 見直しをチマチマと続けているのですが。 その中で、背景色のランダムフェードなのですが。 もしかしてFireFoxは、document.bgColorに 0x00ffffff を書き込んでも #ffffffを返さない? BGColor = 0xffffff; document.bgColor = (BGColor); alert( " "+BGColor + " / " + document.bgColor ); 英語分からんので日本語サイト調べようとしたら、どこも激重('・c_・` )
普段そういう書き方をしていないので申し訳ないが、 b=document.getElementsByTagName("body")[0]; として b.style.backgroundColor を参照するとどうだろうか。
72 :
Name_Not_Found :04/11/10 01:17:34 ID:4NXVysKg
<table><tr onclick="change(this)"><td><a href="">hoge</a></td><td>hoge2</td></tr></table> function change(ojb){ if (obj.style.color == "#ff0000") { obj.style.color = "#000000"; } else { obj.style.color = "#ff0000"; } } これだと、hoge2は色が変わりますが、hogeはリンクの色が効いている為、変わりません。 リンクの部分も同時に変えるにはどうしたらいいですか。 <a>タグにidなどを付ける以外でお願いします。
>>70-71 摸前ら、FAQ
>>9 のQ8/A8読んでないっしょ?
そういうところは変数じゃないんだから書き込んだ
ものがそのまま読めるとかいうわけには行かない。
>>72 this以下のノードを全部たどって色変えるとか?
たどり方は勉強してくれ。
>>72 this.firstChild.firstChild
tekito-
>73 確かに、trの子要素を辿っていってa要素のスタイルを変えればできると思ったけど、 それだとコードが増えるなぁと思って。 trから一発でスタイルを変えるのは無理か。
>>73 ん?そういうことなん?
< BGColor = 0xffffff;
< document.bgColor = (BGColor);
< alert( " "+BGColor + " / " + document.bgColor );
だから、スタイルシート関係ないのでは?
ともあれ、スタイルシートで定義されたののは、
style.currentStyle を使うか、getComputedStyle()を使えばできるっしょ。
77 :
76 :04/11/10 02:28:12 ID:???
間違えた。引用するときは 「<」ではなく「>」ですね。 見づらくてスマソ。
>>70 > もしかしてFireFoxは、document.bgColorに 0x00ffffff を書き込んでも
> #ffffffを返さない?
Geckoはdocument.bgColorにNumber型の値を入れても
6桁の16進数に'#'を付加した文字列へと自動変換はしてくれない。
Number型の値から#XXXXXXという文字列を生成する処理を自前で作ろう。
79 :
61 :04/11/10 12:49:59 ID:???
>>62 すみません、、、。
勉強したいところなのですが、仕事でやっていることなので
時間がなくて、切羽詰まって質問しました。
今度からは、それ用のスレにて質問させていただきます、、、。
申し訳ありませんでした。
「'#'+(値 + 0x1000000).toString(16).substring(1)」これだけでしょ。
>>71 こちらとしても、そんな書式があるのを知らなかったです。
リファレンスを2冊使っているけど、どちらにも解説は・・・。
読解出来れば、新しく世界が開けるかな?
どうもでした。
>>73 見落としていました_/ ̄|○
御恥ずかしい。
プロパティへの読み書きってのは、変数への読み書きと同等に認識していました。違うのですね。
でも、ハードウエアを覗いているような感覚でなんだか気分悪いです。
>>76 Don't mind.
まあ、CSSは手段の1つですから。
参照先は変わらないでしょうし。
でも、A8で返答しているプロパティとメソッド?、それが手元の資料で見付からないのですヨ(^^;
もちょっと調べますが。
>>78 >>80 あいや、頭の'#'だけが問題なら私程度の知識でもリファレンス片手に出来るのですけどね。
と言うか、#付きの6桁で返って来ますよ。
皆さん返答有難う御座いました。
現時点で問題解決には至っていませんが、示された糸口に従って精進したいと思います。
有難う御座いました。
あのぉ…ダメもとでお願いいたします。。
ttp://www.ne.jp/asahi/ma-kun/ore/index.html このサイトのトップにある
カーソル合わせたら絵がひとまわりちっこくなるやつを自分のホームページでも
したいのですけれども、、
どのへんをどういじるのかがわかりません。。
多分あらかじめ画像を2つ(コレでいうとTCS.gifとTCSb.gif)用意しておき、
Javaでなんかやってると思うんですけど、
ソースの中にある
「target="_parent" id="_HPB_ROLLOVER1"」
このあたりの使い方がよくわかりません。。
わかる方がいらっしゃいましたら簡単でもよいので私に何かヒントを〜(._<)
もしくはいいサイトなどございましたらご教授願いますm(_ _)m
また、スレ違いでしたら誘導をばしていただけるとそれはもうありがたき幸せでございます。
では、何卒よろしくお願いいたします。
>>82 カーソルが乗ると画像が小さくなるの、というか取り変わるのは
非常に一般的でどこにでもサンプルがあるからサンプル探して
勉強してね。target属性もid属性も関係ない、つかあんたが見た
サイトでは使ってるかも知れんけどそんなもんなくてもできるし。
「JavaScript ロールオーバー」でぐぐればいいかな。
>>83 ありがとうございました☆
こりゃいいですねかなり使えそうです。
非常によい検索単語でございました。
もういくらでも作れそうです。
javaのとこは先読みとかをしてたんですね。
完全なる善意、感謝致します。(^-^)/
ではでは。
JAVA と JavaScript は違うとあれほど(以下略
まぁ俺も独学し出した当初は本屋でJAVAの本見て「?ホムペに使えるやつ載ってねーじゃん」とか思ってましたから・・・w
87 :
Name_Not_Found :04/11/11 15:06:50 ID:aFi4+koZ
フレームのページ内でjavascriptを使ってリンクすることってできるの? location.href="..." target="X"みたいに・・・
>>87 日本語が非常に分かりにくいんだけど。仮にaタグのtargetと
同じことをしたいというのなら、
top.frames.フレーム名.location.href = 'URI';
89 :
87 :04/11/11 17:10:37 ID:aFi4+koZ
>88説明不足スマソ えーと・・・ フレームでページを上下に分割して上のページでパスワード入力します。 そのページを下に表示したいんですけど・・・出来ますかね?
>>89 下フレームのframeタグでname="lower"と指定しているなら、
top.frames.lower.location.href = '行き先';
で表示を切替えるんでしょ。てか
>>87 と同じだろ!
91 :
87 :04/11/11 18:17:44 ID:???
>>88 >>90 ありがd
エラーいっぱい出てたけどテキトーニいじってたら出来た・・・(・∀・)ニヤニヤ
92 :
Name_Not_Found :04/11/12 01:05:20 ID:4qMf/LjA
<input type="text">に入力した〒番号から、住所を検索して住所欄に 入れるcgiを作りますた。 <form></form>間でなんとかして、そのcgiに〒番号を送ってやりたいのですが sabmitは送信のときに使うから<a>かjavascriptってことになるわけですが 〒番号の<input type="text">からフォーカスが他にうつったときに javascriptでcgiに番号を渡して、検索結果の住所を入れるまでは上手く逝きますた。 〒番号をキー入力が数字7桁入れたとこで、javascriptでcgiに渡すうまい 方法ないでしょうか?onChange使うのかな?onChangeのたび、 ¥d{7}になるかチェックみたいな感じで考えたのですがどうもだめです。 どうか、アドバイスをおながいします。 ※cgiの方はハイフンは無視、全角数字は半角に置き換えるようにしてあります
>>92 まず、日本語をもう少し勉強してください。
そして、
>onChangeのたび、
> ¥d{7}になるかチェックみたいな感じで考えたのですがどうもだめです。
この部分をどう実装したのか、ソースを張ってください。
>>92-94 英語もだめじゃん ×sabmit ○submit。入力フィールドは
RETURNとか押さないと値が確定しないから自前でキーイベント取る。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var i0
function init() {
i0 = document.forms.f0.elements.i0;
if(document.all) i0.onkeydown = function() { key(event.keyCode); }
else i0.onkeydown = function(e) { key(e.which); }
}
function key(k) {
if(k < 0x30 || k > 0x39) return;
i0.value += String.fromCharCode(k);
if(i0.value.length == 7) alert(i0.value);
}
</script>
</head><body onload="init()">
<form name="f0" onsubmit="return false"><p>
<input name="i0" type="text" readonly></p></form>
</body></html>
ネットスケープ用のスクリプトで 「やふー」という文字の上にマウスカーソルを乗っける ↓ id="ohn"のdivタグが現れる ↓ そのid="ohn"のdivタグは、マウスカーソルを原点に表示される。 というのを作ろうとしてます。 id="ohn"をfixedで固定してleftやtopで位置を指定すればいいのかなと思い作ってみたのですが上手く動作しません。 どのようにすればいいのでしょうか? <html> <head> <script language="JavaScript"> <!-- function onmove(){ document.getElementById("ohn").style.display = "block"; document.getElementById("ohn").style.left = evt.pageX; document.getElementById("ohn").style.top = evt.pageY; } // --> </script> </head> <body> <div id="ohn" style="display:none;width:300px;height:140px;position:fixed;background:#f80;">ぉ〜ん?</div> <div onmousemove="javascript:onmove();"><a href="#">やふー</a></div> </body> </html>
98 :
97 :04/11/12 12:06:17 ID:5vann1h3
一応ID出します
99 :
97 :04/11/12 14:24:13 ID:5vann1h3
やっと解決しました お邪魔しました
100 :
Name_Not_Found :04/11/12 14:26:15 ID:J20/UQCt
質問です INPUTタグで、valueで注意書きをあらかじめ書いておいて ユーザーが記述する時、クリック一つで注意書きが消える スクリプトを教えてください <input name="com" type="text" id="com" size="50" value="一言どうぞ(全角100字以内)" maxlength="200" onclick="reset();"> こんな感じで、コメントしてもらう時の注意書きを消す手間を省きたいです
>>99 参考までに完成したスクリプト内容を見せてくれると助かります
>>100 そこまで書けてるのになぜ思いつかないのか疑問なのですが、一応参考までに
function reset(){
document.formname.com.value="";
}
これで動くかと思いますよ。
formnameの部分は自分でつけたformの名前を入れてくださいな。
103 :
100 :04/11/12 15:04:54 ID:???
>>102 すみません・・・うまくいきませんでした(;つД`)
ご丁寧にありごとうございました
>>100-104 なんでこんな騒ぎに、、、
「onclick="this.value=''"」これだけでしょ?
確認してないが
>>43 が本当なら
>>100 はformのreset()になってるんじゃないか?
>>106 なるほど!ありそう。一般的な名前は怖いね。
108 :
100 :04/11/12 16:15:32 ID:???
>>105 (・∀・)それだ!
無事動きました。ありがとうございました。
str = "あああああ(あああ)いいいい"; と代入されている変数から、 split関数・join関数を用いて、 (あああ) の部分を消去したいのですが、 str = (str.split("\(.*\)")).join(""); とやっても正常に動作しません。 どなたか教えてください。 ブラウザはIE 6.0、OSはWindowsです
>>109 split(/\(.*\)/).join("");
111 :
Name_Not_Found :04/11/12 20:35:17 ID:CfuO3i7e
>>109 なぜreplace()ではなくsplit()を使うわけ?
112 :
97 :04/11/12 22:39:37 ID:5vann1h3
envの扱い方を知れば使えるようになるようです。
>>101 <html><head><script language="JavaScript">
<!--
function onmove(child)
{
if (document.getElementById){ //NN6用
paOBJ = this;// paOBJ はそのままの設定
chOBJ = document.getElementById (child);// chOBJは初期化
}
paOBJ.childname = child;// ツールチップの名前を記憶させる
paOBJ.onmousemove = moving;// paOBJ内をマウスが動いたら moving を動作させる
}
// 重要なのは paOBJ.onmousemoveでこの関数を呼び出す事
// 普通に呼び出したのでは[env]が取得できない。
function moving(env) {
chOBJ = document.getElementById (paOBJ.childname);
chOBJ.style.display = "block";
chOBJ.style.left = env.pageX+20;
chOBJ.style.top = env.pageY+1;
}
function outmove (child) {
paOBJ = document.getElementById(parent);// 外に出たら元に戻す
chOBJ = document.getElementById(child);
chOBJ.style.display = "none";// 見えなくする
}
// --> </script></head><body>
<div id="ohn" style="display:none;position:fixed;width:100px;height:60px;background:#f80;">ぉ〜ん?</div>
<a href="#" id="yahho" onmousemove="javascript:onmove('ohn');" onmouseout="javascript:outmove('ohn');">やふー</a>
</body>
</html>
113 :
97 :04/11/12 22:44:23 ID:5vann1h3
>>111 何が何でもJS1.1に対応させたかったとか…
>>114 ドットと量指定子を書いて split の第一引数を正規表現にしたつもりになってるのに 1.1 はあり得ない
質問ですが、変数a,b,cを一つの配列にしたものを戻り値にしようとして、次のような記述をしました。 return Array(a, b, c); 一応うまくいくのですが、これは文法的に正しいのでしょうか?
メソッド内でそれを呼び出しているインスタンス名を 取得することはできるでしょうか?
122 :
Name_Not_Found :04/11/14 10:36:10 ID:KGHKznDK
>>120-121 「インスタンス名」をどう定義するわけ?「呼び出している」を
どう定義するわけ?
「var a = new XXX(); a.method();」で「a」を取得したいわけ?
「var b = a; b.method();」でもオブジェクトは同じだがここでは
「b」を取得したいわけ? そもそもこれらどちらでもmethodを
「呼び出している」のはどっか別のコードであって aやbに格納
されているオブジェクトとは別のオブジェクト内にあるかも知れない
わけだけど、そっちの何かが知りたいわけ?
わけ? わけ? わけ? お姉さまこわいよーん。
脇毛
a.html上にiframeで表示しているb.htmlの任意のdivブロックにアクセスしたいのですが、 以下のようにすると win ie6/mac ie5 では動くのですが netscape,safariなどで エラーになります。(エラーの内容:document.frames in not a function) netscape,safariなどでもアクセスできるようにアドバイスをいただけないでしょうか。 //a.htmlのソース(抜粋) <head> <script type="text/javascript"><!-- function hide(){ fmobj = document.frames("hoge"); fmobj.document.getElementById( "fmhoge" ).style.display = "none"; } // --></script> </head> <body> <iframe src="b.html" id="hoge" name="hoge"> <form><input type="button" onclick="hide()"></form> </body> //b.htmlのソース(抜粋) <body><div id="fmhoge" style="display:block">あいうえお</div></body> よろしくお願いします。
申し訳ありません。抜粋しているとき削除してしまいましたが、 実際のソースでは<iframe>はちゃんと閉じています。 <iframe src="b.html" id="hoge" name="hoge"></iframe> 訂正いたします。
fmobj = window.frames["hoge"];
>>127 fmobj = window.frames.hoge;
129 :
初心者 :04/11/14 13:24:40 ID:DdGs+FSN
130 :
120 :04/11/14 13:50:35 ID:???
>>121-122 >「var a = new XXX(); a.method();」で「a」を取得したいわけ?
この通りのことがしたかったのですが、そりゃ無理ですよね。
意味不明なこと言ってすみません。ありがとうございました。
>>129 初心者かどうかなんて関係ないからそのつもりで。
しかし読みにくいコードだね、それ… 変数myFlgが
「現在どのモードにあるか」を表しているから、
全部表示し終わった後はもう最後にsetTimeout()を
呼ばないでやればそれ以上動作しないで止まるんじゃ
ないの。まあコードが読めるように努力する必要は
どのみちあるから、がんがれ。
132 :
初心者 :04/11/14 15:05:20 ID:DdGs+FSN
setTimeout( "my_tipeMes()" , 500 ); この行を消したら表示もされなくなってしまいますた。
134 :
131 :04/11/14 16:22:22 ID:???
あんまりだー(泣)
>>125 fmobj=document.getElementById('hoge')
(なんのために iframe に id を振っているのだろうか...)
137 :
Name_Not_Found :04/11/14 20:42:22 ID:0oL2VzKQ
正規表現がさっぱりわかりません(ややこし杉) \s*[\s,]\s* はどんな文字列パターンをあらわしてるのでしょうか? よろしくおながいします。
JavaScriptを使ってページに訪問者のIPを表示させる事ってできますか?
141 :
Name_Not_Found :04/11/14 21:17:51 ID:MftnuPVF
>>138 JavaScriptはあくまでローカル側の操作だからね。
143 :
137 :04/11/14 21:43:08 ID:???
ありがとうございました。勉強します。 それにしてもmsdnは自社製品にもかかわらずMacIEでみるとウザイを 通り越して怒りすらおぼえますね。 メニューがutf-8,コンテンツがShift_JISなのでAuto Detectにしても メニューの文字が全て??????????????になってしまいます。 関係ない話スマソ
>>138 <script type="text/javascript">
document.write('127.0.0.1');
</script>
>>127 ,128
ありがとうございました。教えていただいたいずれの記述でもアクセスできるようになりました。
fmobj = window.frames["hoge"];
fmobj = window.frames.hoge;
>>135 ありがとうございました。わたしも以前同様のの記述をしていましたが
ie6では『'fmobj.document.getElementById(...).style'はオブジェクトではありません』、
nn7では『'fmobj.document has no properties』
とエラーが出てアクセスできなかったので、frames. に変えた経緯があります。
あらためて記述してみたのですがやはりエラーになりました。
fmobj=document.getElementById('hoge')
ちなみに、代入しないで直接記述しても同じ結果でした。
document.frames("hoge").document.getElementById('hoge')
もし、なにか勘違いをしているようでしたらご指摘いただけますと助かります。
申し訳ありません。間違えました。 誤)document.frames("hoge").document.getElementById('hoge') 正)document.getElementById('hoge').document.getElementById( "fmhoge" ).style.display = "none"; 上記のように記述してもエラーになった、というご報告です。すみません。
>>146 Mozilla (NN7)
frames.hoge // [object Window]
Object.prototype.toString.apply( frames.hoge) // [object Window]
document.getElementById( 'hoge') // [object HTMLIFrameElement]
document.getElementById( 'hoge').constructor // [HTMLIFrameElement]
Object.prototype.toString
.apply( document.getElementById( 'hoge')) // [object HTMLIFrameElement]
>>146 Mozilla (NN7)
frames.hoge.frameElement == document.getElementById( 'hoge') // true
frames.hoge.frameElement.style.display = 'none';
document.getElementById( 'hoge').style.display = 'none';
149 :
Name_Not_Found :04/11/15 14:20:48 ID:q3Ifa/8z
<select name="select"> <option selected>項目を選んでください</option> <option value="a">項目1</option> <option value="b">項目2</option> <option value="c">項目3</option> <INPUT type="submit" name="button" value="ボタン"> 上記のように選択項目にプルダウンメニューを使って、 最初に表示される所を「項目を選んでください」という文を入れたいと思っているんですが、 この項目を選択した状態でボタンをクリックしても 何もアクションを起さないようにするにはどうしたらよいですか? 宜しくおねがいします。
>>149 var b = ボタンの要素
として、
b.onclick = function(){
if(document.getElementsByName("select").selectedIndex == 0) return;
// 以下、やりたい処理を書く。
}
とか。
>>149-151 まず「name="select"」な要素が1つしかないものとして、
... document.getElementsByName('select')[0].selectedIndex ...
とする必要がある。洩れはID振ってgetElementsById()を使うこと
を進めるね。どのみち「select」なんて混乱しそうなnameをつける
のはやめた方が無難。
153 :
151 :04/11/15 16:04:42 ID:???
あ、getElementsByName って配列で返すんでしたね。 Elements だもんね。 すまそ。
154 :
Name_Not_Found :04/11/15 16:16:45 ID:q3Ifa/8z
>>151-153 ご教授いただきありがとうございまふ。
151のb=ボタンの要素というのは、どういう意味でしょうか?
<option name="ボタンの要素">〜</option>という風に振れ、ということですか?
155 :
151 :04/11/15 16:38:56 ID:???
>>154 ボタン、というのをselect要素とは別にスクリプトを発動させる要素がある
と想像してのモノです。
例えば input type="button" の場合、漏なら、
<form id="foo">
<p><select>
<option>あああ</option>
<option>いいい</option>
</select></p>
<p><input type="button" value="click"></p>
</form>
と書いて、
var b = document.getElementById("foo").getElementsByTagName("input")[0];
としてアクセスします。
156 :
155 :04/11/15 16:39:34 ID:???
×というのを ○というのは
157 :
Name_Not_Found :04/11/15 17:05:33 ID:q3Ifa/8z
>>155 先ずvar b = document.getElementById("foo").getElementsByTagName("input")[0];
と宣言して、... document.getElementsByName('foo')[0].selectedIndex ...
とすればよいのでしょうか?
JavaScript全然わからないものですみません。
158 :
155 :04/11/15 17:47:40 ID:???
>>157 JavaScriptは、大雑把に言うと、ドキュメント中の要素にアクセスしてゴニョゴニョするための
スクリプト言語です。で、多くの場合、クリックしたらとかロードされたらとか、動作の起点に
なるものが必要だったりします。今回の場合、どのような動作になるかは知りませんが、ボタン
がクリックされたときに、そのときselect要素で選択されているモノに従ってスクリプトが動作
するわけです。
ボタンの要素にアクセスする方法が
document.getElementById("foo").getElementsByTagName("input")[0]
で、この要素をとりあえず b という変数に格納しておきます。
ボタン(b)がクリックされたとき、というのを JavaScript で書く場合には、
b.onclick = function(){ //処理 } とします。ボタンのタグにonclickという属性で各方法もあり
ます。この処理系の中で、select要素も document.getElementsByName("select")[0]
でアクセスし、これまた sel という変数に格納します。ここで sel の現在選択されている
optionの番号(selctedIndex)によって、続く処理を行うか否かを書いてあげればよい、と。
さらに、上記一連の動作自体も何かしらの起点が必要です。document にアクセスするために
window.onload = function(){ //処理系 } とするのが一般的です。
159 :
158 :04/11/15 17:51:56 ID:???
> document にアクセスするために というのはコトバ足らずかもしれません。 document にアクセスするためには document がロードされているコトが前提です。 onlaod(ロードされたら)というイベントハンドラが、window もしくは img オブジェクト にあるので、ソレを利用しますよ、ということです。
>>145 (
>>125 )
個人的な意見だけど,
iframe を使わざるを得ないような状況は限られていると思う.
たとえば, 同一 server 上でしか動作しないような CGI を
weblog などに無理やり引っ張るような場合とか...
(この場合,JavaScript の出番はないと思う.)
そもそも, iframe 内に表示されている内容が異なる server からのものの場合,
それに対しての操作は不可能なのが JavaScript の仕様.
そういう操作をしたいのなら,最初から表示予定の document に仕掛けた方が確実.
当然ながら,他人の resource に対しての操作は不可能だと考えたほうが良い.
<select name="select"> <option value="#">項目を選んでください</option> <option value="a">項目1</option> <option value="b">項目2</option> <option value="c">項目3</option> // -------------------- if(document.form.select.value == "#") return false;
>>157 select に id を振って(仮に id="slc0" としておく)
obj_slc=document.getElementById('slc0');
n=obj_slc.selectedIndex;
(DOM は object を簡潔に指定する時にこそ有効.)
>>158 > JavaScriptは、大雑把に言うと、ドキュメント中の要素にアクセスして
> ゴニョゴニョするためのスクリプト言語です。
WSH の例を出すまでもない。大嘘書くな。
> b.onclick = function(){ //処理 } とします。
現在、JS を有効にしている UA の100% 近くが、
attachEvent または addEventListener を理解するわけだが。
>>159 document が、そのプロパティ (HTMLSelectElement など)
よりも後からロードされるとでも?
そもそも、おまえの脳内用語が散乱してて、何言ってんだか分かんねえよ。
恥かく前に、仕様書読んで用語を確認しろよ。
>>158-159 みたいに頭の悪そうな説明はスルーした方がよいよ。読むだけ
時間の無駄。
<!-- function aut(int) { if ( int ) { //ここに処理したいことを書く } } //--> <form> <select> <option selected>ここからえらんで</option> <option value="a">いっこめ</option> <option value="b">にこめ</option> <option value="c">さんこめ</option> </select> <Input type="button" value="おせ" onclick="aut(document.forms[0].elements[0].value);"> </form> これじゃダメなのかい?
ここはWEB製作板 wshとかは板違い そもそもwshはjscript
169 :
Name_Not_Found :04/11/16 00:54:21 ID:7sri7RAK
フレーム構造をとったメインウィンドウから showModelessDialog でサブウィンドウを開ているとき ブラウザの更新ボタンを押されるとサブウィンドウが消えずに生き残ってしまいます。 どういった対処をすればいいでしょうか?
showModelessDialog をやめて普通の別窓にして onunload()なりでその窓を閉じるようにするとか。
171 :
Name_Not_Found :04/11/16 01:15:46 ID:7sri7RAK
>>170 即レスありがとうございます。
showModelessDialog を使用している理由は
常に前面に出ているサブウィンドウからメインウィンドウの表の値を修正させたいためです。
蔵のブラウザもIE6限定だし、それならば showModelessDialog が最適かなと・・・。
サブウィンドウには20個の入力フォームと更新ボタン、キャンセルボタン、次移動ボタンがあります。
いまのところブラウザの更新ボタン対策以外はうまくいってるんですが・・
サブウィンドウのフォーカスを保ったまま(入力に違和感ない程度)で
常にサブウィンドウを最前面にだせれば
別窓で開いてもいいんですが・・・。
172 :
Name_Not_Found :04/11/16 09:23:46 ID:71tVGXtR
>>166 漏れも同じようなのほすいんだけど、それだとどの項目選択しても無効になって
るんだが、どうしたらよいのだろか・・・。
ブラウザの戻るボタンで戻った時に、フォームの内容を消すようにしたいのですが、 なんか方法無いでしょうか。 ブラウザの「戻る」を使うとonLoadが実行されないようなんです。
>>173 submit する直前にreset()してしまうのはどう?
>>173 戻った時はそうだよね。別窓とか隠しフレームを仕込んでそこで
継続的に監視するしかないかな。
>>172 まず
>>166 はパラメタ名をintじゃなく別のものにするのと、
イベントハンドラをonclickではなくonchangeにすると。それで
どう動かないって?
>>171 うーん、unforcus()したら1秒後にfocus()してさらに3秒以内に
unfocus()されたらそのときはfocus()しないとか、そういう工夫
かなあ。苦しいけど。
>>174 やってみたんですが(onUnload時ですが)、ページ移る時に消えることは確認したんですが、
「戻る」で戻るとまた元の値が入っています・・・・・・
http://mixi.jp/ ここは適当にいれてエラー出してブラウザの戻るで戻るとちゃんと消えているんですが、
なんか特殊なことをサーバー側かなんかでやってるのかと思って見てみたら
HTTP/1.1 200 OK
Date: Tue, 16 Nov 2004 03:53:42 GMT
Server: Apache/2.0.50 (Fedora) mod_perl/1.99_13 Perl/v5.8.3
Cache-Control: no-cache
Pragma: no-cache
と、no-cache指定があるので
metaで指定してもこっちではだめでした、、orz
これはcgiで出力しているってことですかね。。
>>175 別窓で監視とかやったことないのでよくわからないんです
なにを監視させるのかすらわかりません。(´・ω・`)
>>166 function aut(_o) { alert( _o.options[_o.selectedIndex].value ); }
<Input type="button" value="おせ" onclick="aut(this.form.selectName)">
>>169 動作確認してないが
newWin = showModalDialog("foo.html");
onunload = function(){ window.newWin.close(); }
>>173 GET なら方法も浮かぶがPOST だったら俺にはワカラン
>>176 >no-cache
仕様書通りならレスポンスヘッダに在るかMETA に在るかの違いだけで関係ないハズ。
>>176 クッキーで状態を覚える方法でやってみた。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var c;
function watch() {
var a = String(document.cookie).match(/COUNT=(\d+)/);
if(a == null) c = 0; else c = Number(a[1]);
if(c % 2 != 0) {
document.forms.f0.reset(); document.cookie = 'COUNT=' + (++c);
}
}
function incr() { document.cookie = 'COUNT=' + (c+1); }
</script>
</head><body onload="setInterval(watch,500)">
<form name="f0" onsubmit="incr()" action="xxxxx"><p>
<input name="i0" type="text"><input type="submit"></p></form>
</body></html>
179 :
174 :04/11/16 14:58:22 ID:???
>>176 hidden を必要な分だけ用意しておいて、
onsubmit もしくは onclick で、入力された値をhiddenのvalueに移し替えする。
実際に投げるのはhiddenの方で、入力してもらうのは全部ダミーで。
で、reset() してから submit() する、ってのはどうだろう。
180 :
169 :04/11/16 16:50:09 ID:+6gMPV5z
>>177 説明不足でした。
サブウィンドウを開いたまま随時メインインドウの表を更新したいので
モーダルウィンドウでの実現はないかなと思っています。
(低速回線ゆえにメインウィンドウ、サブウィンドウの表示に時間がかかるため)
>onunload = function(){ window.newWin.close(); }
うまく動きませんでした。(エラーになりました)
テスト画面をつくってみました。どこかで妥協するしかないのでしょうか?
## Main.html ##
<html><head><title>メインウィンドウ</title></head>
<frameset rows="*,20%">
<frame src="Main_Top.html" name="FRA_Top">
<frame src="Main_Btm.html" name="FRA_Btm">
</frameset>
</html>
## Main_Btm.html ##
<html><body style="background-color:#cccccc">下フレーム</body></html>
181 :
169 つづき :04/11/16 16:51:01 ID:+6gMPV5z
## Main_Top.html ## <html><head> <script type="text/javascript"> var subWin1 = null; var rowIndex = null; function subWin_open(Index){ if(subWin1==null){ rowIndex = Index; subWin1 = showModelessDialog("Sub.html",window,"dialogWidth:500px;dialogHeight:180px"); } } </script></head><body> <table id="ID_TBL" border="1"> <tr><th></th><th>書籍コード</th><th>タイトル</th><th>作者</th></tr> <tr><td><input type="button" value="修正" onClick="subWin_open(1)"></td><td>500</td><td>シャコバサボテン</td><td>浜田 豊</td></tr> <tr><td><input type="button" value="修正" onClick="subWin_open(2)"></td><td>501</td><td>悩み多き哲学者の災難</td><td>ジョージ・ハラ</td></tr> <tr><td><input type="button" value="修正" onClick="subWin_open(3)"></td><td>502</td><td>月と不知火</td><td>大堀 柊花</td></tr> <tr><td><input type="button" value="修正" onClick="subWin_open(4)"></td><td>503</td><td>海をみていた犬 2</td><td>安孫子 三和</td></tr> <tr><td><input type="button" value="修正" onClick="subWin_open(5)"></td><td>505</td><td>拳銃王</td><td>小峯 隆生</td></tr> </table> </body></html>
182 :
169 つづき :04/11/16 16:52:54 ID:+6gMPV5z
## Sub.html ## <html><head><title>サブウィンドウ</title> <script type="text/javascript"> var RowNumber = dialogArguments.rowIndex; //更新対象行番号 function window.onload() { MoveRow(0); } function window.onunload(){ dialogArguments.subWin1 = null; } function Kousin(){ var SelectRow = window.dialogArguments.ID_TBL.rows[RowNumber]; SelectRow.cells[1].innerText = document.FRM.TXT_Shosekicd.value; SelectRow.cells[2].innerText = document.FRM.TXT_Title.value; SelectRow.cells[3].innerText = document.FRM.TXT_Sakusya.value;} function MoveRow(index){ var NextRow = RowNumber - 0 + index; // 移動先行番号 if(NextRow>0 && NextRow<6){ var SelectRow = window.dialogArguments.ID_TBL.rows[NextRow]; // 移動先行 document.FRM.TXT_Shosekicd.value = SelectRow.cells[1].innerText; document.FRM.TXT_Title.value = SelectRow.cells[2].innerText; document.FRM.TXT_Sakusya.value = SelectRow.cells[3].innerText; RowNumber = NextRow;}} </script></head><body><form name="FRM"> <table><tr><td>書籍コード</td><td>タイトル</td><td>作者</td></tr> <tr><td><input type="text" name="TXT_Shosekicd"></td><td><input type="text" name="TXT_Title"></td><td><input type="text" name="TXT_Sakusya"></td></tr></table> <input type="button" value="前頁" onClick="MoveRow(-1);"> <input type="button" value="次頁" onClick="MoveRow(1);"> <input type="button" value="更新" onClick="Kousin();"> <input type="button" value="閉じる" onClick="window.close();"> </form></body></html>
変数名関数名の最初の一文字に違和感が……ドトネト厨か? とりあえず、function window.onload () {} なんて書いても JScript しか理解してくれない。 JScript で書いておけば 9割をカバーできるのも事実だが、 条件コメントや条件コンパイルでトラップするだろ、ふつう。
>>168 Date オブジェクトなど、言語のコアな部分では document は関係無い。
HTML や XML で使われて初めて DOMDocument インターフェイスが必要になる。
mozilla.org で JavaScript1.5 を単体で落としてきて、jsshell でコアな部分を学べ。
185 :
176 :04/11/16 18:34:46 ID:???
みなさんレスありがとうございます。
>>177 >仕様書通りならレスポンスヘッダに在るかMETA に在るかの違いだけで関係ないハズ。
そうなんですが、なぜかキャッシュされている状態です。。。書き方間違ってるかな?
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="Expires" content="Fri, 31 Dec 1999 12:00:00 GMT">
とか書いています。
>>178 まだ試していません、明日にでも試してみます。
>>179 それやってみたんですが、ちゃんと送る前に消えるのは確認できているんですが、ブラウザの「戻る」で
戻るとその値が戻ってます(なぜだ・・・ ただしsubmit()はつかっていません。
さらに戻ってきてF5でリロードしてもその値は消えず、CTRL+F5で強制リロードさせるとやっと
消える現状。javascriptでCookieから読み出して表示とかしているのでそれが悪さをしているのかとも
疑ったんですが、javascript一切使わないフォームでもそれが再現出来てしまったorz
function Foo() { return this; } Foo.prototype.bar = function() {return 0;} var foo = new Foo(); foo.bar(), //0 foo.baz(); //error bazのような存在しないプロパティが参照された時、 エラーにせずに勝手に何らかのスタブ関数を呼び出すようなFooを書くことはできますか?
187 :
169 :04/11/16 20:09:49 ID:???
188 :
176 :04/11/16 20:32:12 ID:???
>>177 send-asisを使って3行書いてみたら、ちゃんとブラウザの「戻る」でも再読込してくれて、
onLoadなどちゃんと実行されました。どうやら仕様なのかバグなのか分からないのですが、
metaの部分は無視されるのか、自分の書き方が間違っているかでしょう。(大文字小文字
関係あるのですかね?)
javascriptとはあまり関係なくなってしまったのでこの辺にしておきますが、アドバイス
下さった方々、ありがとうございました。
>>186 そんなのできないから try-catch-finally で書くこった
var target = new Array(2); var target[0] = new Array(4); var target[1] = new Array(4); var target[0][0] = new Array("0","1","2"); var target[0][1] = new Array(); var target[0][2] = new Array(); var target[0][3] = new Array("0","1","2"); var target[1][0] = new Array("0","1","2"); var target[1][1] = new Array(); var target[1][2] = new Array(); var target[1][3] = new Array("0","1","2"); JavaScriptが上手く動作しなくて困っていたのですが、この部分をコメントアウトしたら(一部)動くようになりました。 2次元配列の使い方が間違っているのか、或いは変数の宣言が間違っているのか、或いは他が間違っているのかも分かりません。 良い方法をご教授願います。
>>190 var の意味が分かっていないだろ。
一度 var で変数宣言したら次以降 var は付けないでいいんだよ。
>>191 2つ目以降のvarとnew Arrayを除いたら上手く動きました。
有り難うございます。
>>191 ハア?
>>190 var target = new Array(2);
変数 target を宣言し、配列への参照を割り当てている。
var target[0]
識別子 (ここでは変数名) の文字に区切り子の文字は使えない。
つまり、「target[0]」という変数名には、「[」と「]」が入っているから、不正。
そもそも、ここで
>>190 がやりたかったことは、階層構造の配列を作ることであり、
全てを変数宣言してフラットな (深さの無い) データ構造を作ることではない。
試しに、フラットに作ると、例えば、次の様になる。
var target = new Array(2);
var target_0 = new Array(4);
var target_1 = new Array(4);
var target_0_0 = new Array("0","1","2");
var target_0_1 = new Array();
var target_0_2 = new Array();
var target_0_3 = new Array("0","1","2");
var target_1_0 = new Array("0","1","2");
var target_1_1 = new Array();
var target_1_2 = new Array();
var target_1_3 = new Array("0","1","2");
もちろん、これでは、
>>190 の目的に全然役に立たないだろう。
結局のところ、
>>190 は「target」という名前の変数を一つ用意して、
次の様に書いて解決したのだろう。
var target = new Array(2);
target[0] = new Array(4);
target[1] = new Array(4);
target[0][0] = new Array("0","1","2");
target[0][1] = new Array();
target[0][2] = new Array();
target[0][3] = new Array("0","1","2");
target[1][0] = new Array("0","1","2");
target[1][1] = new Array();
target[1][2] = new Array();
target[1][3] = new Array("0","1","2");
今のいんたーねっと人口の大半は、NN2 とか IE3 とかを知らない。
また、それら初期のブラウザを使っていると、セキュリティの問題があるから、
ネットワーク上では迷惑行為と見なされることさえある。
これは、NN2 や IE3 の存在は、近似的に無視できることを意味する。
従って、JS1.2 や 1.3 以降の機能を使っても問題ない。
var target = [
[ "0,1,2".match( /\d+/g), [], [], "0,1,2".match( /\d+/g)],
[ "0,1,2".match( /\d+/g), [], [], "0,1,2".match( /\d+/g)]
];
のように。
>>183 window.onload = function () {}
おりてなんかこないぞ
198 :
Name_Not_Found :04/11/17 18:44:56 ID:6ulnL7iz
JavaScriptからアプリ(notepadとかffftpとか)を起動するにはどのように行えば 出来ますか? ローカルで使いたいのですが。
>>198 ブラウザで動かすJavaScriptからは無理。
WSH等で動かすJavaScriptの話ならそっちのスレいった方がいいかと。
JavaScriptで外部の*.jsファイル(web上にあげた)を呼び出して実行させるにはどうしたらいいでしょうか?
201 :
Name_Not_Found :04/11/17 20:08:19 ID:VjB+xjW4
>>200 スクリプト要素を作るなり書き出すなり汁
203 :
200 :04/11/17 20:28:16 ID:???
>>203 それってJSファイルじゃなくbookmarkletみたいに見えるけど。
「お気に入り」にその内容をコピペして選択すれば?
>>199 時々 DirectX フィルターの質問があるが、あれが動くセキュリティ設定で
WinIE 使うのも問題がある。それでも気軽に答えてるだろ。
WScript.Shell が動いてしまうほど開放している基地外もいるだろうから、
同じようにホイホイ答えてやれよ。
どこで線を引いてるのか理解出来ないが、決してスレ違いではないだろう。
JavaScriptじゃないじゃん。
207 :
206 :04/11/17 21:53:52 ID:???
ごめん。妄言だった。
>>208 うるせえよ塵。低スキルで態度のでかいヘタレは去れ。邪魔だ。
例)
var w = new ActiveXObject( 'WScript.Shell');
var e = w.Exec( '%comspec% /C "Xalan -o result.html source.xml stylesheet.xsl"');
while (0 == e.Status) WScript.Sleep( 100);
e.Terminate(); e = null; w = null;
を実行してから、ftp で PUT。
この例だと、スレ違いになる可能性もなくはないが、
これが try - catch して、出来たファイルを使って HTML に
見かけ上の変更を加えるという典型的な DHTML として使われるとしたら、
このスレを除いて適当なスレは無い。
210 :
Name_Not_Found :04/11/18 21:04:16 ID:U6LgSzTz
質問させてください。 "00123" のようにアタマに0が付いた10進数文字列を数値に変換したいとき 皆さんはどうやっていますか? ↓こんなの考えてみましたが、なんか野暮ったいのでスマートなやつがあれば教えてください。 s = "00450"; n = parseInt("1" + s) - Math.pow(10, s.length);
>>210 parseInt("00450",10);
213 :
200 :04/11/18 22:57:12 ID:???
>>204 bookmarkletですけど、unko.jsを実行するのが目的ではなくて、
unko.jsを間接的に実行させるためのスクリプトを知るのが目的です。
わかりにくくてすいません。
ファイルを実行させるbookmarkletだったらbookmarklet スレで出ていたと思うな。
オートスクロールなんだけど IEだと稼働するけど ネスケ、FO糞だと動かない ・゚・(ノД`)・゚・ WHY??
>>215 ソースもヒントも出さないのにこっちがわかるわけないだろ
独り言なら雑談スレでも夢・独り言板でも行くんだな
217 :
200 :04/11/19 04:33:04 ID:vd4wRycd
>>214 すいません。
bookmarkletスレというのが見当たらないんですが。
219 :
Name_Not_Found :04/11/19 10:35:23 ID:A3KLqv6j
HTML画面にファイル一覧を表示し、各ボタンクリック時に各formをsubmitするやつを作ってます。 <table> <form action="./Next.cgi" method="post" name="form_1"> <input type="hidden" name="test" value="form_1"> <tr> <td><a href="../file/file1.txt">ファイル1</a></td> <td>2004/11/19 10:07</td> <td><input type="button" value="削除" onclick="file_del('form_1');"></td> </tr> </form> <form action="./Next.cgi" method="post" name="form_2"> <input type="hidden" name="test" value="form_2"> <tr> <td><a href="../file/file2.txt">ファイル2</a></td> <td>2004/11/19 10:07</td> <td><input type="button" value="削除" onclick="file_del('form_2')"></td> </tr> </form> </table> onclick時に外部ファイルにある以下関数でsubmitしようとしいます。 function file_del(my_fname) { if ( confirm("けしますか?")) { //alert(my_fname); my_fname.submit(); } else { alert("やめました。"); } } alertで引数がちゃんとわたっているかどうかは確認しました。 my_fnameのところを例えばform_1とベタ書きするとちゃんと動作しました。 引数の使い方がおかしいのでしょうか? よろしくお願いします。
>>219 document.forms[my_fname].submit()
222 :
Name_Not_Found :04/11/19 15:09:44 ID:/XYmrXcW
フォーム部分の入力内容が正しいかを判定してよかったならデータをPHPに送信というスクリプトを書いたのですが、 これだと、jsを切っているユーザーがいた場合サブミットボタンが機能しないのですがどうしたら良いのでしょうか? <noscript></noscript>の書き方がよく分かっていません。
224 :
222 :04/11/19 15:18:10 ID:/XYmrXcW
>>221 どう悪いのかがよく分からないのですorz
phpでも入力内容の判定はしているので
js切ってても、データを送信したのです。
プログラマは休みで聞けないし今日までだし、お願いします。
どんな感じで書いたらいいのでしょうか?
225 :
222 :04/11/19 15:19:11 ID:/XYmrXcW
221→223の間違いです。やばいよーどうしよう。
>>224 こういうのが一般的かと。
<!--Func()はtrueかfalseを返す関数-->
<form onsubmit="return Func()"...
227 :
222 :04/11/19 15:56:10 ID:/XYmrXcW
>>224 ありがとうございました。
なんか勘違いしてたみたいで、
js切ってる人にはその書き方じゃだめなのかなって思ってました。
いま試したら単純にphpに送信できました。
なんとか終わりそうだー。
ばかな質問でごめんなさい。
ありがとうございました。
質問させてください。 Netscape7で以下のようなソースで崩れがでてしまいます。 調べたところ、document.writeなどのscriptが原因のようでした。 具体的には、サイドメニューの横幅が、バナーの横幅分、横に広がってしまいます。 IEでは問題ありません。 どこが悪いのかわかる方がいたら教えてください。 よろしくお願いします。
<table> <tr> <td colspan="2"> タイトルロゴ(float: left;) バナー(document.writeで書き出し) </td> </tr> <tr> <td width="192"> サイドメニュー(width: 177px;) </td> <td width="522"> エントリー </td> </tr> <tr> <td colspan="2"> フッター </td> </tr> </table>
なぜJavaScriptが原因だと断言できるのか、その根拠を 伺おうか。
java scriptを切ったらなおりました。 しかし、HTMLかCSSの組み方に問題があるのかもしれません…
>>229 とりあえずタグが多すぎるので、
<p>タイトルロゴ(float: left;) バナー(document.writeで書き出し)</p>
<div>エントリー</div>
<div>サイドメニュー(width: 177px;) </div>
<p>フッター</p>
にして、再度試してみると、どう?
あと、NNやFFのツールでデバッグしてみるとか。
それだと大丈夫でした。 tableの幅がJSによって広がってしまうようです。 NSのバグ…?はぁ…
>>233 スタイルシートでimg{ border:1px solid #ff0000; }とかしておくと、
document.writeされた画像はどうなっているの?
コードを見ていないのでブラウザのバグかどうかはわからないけど、
document.write とかしないで、
img要素を生成して追加するのはどうだろうか。
235 :
Name_Not_Found :04/11/20 01:21:34 ID:KQCYjixs
すいません。 document.writeで出力してるのは、google adsense、バリューコマース とかのバナーです。 それをランダムで切り替えて出力するJava Scriptを使ってます。 切り替えスクリプトを消したら、バリューコマース等のバナーはヘイキでした。 ただgoogle adsenseだけ出してみるとずれるため、 Java scriptが原因だと考えました. いまだ直りません ;_;
>>235 グーグルアドセンスってテーブル要素をかきだしているのかな?
だとしたら同様にスタイルシートで
td { border: 1px以下略、って書いてみると、なんであふれちゃうのかがわかるかもしれないよ。
質問です。JavaScriptが有効になってるのにJavaScript使ってるページが 表示されないようになってしまいました。 ここ2ヶ月ほどのことで、以前は表示できていました。 最近のサイトはどこもJavaScriptを多様してるんで見れない場所が 多くて本当に困っています。よろしくお願いします。 ちなみに、OSはWin XPです。
238 :
Name_Not_Found :04/11/20 01:30:29 ID:KQCYjixs
ボーダーでボックス要素をだしてみましたが、 そのとおりはみだしてしまうのです。 ただ、なぜ、下のテーブルの要素までずれるのか… テーブルをさらに入れ子にしてもだめでした… <table> <tr> <td colspan="2"> タイトルロゴ(float: left;) Google adsenseやバナー(document.writeで書き出し)←ここを消すと直る。というかJSを使わないと正常 </td> </tr> <tr> <td width="192"> サイドメニュー(width: 177px;)←ここがバナー分横に広がる。なぜ? </td> <td width="522"> エントリー </td> </tr>
>>238 おそらく、自分で書いているタグのどれかが閉じてないか、
グーグルアドセンスの書き出しているタグのどれかが閉じていないか、
とか、その辺を調べてみよう。
ファイアフォックスのドムインスペクタで見てみると、幸せになれるかも。
>>237 板違いじゃん。環境を明記してPC初心者板あたりへ。
>>239 最初、テーブルタグの閉じ忘れかと思い、
Dream Weaverでチェックしたものの、問題ありませんでした orz
fire fox、使ってみてみようかな。。。
fire foxでもずれないなぁ nsだけか… ドムインスペクタってどれだろう…
公開したい情報を多くの人に読んでもらうためにはどのようにしたらよいでしょうか。 次の方法論のそれぞれについて長所短所は何? (1)情報を閲覧できるかチェックしたシステム名を公開する。 (2)コンテンツを作成した時点で一番シェアの大きいソフトが閲覧可能なようにつくる。
DOM インスペクタってすごいですね ちょとしらべてみます
やっぱりだめです orz きっちりwidth height指定してもなぜか タイトル&バナー以下の真ん中のtdの横幅が広がります NS7はJava Script のバグがあるんだろうか… orzz
Gecko というよりIE の仕様に翻弄されてそうだな。 outerHTML でソース見てみれ
>>247 そもそもhtmlの理解が怪しいな。
それと、だらだら書くなら、せめてレス番入れとけ。
250 :
247 :04/11/20 13:35:46 ID:D7YdLc9h
IE→問題なし Fire Fox→問題なし Netscape7→ずれる DOMインスペクタで見たところ、DIV要素が広がってたので、 table、スタイルシートともに width, heightを指定してみたけどだめでした。 outerHTMLですか…探してきます。
251 :
Name_Not_Found :04/11/20 14:27:55 ID:8o4A0usX
すんません。質問です。 文字をクリックすると別窓がサイズ固定で開くようなJava Sprict をhtml内に埋め込んだのですが、そのページをWindowsXp SP2適用の IEで見ると「スプリクトを遮断しました」というようなメッセージが 出てくるのですが、このメッセージを回避。。というか、出なくさせる 方法はありませんでしょうか?ちなみにスプリクトは↓のように記述 しています。 <html> <head> <script language="JavaScript"> <!-- function OpenWin(file){ window.open(file,"new","width=400,height=300,toolbar=1,menubar=1"); } //--> </script> </head> <body> <a href="javascript:OpenWin('hoge.html')">hoge</a><br /> <a href="javascript:OpenWin('foo.html')">foo</a><br /> </body>
252 :
247 :04/11/20 14:52:04 ID:???
>>250 IE→問題なし
Fire FOX→問題なし
Opera→問題なし
NS7→ずれる
DIV要素の中のJava Script自体がだめみたいです。
NSだけでなるのでバグか…
253 :
247 :04/11/20 15:22:37 ID:???
tableでセルの結合をやめたら、とりあえずは直りました。 しかし、NSで、たまに↓のソースの部分に、別のiframe内(ミニBBSのCGI)の内容が表示される… NSのバグじゃん… <script language="JavaScript"> <!-- bannar=new Array(); bannar[0]='バナー1'; bannar[1]='バナー2'; bannar[2]='バナー3'; count = Math.floor(Math.random() * bannar.length); document.write(bannar[count]); --> </script>
254 :
Name_Not_Found :04/11/20 15:23:51 ID:LV7pqDnc
質問です(´・ω・`) よく上から画像が降ってくるものがあるのですが 画面右から左にかけて画像が横断するタイプのスクリプトは無いでしょうか? アドバイス宜しくお願いします。
255 :
Name_Not_Found :04/11/20 15:35:16 ID:dK8cXtBY
JavaScriptでCGIにPOSTパラメータ渡せますか? <!-- function post() { if ( int ) { // ここでなんかやる? document.myFORM.submit(); } } //--> <input type="button" value="ボタン" onclick="post();">
>>255 onsubmit イベントが発生したら
jsValue = document.createElement("input") とかして
document.getElementsById("フォームID").appendChild(jsValue) とかする。
念の為 jsValue.setAttribute("type","hidden") してから appendChild するといいかも
258 :
中学生 :04/11/20 22:30:01 ID:v3AK9D+x
<script language="JavaScript"> <!-- var i=3; while(i>0){ var suuji="あなたが"+i+"番目に好きなものは?" var suki=prompt(suuji,""); document.write(suki,"が"+i+"番目に好きなんですね<br>"); i--; } //--> </script> 上のを3番目〜1番目じゃなくて1番目〜3番目と表記するには どうしたらよいでしょうか?
デクリメントをしっときながら、なぜインクリメントが分からない
260 :
Name_Not_Found :04/11/20 23:32:43 ID:CqvDkHls
var dw = screen.width ; var dh = screen.height ; moveTo (0,0); resizeTo (dw,dh); を実行すると、 win I.E.6.0 と mac I.E.5.2 ではフルスクリーン(?)表示されるんですが、 mac Safari 1.03 だと moveTo は正しく実行されるんですがサイズがフルの 3/4位になります。なんででしょうか? また mac Safari 1.03 でフルスクリーンにする方法はどうしたらよいのでしょう? 宜しくお願いします。
>>259 見よう見まねで書くと、プログラム初期には最近そういうのが結構ある。。
プログラム構成を教えるために演算よりも先に、連接、反復、分岐を先に教えてる本もあるしね。
>>258 While文の意味と、
i-- と i=i+1 は同じ意味。
これを理解すれば自力でなんとかなるはず。
がんばれ。
262 :
261 :04/11/20 23:35:40 ID:???
訂正 × i-- と i=i+1 は同じ意味 ○ i-- と i=i-1 は同じ意味 肝心なところ間違えて申し訳ない。
263 :
260 :04/11/20 23:35:41 ID:CqvDkHls
スイマセン 訂正です mac Safari 1.03 は resizeTo が全く効いてないみたいです よろしく
>>261 × i-- と i=i+1 は同じ意味。
○ i++ と i=i+1 は同じ意味。
間違えるな
>>263 resizeToのところに具体的な数値を入れてもダメ?
resizeTo(300,200) とか
多分screen.width screen.height に問題あり と思うんだが・・・
>>264 ほんと申し訳ない。
やっちゃいけない最悪のミスでした。
267 :
260 :04/11/20 23:47:48 ID:CqvDkHls
>265 れす、ありがとうございます document.write (dw +"<BR>"+dh); すると数値は拾えてるんですよ やっぱり mac Safari 1.03 は resizeTo が無効みたいなんですよ
268 :
Name_Not_Found :04/11/20 23:51:59 ID:+UqCrIWJ
正規表現内で変数を使いたい場合どのようにしたらよいですか? 変数を$付きで表現できると改定して、以下のような形のことをしたいのですが。 $r = "BBB"; if("AAA_BBB_CCC".match(/^AAA_$r_CCC$/)) alert("Hit!");
270 :
265 :04/11/20 23:58:04 ID:???
>>267 なるほど、そりゃきついね。
最終手段としてWindow.openのスタイル指定とかだめかな?w
>>268 AAA_BBB_CCCを取り出したいとしか思えないんだが
>>268 ...match("^AAA_" + r + "_CCC$"); みたいな
273 :
267 :04/11/21 00:13:09 ID:kEY/SLGV
>269 >270 どうもっ! >269 確かにフルになりました >270 やっぱりそうなりますかねぇ ただ、しつこくない良い案配(画面の中央でフルの3/4位かなぁ?)にしたかったんです ので、またいろいろ試してみます。どうもっ!!
i = i + 1 と ++i が同義。 例 var a = [ 1, 2, 3, 4 ]; var i = 0; a[ i]; // a[ 0] a[ i++]; // a[ 0], i == 1 a[ i]; // a[ 1] a[ ++i]; // a[ 2], i == 2 a[ i = i + 1]; // a[ 3], i == 3
>>268 /\bjavascript\b/gi
new RegExp( '\\bjavascript\\b', 'gi');
var b = '\\b'; // \b
var p = new RegExp( b + javascript + b, 'gi'); // /\bjavascript\b/gi
スレ違いだったらお許しを カブドットコム証券でjavaで開くページが一昨日から突然 「OSはWin98以上でアクセスしな、あんたのOSだめだよ」 と表示されるようになりました。 株価が数十銘柄自動的に表示されるリアルタイム株価ボードです。 他のマシンで見ても、特に変ったように思えないのですが 何が変ったんでしょうか? 作動条件が「98、ME、2000、XP、IE5.0以上」となっています。 ひょっとして、なにかファイルのどこかを書き換えれば使えるようにならんでしょうか? あるいは98からなにかをコピーしてくるとか。 現在はリブ70で95OSR2です。 出来ればOS入れ替えしたくない・・・・・・
色んな部分でスレ違いだ
>>276 Java != JavaScript だ。変な略するな
きっと UA 見てるだけだ。UA 偽装でラクラク突破できそう
279 :
276 :04/11/21 14:25:06 ID:???
>>278 スマン、UA偽装ってどうやってするか教えてくれ
ボタンが押されると画像を変えるスクリプトとかは検索くぐればよく見かけますが、 これはやはり、画像に関しては、一度表示してしまった後でも、 画像を変更して表示させることができるのであってボタンを押すことによって 文字を変えるということはできないのでしょうか? テキストボックスなしで実現したいです。 ボタンでページ自体を更新させる方法しか思いつきません・・・
もうちょっと詳しく書いてくれ・・・何をどうしたいんだかよくわからん。。。。 ページにたとえば「ぬるぽ」って書いてあるとして、ボタンを押すことによって さっきまで「ぬるぽ」って書いてあったところを「がっ」に変えたいってことかい?
284 :
281 :04/11/21 16:10:04 ID:???
285 :
247 :04/11/21 16:13:50 ID:???
<script language="JavaScript"> <!-- bannar=new Array(); bannar[0]='バナー1'; bannar[1]='バナー2'; bannar[2]='バナー3'; count = Math.floor(Math.random() * bannar.length); document.write(bannar[count]); --> </script> ↑バリューコマースの広告が原因かも… 広告を切り替えてるのですが、 Mozilla系のブラウザで、インナーフレーム内がおかしくなります。 インナーフレームに対応したローテーションバナースクリプトは可能でしょうか?
286 :
247 :04/11/21 16:14:25 ID:???
インラインフレームです、すいません。
>>281 <Script language="JavaScript" type="text/javascript">
<!--
var omikuzi = new Array("大吉","中吉","吉","小吉","凶","大凶");
function omi() {
var i = Math.floor(Math.random() * 5);
var omi_text = omikuzi[i];
document.getElementById("omi").innerText = omi_text;
}
//-->
</Script>
</head>
<body>
<Input type="button" value="おみくじ" onclick="omi();">
<span id="omi">おみくじをしよう</span>
こんな感じ
とりあえずテンプレ全部読んで来いって奴ばっかだな
289 :
281 :04/11/21 19:32:26 ID:???
ご丁寧にありがとうございます。 勉強不足です。逝って来ます。
大凶が出ない。「5」なんてハードコードするから。
>>290 大凶なんて出ないほうがいいよ。
omikuzi.length なんてされちゃうと現実の厳しさを見ることになるから。
ちょっとでも大吉の確率上げたい。 だったら *4 にしておけって?
そこはそれ、許してあげようや。
とはいえ本質とは関係ないにしても、サンプルとして考えるとちとまずいな。
>>291 「4」などとハードコードを上書きすることを思いついてしまう糞が語るな。
引用符を繰り返し書くのは面倒なもの。ひとまとまりのテキストデータは 後からの改変が少しでも楽になるようにしておいた方が好ましい。 例えばタブ区切りで、 var omikuzi = "大吉 中吉 吉 小吉 凶 大凶"; のように設定するようにしておく。これを、 omikuzi.split( '\t'); とか、 omikuzi.match( /[^\t]/g) のように、配列に加工して使う。 お前等カスにとっては細かいことかもしれないが、これは当たり前の気遣い。
× [^\t] ○ [^\t]+
<Script <Input HTML では大文字小文字を区別しないとは言え、かなり個性的ですね。
>>293 ださい。読みやすさを優先するべきだろ。定数の記述が長くなって
大変ならそういう加工をするスクリプトを別途使うべきだと思う。
ソースコードはあくまでも素直に読めるように書くほうが吉。
getElementById 使えるブラウザを前提にしているので、 firstChild.data も使えるよな。何故 innerText ?
何度でも言うが、JS を有効にしている UA のほぼ 100% が attachEvent または addEventListener を理解するわけだが。 DOM2-Event が勧告されて4年か? ええかげんおぼえろ、カスども。
他人が自分の好みのようにコードを書かないからといって いちいちキレていたら不幸になるだけだと思うな。
DOM2-EventにはattachEventはないわけだよね〜。
>>297 Document.getElementByIdがサポートされているってだけの前提から
CharacterData.dataもサポートされてるなんて結論は得られないと思うぞ。
まあ期待するのは勝手だが。
あまりこだわって、相手の書き方を尊重せずに「推奨される」書き方とされるものだけを 押し付けると、実力はあっても人脈はできにくいな。別に知ったことではないが。
別に推奨されてるわけでもないしなぁ。
追求すべきは仕様ではなく実装である
>>305 それは大違いだろ。実装なんて追求したってどう変わるか
分からんし。標準仕様が実装されている場合、それが変わって
動かなくなる危険は少ないという側面がある。でも仕様だけで
実装がなければ役に立たない。両方バランスよく見ないとね。
ちょっと名言っぽく言ってみたかっただけだよ・・・
メーカー各社で特色をもって競争したいのはわかるけど、 標準仕様はきっちり実相した上で、プラスアルファで勝負する方向でお願いしたい。 次、ドゾー
質問です。 ドロップダウンボックス2つの内容を配列を使って動的に変化させてるんですが、後からVBSでリクエストすると動的に変化する方のDDBからインデックスが返ってきますよネ?配列の中の文字、テキストを返すようにする時ってどうすればいいんでしょう。
(;・∀・)
Q 1. ネタ 2. 日本語が不自由 3. 真性
>>309 VBのことはアレだけど、JavaScriptスレの回答としては、
そのselect要素をobjとすると、
obj.options[obj.selectedIndex].text
もしくは
obj.options[obj.selectedIndex].childNodes の中のどれか。
です。
313 :
Name_Not_Found :04/11/24 16:23:39 ID:KIaSUNsW
chktest[]という名前のチェックボックスをすべてONのしたいのですが、 <SCRIPT language="JavaScript"> function chkboxOn(){ window.alert("!"); document.form1.chktest[].checked = true; } </SCRIPT> ---------------------------------- <form name="form1"> <input type="checkbox" name="chktest[]" value="1"> <input type="checkbox" name="chktest[]" value="2"> <INPUT type="button" value="CheckALL" onClick="chkboxOn()"> </form> 上記では構文そのものがエラーになるようです alertも出ません chktest[] という名前が問題だと思うのですがphpからはすごく便利に使えます なんとかすべてのチェックボックスをONに出来ないでしょうか?
>>313 PHPから渡してやればいいじゃん。
全チェックボタンをつくって、hiddenでname=mode value=ckみたいにして変数渡して
<? $CHECKE=($_POST['mode']) ? " checked" : ""; ?>
<INPUT type="button" value="CheckALL" onClick="chkboxOn()"<?=$CHECKE?>>
こんな感じ。
あ、もちろんこれ使うと他の<INPUT>とかの値も全部送信して各所に貼り付け直さないと ダメだけどね。(;´Д`A
>>313 getElementsByName("form1")[0].getElementsByTagName("input")
でinput要素のコレクションが取得できるから、
それぞれのcheckedプロパティをtrueにしてあげれば良いです。
ボタンとかの識別はtypeで判別するのでも、classを振るのでも良いかと。
>>314-316 すべての回答がピント外れでは。元質問者が欲しかったのは:
var a = document.forms.form1.elements['chktst1[]'];
for(var i = 0; i < a.length; ++i) a[i].checked = true;
>>313 FAQ
>>9 のQ7/A7を読んでないだろー。
>>317 うむ。書いてからフォローのしようのない恥ずかしい行為に気付いた。
いやもうJSの挙動確認するよりPHPの方がよっぽど簡単なので迂闊なレスしてもーた。
逝ってくる。
コロコロ
o... rz
すいません、JavaScriptのオンとオフの設定ってどうやるんですか? めちゃくちゃ初心者なし質問でごめんなさい。 サイトに入室する前の注意書きに「JavaScriptをオン(オフ)にして下さい」 って書いてあるサイトあったりするんで。 ちなみにオフにすると、どういう物が閲覧できなくなりますか?
>>314 =315
実は同じようなことを考えたのですが、315で書かれてるようなことが理由で
なんとかJavascriptでと思ったしだいです
このページ内だけで変に機能を付け足しすぎているのが敗因です、、
とはいえphpも初心者なので314みたいなきれいな書き方は大変勉強になりました
>>316 書かれていた関数を頼りに検索してみて、そのフォーム内のすべてのエレメントを
ループで取得できることが分かりなんとか機能をつけることが出来ました
>>317-318 >FAQ
>>9 のQ7/A7を読んでないだろー。
す、すいません。。以後気をつけます
私が検索して見つけた書き方よりもすっきりしていたのでやってみたのですが、
やっぱり chktest[] こういう名前をつけたのは駄目みたいですね
携帯向けのサイトばかりやっていたのでJavascriptには縁遠かったのですが
初心者に丁寧にレスいただき、みなさま本当にありがとうございました
感謝です!
>>319 OSとブラウザがわかりませんが、WinのIE6では
「ツール」→「インターネットオプション」→「セキュリティ」→「レベルノカスタマイズ」
の中にある「スクリプト」部分の「アクティブスクリプト」を無効にする。
何ができなくなるって、スクリプトで書かれたものが全部できなくなります。
マウスを重ねると画像が変わるだと新しいウィンドウをサイズ指定して開くとか。
とにかく色々なので説明しきれませんが。
なぁおまえらがスクリプト組むときに使ってるエディタ教えてくれないか。 vectorで検索してもいっぱいありすぎて何が良いやら悪いやら・・・ メリットデメリットもあわせて書いてくれるとうれしいかも
>>323 シェアウェアはちょっと勘弁願いたいかも
おちぶれてすまん
>>324 テキストエディタの好みはホントに十人十色だからなあ。
宗教戦争になりかねないし。
>>325 あぁ、そうか・・・
りかい不足で、言われて初めて気付いた。
がんばって自分で見つけることにするよ。
とても種類が多くてしんどいけどやってみます。
うどのキンピラ
そういえば一時期テキストエディタばっかり10個ぐらい入れてたことがあった。 どれも一長一短なんだよね。自分で作れればいいんだけど無理だし。
329 :
Name_Not_Found :04/11/24 23:01:32 ID:8LUsdZ/X
全角文字を16進数に変えるにはどうしたらよいですか? 半角文字は出来たのですが、全角が意図したものと違う結果になってしまいます。 x=文字列.charCodeAt(i)で一文字取得後、 x.toString(16);で16進数に変換しています。
>>322 TeraPad ← エディタに迷うような人のための初心者用参考ページが結構見つけやすい
>>329 JavaScriptでは文字コードはすべてUNICODEになってしまい、
SJIS等のコードを取得する方法は(JavaScript内だけでは、
変換表を全部持つ以外には)ない。で、まだ何か質問ある?
>>320 日本語の読解力がないのか。「chktst[]」という名前をつけた
場合はそのまま普通にJavaScriptで書いたら構文エラーになる。
だから文字列リテラルとして書く。つまり名前が「x」だったら
「o.x」でも「o['x']」でもいいが、名前が「chktst[]」だったら
「o.chktst[]」とは書けないので「o['chktst[]']」の方を使う
しかないということ。
>>333 日本語の読解力がないのか。解決したと書いてあるじゃないか。
>>329 エンコードしようとしてるような気がする。
encodeURIComponent() あるいは escape() ではダメなのか?
>>336 どっちも出て来るコードはUNICODEだろ。
338 :
Name_Not_Found :04/11/25 14:28:55 ID:s6m+oEFD
すいません、初心者質問スレから誘導されてきた526です。 win98,operaを使っています。 日替わりでメッセージを表示させたいと思い色々とググって調べていたら 1ヶ月の場合ならこれ↓で可能なことが判りました。 1年365日(or366日?)日替わりにするにはどこをどう直せば可能になるんでしょうか…? <html> <head> <title>日替わりで文章を表示させる</title> <script language="JavaScript"> function Show_Messages() { myDate = new Date(); document.write(DateSent[myDate.getDate()]); } DateSent = new Array(); DateSent[ 1] = "1日に表示する文章を入力"; (中略) DateSent[31] = "31日に表示する文章を入力"; </script> </head> <body> <table border="1" width="100%"> <tbody> <tr><td> <script>Show_Messages()</script> </td></tr> </tbody> </table> </body> </HTML>
340 :
Name_Not_Found :04/11/25 14:53:26 ID:662qQ1ng
変数名に文字列+変数の値を指定したいのでどうすればいいのでしょうか?
>>338 初心者スレというよりやっぱりここ向けの質問じゃないのかなあ。
>>337 ホレ。
var d1 = new Date();
var d2 = new Date(d1.getFullYear() + "/1/1");
var nDays = Math.floor((d1.getTime() - d2.getTime()) / (1000*60*60*24));
これで「nDays」に0〜354(うるう年なら355)までの整数が入るから。
>>340 たとえば「n = 10;」のとき変数 x10 を参照したいんだよね。
それは「window['x' + n]」でできるよ。
342 :
338 :04/11/25 18:24:01 ID:s6m+oEFD
>>339 すいません&ありがとうございます!
>>341 親切にありがとうございます!
ただせっかく教えてもらったんですが…違う記述で上手くいっちゃいましたorz
申し訳無いです。
ちなみにこのような日替わりメッセージにリンクを貼ることはできないんでしょうか…?
343 :
338 :04/11/25 18:30:18 ID:s6m+oEFD
<script language="JavaScript">
function Show_Messages()
{
myDate = new Date();
var date=myDate.getDate();
var month = myDate.getMonth()+1;
var msgToday=eval("DateSent"+month)[date];
document.write(msgToday);
}
//一月分『DateSent』の後に月数を書く
DateSent1 = new Array();
DateSent1[ 1] = "1日に表示する文章を入力";
(中略)
DateSent12[30] = "<A href="
http://yahoo.co.jp ">ヤフー</A>にリンク<BR>明日は大晦日";
DateSent12[31] = "31日に表示する文章を入力";
344 :
338 :04/11/25 18:36:57 ID:s6m+oEFD
↑のように記述するとメッセージが表示されず 『スクリプトエラー ';'がありません』というエラーが出てしまいます…。 『;』をどこに足せば正常に機能するのか…どうか教えて下さい…
DataSent12[30]="<a href='ヤフーアドレス'>アホー</a>にリンク<br>明日は大晦日"; つまりアドレスとか普段タグで""を使って囲むものは''(しんぐるくおーてーしょん) で囲めってこったい
質問させてください。 ボタンを押したらファイルのダウンロードをさせたいのですが、 サーバ上のあるファイルに対するリンクを左クリックすると、 exeファイルや圧縮ファイルはダウンロードのダイアログが開きますが、 ファイルによっては(*.xlsとか*.docとか、もちろんhtmlも)ブラウザで 開こうとしてしまいます。 ファイル形式がどんなでも強制的に「ファイルのダウンロードダイアログ」が 開くようにすることは可能でしょうか? 可能でしたらやり方を教えてください。 どうぞよろしくお願いします。 クライアントの環境は、IE5.0以降限定を考えております。
>>346 無理。
Webサーバの設定である程度は可能。
>>346 ActiveXでWindowsUpdateみたいなのつくればいいよ!
>>346 オクテットストリームで送り出してやればいい、
はずだけど、MacIEが言うことを聞いてくれなくて難儀した覚えがある。
>>346 一番簡単かつ強引なのは・・・拡張子をでたらめにしておくのさ。
page.htm.arienai
と、ダイアログが出るので、保存してから余分な拡張子を消してもらう。
・・・だめですか。そうですか。
351 :
.js :04/11/26 04:04:44 ID:9toKIQGr
ご教授ください。 外部ファイルに関数をおいて使用します。 そのファイルを利用者が見れなくすることってできますか? ジオシティや、他の一般的な無料レンタルサーバーでできるでしょうか?
>>351 スクリプト自体を暗号化してみましょう。
もちろん暗号解除スクリプトは本体に置かないとダメなので、
解析しようと思えばできる人には簡単にできてしまうけども。
おとなしくCGI使えるサーバを借りましょう。
>>353 もうちょっと簡単に、読み込むJSファイル部分をわかりにくくして
ファイルのありかを隠蔽するという方法もあるけどね。
もうソースを解析するのも面倒なぐらいにしてやるの。
もちろんこれもわかる人にはわかってしまうけど。
356 :
.js :04/11/26 05:43:03 ID:9toKIQGr
351です。夜遅くご回答ありがとうございました。 もともとあるソースをいかしたいので、Javascriptでやりたいんですがむずかしいみたいですね。 暗号化はちょっと手間だしなあ
358 :
346 :04/11/26 09:10:11 ID:???
質問です!! 速報ページを作りたいのですが、そのページで自動更新をします。 条件 1.自動更新をしない、30秒、60秒から<select>にて選択可能。 2.初期値を「自動更新をしない」にする。 3.自動更新されても、1の設定を引き継ぐ。 4.cookieの使用もかまわないが、使用しないですむなら、使用しない。 5.現在あるページにjavascriptとselectを埋め込むだけで実現したい。 いろいろ探しましたが、的確なサンプルもなく、お願いします。
>>359 更新頻度をパラメータとしてアドレスにつければ、あとは好きに料理できるじゃろ。
362 :
338 :04/11/26 15:09:43 ID:???
>>345 さん、
本当に助かりました。
ありがとうございましたm(__)m
>>359 3の条件がクッキー使わんときついかもなぁ
おれには思いつかん。
まぁひよっこだからなんだけどな・・・・・・
>>361 サンプルはなさげだけど、割と簡単かも。課題を
1.更新時間を<select>で変更
2.1.の設定を保存
3.一定時間で自動更新
の三つに切り分けて。
1.は<option>のvalueに、もしくはそれに応じた変数に時間の値を入れておいて、
<select>のonchangeでソレを拾う。
2.は1で作った時間の値をurlのおしりにget渡しの要領で?hogeとつけておく
3.は2の?以降の値を拾って、setTimeoutでlocation.hrefの変更を行う
てな具合でどうだろう。
365 :
364 :04/11/26 15:30:08 ID:???
補足 恒久的(謎)に設定時間を残したいのであれば、やはりクッキーを使うか、 鯖側で何らかのユーザ特定をして保存しておくか、のどちらかしかないかと。
366 :
363 :04/11/26 15:41:11 ID:???
>>364 ヒント2の情報に目からうろこがでました。
そんなことも出来るんですね。
それって初歩的なことなんですか?
367 :
364 :04/11/26 16:22:51 ID:???
>>366 JavaScriptはドキュメント単位で初期化されてしまうものなので、
ドキュメント間での変数の共有を考えた場合、
行き着くところはクッキーかurlに預けておく、
となってしまいます。
それが初歩的なことかどうかはわかりません。
特に抵抗がないならフレームで更新するのが楽です。 私は実際にこれでギャラリーの自動巡回を作ったことがありますよ。
3種類でいいなら、更新しないページと、30秒更新のページと、60秒更新のページを作って そこにアクセスさせればいいんだよ。 クッキーもCGIも要らない。
ちょちょちょっと待てよ。 > 速報ページを作りたいのですが、そのページで自動更新をします。 そのページは手動で書き換えをしているのですか・・・? しかも毎分毎分ぐらいの勢いで更新してるのですか・・・? まあCGI使ってるならわざわざJS使わないわな・・・。 うーん・・・?
>>370 もしかしたらサーバ負荷を減らすために、更新用CGIが閲覧用HTMLファイルを生成するタイプかも知れない。
スレ違いスマソ。
マテマテお前ら 更新って単にリロードのことかもしれんぞw だとしたら onchange で document.href = hoge.html?value する onload で value 読んで timer で document.href の2点でおkじゃね
373 :
329 :04/11/27 00:52:06 ID:q5/59SnF
374 :
Name_Not_Found :04/11/27 01:34:22 ID:8wagD1uX
初歩的な質問で申し訳ないのですが… テーブルのセルにマウスオーバーした際に、該当セルの背景色を変えたいと思っています。 <table><tr> <td onmouseover="this.style.backgroundColor='#FF0000'" onmouseout="this.style.backgroundColor=#FFFFFF">内容1</td> <td onmouseover="this.style.backgroundColor='#FF0000'" onmouseout="this.style.backgroundColor=#FFFFFF">内容2</td> </tr></table> ↑これで希望の動作は実現できるのですが(サンプルをそのままコピペ) 出来れば同じ作業は関数化して、HTML内の指定を出来るだけ短くしたいのです。 が、付け焼刃の知識ではうまく組むことが出来ませんでした… どうしたらいいか教えていただけると有難いです。どうかよろしくお願いします。
function f(o) { o.style.backgroundColor = '#FF0000'; } function g(o) { o.style.backgroundColor = '#FFFFFF'; } として onmouseover="f(this)" onmouseout="g(this)"
376 :
374 :04/11/27 02:01:46 ID:???
>375 わー、出来ました! というか、やっぱりチュートリアルの読み込み不足なんですね… いつかはアドバイス側になれるように頑張りたいです。 >375さん、本当にありがとうございました!
>>372 それはたぶん、分かってて言ってるというか
>>360 、
>>364 そのまま。
>>366 で
>>363 がそのことを知らなかったということが分かったので、
>>368 が同一ページにしない方法での解答だが、ファイル数が増える
>>369 がさらに最も簡単な方法で、もっとファイル数が増える
という答えが出てきた。
>>370 は30秒、60秒という短い単位で更新が必要となるようなページであるなら、
HTMLファイルを手動で更新してわざわざ管理者がアップロードしているのが不思議、ということだろう。
CGI使ってたら通常のリロードでも最新のページを表示できるようにするだろうし、そもそもスクリプトを
利用しなくても良いという考え。METAでREFRESH吐き出すだけでいいから。
それに大して
>>370 は、更新はCGIを使っているかも知れないが、ユーザの目的が閲覧だけなら
サーバ負荷を減らすために、HTMLファイルを生成するCGIを利用しているかもしれないと言っている。
で、漏れは読みにくい長文でスレ汚しというわけだ。スマソ。
質問です。 HTMLに記述したJavaScriptから、(そのHTMLとは)別のファイルの特定の部分だけを読み込むには、どのようにすればよいのでしょうか?
>>378 できない。終了。
>>377 依然として読みにくいね。CGIなんか関係なく、サーバ上で
データ更新があったらそのつどHTMLを再生成するような
仕組みが動いているかも知れないじゃない。そんなどうでも
いいことに突っ込んでも大ボケにしか見えない。
>>378 WinIE
var ua = new ActiveXObject( 'Msxml2.XMLHTTP');
ua.open( 'GET', '
http://example.com/ ', false);
ua.send();
//alert( ua.responseText);
Mozilla
var ua = new XMLHttpRequest;
ua.open( 'GET', '
http://example.com/ ', false);
ua.send();
//alert( ua.responseText);
何れもセキュリティ設定に依存するから、無意味なエラーメッセージで
訪問者を混乱させないように、try { } catch (error) { } するように。
また、WinIE には、onload 後限定で #default#download というのもある。
// ウェブオートメーション関連の質問、しょっちゅう見るな。
// FAQ に追加した方が良いと思うが。
// ついでにMicrosoftとMozillaのドキュメントのURIも追加した方が良いと思う。
IEだと document.hoge.img.src = 'file:///c:\hoge.jpg' でローカルの画像表示がうまくできるのですが、 それ以外のブラウザでは動きません。 IE以外ではできないのでしょうか?書き方が悪いだけでしょうか? ちなみにfile:///c:/hoge.jpgという指定方法でもダメでした。
>>381 相対パスじゃー・・・ダメなのかな・・・。
フレームページである親ウィンドウのフレーム内のページを 子ウィンドウからwindow.openで変更させてるんだけど Operaだと対象フレームのページではなく新規にウィンドウが開いてしまうのですがどうしてでしょう? IEやNetscapeは問題なく変更できます。 スレ違いかもしれませんが分かる方ご助言お願いします 親ウィンドウ <frameset rows="*,100"> <frame src="hoge_main.html" name="main"> <frameset cols="*,250"> <frame src="hoge1.hrml" name="sub1"> ←操作したい対象のフレーム <frame src="hoge2.html" name="sub2"> </frameset> </frameset> 子ウィンドウ window.open("hoge3.html","sub1")
>>384 子ウィンドウは sub1 という名前のウィンドウを(自分が開いたわけではないため)知らないので
Opera の挙動が正しいように思える。
子ウィンドウから親ウィンドウを参照するなら window.opener を使う。
window.opener.sub1.location.href = "hoge3.html";
何故 open で開くのか意図が分からない
386 :
Name_Not_Found :04/11/27 22:33:51 ID:22Ehrt4L
>>386 あなたに何を教えれば良いのか判りません。
>>388 迷惑スクリプトはこのスレでは扱わないぜよ。
散々議論尽くされたんだろうが・・・
別に見てる人間には迷惑かからないわけだが
右クリ禁止って迷惑スクリプトに分類されるんだな・・・
>>388 「javascript 右クリック 禁止 撲滅」 でググってください。
393 :
Name_Not_Found :04/11/28 06:05:12 ID:VbVCt6J4
聞いてよ! javascriptでスロット作っちゃった^^
>>393 VBにVCなのにJavaScriptとは惜しいな。
老人で右クリックを全く使用しない人はけっこういる。 彼等は右クリック禁止に気付かないだろう。 マウスに手を伸ばすのが面倒で、キー操作だけで済ませる時もある。 そういう時には、右クリック禁止に気付かない。 右クリック禁止に気付かないから安穏としていられるに過ぎない。 気付いた時点で、それは迷惑だ。
396 :
Name_Not_Found :04/11/28 13:44:39 ID:OlfAFcX6
失礼いたします。 サーバ側にある txtファイルを 読み込みこもうと思って document.layers[0].src = "profile.txt" としてみたんですが layers.0はnullまたはオブジェクトじゃない どうすればできるんできますか?
>>396 それどのブラウザ用のスクリプトさ。document.layersって
N4にしかないぞ。今ごろN4専?
398 :
Name_Not_Found :04/11/28 18:04:01 ID:vppd5QwD
教えてください <INPUT TYPE="HIDDEN" name="test[0]" value="555"> のvalue値を取得したいのですが、 どのように記述すればよろしいのですか? Javascript初心者なもので・・・ よろしくお願いいたします。
399 :
Name_Not_Found :04/11/28 18:31:55 ID:JvBdCZvv
別フレーム、あるいは、別ウィンドウのDOMを操作するにはどうしたら良い?
>>400 別フレーム、あるいは別ウィンドウのオブジェクトを通じて参照すればよい。
「parent.frames.フレーム名.document.getElementById(ID名)」等ね。
ただし別鯖のものは絶対無理。
>>399 長っ! せめてこのソースでいう何行目でエラーが出てるのか分からない?
>>398 document.forms.フォーム名.elements['test[0]'].value
402 :
Name_Not_Found :04/11/28 19:16:32 ID:vppd5QwD
>>401 番さん、ありがとうございました。
もうひとつ教えていただきたいのですが、
<a href="javascript:SetMsg(0)">ココをクリック1</a><br>
<a href="javascript:SetMsg(1)">ココをクリック2</a>
<INPUT TYPE="HIDDEN" name="test[0]" value="555">
<INPUT TYPE="HIDDEN" name="test[1]" value="666">
というようになっていまして、
function SetMsg(i)
{
temp = document.forms.a.elements['test[i]'].value;
window.opener.document.frmParent.txtMessage.value = temp;
}
とやりますとエラーになってしまいます・・・
どなたか、教えてください。お願いいたします・・・
>>402 'test['+i+']'
って言うか、なんでこんな面倒なIDつけるのよ。
document.forms['フォーム名'] か document.フォーム名 じゃないか?
406 :
Name_Not_Found :04/11/28 19:25:58 ID:vppd5QwD
>>403 さん
ありがとうございます。
本当に、ありがとうございます。
おかげで、できました。
407 :
Name_Not_Found :04/11/28 19:27:57 ID:JvBdCZvv
>401
みてくださってありがとうございますm(_ _)m
投票フォームの下にあるそれぞれの【投票結果】を交互に押すとエラーがでるんです;;
おそらくスクリプト記述部分の
function ResultWin (No) {
window.open('
http://vote1.fc2.com/poll.cgi?user=include&mode=result&no= '+No, 'newwin', 'menubar=no, scrollbars=yes, width=330, height=318');
}
のfunction ResultWin (No) 関数が2つあるために起こるのではないかと思うのですが…
>>407 同名の関数が幾つあっても上書きされ内部的には一つ。
てか、オメーは誰だ?
409 :
Name_Not_Found :04/11/28 22:26:26 ID:Bgs270fy
CSSの overflow:auto を使ったdiv領域に DOMのappendChildを使って要素を追加していくのですが、CSSで指定したサイズ以上になるとスクロールバーが出てきます。 そこで、常にそのスクロールバーを一番下に固定したいのですがどうすればいいでしょうか。 scrollTop の値をCSSで指定したheightの値にしてみたら、一応常に一番下にすることはできました。 しかし、一度そのスクロールバーを上に移動したあとに scrollTop の値を変えて一番下にすると スクロールバーは動くのですが、追加された要素(文字列)が一部表示されなくなります。 何か分かることがあったら教えて頂けませんでしょうか。
410 :
Name_Not_Found :04/11/28 22:28:40 ID:Bgs270fy
すいません、補足を。。 scrollTopを変更されるタイミングは要素を追加した直後に行っています。
411 :
Name_Not_Found :04/11/28 22:42:58 ID:JvBdCZvv
>408 誰とは?何ですか?
412 :
Name_Not_Found :04/11/28 22:47:43 ID:QVN0t6j+
>397 そうだったのか・・・ ありがとうございました。
>>409 それだけではCSS のバグっぽいとしか言いようがない。
>>411 お母さんに"最初に質問した時の記事番号を名前欄に入れなさい"と教わらなかったか?
で、うpしたソースでは再現されないってことは知っているのか?
洩れの母は数年前に他界したがそんなことは言っていなかったな。
>>393 URL希望
自分断念した経験があるんでソース見てみたい
>>386 あなたのJavaScriptの知識レベルによっては
助言してあげる。
まるっきり知識0で、ソースのみ希望してるなら問題外。
ただJavascript初心者にとってはformの使い方、配置で良い練習問題かな、と思う。
ܷܵܶ
417 :
Name_Not_Found :04/11/29 09:30:00 ID:4hda1Z3y
appendChildは常に下に下に要素が追加されるのですが、上に上に追加する方法はありますか?
418 :
417 :04/11/29 09:57:55 ID:4hda1Z3y
自己解決しました。 insertBefore という関数を使用すればできました。 スレ汚し失礼しました。
>>418 、、、関数ねぇ。
自分で調べれる人みたいだから、なんとかなるだろうけど、
一度ちゃんと勉強しなおした方が良いと思うよ。
× 調べれる ○ 調べられる
メソッド、やね。 IEでもDocumentオブジェクトのメソッドが生成できるようになれば、 ちょっとだけ楽できるのになあ。
422 :
BlackLightOfStar ◆ifsBJ/KedU :04/11/29 14:16:13 ID:GvaqZCgb
HTML4.01 Strictでソースを書いて、 <span id="nantoka">kantoka</span> と書いても、document.all.nantoka.innerHTML を書くと、Windowsのネスケでエラーになります。IE,Operaではエラーにはなりません。 ネスケだと、document.all has no properties とか出てきます。 これはどういう仕組みになっているのですか?
>>422 document.allでどのブラウザもOKだと思ってるのか?
>>422 document.allは基本的にIE専で、OperaはIEに合わせている。
標準規格ではdocument.getElementByID(ID名)を使う。これだと
新しいブラウザではどれもOK(N4やIE4にはない)。
425 :
BlackLightOfStar ◆ifsBJ/KedU :04/11/29 17:02:06 ID:GvaqZCgb
Re:>424 色々なブラウザでソースの変更をするには、やはりbody要素全体を書き換えるしかないのでしょうか?
426 :
Name_Not_Found :04/11/29 17:56:57 ID:dpxHVQuk
質問させてください。Windows IE6.1で試しています。 左右に分かれたフレームのページをつくり、右ページにメニュー、左ページに掲示板を作っています。 左ページを更新したら、同時に右ページも更新させたいのですが、それの方法がわかりません。 一応、下記の通り試してみましたが、更新しませんでした。 function autoOpen(){ window.open("menu.htm","menu"); } 左ページの更新時、BODYを下記のとおり書き換えています。 <body onLoad="autoOpen()"> 何卒宜しくお願いします。m(_ _)mペコリ
>>425 ブラウザによって処理を変えてあげればいいだけでーす。
でもブラウザによってできることとできないことがあるのでーす。
あまり無茶はしないほうがいいのでーす。
>>425 innerHTMLは多くのブラウザで対応しているよ。だから
document.getElementByID('nantoka').innerHTML = ...
でいいじゃん。
>>426 <body onload="parent.frames.menu.reload(true)">
だったらどうかな。
429 :
426 :04/11/29 18:34:51 ID:???
>>428 ありがとうございます。
さっそくやってみましたが、左のフレームがリロードされません(^^;
うーん、どうすればいいんでしょうか。。。
>>429 ごめんまちがいた。
parent.frames.menu.location.reload(true)
431 :
426 :04/11/29 19:07:39 ID:???
>>430 ありがとうございます!!
見事に更新されました!
感謝感謝です。
本当にありがとうございました。
432 :
Name_Not_Found :04/11/29 20:30:11 ID:y8DH8rs5
お前らjavascriptについて教えてください。 お前らのブラウザで以下のソースを実行するとどうなりますか? ある小数を1000倍したいだけです。 <html> <head> <title>小数の実験</title> <script language/javascript> val = 16.2; alert(val); val *= 1000; alert(val); </script> </head> </html> ここの環境はWindowXP I.E.6.0ですが 1回目のalertは16.1で2回目はなんと 16100.000000000001 となってしまいます。 16.1を他の数字に変えると単に1000倍された数字が返って来ます。 16.1以外では他にこのような現象はまだ見つけていませんが 他にもこんな現象の起こる数は存在するのでしょうか?
433 :
432 :04/11/29 20:33:25 ID:y8DH8rs5
間違えました!! 5行目は val = 16.1; です。
436 :
432 :04/11/29 20:51:46 ID:???
ソース見ないと分からない程度なら問題ない
438 :
BlackLightOfStar ◆ifsBJ/KedU :04/11/29 22:19:40 ID:GvaqZCgb
Re:>428
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd ">
<html lang="ja"><head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>document.getElementByID(id)</title>
<script type="text/javascript">
function ft1(){
document.getElementByID('faa').innerHTML="qwerty";
}
</script>
</head><body>
<noscript><p>Activate the JavaScript.</p></noscript>
<p><span id="faa">0</span></p>
<form name="f1" action="#"><p>
<input type="button" value="up" name="b1" onclick="ft1();" onkeypress="ft1();">
</p></form>
</body></html>
をIE6でボタンを押したらエラーになります。何故でしょう。
>>438 何やろうとしてるのか、どんなエラーかくらい書いて欲しいな。
クイズやってんじゃないんだから。
>>439 何やろうとしてるのかぐらいは一目でわかるな。
>>438 getElementByID → getElementById
回答者も間違えてんだけどね。それくらいチェックできる
ようになって欲しいな。
>>442 その広告って良く見かけるけど、右上に配置されてるのしか見たこと無いような気がする。
無理なんじゃないかな。
444 :
川*^ー^)玉子 ◆GodofTripY :04/11/30 04:10:54 ID:OTFCLpTu
JavaScriptの質問です。 計算機を作りたいのですが、 計算機といっても2chのトリップの出現確率を表示する計算機を作りたいのです。 そこで、みなさんのお力をお借りしたいと思いまして質問いたします。 htmlのイメージとしては↓(空欄に数字を記入し、◎を選択する) 検索文字列 大文字小文字の区別 位置の指定 速度 ┌─────┐ ┌───┐ │ │ ◎ なし ◎ どこでも │ │trips/s └─────┘ ◎ あり ◎ 前方 └───┘ ◎ 後方
445 :
川*^ー^)玉子 ◆GodofTripY :04/11/30 04:20:00 ID:OTFCLpTu
>>444 の訂正です↓
検索文字列 大文字小文字の区別 位置の指定 速度
┌─────┐ ┌───┐
│ │ ◎ なし ◎ どこでも │ │trips/s
└─────┘ ◎ あり ◎ 前方 └───┘
◎ 後方
┌──┐
|決定|
└──┘
┌──────┐
結 果| │
└──────┘
↑検索文字列に探したいトリップを入力し、◎を一つ選択、速度にPCの検索速度を入力し、決定を押す
すると、結果にトリップ検索時間(平均値)を出力する計算機を作りたいのです。
ただ、2chトリップのトリップは、A〜zの52文字、0〜9の10文字、. / と2文字、合わせて64文字しか使えません。
また、トリップは◆GodofTripYのように10文字で構成され、しかも10文字目には
. 2 6 A E I M Q U Y c g k o s w の16文字しかでません。
これ以外の時は結果にエラー表示をしたいのです。
みなさんの助言をお願いします。
玉子ちゃん こんな所で奇遇ですな もぇもぇ 以前、はりねずみタンがCGIで計算機作ってたような
447 :
川*^ー^)玉子 ◆GodofTripY :04/11/30 04:36:55 ID:OTFCLpTu
>>446 キャー見つかった(><)
ジオだとね、cgiがダメなのよ・・・。
もぇちゃんJavaScript分かる?
>>447 そっかジオか 移転汁!! w
んで JavaScriptは全然だめぽ
FLASHやってるから ネタ探しにちょこちょこ覗きに来てたり
計算機完成したら使わせてもらうもぇ〜
>>444 ん〜、ここは
>>1 にもあるとおり、ゼロから教える場では無いんだよね。
>>445 で自分で言ってるから分かってると思うけど、ここでもらえるのは助言止まりだよ。
Javascriptを何も知らなくて、ソースのみ希望してると、カエレって言われるかも。
急ぐ必要も無くて、今少しずつ勉強してる最中なら、出切るだけ協力してあげるからさ、
行き詰まったらまたおいで。
口は悪いけど、ここの回答者はレベル高い人いっぱい居るし、的確な回答を得られると思うよ。
とりあえずform配置してうpしてきなされ。
innerHTMLと innerTextの違いって何でしょうか? 今このスレをざっと見ててふと思いました。
document.getElementById(id).innerHTML = "<b>ふとじ</b>"; document.getElementById(id).innerText = "<b>ふとじ</b>"; innerHTMLはその名の通りHTMLを認識する innerTextは解釈せずに出力するはず。
どっちかっつーと、innerHTMLの方が…
454 :
450 :04/11/30 12:21:59 ID:???
>>451 回答ありがとうございます。
実験したところ、まさにその通りでした。
>>452 ,453
リファレンスブック立ち読みしてきます。
というよりいい加減、2大(ベーシック)ブラウザで統一して欲しいですよね・・・・
456 :
BlackLightOfStar ◆ifsBJ/KedU :04/11/30 12:58:14 ID:V0oFycd3
Re:>441 できました。どうもありがとうございます。
>>454 両方対応してるinnerHTMLを使えばいいだけ
タグをテキストで出力したいなら実体参照にエスケープすればいいだけ
>>454 猛烈に反対されつつ Mozilla は innerHTML とか marquee とかを
取り入れて来たわけだが。また、XMLHTTP 関連では、Microsoft のそれを
仕様書と明示して統一を図っている。
とりあえず、DOM 関連が非道い Perl でDOM 扱ってみろ。発狂するから。
そもそも、そういう身近な悪例を出さなくても JS の DOM は良く出来ていて
使い易いのは疑い様のない事実。
innerText は比較的容易に実現できるから、次のような感じで作ってみては。
HTMLElement.prototype.__defineGetter__( 'innerText', function () {
var r = document.createRange();
r.selectNode( this);
return r.toString();
});
HTMLElement.prototype.__defineSetter__( 'innerText', function () {
this.innerHTML = '';
this.appendChild( document.createTextNode( arguments[0]));
});
>>451 そういう終了タグの書き方は、外部ファイルにおいては間違いではないが、
HTML ソースに書いた場合、厳密に言うと、正しくない。
(実際には上手く行ってしまうから殆ど誰も気にしないことだが。)
スクリプトであろうが何であろうが、HTML では、最初にHTML のルールで読まれる。
「</」があると、この世に存在しない超ストリクトな仮想ブラウザは、
script 要素の内容が終わったと解釈する可能性がないとは言えない。
つまり、「...innerHTML = "<b>ふとじ」までをスクリプトエンジンというものに
渡してしまう可能性がないとは言えない。スクリプトエンジンというものにとって、
これは閉じられていない文字列だから、上手く処理されない。
HTML に直書きする場合、厳密には、「<\/」などとしなければならない。
「\」は、HTML のルールでは、エスケープでも何でもないから、そのまま読まれ、
それを渡されたスクリプトエンジンというものにとっては、「\」はエスケープだから、
「<\/」は、「</」と解釈される。
繰り返すと、外部ファイルなら問題無いが、HTML ソースの何処かに直接書く場合、
終了タグは、「<\/」などと書かなければ、HTML のルールに引っかかる。
「'</scr' + 'ipt>'」という書き方を時々見かける。無意味な事をしていて
肝心な事 (HTML の仕様書に書かれてある事) をやっていない。
正しくは、「'<\/script>'」とか、「'<' + '/script>'」とかと書く。
>>454 独自拡張まで統一しろってか?そりゃおまいのわがままだろw
461 :
Name_Not_Found :04/11/30 14:01:31 ID:KxwpFR5u
すいません。フレームでを使ったページでもスクリプトのウインドウを閉じる命令は つかえますか?いろいろためしたんですが元のページではウインドウを閉じれるんですが フレームでそのページを読み込むと閉じないんです^^;
>>461 閉じる対象が、そのドキュメントのwindowからparentもしくはtopに変わっているので。
464 :
Name_Not_Found :04/11/30 14:30:29 ID:KxwpFR5u
よくわからなのですが、ターゲットをparentまたはtopに変更するということでしょうか? 実際やってみると前と同じで反応しません。
>>459 '<\/script>'は \/ が意味不明だから \ を取って / であると判断しているに
過ぎないと思うのだが、違うか?
>>464 ソースが提示されていないので憶測の範囲ですが。
window.close();
と記述していませんか?この場合そのドキュメントのwindowオブジェクトに対して、
close();というメソッドを適用しているわけです。フレーム内でこのドキュメントが
展開される場合、閉じる対象はwindowオブジェクトではなく、parentもしくはtopに
なるので、parent.close(); もしくは top.close(); になります。
JavaScriptの基本ですが、オブジェクトとメソッドの関係を勉強すると
幸せになれるかもしれません。
467 :
Name_Not_Found :04/11/30 14:49:19 ID:KxwpFR5u
あんた天才!! ありがとうございました、できました。 また教えて下さい。
468 :
Name_Not_Found :04/11/30 15:00:19 ID:KxwpFR5u
あんた天才!! ありがとうございました、できました。 また教えて下さい。
>>458 innerTextはDOM3でtextContentプロパティとして標準化されており
Mozillaはそっちで実装しているので
__defineGetter__とかするにしてもそれ使えばいいと思うよ。
Mac IE で、意味不明のスクリプトエラーなんですが、どうしようか困ってます。 Microsoft JScript ´ a^E ´ i ` E ´ ^E ´ CE ´ A '' E ´ GE ´ a^A ? [: エラー: IE ´ uE ´ WE ´ FE ´ NE ´ gC tm ’’ ko vC?C Σ とかなんとか… やってることは非常に単純で、javascript を使って 新しいwindow を開いて、その新しい window の中でも javasctipt を書いてる、ってだけけなんだけど… Mac IE 5.2.3 (Mac OS X 10.3.5) だれかたすけちくり。。
>>470 あ、それ漏れも見たことある。
文字コード関連な気がしてならない。
472 :
470 :04/11/30 22:34:57 ID:???
原因判明;リファラ local でやる分にはうまく行くのでわかった。実サイトでは、script を .js 外部ファイルにして、 referer のアクセス制限かけてる。log をみたら案の定、 Mac IE は <script src=" を読み込むのに リファラ付けねぇよ!!! どうしようかなぁ。。。すれ違いだな。スマソ。
質問させてください。 hogehoge11.html というHTML文書内で、 JavaScriptを用い、今開かれているファイル名を取得したい(hogehoge11.html)場合、 どのような方法があるんでしょうか? 同じJavaScriptをhogehoge12.html内に導入した時は、 hogehoge12.html というのを取り出したいのですが・・・
>>473 忘れてました。
当方IE6.0、Windows系です
>>473-474 あんたのページは誰もIE以外では見ないってことなのかな。
まあともかく、location.pathnameでも参照すれば。IEでも
何でも共通だよ。
長い長いプログラムを書こうとするとき、 行き当たりばったりで書くと、あとでどうにもならなくなるね。 どうにもならなくは無いんだが、拡張したり修正したりするときに非常に苦労する。 Javascriptだけに言えた事じゃないと思うんだけど・・・・・ そこでお前らに聞きたい。 特にプログラム歴長い人。 組む前に計画書みたいなものを書く? もし書いてるのだとしたらどんなことを書く? 是非お答え願いたい。 微妙にスレ違いですまん。
>>476 別に書かない。
長いといっても、一定のサイズに分けて書けばいいでしょ。
1つのクラスなり関数なりの大きさを抑えて書く。
>>475 本気で大きいものを作る時は UML 分析モデリングをする。
479 :
初心 :04/12/01 14:15:43 ID:nWsJm399
HP上で文章のコピペを試みたのですが、 javaの影響か、文章がコピペできないようになっています。 (文章の反転自体ができないようになっています。) そこで、javaをOFFにして試したところ、 文章が非表示になってしまいます。 このような場合、コピペは不可能なのでしょうか。 どなたか、詳しい方教えてください。よろしくお願いいたします。
>>479 「javaをOFFに」すればコピペできるよ。
>>479 アドレスだしたほうが早いのに
1.ソース見れ
2.Flash使ってるっぽい?(使ってたらコピペ無理)
3.そのままその文章を自分で書け
ていうかすれ違いっぽいけどまあいいや
482 :
Name_Not_Found :04/12/01 19:58:47 ID:CX4+Cq70
初歩的な事かもですが、質問させてください。
window.moveTo(0,0);
window.resizeTo(screen.availWidth,screen.availHeight);
でフルスクリーン表示させてたんですけど、
そのサイトがフレームの中に組み込まれちゃったんです。
top.moveTo(0,0);
top.resizeTo(screen.availWidth,screen.availHeight);
そこで上のように書き換えればオッケーと思ってたら、
親フレームは別のドメイン使ってるんで、エラーになっちゃうんです。
「スクリプトエラーの通知」を外してれば何の問題もないんですけど、
FAQ
>>9 のQ1/A1のように無理なんですかね?
>>482 > 「スクリプトエラーの通知」を外してれば何の問題もない
エラー通知さえなければ動かなくてもそれなりにOKなのであれば
try-catch文とかonerrorとか使ってエラー処理を汁。
パケットモニタで抽出とか PrintScreenしてOCRとか
485 :
479 :04/12/01 20:43:13 ID:nWsJm399
>>485 けんかを売っているとしか思えないな。
するーするー。
次、ドゾー。
487 :
482 :04/12/01 20:56:14 ID:CX4+Cq70
>>483 ありがとうございます。エラー通知の回避できました。
でも、それだと全画面表示ができないって思ったけど、
気のせいでした。
エラー通知しなけりゃ、全画面になるもんだと何故か思い込んでました。
まあどうでもいいや。
>>485 JavaScript on で入って、コピペする時に offでってIEでもできるかね…
FireFoxなら簡単に出来るけど。
489 :
Name_Not_Found :04/12/01 21:59:27 ID:f9ApyABz
質問です。 誰かがアクセスしてくるたびに、画面のメッセージを変えるのを知りたいです。 たとえば一回目には「おはよう」で、後でまたくると「ねろ!」とか。
491 :
Name_Not_Found :04/12/01 22:09:30 ID:f9ApyABz
493 :
Name_Not_Found :04/12/01 22:31:39 ID:f9ApyABz
>>492 全然わかりませんでした。
上を選んで下を表示する方法さえわかれば解決しそうなんですが・・
助けて!
>>493 >上を選んで下を表示する方法
それは別のスクリプトを使ってる。
メニューセレクタでググれ。
じゃ上のページのソースも見て勉強汁 あれで全然わからないんだったらここで教えてもお前には無理
モー娘。羊や椎名林檎の板みたいに背景やタイトルgifをランダムに変更する方法はどうするのですか ソースを見てもランダムに使われる他のgifの名前は見あたりません そのやり方を教えて下さい
>>496 CGIでやってることがソースを見ればわかるだろうが。
そんなHTMLもわからないやつにJavaScriptなんか早い。
おっと、CGIも早いからもっと勉強するまで固定で我慢しとけ。
>>496 今朝、出勤の途中に30万くらい入った財布を拾って、
さっき警察から落とし主が来たと連絡があった。
そんなこんなでご機嫌なのでアドバイス。
JavaScript 画像をランダムに表示
でググろう。
JIS コードに含まれていない文字がテキスト欄に入力されている場合に アラート出すようなスクリプトって、どこかにありませんでしょうか? 過去ログ捜したんだけど、見つけられなかったです。 捜し漏れかもしれませんが、教えて下さい。
>>500 許可する文字全てのデータを自前で用意して正規表現マッチ。
下記状態でアラーとは半角整数ですがアルファベット若しくは半角整数、 もしくは空欄にするにはどうすればよいでしょうか? var retv; retv = parseFloat(touroku.atusa.value); if (isNaN(retv) || retv <= 0) { alert("高は半角文字の正数でなくてはいけません。")
503 :
Name_Not_Found :04/12/02 17:10:47 ID:nGvegE9o
WinでIE6.1使ってます。
左右に分かれたフレームを使っていて、右側のページをあるリンクで移動した際、
自動的にページ移動させたいと思っています。
その時、親フレーム全体で開くようにしたいのですが、その設定がわかりません。
_parentというターゲットを埋め込めばできるような気がしているのですが、
どこにやればいいのか検討がつきません。
<META HTTP-EQUIV="refresh" CONTENT="0; URL=
http://hoge.jp/index.htm ">
分かる方、何卒教えてください。
504 :
503 :04/12/02 17:14:34 ID:???
あ、すみません。 よく考えたらこれはJavaScriptではないですね(^^; すれ違い、失礼しました。
505 :
Name_Not_Found :04/12/02 17:20:46 ID:Ad1Go95x
ページを表示するたびにランダムで文字を変えたいのですけど <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <SCRIPT language="JavaScript"> <!-- colors=new Array(); colors[0]="#ffffff"; colors[1]="#000000"; colors[2]="#cccccc"; colors[3]="#ffcccc"; colors[4]="#ccffcc"; colors[5]="#ccccff"; index=Math.floor(6*Math.random()); document.bgColor=colors[index]; // --> </SCRIPT> </BODY> </HTML> だと背景色が変わりますよね?colorsの部分をTextsにしてもだめでした。助けてください。
<SCRIPT LANGUAGE="JavaScript"> <!-- begin script function netie(net, ie) { if ((navigator.appVersion.substring(0,3) >= net && navigator.appName == 'Netscape' && net != -1) || (navigator.appVersion.substring(0,3) >= ie && navigator.appName.substring(0,9) == 'Microsoft' && ie != -1)) return true; else return false; } // end script --> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-- Start script function transitionTxt() { if (idTransTxt.filters.item(0).status == 0) { idTransTxt.filters.item(0).apply(); idTransTxt.style.visibility = "visible"; idTransTxt.filters(0).play(); } } // End script --> </SCRIPT>
>>505 文字を変えたいとはどういうことなのか判断しかねるが、
文字色を変えたいのなら、bgColor を fgColor に変更するだけ。
>>502 var pattern = /^[0-9a-zA-Z ]+$/;
pattern.test( 'あいうえお'); // false
pattern.test( 'XYZ'); // true
pattern.test( 'XYZあいうえお'); // false
509 :
Name_Not_Found :04/12/03 00:26:42 ID:pDPDjjCZ
すいません、スレイプニルのスクリプトをjavascriptで書いてるんですが、 ブラウザを50pxゆっくり下にスクロールさせるだけなんですが出来ません。 下記コードを書いたのですが、一度だけscrollByが実行されるだけで、 再帰的な処理をさせるsetTimeoutが実行されてないようです。 setTimeout("scroll()", 100);の"scroll()"の部分のダブルクォーテーションを取ってやると、 きちんとゆっくり下にスクロールされるのですが、 スクロールが終わると「引数が無効です」とエラーが出て終了してしまいます…。 どなたかアドバイス頂けないでしょうか。 var id,obj,document,window; obj = new ActiveXObject("Sleipnir.API"); id = obj.GetDocumentID(obj.ActiveIndex); window = obj.GetWindowObject(id); var y = 0; // 移動距離初期値 var move = 1; // 移動量 var timerID = 10; // タイマ変数初期化 scroll(); function scroll() { y += move; if (y < 50) { window.scrollBy(0, move); var timerID =window.setTimeout("scroll()", 100); window.clearTimeout(timerID); } }
510 :
509 :04/12/03 01:00:39 ID:???
あれ? setTimeout(scroll(), 100);のダブルクォーテーションを取って↓ var timerID =window.setTimeout(scroll(), 100); コマンドプロンプトから開くと「引数が無効」のエラーも出ずにちゃんと動いたよ。 でもスレイプニルの「スクリプト」から実行するとやっぱエラーが出る。 どうなってるんだ…。 ちょっとどこが間違ってるのかわからないので、 よろしければ引き続き添削お願いします…。
なぜsetTimeout()して直ちにclearTimeout()しているのか 説明してもらおうか。
512 :
509 :04/12/03 01:40:17 ID:???
>>511 え?だってsetTimeout(A , B)ってB時間使ってAを実行っていう関数ですよね?
で、scroll ()っていう自作関数の中から自分自身を呼んでるから、
clearTimeout()が実行されるのは再帰的に連続してscroll()が呼び出され終わった後になる、
と思ったので、直後に置いても良いのでは、と…。
というか再帰の最後まで終わらないとclearTimeout()が実行されないので、
直前に置いた方が良いのでは、と考えてさっきやってみたんですが、
やっぱ結果は同じでした。
というか何か変な勘違いしてたらすいません。
(´-`).。oO(なんで再帰で書く必要があるのだろう・・・)
(´-`).。oO(setInterval でいいよね・・・) setTimeout を使うなら、clearTimeout を scroll() のはじめに書くと思う。 そして「var timerID = 10; 」が少し気になる。
Webページにjava scriptで表示される広告を無効にするタグってありますか? Geoの広告を表示させたくないフレームがあるので もしできるのならと思ったんですが・・・。
516 :
509 :04/12/03 02:10:05 ID:???
>>514 setInterval ってその行で立ち止まって勝手に何度も命令を実行し続けるやつですよね?
それだと条件分岐文を使って命令を止めたりする方法がわからなかったので、
使いませんでした。
javascriptでスクロール、のサンプルも大抵setTimeoutが使われてるようだし。
あとvar timerID = 10; はなんか見つけたサンプルがそうなってたもんで…。
とりあえず今日はこのへんで力尽きたので寝ます、、、。
>>515 規約違反にならないことなら相談に乗ってももらえるかも知れないが。
>>512 setTimeout()は「実行を登録」するだけですぐ戻って来るだろ。
それで直後にclearTimeout()したら実行されないのが普通だよな。
このばあいclearTimeout()はまったく書く必要がないでしょ。
>>516 用語の使い方とか、動きの前提が他言語で硬直してるような雰囲気。
適当にやらずに、ちゃんとリファレンスなりをきちんと読め。
519 :
515 :04/12/03 08:56:35 ID:???
>>517 別のフレームで、きちんと(表示領域内に)表示されるので規約違反にはなりません。
もし方法があるのでしたら教えていただきたいと思います。
>>519 それってGeoに聞くことでしょ。違反でないなら。
521 :
515 :04/12/03 11:04:45 ID:???
>>517 仕様としては問題ないはずだが、clearTimeoutを呼ばずにsetTimeoutを繰り返し使うと
動きがもっさりすることがある。
>>521 >タグってありますか?
この時点でスレ違いじゃないのか・・・というだけではヒドイので。スタイルシート使えばいい。
スクリプトを無効にするわけではないが、displayプロパティあたりで調べてみ。
>>519 後ろの方に次のを入れる。番号が何番目かは試して決めれ。
<script type="text/javascript">
document.body.childNodes[番号].style.display = 'none';
</script>
524 :
502 :04/12/03 14:22:11 ID:???
現状:半角整数以外は入力不可 希望:半角整数、半角アルファベット、空欄で入力可にする var retv; retv = parseFloat(touroku.atusa.value); if (isNaN(retv) || retv <= 0) { alert("高は半角文字の正数でなくてはいけません。") touroku.atusa.focus(); touroku.atusa.select(); return false }
525 :
502 :04/12/03 14:22:31 ID:???
>>508 を参考に以下のようにしましたが半角整数、アルファベット、
空欄のいずれかでもアラートメッセージが出てしまいます。
アドバイスお願いします
var pattern = /^[0-9a-zA-Z ]+$/;
pattern.test( 'あいうえお'); // false
pattern.test( 'XYZ'); // true
pattern.test( 'XYZあいうえお'); // false
pattern = parseFloat(touroku.atusa.value);
{
alert("高は半角文字の正数でなくてはいけません。")
touroku.atusa.focus();
touroku.atusa.select();
return false
}
>>525 if (/[^0-9a-zA-Z ]/.test( touroku.atusa.value)) {
alert("希望:半角整数、半角アルファベット、空欄で入力可にする");
touroku.atusa.focus();
touroku.atusa.select();
return false
}
java scriptを使ってチェックボックスのチェックされた内容によって 違うページを表示する様なページを作りたいのですが、どういった構文を用いればよろしいでしょうか?お願いします。
>>527 チェックの組み合わせに呼応したリンク先のurlの配列を作っておいて、
location.hrefをそれに切り替える感じで。
特にそう言った機能限定の構文は無いです。
529 :
502 :04/12/03 15:09:03 ID:???
>>527 SEO 度外視で構わないのなら、クエリ文字列にするのが良いと思う。
(SEO を気にするのなら、POST で、動的ページにするしかないが。)
そうしなければ、多数の HTML を用意しなければならなくなる。
チェックボックスが N個あったら、0個から N個までの選択状況が、
総計 2^N通り存在する。例えば 10個の場合、2^10 = 1024 通り。
たぶん、占いとかそう言う類のチェックされた項目の傾向でいくつかのリンク先に振り分け、 とかそういうのじゃないかな、と思った。 実際の振り分け先はせいぜい10通りくらいとか。
532 :
Name_Not_Found :04/12/03 17:27:54 ID:tCFS4dZx
Flash板で聞いたら、JavaScriptの領域だと言われたので、こちらで。。 Flashを開く時、 ウィンドウの横幅一杯に広げて表示する方法を教えて下さい。 <FRAME Src="./hoge.swf"> で何か設定があると思うのですが。
>>532 frameは使わずに、
window.open("適宜","適宜","fullscreen=yes,適宜");
とすればいいです。
ただ、フルスクリーンにされるとブラウザやOS自体のいろいろなコントロールに
アクセス静楽なるので、コンテンツの中でなんらかの救済措置を執るようにしてください。
×:アクセス静楽 ○:アクセスしづらく
536 :
Name_Not_Found :04/12/03 18:03:57 ID:tCFS4dZx
レスありがとうございます。 すみません、情報が不十分でした。 Frame1, Frame2, Frame3とFrameが3つあるページで、 Frame2とFrame3にFlashを表示させ、 なおかつそれらをFrame内横幅一杯に拡大する、 というのがしたいことです。 どうすればよろしいでしょうか。
>>536 こりゃ失敬。
object要素に適当にidをつけて、
var obj = document.getElementById("id_string");
var emb = obj.getElementsByTagName("embed")[0];
としてアクセスして、それぞれのwidth/heightプロパティに目的とする幅を取得して
入れてあげれば良かろう…
と思ったが、単に <frame src="hoge.swf">としてしまうのが、一般的なUAでは早いような
気がしてならない。
window.open("
http://www.google.com ").document とすれば
googleのページを開いてそのdocumentオブジェクトが得られると思うのですが、
なぜかアクセス拒否エラーがでてしまいます。
他のウインドウに別サイトを開いてそのオブジェクトにアクセスするにはどうしたら良いでしょうか?
(´・ω・‘)ショボーン
質問。 for(i=0;i<MH;i++){ for(j=0;j<MW;j++){ という2重ループを作った。 (MH=12;MW=12;) テストしたらバグッたため k=i*12+j; n=dt.charAt(k); の記述(上のすぐ次)の次に document.write(n); と入れて検査したら、 本来なら144個の数字が出てこなきゃいけないのに 12個でストップしてた。 これは何故? 注:dtに入っているのはデータで、そっちはちゃんと144桁の数字が入っています。
543 :
542 :04/12/03 21:40:17 ID:???
>>541 (追加)
その部分のソースをコピペしてもらえんかね。
その場に書くのも外部ファイルにするのも同じだと思うが。 同じだと思えないのなら勉強するしかないよね。がんばって。
>>541 i の 12回ループ毎に、j = 0 してないからだろ。
だいたい、
k = i * 12 + j を 144 回計算してるが、i * 12 部分は 12回(11回)で済む。
しかも、charAt とか、文字列を一々読ませると、JScript は激しく遅くなるから、
split('') して、配列にしてから処理する方が好ましい。
// charAt で JScript に文字列を 144回も繰り返し
// 読み込ませないように、配列にする。
var a = '\
633890766824505299946136414810287561520774771813283247171596767668054387\
544576869539059016671682776718032809969591167873695804406533997168743933\
'.split( '');
var i = 0;
var j = 0;
var k = 0;
var MH = 12;
var MW = 12;
while (i < MH) {
while (j < MW) {
document.write( a[ k + j]);
j++;
}
j = 0; // これを忘れていると思われる。
i++;
k = i * MH;
}
>>541 追記:
何をしているのか分からないのでアレだが、144回 document.write させることもなかろうに、と、思う。
var b = new Array() とでもして、ループ内では、
b[ b.length] = a[ k + j];
という具合に配列に保持させて、ループ終了後に、
document.write( b.join( '')) とか、document.write( b.join( '<br>')) とか、
document.write( '<p>', b.join( '<\/p><p>'), '<\/p>') とか、適当に。
>>541 特に問題が見当たらないんだけど、とりあえず { } の対応とかおかしくないかなぁ。とか。
var MW = 12, MH = 12;
var dt = '01234567890(中略)01234567890123';
for(var h=0; h<MH; ++h) {
for(var w=0; w<MW; ++w) {
var c = h * MW + w;
document.write(dt.charAt(c));
}
}
でちゃんと動いたし。
550 :
Name_Not_Found :04/12/04 07:43:23 ID:EUddrWG6
>>542 >>543 次のようになってます
var tx2='';
var n;
var MW=12;
var MH=12;
for(i=0;i<MH;i++){
for(j=0;j<MW;j++){
k=i*12+j;
n=dt.charAt(k);
document.write(n);
switch(n){
〜中略〜
}
}
tx2+='<br>';
}
document.write(tx2);
551 :
543 :04/12/04 08:15:07 ID:???
>>550 起きるタイミング一緒だったんですかね。
var tx2='あ';
var i,j;
var MW=12,MH=12;
for(i=0;i<=MH;i++){
for(j=0;j<=MW;j++){
k=i*12+j;
document.write(k,"<br>");
}
}
document.write(tx2);
これで 12×12+12 つまり156までカウントしたよ。
んで最後にきっちり あ と出力された。
なのでfor文には問題ないことがわかる。
中略されてるところに問題があるのかもしれないね。
どんなことが略されてるか分からないので、とりあえず見えてる部分で確認したい。
switch文の書き方間違ってないよね?
case : ←セミコロンじゃなくコロン
そしてcase毎の最後にきちんとbreakしてあるかどうか。もちろんbreakは必須じゃないけどね。
>>547 ちゃんとjはリセットされてるじゃん。
for(初期値;解除値; でしょ。
省略部分で、iかjを使ってしまっている。に1ゼニー。
>>551 おおい、どこまで泥沼化するんだよ。
<MH が <=MH に変わってるじゃないか。
>>551 あんた絶対向いてないよ。JavaScriptなんか触らない方がいいよ。
555 :
Name_Not_Found :04/12/04 14:11:47 ID:EUddrWG6
>>548 144回その処理をしないといけないんです。
それでバグッたからその1文を入れたんです。
>>553 あら、失礼。
けど<=を<に変えても回数が変わるだけで、他は変わらないよなぁ。
やはり中略の部分に問題があるんじゃないだろうか。
>>555 お前は誰だ。
質問者ならレス番入れとけ。
それと、検査用(デバッグの為)に いちいちdocument.writeはお勧めできん。
alertにしてみ。
>>550 >>552 に一票。
とりあえずちゃんとループしているかチェックしてみな。
for(i=0;i<MH;i++){
document.write(i); // i のループ回数
for(j=0;j<MW;j++){
document.write(j) // j のループ回数
k=i*12+j;
n=dt.charAt(k);
〜中略〜
}
tx2+='<br>';
}
559 :
550 :04/12/04 16:47:11 ID:EUddrWG6
var n; var MW=12; var MH=12; for(i=0;i<MH;i++){ document.write(i); for(j=0;j<MW;j++){ dociment.write(j); k=i*12+j; document.write(k); n=dt.charAt(k); document.writeln(n); } } でテストしたら、「0」で終わった上、「実行しまたが、ページでエラーが発生しました。」 _, ,_ ・・・・・・・・・(゚ _゚ )
>>559 > 「実行しまたが、ページでエラーが発生しました。」
その黄色い三角でもダブクリしとけ
561 :
559 :04/12/04 17:07:52 ID:EUddrWG6
ありがとうございます。 でも単純なミス・・・orz
>>551 < 547 あ、j はリセットされてた。指摘ありがとう。
>>561 とりあえずその「単純なミス」の内容と解決方法を書かないことには
ノウハウとして蓄積されず、何の成果もなかったことになる。
>>559 でのエラーが解決されただけなのか、それとも
>>550 で出ていた
エラーが解決できたのか。質問者はそれなりにきちんと結果報告しないと
回答者に失礼だと思うのだが、どうか。
ちょっとお前ら 武蔵応援しようぜ
565 :
Name_Not_Found :04/12/04 23:37:56 ID:EFhF2AMI
566 :
566 :04/12/05 09:17:30 ID:???
以下のJavaScriptについての質問です。
ttp://www.sky.sannet.ne.jp/masapine/java_gazou3.html <SCRIPT LANGUAGE="JavaScript">
<!--
function gazou(mySrc){
document.myimg.src=mySrc;
}
//-->
</SCRIPT>
<center>
<a href="JavaScript:void(0)" onMouseOver="gazou('images/icons1.gif')">sample1</a>
<a href="JavaScript:void(0)" onMouseOver="gazou('images/icons2.gif')">sample2</a>
<a href="JavaScript:void(0)" onMouseOver="gazou('images/icons3.gif')">sample3</a>
<a href="JavaScript:void(0)" onMouseOver="gazou('images/icons4.gif')">sample4</a>
<a href="JavaScript:void(0)" onMouseOver="gazou('images/icons5.gif')">sample5</a>
<br><br>
<img name="myimg" src="images/icons1.gif" border="0" width="32" height="32">
</center>
■ ■ ■ ■ ■
┏━━━━━━━━━━┓
┃ ┃
┃ 画像 ┃
┃ ┃
┗━━━━━━━━━━┛
567 :
566 :04/12/05 09:20:00 ID:???
つづきです。 ┏━━━━━━━━━━┓ ■ ┃ ┃ ■ ┃ 画像 ┃ ■ ┃ ┃ ■ ┗━━━━━━━━━━┛ ■ ↑ 上記のように■を横へ移動して、リンクを貼ったメニューボタンを作りたいのですが どうしても上手くいきません。 ■を横へ移動すると画像が切り替わらなくなってしましす。 どうか、良きアドバイスをお願いします。
>>567 その、移動とやらをしたソースを張らないのはなぜ?
>>568 まったくだ。アドバイスを拒否してるとしか思えん。
570 :
566 :04/12/05 10:52:15 ID:???
<p><SCRIPT LANGUAGE="JavaScript">
<!--
function gazou(mySrc){
document.myimg.src=mySrc;
}
//-->
</SCRIPT><center>
<table width="400" height="200" border="0" cellpadding="0" cellspacing="0">
<tr>
<th width="226" height="241" scope="col"><img name="myimg" src="Button_a/001.jpg" border="0" width="200" height="200"></th>
<th width="385" scope="col"><p align="left"><a href="JavaScript:void(0)" target="http;//xxx1.html" onMouseOver="gazou('Button_a/001.jpg')">◆aaa<br>
</a><a href="JavaScript:void(0)" target="
http://xxx2.html " onMouseOver="gazou('Button_a/002.jpg')">◆bbb<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx3.html " onMouseOver="gazou('Button_a/003.jpg')">◆ccc<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx4.html " onMouseOver="gazou('Button_a/004.jpg')">◆ddd<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx5.html " onMouseOver="gazou('Button_a/005.jpg')">◆eee<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx.html " onMouseOver="gazou('Button_a/006.jpg')">◆fff<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx7.html " onMouseOver="gazou('Button_a/007.jpg')">◆ggg<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx8.html " onMouseOver="gazou('Button_a/008.jpg')">◆hhh<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx9.html " onMouseOver="gazou('Button_a/009.jpg')">◆iii<br>
</a> <a href="JavaScript:void(0)" target="
http://xxx10.html " onMouseOver="gazou('Button_a/010.jpg')">◆ jjj </a></p>
</th>
</tr>
</table>
<p> </p>
</center>
571 :
566 :04/12/05 10:52:58 ID:???
>>566 javascriptの前にHTMLを勉強しろ。
573 :
572 :04/12/05 11:17:50 ID:???
ほれ <SCRIPT LANGUAGE="JavaScript"><!-- function gazou(mySrc){ document.myimg.src=mySrc; } //--> </SCRIPT> <table width="300" height="240" border="0" cellpadding="5" cellspacing="0" align="center"> <tr> <td width="240"> <img name="myimg" src="Button_a/001.jpg" border="0" width="200" height="200"> </td> <td width="60" align="left"> <a href="xxx1.html" onMouseOver="gazou('Button_a/001.jpg')">◆aaa</a><br> <a href="xxx2.html" onMouseOver="gazou('Button_a/002.jpg')">◆bbb</a><br> <a href="xxx10.html" onMouseOver="gazou('Button_a/010.jpg')">◆jjj</a> </td> </tr> </table>
>>573 572からの流れで、ドラえもんの映画でのジャイアンを思い出したよ。
575 :
566 :04/12/05 11:29:03 ID:???
>>572-573 勉強不足で申し訳ありません。
それなのにソースまで貼って頂き、大変感謝しております。
ありがとう御座いました。
576 :
Name_Not_Found :04/12/05 13:37:17 ID:XSkI0HFP
以下のような状態のとき、 document.status.target.value=1 は出来るのですが 「ひろゆき」を「ひろゆきちゃん」 に変更する方法を教えてください <select name="target"> <option value=0>にちゃんねる <option value=1>ひろゆき <option value=2>その他 </select>
577 :
Name_Not_Found :04/12/05 13:58:35 ID:50MMb84n
>>566-575 スレ違いは無視するか他スレに誘導だけしてやれ。
>>576 document[ 'status'][ 'target'][ 1].text = 'ひろゆきちゃん'
578 :
:04/12/05 23:16:39 ID:IB5qm0X8
windowのheightとwidthはどうやって得るの?Openするときは指定できるのは分かるんだけど。
過去スレに何十回も出ている。
580 :
Name_Not_Found :04/12/06 07:48:43 ID:MPMbSERF
ウィンドウサイズがらみの書き込みは何度もでていますが、どうもわかりません。 winXPだとデフォで拒否られてしまうので使えないと思っていたのですが、 たまにちゃんと固定で出してるサイトがあります。 これなら大丈夫っていうフォーマットってあるの?
調べるのが面倒だからって適当なこと言ってんじゃねーよ
>>580 取得する話じゃないじゃん。ふつーは window.reseizeBy(幅の差, 高さの差)
とかでしょ。それじゃだめなの。
クリックすると左上に小さいウィンドウが出るようにするのって どうやるんですか?ちょっとしたお知らせを載せたいので。
585 :
Name_Not_Found :04/12/06 21:01:00 ID:Utm2V8F5
focus()メソッドでフォーカスを持つ要素を変更することができますが、 逆に現在フォーカスを持っている要素を知る方法はありますか?
各要素にonFocus持たせて、現在フォーカスを持っている要素を どこかで保持しておくとかじゃダメ?
>>585 全ての要素にアクセスして、onfocus=function(){ return this; }とするか…
…って書くと、アタッチイベントを使え!って怒られそうだな。
>>587 //return this?
何を相手にしてるの、ってことなんだよね。
スクリプト有効で徘徊してるNN4なんてかなり珍しいし、
初期の MacIE5 は、= function で落ちると聞くし。
var currentFocusedElement;
while ( ...) {
element.onfocus = function () {
currentFocusedElement = this;
}}
なんてのが問題無く使えるブラウザのほぼ 100% が
DOM2 寄りのイベントモデル実装してるわけで。
例えば、onload のような使用率の高いイベントにおいて顕著だが、
見知らぬ誰かのスクリプトで上書きされても使用者(コピペな人)は気付かない。
addEventListener, attachEvent を使っていれば、そんな下らない問題は起こらない。
>>585 IE なら、document.activeElement
http://www.microsoft.com/japan/msdn/library/ja/jpisdk/dhtml/references/properties/activeElement.asp // 最近1ヶ月以内にこのスレまたは前スレで答えた記憶がある。
589 :
Name_Not_Found :04/12/06 23:36:05 ID:ryF690cP
初めまして、掲示板に来られる方にアドバイスいただければと思い、書き込みをいたします。
HTML-aのファイルから、window.openを使用して新しいウィンドウを開きます。その際に、アンカー指定を含んだURLを受け渡したいと思っています(
http://www.aaa.com#topなど )
アンカー以下(#top)を引き継ぐために、escape、unescapeを使用していますが、こちらは技術上、セキュリティ上問題ありますでしょうか。
encodeURI, encodeURIComponentとの違いがいまいちわかりません…。初歩的な質問だと思いますが、どなたがご教授いただけると助かります。
よろしくお願いいたします。
関連リンク:
http://www.felix.jp/~yugo/js/guide/escape.html
>>585 Mozilla で IE を真似ると次の様になる。細部の詰めは自力でやってくれ。
addEventListener( 'load', function () {
var it = document.createTreeWalker(
document.body,
NodeFilter.SHOW_ELEMENT,
function (n) {
if (/^(?:A|AREA|BUTTON|INPUT|SELECT|TEXTAREA)$/.test( n.nodeName))
return NodeFilter.FILTER_ACCEPT;
return NodeFilter.FILTER_SKIP;
}, false);
var c;
document.activeElement = document.documentElement;
addEventListener( 'focus', function (e) {
document.activeElement = document.documentElement;
}, false);
while (null != (c = it.nextNode()))
c.addEventListener( 'focus', function (e) {
e.stopPropagation();
document.activeElement = e.currentTarget;
}, false);
}, false);
591 :
527 :04/12/07 10:53:09 ID:???
592 :
Name_Not_Found :04/12/07 14:47:43 ID:gNZUdhyR
お知恵を拝借させてください。 あるテキストボックスに文字列をいれたいのです。 入るべき文字列は、別のWEBサーバにアクセスしないとわかりません。 よって、JavaScriptでHTTPリクエストを発行して文字列を取得したいのですが、そういうことって可能でしょうか? CGIで処理してから…という案もあるのですが現状だとスクリプトで処理できた方が工期が縮まりそうなので。 よろしくお願いします。
593 :
:04/12/07 15:54:03 ID:lxp0pVpk
英語辞書ソフトでIEで表示されてる英語ページの中の英単語の上でCTRL+右クリックしたら辞書から検索してくれるのがあるんだけど、 これと同じようなことJavaScriptで右クリックした位置の単語を知ることできますか? document.elementFromPointメソッドを使えばエレメントは得られるけど、エレメントのテキスト(ノード)のマウス下の単語を正確に知りたいんです。 IE依存でいいんですけど。
>>593 こんな感じじゃだめ?
とりあえず動作確認の意味も込めてアラートにしてある。
<script language="JavaScript"><!--
var out="";
function aaa(ABC){
out=ABC;
}
function bbb(){
alert(out);
}
--></script>
</head>
<body oncontextmenu="bbb();return false;">
<div id="tango1" onmouseover="aaa(this.innerText)" onmouseout="aaa('')">あああ</div>
<div id="tango2" onmouseover="aaa(this.innerText)" onmouseout="aaa('')">goodjob</div>
</body>
>>593 document.oncontextmenu=function(){
var rng = document.body.createTextRange();
rng.moveToPoint(window.event.x, window.event.y);
rng.expand("word");
alert( rng.text );
return false;
}
596 :
594 :04/12/07 17:12:56 ID:???
>>595 すげーシンプルで出来るんですね。
見習って精進しますわ。
597 :
593 :04/12/07 17:26:55 ID:ajUndyO6
>>594 >>595 どうもありがとう。感謝。
JavaScriptってすごいな。
JavaScriptを勉強し始めて間もないけど、できるとは思わなかった。
IEの内部にアクセスするためにComやWindowsのメッセージフックを勉強しなくちゃいけないのかと思った。
特に595には感動した。
598 :
Name_Not_Found :04/12/07 18:02:06 ID:uL1u5B1X
こんにちは。JSPとJavaScriptで↓のように一度得た値をJavaScriptに飛ばして、その値を持って次のページに飛べるようにしたいのですが、うまくいきません。 何処が悪いのでしょうか? <head> <script language="JavaScript" charset="SHIFT_JIS"> <!-- function clickButtonShousai(butMM,i,A,B,C,D,E){ document.form1.i.value = i; document.form1.A.value = A; document.form1.B.value = B; document.form1.C.value = C; document.form1.D.value = D; document.form1.E.value = E; document.form1.butMM.value = butMM; document.form1.submit(); } //--> </script> </head> <body> <%for (int i=0;i<5;i++) {%> <input type="button" name="Shousai" value="詳細" onclick="clickButtonShousai('詳細','<%=i%>','A','B','C','D','E');"> <%}%> <form name="form1" method="POST" action="NEXTJSP"> <input type="hidden" name="i" value=""> <input type="hidden" name="A" value=""> <input type="hidden" name="B" value=""> <input type="hidden" name="C" value=""> <input type="hidden" name="D" value=""> <input type="hidden" name="E" value=""> <input type="hidden" name="butMM" value=""> </form> </body>
599 :
559 :04/12/07 18:18:25 ID:???
>>563 御免なさい。
えーと、確かtxを初期化したら一発で直ったような・・・
右クリック無効を無効にするっていうので javascript:d=document; d.all.tags('BODY')(0).oncontextmenu = d.onmousedown = d.onmouseup = d.onkeydown = 'return true';void(0); これを見つけたんだけどできないよね?
中途半端なコピーだなあ。
また変なのが降ってきたな
>>603 本を(読んだ|書いた)ことがあるか?
何のために巻末に参考文献として、その本を書くために著者が目を通したリソース群が明記してあるのか。
逆に、明記してなかったらどんな問題が起こるのか。時には出来の悪い頭を使って考えてみろ。
>>600 function foo ( ...) { ...}
その書き方で無効に出来る例
<body oncontextmenu="foo( ...);">
document.oncontextmenu = function () { ...}
document.oncontextmenu = foo;
別の書き方で無効に出来る例
document.attachEvent( 'oncontextmenu', foo);
→ document.detachEvent( 'oncontextmenu', foo);
無効に出来ない例
document.attachEvent( 'oncontextmenu', function (e) { ...});
ごめん、603じゃないけど、できの悪い頭使っても分からないことが。
>>605 レベルの場合はリソース群の明記が必要ないってことだよね。
どの程度まで元のものと違えば、あるいは抜粋量がどの程度であれば必要ないんだろう。
そのあたりの目安ってあるの? 内容を覚えてても出所を忘れてたら明記不要?
>>595 の場合は質問者の要求事項を満たしているので、参考として勉強を促すためか、
あるいは参考元からの著作権その他の問題が起こる可能性といった問題を指しているんだろうけど、
MSDNではあらゆるドキュメントに対して複製や他のネットワークリソース上での表示を禁止
しているので、ダメってことになる? それともリソース明記すればOK?
マイクロソフトに聞けばいいんだろうけど、
>>602 ,
>>605 を見る限りリソース書けばいいだけってことにも
見えるけど、その根拠は? スレ違いながら、今後もスクリプト自体は多く出てくるので聞いておきたい。
回答するときは自分が勉強した本やサイトを明記すればいいだけだろ そんなこともできないんならそもそも回答者の資格無しってこった
ぉぃぉぃ、回答するのに資格いるってよ、やべぇよ
>>609 自己弁護ウザイ
>>606 ごちゃごちゃ言っているつもりはないが、いくら何でもそこにある例文のコピペは無意味だと思うが。
// 私はどの法に対しても全く知識が無いし、仮に知識があったとしても、
// 著作権がどうのという話題に参加したいとは思わない。
伝言ゲームのようなことは避けなければならないと経験的に思っている。
ttp://ore.dyndns.org/web/limit.html で指摘されているような問題は、WWW上の全員がリソースを明記することで
防げるような気がする。それは現実には不可能だが、2chのスレ単位なら不可能ではない。
Apache 同様、J(ava)Script にも、カノニカルで分かり易い説明書が揃っているわけで。
コピペして回答するくらいなら アドレス書いとけということでFA?
つーことは、結局ググればなんとかなっちゃうってこと?
じゃあ、
>>1 に
ググれ。
とだけ書いておくスレになっちゃうじゃんね。
>>607 そんなん、いちいち覚えてないよ、普通。本書いている訳じゃあるまいし。
何となーく質問して、何となーく答える人がいて、
で、いちいち面倒な手続き省いて適当に書き込めるからなりたってんじゃん、このスレ。
頭かたすぎ。
つーか
>>602 のページだって何処を参考にして書いたのかなんざ書いてねーだろ
志がご立派なのは結構だがここ2chなんすけど?って感じだな。
まあ、質問する方も答える方も、空気読もうねってことで。 気を取り直して、次、ドゾー
>>605 できません・・
エラーはなにも出ないのですが実行しても何も変わらずです・・
もう少し詳しく教えて頂けますか?
当方ガノタなんですが、旧シャア板の質問スレには 【回答者の心得】 正確さを欠く回答があっても煽らずに冷静に補足してあげましょう 回答を出すのにレスを多く使いそうな質問は適切なスレに誘導してあげましょう あくまで質問に対する回答なので、議論厨・考察厨は別にスレ立ててオナって下さい邪魔です。 というのがある。このスレも、次スレ以降いかがか。
そしてこの流れでカレイにスルーされる
>>598 であった…
JScriptですが. ファイルをローカルで開かれたHTMLのパスと同じフォルダに保存したいのですが 開かれたHTMLのパスの取得方法がわかりません.. どなたか教えてください。お願いします。
620 :
606 :04/12/08 00:30:35 ID:???
>>610 そういうことか、ありがとう。
ただ、せっかくの質問用スレなので必要最低限のことはここの回答だけで分かるようにしてあげたい。
より詳細な解説を求めるなら参考ページがあるのなら載せるという感覚でいいかな。
それも回答者の裁量次第だろうし。あんまり深く掘り下げることではなかったね、ごめん。
>>618 エラー内容がよく分かんないし・・・
つか、inputを5個並べてるのはformで囲わなくてもいいのかな、まあ動くか。
>>619 JScriptでファイルの保存ということはHTA?
起動時なら (HTAのID).commandLine
で取得できるけど、ダブルクォーテーションに注意ね。
アドレス取得でよければ location.href に格納されてる。
[参考]
<HTA:APPLICATION ID="htaID" />
<html>
<body>
<script language="JScript" charset="SHIFT_JIS">
alert(htaID.commandLine);
alert(location.href);
</script>
</body>
</html>
621 :
619 :04/12/08 00:47:36 ID:???
>>620 location.hrefで無事取得できました。有難う御座います。
HTAではないです。警告がウザイですがhtmlでないと駄目なんで..
622 :
Name_Not_Found :04/12/08 01:49:25 ID:6fW68bbl
JavaScript(と、一応PHP4です)下記のような制御をしてるのですが、<td></td>が100個くらいあるため、 それをハードコーディングするのはきついなぁと思ってます。 自分が考えつくのは、phpの側で、<td>につけるcssとjavascriptは交代交代の2種類しかないので、 phpの側で2つの変数に格納して、それを<?php print $cssjs1;?>のようにやってしまう方法なのですが。。。 ただ、クライアントに送られるhtmlソースとしては、ハードコーディングなので気もち悪いきもします。。。 この辺の処理って、なんかJSだけでスマートにコーディングできないですかねー・・・ (↓見やすさの問題で、全角スペースでインデントしてます) ------------------------------------------------------------- <table border="1"> <tr><td bgcolor="#f5f5f5" style="cursor:hand" onclick="window.location.href='/?bid=1'" onmouseover="this.style.backgroundColor='#ffdddd'" onmouseout="this.style.backgroundColor='#f5f5f5'">あああ </td></tr> <tr><td bgcolor="#fafafa" style="cursor:hand" onclick="window.location.href='/?bid=2'" onmouseover="this.style.backgroundColor='#ffdddd'" onmouseout="this.style.backgroundColor='#fafafa'">あああ </td></tr> ・・・以下略 </table>
>>598 なにがどううまくいかないんだ?コードを見る限りは間違いは無いように見えるんだが。
ループの部分をHTML に直した状態で、テストした(WinIE6, Firefox/1.0で確認)。何も問題無く動作したぞ。
JSP のソースコードを直す方がいいんじゃないか?
>>622 ちょっと寝ぼけ気味なので変な事言ったらすまん。
ようするにセルのbgcolorと、クリックしたときの動作、マウスアウトさせたときの動作が2種類あって、
それを交互に100個以上配置したいってこと?
>>622 for ( i=0 ; i < (100個くらい) ; i++) {
document.write(2種類の内容);
}
そういう意味でなく、見苦しさだけを解決したいならスレ違いだがcssのセレクタで充分じゃなかろうか。
>>622 絶対やめた方がいい。JS OFFの人もいるんだから。PHPで全部展開
して送るのが結局は吉。
神経衰弱のゲームで終了するとダイアログが開いて(alert)
you did it in 3:20!
とか表示されるのですが、
その文章はこんな感じですが
alert('You did it in '+document.f.b.value+' !');
これでOKを押したら「webに書き込む?」
というダイアログが出てきて、OKを押すと
その得点を例えば
http:/12345.456.com/cgi-bin/789.cgi に送らせるにはどうしたら良いでしょうか?
>>629 ・alertの代わりにpromptを使ってYES/NOを取得する。
・隠しフォームを作ってそのフォームのacitonを送りたいCGIにしておく。
・YESだったら隠しフォームにデータを埋めてフォームを送信する。
631 :
629 :04/12/08 11:03:15 ID:???
ありがとうございます。 実例から学んでみたいのです。 そのような書き方をしているwebページご存じないでしょうか? webの見栄えをよくする小技集を教えてくれるサイトは 見つかるのですがcgiの埋め込みの書き方とかなかなか参考にはなりません。 得点ランキング 等で検索してもなかなかヒットしなくて、 知っていたら教えて下さい。
632 :
598 :04/12/08 11:49:11 ID:8FN4Dabv
>>623 さんのアドバイス通り原因はめっさ違うところでした・・・。
ご迷惑をお掛けしました。
>>631 何が「実例から学ぶ」だ、あとはただ書くだけだろ。1行も
書けないくせにカッコだけつけてるのがミエミエだな。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var n = Math.floor(Math.random()*100);
if(confirm('value=' + n + ', submit?')) {
document.forms.f0.elements.i0.value = n; document.forms.f0.submit();
}
}
</script>
</head><body>
<form method="get" action="#" name="f0">
<input name="i0" type="hidden"></form>
<p><a href="javascript:test()">test</a></p>
</body></html>
634 :
Name_Not_Found :04/12/08 16:02:33 ID:eyeRYZLl
>>634 すぐ消えればいいのなら、test.cgi の側で「?」以下がついていれば
ただちに「?」なしのURLにlocation.replace()するとかでどうかな。
それが嫌でsubmitボタンも嫌なら
>>633 みたいに隠しフォームに
パラメタ設定してsubmit()するJavaScriptコードを
<a href="..." onclick="test('test.cgi?$pass')">test</a>
みたいに埋め込むんでしょうかね。
636 :
Name_Not_Found :04/12/08 16:26:42 ID:eyeRYZLl
>>635 回答ありがとうございます。
そうですね。635氏の言う後者よりもURLの"?"以下の記述が見えないようになる方が
よさそうですが、
>すぐ消えればいいのなら
というのは、瞬間的にURL項目に表示されてしまうということでしょうか?
(´-`).。oO(リンクにカーソル合わせればバレるがいいのか・・・?)
638 :
Name_Not_Found :04/12/08 16:32:17 ID:eyeRYZLl
>>637 禿藁!
スイマセン・・・質問者の立場にも関わらず思わず爆笑してしまいました。
そうですか、それはマズいですね・・・。
うまく値が見えないように引き回す方法はないですかねぇ・・・。
>>638 ということは、
>>635 でonclick側にだけパスワード書く(href側には
JavaScript ONにしろというページに飛ばすリンクを書く)のかな。
641 :
Name_Not_Found :04/12/08 19:11:27 ID:EtDo60DE
<input type=button value=100> とした時に、上のボタンを押したらテキストフィールドに 100を入力するようにするにはどうしたらいいんでしょうか?
テキストフィールド.value = 100
>>641 <input type=... value=...
onclick="document.forms.フォーム名.elements.フィールド名.value = '100'">
>>633 SCRIPT 要素の内容にスクリプトを書く場合は、コメントアウトしてくれ。
i-mode その他では延々と CSS 要素内容や SCRIPT 要素内容が表示される。
無駄な料金が発生するのは気分悪いものだ。
コメントアウトすれば料金は発生しないのかそうなのか。
じゃあ、コメントアウトするのやめよw
>>646 ドコモの鯖がhtmlをパースしている、ってこと?
まじで!!始めて知った
コメントとかメタ要素とかその辺は切りとばす、くらいかな?
それとも、全部パースしてrtfみたいなカタチにして端末に送っているの?
教えて
>>646
651 :
Name_Not_Found :04/12/09 10:50:05 ID:cQFsBEE+
document.createElement() と setAttribute() を使って、<IFRAME>を動的に生成しているんですが、 IE6ではframeborderの設定がうまくいきません。(NN7.1ではOK。) JavaScriptではなくHTMLを直接書くときはOKなんですが… 調べてみたら、以下のような結果になりました。 JavaScriptのとき scrolling //IE:OK NN:OK frameborder //IE:NG NN:OK width //IE:OK NN:OK height //IE:OK NN:OK hspace //IE:OK NN:NG vspace //IE:OK NN:NG marginheight //IE:NG NN:OK marginwidth //IE:NG NN:OK HTML直接のとき scrolling //IE:OK NN:OK frameborde //IE:OK NN:OK width //IE:OK NN:OK height //IE:OK NN:OK hspace //IE:OK NN:NG vspace //IE:OK NN:NG marginheight //IE:OK NN:OK marginwidth //IE:OK NN:OK IE6はHTML直とJavaScriptで違いがありますが、NN7.1はJavaScriptだろうが、HTMLだろうが、 ダメなもんはダメなようです。 これはIE6の仕様だと思って諦めるしかないんでしょうか?
>>651 setAttributeを使わずに
オブジェクト.frameBorder, オブジェクト.marginHeight,
オブジェクト.marginWidthを直接セットしたらどうか試行キボン。
あとsetAttributeでも指定する文字列の大文字小文字を上記の
ものに合わせた場合どうかもね。
>>651 hspace, vspaceはHTML 4で定義されてない属性だからN7は
サポートしてない。もともとIE専な属性ってことでしょ。
654 :
Name_Not_Found :04/12/09 11:59:14 ID:cQFsBEE+
>>652 ぐぎゃーーーー!! できた!!
setAttribute()で"frameBorder"、"marginHeight"、"marginWidth" とやったらOK!
藻前は偉いですね。アリガd。
>>653 あっそ。
655 :
Name_Not_Found :04/12/09 12:10:41 ID:cQFsBEE+
>>652 オブジェクト.frameBorder, オブジェクト.marginHeight, オブジェクト.marginWidth に
直接セットするのもやってみたところ、うまくいきました。
これは当然ながら大文字小文字を区別していました。
でも、全部小文字でもエラーにならないという…
>>655 エラーになるわけないじゃん。新しいプロパティを追加設定
するのはいつでもできるわけで。しかし結局ある意味IEのバグだね。
>>656 setAttributeじゃなくて、直接代入のことかと。
>>657 もちろん、直接代入がエラーにならないのはJavaScript的に当然
という話をしてるんでしょ。
659 :
Name_Not_Found :04/12/09 13:22:29 ID:yx4ZzVRh
<script language="JavaScript"><!-- a=100; document.write("<input type=button value=a>") // --></script> ↑のように書くとボタンの名前がaとなってしまいます。 ボタンの名前を上のaに入れた数にするには、valueの値を どう書けばよいのでしょうか?
<script language="JavaScript"><!-- a=100; document.write("<input type=button value="+a+">") // --></script>
661 :
659 :04/12/09 14:03:28 ID:???
form タグの target属性を指定してsubmit()後の結果を別ウィンドウで出したんですが, ここで出てくる別ウィンドウのサイズやバーの有無等をwindow.open同様にコントロール することは可能ですか?
>>663 そうですか...
ありがとうございました.
親ウインドからiframeの横スクロールバーだけを消したいのですが、 下のスクリプトから先へ進めません・・・ <script Language="JavaScript"><!-- function hideScrollBar() { document.body.style.overflowY = "hidden"; } // --></script> <body onLoad="hideScrollBar()"> これでbody内の横スクロールバーを消せますが、 iframeの指定の仕方がわかりません。
質問します。 JavaScriptでテンプレートっぽい機能を使いたいと、以下のコードを書いたんですが 思ったとおりに動きません。どこが間違ってるんでしょうか。 ary = new Array(); ary["test"] = 'テスト'; ary["exam"] = 'イグザム'; str = '@test... @test... @exam...'; //str = str.replace(/@([a-zA-Z][a-zA-Z0-9]*)/g, "$1 and $1"); //(1) こっちはいける str = str.replace(/@([a-zA-Z][a-zA-Z0-9]*)/g, ary["$1"]); //(2) こっちはダメ newWin = window.open(); newWin.document.write(str); (1)の方は"test and test... test and test... exam and exam..."とちゃんと置換されるので 正規表現じたいは間違ってないと思うんですが、 (2)の方はundefinedになってしまいます。配列添字の渡し方が良くないのでしょうか。 でも、(2)の添字の""をのぞくとエラーになっちゃうんですよね。
>>665 window.frames.フレーム名.document.body.style.overflowY = 'hidden';
>>666 $1だの$2だの使うのをやめれ。
str = str.replace(/.../g, function(s, s1) { return ary[s1]; });
試してないけどね。
>>667 できました! ありがとうございます。意図した通り"テスト... テスト... イグザム..."に
置換されました。
いやー前方参照ってこんな風にもできるんだ。しかも無名関数(?)も使えるとは。
JavaScriptあなどりがたし。
$1とかの書き方は古い書き方みたいですね。
>>4 の資料を調べてみます。
$1、$2等は単純な置換の参照ならいいけど、今回みたいに グループに入った文字列をキーとして表を引くだとか加工を するには非力。だからreplace()の第2パラメタに関数を指定 する方法を覚えておくと絶対にいいと思うよ。関数ならその 中でどんな加工でも自由にできるわけだしね。
>>662 送信する前にウィンドウサイズやバーの有無を指定したウィンドウを開いておけば。
<form ... target="..." onsubmit="window.open('', this.target, 'width=200, height=200');">
IE6 SP2、TBE無効のFirefox 1.0ではうまくいった。
(TBEを有効にすると空白タブと送信結果の2つのタブが新たに作成された。)
>>665 何で素直にフレーム内に表示される文書に対してCSSで
body { overflow-y: hidden; }
としておかないんだ?
こっちのほうが読み込み中のスクロールバー表示も防止できるだろうしよさそうに思えるんだが。
まあ親ウィンドウから操作しないといけない理由があるのなら仕方ないだろうが。
672 :
Name_Not_Found :04/12/10 11:15:02 ID:U+IE1SPS
質問です。 フォームを作成しているのですが、チェックボックスで選択された値を テキストフィールドに自動入力させたいです。 複数チェックにも応じて、テキストフィールドに追加していければ尚 嬉しいのですが・・・。 教えて下さい。
>>672 checkboxのonchangeでONになった場合テキストフィールド
に対応する文字列を追加する。まんまやんけ。それ以上説明
しようがないがな。(全部書いてくれとかは勘弁ね。)
674 :
Name_Not_Found :04/12/10 11:42:25 ID:U+IE1SPS
>>673 サン
レスどもです。
onchangeすら解からなかったので検索したんですが、それらしい例が出てこず・・・。
(泣)
676 :
Name_Not_Found :04/12/10 13:41:54 ID:ourSiEb+
実在した選手(江川等)からヒットを打つゲームで、 コースと球種を予測して、振るコース等も考えるJAVA(CGIだったかも)ゲームを昔に見ました。 詳細が知りたいのですが思い出せません。なにか、ご存知の方はいますでしょうか?
677 :
Name_Not_Found :04/12/10 13:49:41 ID:IJMpoLut
>>675 サン
レスどもです。
なるほど。改造の知識が無いので難しそうですが、研究してみます。
ちなみに、今の所別のサンプルを元に
<SCRIPT LANGUAGE="JavaScript">
function check(checkbox) {
form = checkbox.form;
form.val.value = checkbox.value;
}
</SCRIPT>
<FORM METHOD="POST">
<INPUT TYPE="checkbox" VALUE="い" onclick="check(this)">い<BR>
<INPUT TYPE="checkbox" VALUE="ろ" onclick="check(this)">ろ<BR>
<INPUT TYPE="checkbox" VALUE="は" onclick="check(this)">は<BR>
<INPUT NAME="val" SIZE="10">
</FORM>
ここまで出来たのですが、テキストフィールドに「い ろ は」と
連続して複数表示可能にしたいです。
どなたか教えて下さいッ。
>>677 チェックする順番とかによって入力される値はどうするんだ?
チェックが外されたときは?
679 :
Name_Not_Found :04/12/10 14:04:35 ID:IJMpoLut
>>678 サン
チェックされる順番に関しては気にしません。
チェックを外した時にはフィールドの表示も消したいですが、分からなかったです。
ラジオボタンでも良いのですが、複数チェック=チェックボックス的なイメージが
ありましたので、とりあえずチェックボックスにしてました・・・。
>>679 <html>
<head>
<title>チェックするとテキストフィールドが有効、チェックオフにするとテキストフィールド内容を消去する</title>
<script Language="JavaScript">
<!--
function check(checkbox) {
if(checkbox.checked){
document.hoge.val.value += checkbox.value;
}else{
document.hoge.val.value = document.hoge.val.value.replace(checkbox.value, "");
}
}
// -->
</script>
</head>
<body>
<FORM NAME="hoge">
<INPUT TYPE="checkbox" VALUE="い" onClick="check(this)">い<BR>
<INPUT TYPE="checkbox" VALUE="ろ" onClick="check(this)">ろ<BR>
<INPUT TYPE="checkbox" VALUE="は" onClick="check(this)">は<BR>
<INPUT NAME="val" SIZE="10">
</FORM>
</body>
</html>
681 :
Name_Not_Found :04/12/10 15:27:50 ID:IJMpoLut
>>680 サン
凄い!!感激です。目指していた物はこれです。
親切に書いて頂きまして有難う御座いました。
レス下さった方もありがとうございました。もっと勉強したいと思います。
>>679 680だと重複が出るかもしれないので。
チェックボックスにすべて同じnameをつけた上で
function check( checkbox ) {
var values = new Array();
var checks = checkbox.form.elements[ checkbox.name ];
for ( var i = 0; i < checks.length; i++ ) {
if ( checks[i].checked ) values[ values.length ] = checks[i].value;
}
checkbox.form.val.value = values.join(" ");
}
683 :
682 :04/12/10 15:44:58 ID:???
ごめん、680でも重複は出ないよな。 ただ <INPUT TYPE="checkbox" VALUE="いわし" onclick="check(this)">いわし<BR> <INPUT TYPE="checkbox" VALUE="いわ" onclick="check(this)">いわ<BR> といったときに不具合がおきる。
684 :
Name_Not_Found :04/12/10 16:04:05 ID:IJMpoLut
>>683 サン
なるほど。丁寧にありがとうございます。
VALUE="いわし : " などにすれば問題なさそうなので、
区切り記号をつける事にしました。
どもでした。
685 :
Name_Not_Found :04/12/10 16:23:37 ID:5hHOfG4h
引数で値を持ってきたときに、どちらも数値のデータであるにもかかわらず、 片方はちゃんと数値として扱われるのですが、片方が文字列として扱われてしまいます。 何か原因があるのでしょうか?
687 :
Name_Not_Found :04/12/10 18:28:15 ID:+reuS3R9
PHPとJS間でのデータのやり取りはどうのようにすればいいのでしょうか? また、PHPの中でJSを書く場合は <?php print "<script language=JavaScript><-- 上のように記述すればいいのでしょうか?
>>687 うん、printする必要も無いと思うが…。で、
フォームの隠しフィールドとかURIにクエリ付けるとかクッキーとかだ。
こういうテクニクはWebProgの方が詳しいと思うぞ。
690 :
Name_Not_Found :04/12/11 09:22:56 ID:VJr/KYZ1
おはよございます。質問宜しいでしょうか。 1つのフォームボタンのonClickで、"window.close();"と"setData()"は 同時に使えますか? フォーム内データを転送しつつそのボタンでウィンドウも閉じたいのです。 宜しくお願いします。
>>690 やってみれば良いのに。
コーディングによっては不安定になる。
ちゃんと反映されたのを、内部的に待ってからcloseな。
693 :
690 :04/12/11 10:33:05 ID:???
>>691 >>692 ありがとうございます。
可能なんですね。
<input type="button" value="転送&閉じる" onClick="setData()" onClick="window.close();" name="button">
↑これだと出来なかったのですけど、根本的に記述が間違ってますか??
お願いします。
>>693 <input type="button" value="転送&閉じる" onClick="setData();window.close();" name="button">
書き方としてはこう。
ただし、setData()の内容がどうなってるかしらんから、保証はできんがなー
695 :
690 :04/12/11 11:02:17 ID:???
>>694 出来ました!!
ありがとうございました。;で区切るのですね。
大丈夫かこのスレ_| ̄|○
引数がない setter だと……信じられん
698 :
Name_Not_Found :04/12/11 14:09:14 ID:cjEcBE+D
ボタンを1度押すとテキストフィールドに入力された文字を1文字消す キャンセルボタンを作ろうと考えているんですが function cansel(){ document.forms.フォーム名.elements.フィールド名.value -= 〜 上の部分で右側の〜の部分をどうすればいいのかがわかりません。 どなたかご教授お願いします。
>>698 まず「キャンセル」のスペルを辞書で調べること。はずかしい。
var s = document.forms.フォーム名.elements.フィールド名.value;
if(s.length() > 0) s = s.substring(0, s.length()-1);
document.forms.フォーム名.elements.フィールド名.value = s;
度々質問お願いします。 テキストフィールドに現在時刻を表示させたいのですが、 以下のソースだと「16時8分」と表示しますが「16時08分」と 2桁表示させるにはどうしたら良いでしょうか? <script Language="JavaScript"><!-- function pTime() { dt = new Date(); h = dt.getHours(); m = dt.getMinutes(); document.ABC.time.value = h+"時"+m+"分"; setTimeout("pTime()",1000); } // --></script> </head> <body onLoad="pTime()"> <form name="ABC"> 現在時刻:<input type="text" name="time"> </form>
>>700 if (m < 10) m = "0"+ m;
702 :
700 :04/12/11 16:19:55 ID:???
>>701 即レスありがとうですた。
出来ました。感謝致します!
そういうコードを書くときはいつもprintfみたいなのはないのかと思う俺ガイル
>>703 そんなもん暇なときにでも書けよ。
そんな漏れは pack() 書いたことがあるが まず使わね
>>701-704 別に「String(m+1000000).substring(1)」とか瞬時に書くけどね。
マイナスには対応していないので注意。
定説というか基本というか、
>>701 みたいな単純な if が一番速い。
それに比べて馬鹿で無意味な方法をもう一つ。
Date.prototype.to(UTC|GMT)String() の戻り値で
2桁に整形されている時分秒を使ってみる。
先読み部分は古い J(ava)Script では動かないが、
対応させたければ、処理を二段階に分ければよい。
var hhmmss;
var d = new Date();
d.setTime( d.getTime - 1000 * 60 * d.getTimezoneOffset());
hhmmss = d.toUTCString().match( /\d{2}(?=:| G)/g);
>>706 × d.getTime
○ d.getTime()
あ
<html><head><title></title></head> <body><body onLoad = init()><h2></h2> <script language="JavaScript"> <!-- var kana1,kana2,kana3,kana4,kana5, count1,count2,count3,coun4,count5; function init() { document.cellphone.display.value = ""; kana1 = "あいうえお"; kana2 = "かきくけこ"; kana3 = "さしすせそ"; kana4 = "たちつてと"; kana5 = "なにぬねの"; count1 = 0; count2 = 0; count3 = 0; count4 = 0; count5 = 0;}
すいません、上の続きです function push1() {document.cellphone.display.value = kana1.charAt(count1); count1 = (++count1) % 5;} function push2() {document.cellphone.display.value = kana2.charAt(count2); count2 = (++count2) % 5;} function push3() {document.cellphone.display.value = kana3.charAt(count3); count3 = (++count3) % 5;} function push4() {document.cellphone.display.value = kana4.charAt(count4); count4 = (++count4) % 5;} function push5() {document.cellphone.display.value = kana5.charAt(count5); count5 = (++count5) % 5;} //--></script> <form name ="cellphone"> <p><textarea name = "display"rows = "7"cols = "16"></textarea> <p> <input type = "button" value = "あ"onclick="push1()"> <input type = "button" value = "か"onclick="push2()"> <input type = "button" value = "さ"onclick="push3()"></p> <p><input type = "button" value = "た"onclick="push4()"> <input type = "button" value = "な"onclick="push5()"></p> </form></body></html> っと長いな・・・・orz これで新たに押された文字を次の欄にいかせたいんですがどうすればいいのでしょうか? 「文字をためておく変数を用意して、それと押された文字を連結して表示させる」 「関数はひとつにまとめて引数で処理をわける」 というアドバイスもらったんですが色々いじってもうまくいきません。 680と似たようなものだと思うのですが・・・
下記のような、「次の画像」をクリックすると次の画像を表示させるスクリプトに、 1つ前の画像に戻れる機能も加えたいのですが、java scriptをあまり知らないので分かりません。 お願いします。 <SCRIPT Language="JavaScript"> <!-- imgNum = 0; maxIMG = 20;// 最大ページ数 function nextIMG() { imgNum++; if (imgNum > maxIMG) return; document.xyzIMG.src = "images/"+imgNum+".JPG"; } function resetIMG() { imgNum = -1; nextIMG(); } // --> </SCRIPT> </HEAD> <BODY> <P>pictures</P> <IMG SRC="images/0.JPG" NAME="xyzIMG"><BR> <A HREF="javaScript:nextIMG()">次の画像</A>| <A HREF="javaScript:resetIMG()">最初の画像</A>
>>710-711 「あお」みたいに同じあ行が続くときはどうするの。
>>712 それは「全部書け」と言っているようなもんだなあ。
まあ一応ヒントとしては、「前の画像」リンク作ってそこからは
別の関数を読んび、そこではimgNumを減らす、ただし
減らしすぎないようにチェックは必要、ということかな。
>>710-711 document.cellphone.display.value = kana1.charAt(count1);
↓
document.cellphone.display.value += kana1.charAt(count1);
>>714 馬鹿か、それじゃ「あ→い→う→…」のように「押すたびに交替」
が実現されないだろ。
716 :
712 :04/12/12 10:06:58 ID:???
>>713 何となく予想して書いてみたら一応動いちゃったんですけど、これであってますでしょうか
<SCRIPT Language="JavaScript">
<!--
imgNum = 0;
maxIMG = 20;// 最大ページ数
minIMG = 0;
function nextIMG()
{
imgNum++;
if (imgNum > maxIMG) return;
document.aquaIMG.src = "images/"+imgNum+".JPG";
}
function resetIMG()
{
imgNum = -1;
nextIMG();
}
function preIMG()
{
imgNum--;
if (imgNum < minIMG) return;
document.aquaIMG.src = "images/"+imgNum+".JPG";
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<IMG SRC="images/0.JPG" NAME="aquaIMG"><BR>
<A HREF="javaScript:nextIMG()">次の写真</A>|
<A HREF="javaScript:resetIMG()">最初の写真</A>|
<A HREF="javaScript:preIMG()">前の写真</A>
>>710 適当に欲しいだろう機能をつけておいたぞ。
<html><head><title></title></head><body><body onLoad = init()><h2></h2>
<script language="JavaScript">
<!--
function init(){
kana = new Array("","あいうえお","かきくけこ","さしすせそ","たちつてと","なにぬねの");
count = new Array(0,0,0,0,0,0);
output = ""; nowcount = 0; nowchar = "";
}
function push(n){
if(nowcount!=n && nowcount!=0){pushnext();}
nowchar = kana[n].charAt(count[n]);
document.cellphone.display.value = output + nowchar;
count[n] = (count[n]+1) % 5; nowcount = n;
}
function pushnext(){
if(nowcount != 0){
count[nowcount] = 0; nowcount = 0;
output += nowchar;
document.cellphone.display.value = output;
}
}
//--></script>
<form name ="cellphone">
<p><textarea name = "display"rows = "7"cols = "16"></textarea>
<p> <input type = "button" value = "あ"onclick="push(1)">
<input type = "button" value = "か"onclick="push(2)">
<input type = "button" value = "さ"onclick="push(3)"></p>
<p><input type = "button" value = "た"onclick="push(4)">
<input type = "button" value = "な"onclick="push(5)">
<input type = "button" value = "→"onclick="pushnext()">
</p></form></body></html>
718 :
717 :04/12/12 10:23:31 ID:???
あまり確認してなかった。 pushnext() 内の document.cellphone.display.value = output; は特に必要ない。改行の問題で見にくいのは許してくれ。
<html><head><title></title> <script language="JavaScript"> <!-- var kana = ["あいうえお", "かきくけこ", "さしすせそ", "たちつてと", "やゆよ"]; var count = 0; var LastKey = -1; function push(key) { var s = document.cellphone.display.value; if (key != LastKey) { LastKey = key; count = 0; } else { if (s.substr(s.length-1) == kana[key-1].charAt(count)) { s = s.substr(0, s.length-1); } count = (++count) % kana[key-1].length; } document.cellphone.display.value = s + kana[key-1].charAt(count); } //--> </script></head> <body><body onLoad = init()><h2></h2> <form name ="cellphone"> <p><textarea name = "display"rows = "7"cols = "16"></textarea> <p> <input type = "button" value = "あ"onclick="push(1)"> <input type = "button" value = "か"onclick="push(2)"> <input type = "button" value = "さ"onclick="push(3)"></p> <p><input type = "button" value = "た"onclick="push(4)"> <input type = "button" value = "や"onclick="push(5)"> <input type = "button" value = ">"onclick="LastKey = -1"></p> </form></body></html>
721 :
Name_Not_Found :04/12/12 11:23:10 ID:I9b/48H3
ime-modeがactiveなテキストエリアからコンボボックス(プルダウン?)に フォーカスを移動する際に以下の様な処理でime-modeをinactiveできるらしいのですが、 コンボボックスに遷移した際に矢印キー(↑↓)でコンボボックスの中身を動かす事ができなくなってしまいます。 ime-modeをinactiveにしつつ、上記の操作もしたいのですが、 可能なのでしょうか? もし有識者の方がいれば教えていただきたいと思います。 よろしくお願いします。 // [Public Function]SetActiveImeMode // SetActiveImeMode関数は、指定したselectオブジェクトに // ime-mode:inactiveの効果を擬似的に実装します。 function SetActiveImeMode(form_Select) { var obj_Parent = form_Select.parentNode; var form_Text = document.createElement("input"); form_Text.style.cssText = "ime-mode:inactive;"; form_Text.setAttribute("type", "text"); obj_Parent.insertBefore(form_Text, form_Select.nextSibling); form_Text.focus(); form_Text.blur(); obj_Parent.removeChild(form_Text); form_Select.focus(); return; }
>>721 >フォーカスのを移動する際に
の検出方法をどのようにしているのかが気になる。
まさかコンボボックス(リストボックスか?)側で onFocus じゃないよな。
723 :
721 :04/12/12 12:36:34 ID:I9b/48H3
>>722 さん
テキストからTABキーで遷移させてコンボボックス(セレクトボックス?)の
onFocusでSetActiveImeMode(this)ってやってます。
これがまずいのでしょうか???
724 :
722 :04/12/12 12:58:58 ID:???
725 :
710 :04/12/12 14:29:56 ID:???
>>717 氏
>>719 氏
聞いた甲斐がありました、ありがとうございます。
こういう処理もう一度自分なりにじっくり考えて見ます。
では失礼しました
innerHTMLでポップアップを表示させるセルの隣セルにselectboxを配置。 onMouseOverでポップアップが表示されると、selectboxがポップアップの上に表示されてしまいます。 ポップアップを上に表示する方法を教えてください。 <html> <script language="JavaScript"> <!-- function popUp() { text = '<TABLE width="250" bgcolor="#c0ffc0"><TR><TD>詳しい値が表示される</TD></TR><TABLE>'; ID.innerHTML = text; ID.style.left = event.x + 10; ID.style.top = event.y - 5; ID.style.visibility = "visible"; } function hidePop() { ID.style.visibility = "hidden"; } //--> </script> <body> <form action="" method="post" name="form1"> <span id="ID" STYLE="visibility: hidden; position: absolute;"></span> <table border="1"> <tr> <td align="right"><span style="cursor:hand" onMouseOver="popUp()" onMouseOut="hidePop()">マウスをあてる場所</span></td> <td align="center"><option>セレクトボックスの値1</option></td> </tr> </table> </form> </body></html>
>>726 仕様だった気がする。
#例のソース、<select></select> がないよ。
728 :
Name_Not_Found :04/12/13 00:27:42 ID:BJZPqzgp
イベントから右クリックメニューを表示させるにはどうしたらいいでしょうか? onmousedownなどから右クリックメニューを出したいのですが・・・
あくまで右クリックメニューはブラウザのメニューなので、
独自メニューでない限り、今のところは無理。
右クリックメニュー「みたいな」独自のメニューを表示させたいだけなら
>>726 を応用すればできます。
3つのswfをページを読み込み毎にランダム表示したいのですができません。 head内 ↓ n=parseInt(Math.random() * 3); var flashurl = ["1.swf","2.swf","3.swf]; body内 ↓ <script language="javascript"> document.write("<OBJECT CLSID=xxxx SRC='"+flashurl[n]+"' ...>"); document.write("</OBJECT>"); </script> どこがまずいのでしょうか、、、? よろしくお願いします。
まずは「<OBJECT」等の「<」を削ってタグ本体を表示させてみれ。
>>731 JavaScript以前の問題。
OBJECTタグの書き方を勉強するように。
734 :
Name_Not_Found :04/12/13 20:37:09 ID:29TjvoXP
クリスマスデザインにしたいのですが、雪を降らすjavaがあると聞いたのですが 教えてもらえないでしょうか?
>>734 そういうのはまずググってからききなさい。
禁句集 1. Java: 別の言語。 2. クラス: 実体はオブジェクト。あくまで、オブジェクト - プロトタイプ。 3. フィールド: Java厨初心者。 4. インスタンス: C++ではありません。
>>729 ありがとうございます。
やはりJavascriptでは無理ですか・・・
別の方法考えないとなぁ・・・
こんなふうにthisを書き換えたいんですがどうやったらできますか? おしえてください。 function number_increment() { this++; } Number.prototype.increment = number_increment; num = new Number(100); num.increment();
Number 配列でいったら配列名みたいなもんだから。 Numberのプロパティを定義して、引数をそこに入れる、とかではいかんの?
×Number 配列 ○Number は配列
741 :
Name_Not_Found :04/12/13 23:48:33 ID:UmGMXl/w
先日スクリプトを作っていて、突然動作しなくなったんです。 そこまでは正常に動作していたのに、if文をひとつ付け加えただけで動作しなくなりました。 その関数は、そこで103行目にあたるんですが、もしかして関数っていうのは長さに制限があるものなんでしょうか? それとも他に要因があるんでしょうか? 初心者ですいません。御願いします。
>>741 > 動作しなくなった
エラーは?
> 長さに制限
いいえ。
>>741 長さに制限はない。アンタが壊したんだろ。付け加えたものが
どんなに少なくたって(1文字だって)下手な奴は壊すさ。終了。
744 :
Name_Not_Found :04/12/13 23:54:32 ID:UmGMXl/w
>>742 エラーが見つかりましたと出るだけです。
詳しく見る方法があるのでしょうか。
>>744 IEならステータスバーの黄色い三角、
Moz系ならアドレスバーに javascript: とかあるが
746 :
Name_Not_Found :04/12/14 00:31:08 ID:geK7BgAe
>>745 ありがとうございます。
とりあえず もう一度1から見直してみます。
画面を表示したときに、画面の一番上の部品(AAAA)に focusをあわせる関数を作ろうと思ったのですが一番上 の部品の要素を知る方法はあるでしょうか。 <body> <form> <AAAA/> <BBBB/> <CCCC/> </form> </body> AAAAはinput(text、checkbox、radio)またはselectです。 複数の画面を作っていて、AAAAはそれぞれ違うので共通の関数で 対応できないものかと思ったのですがどうでしょうか。
>>747 フォーム部品限定ならdocument.forms[0].elements[0]で取れそう
750 :
Name_Not_Found :04/12/14 01:58:11 ID:crnlaYpO
教えてクンで申し訳ありませんが、inputタグのtype="file"のテキストフィールドに 初期値を入れたいんですけど方法が解りません教えて下さい。
>>750 あ、それセキュリティ上の理由でできないのよ。
初期値を入れて、すぐ送信したら、任意のファイルが サーバに読み出せるわなあ。そんなブラウザ誰も使わんよ。
753 :
Name_Not_Found :04/12/14 09:12:33 ID:tPEKa336
754 :
753 :04/12/14 09:13:57 ID:???
PS:言い忘れていましたが同じwebページに作りたいです。 お願いします。
>>753 自分なりにどういう風にやろうとしたか書きなよ。全部
他人に書いてもらうスレじゃないんだからさ。
>>753 こんなもの、全くプログラム経験が無くても調べれば短時間でできる。
できなかったのなら、
>>753 は並外れた低脳ということになる。
調べようとしなかったのなら、
>>753 は並外れた怠け者ということになる。
普通にだらだらと、
<ul>
<li><a href="
http://example.com/foo ">foo</a></li>
..
</ul>
と書けよ。そんなくだらないものつけてウマシカアピールしてんじゃねえよ。
馬でも鹿でも書けるJavaScript!
CSSで右と左に疑似フレームを作ったのですが、左のリンクをクリックすると 右の疑似フレームに表示させるにはどうすればいいんですか? JavaScriptで可能ならご教授下さいませ。
759 :
Name_Not_Found :04/12/14 16:55:18 ID:pC1LisbZ
正規表現でURLを抽出したいと思います
それは必ず一行で先頭と末尾に全角、半角スペースが入る可能性もあります
その行からreplaceでURLを抜き出したいです。
例えば
url_1=" tp://2ch.net "
を
url_1="
http://2ch.net "
にしたいです
この場合
url_1=url_1.replace(Reg_http_head_main,Reg_http_head_re);
とhtmlに書いていますが
Reg_http_head_mainとReg_http_head_reは何を書けば良いでしょうか?
それと
url_1.test(Reg_http_test);
で置き換えたURLかどうかを判定したいのですがどの様に表記すれば良いでしょうか?
それとjavascriptの正規表現使用時に半角文字で\を使いエスケープすべき文字の一覧を教えてください。
沢山ですいません。
760 :
759 :04/12/14 16:59:08 ID:???
エスケープって文字クラス内の話じゃねーの?
763 :
731 :04/12/14 17:46:46 ID:???
すみません、、、。
結局、
>>731 での「>」をとったりしてみたんですが、結局動きませんでした、、、。
<script language="javascript">
<!--
SWFURL = new Array("1.swf", "2.swf", "3.swf");
i = Math.floor(Math.random() * SWFURL.length);
document.write('object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"');
document.write('param name=quality value=high');
document.write('param name="movie" value="' + SWFURL[i] + '"');
document.write('object');
//-->
</script>
これでも動きません。
今日中にやらないといけないんです、、、。
助けてください、、、。
>>763 いやいや。
タグの文字列を書き出したいのだったら、例えば<object classid="hoge">だったら
document.write("<object classid=\"hoge\">");
のように、エスケープしなさいっつーことでは?
で、いちいち書き出していくよりは、 str = "<object …"; str+= "…"; : と文字列を変数に入れていって、最後に document.open(); document.write(str); document.close(); とするのがいいかと。
>>763 「<」を取るとかってのは
スクリプトが動いてるかどうかの確認のためだべ。
767 :
731 :04/12/14 18:19:33 ID:???
結局ちょっと直してできました、、、。 申し訳ありません、、、。 HTMLの書き方が悪いだけでした、、、。 おつき合いいただいてご迷惑かけました、、、。 javascript全くダメダメなんですよね、、、
HTMLの書き方悪いだけだったんだから、JavaScriptがダメなせいではない。
>>765 document.write( 'a', 'b', 'c'); // abc
というふうに引数を複数にして連結処理を委ねておけば、大きな間違いは無い。
そもそも、JavaScript は文字列の連結を適切に処理してくれるが、
JScript は、連結がある度に、文字列を最初から読み込む。
だから、昔から、文字列処理に際しては配列を使えと言われている。
文字列連結 と String オブジェクトのメソッドには注意が必要。
var strList = new Array;
strList[ strList.length] = '<object ...>';
strList[ strList.length] = '<param ...>';
...
strList[ strList.length] = '<\/object>';
document.write( strList.join( ''));
>>768 javascript が苦手だと言いたいのだろうに。
>>769 // 例示が好ましくなかったように思えてきた。
文字列連結について。
長い文字列は連結するな。
document.write では、引数を複数与えることで解決する。
引数を複数与えられない場合 (insertAdjacentHTML とか、innerHTML とか) は、
配列にして最後で join( '') しろ。
>>771 △ 文字列連結について。
○ JScript の文字列連結について。
773 :
Name_Not_Found :04/12/14 23:03:00 ID:3dqAQdeK
WEBの印刷時にjavascriptで用紙の指定って可能ですか? 調べたらscriptxで簡単にできそうだったけど、これって用紙の指定機能は有料なんでしょ?
プリントダイアログ出すまではできてもその中は操作 できないように思うな。
775 :
Name_Not_Found :04/12/15 11:06:00 ID:PMDW1Tcl
質問宜しいですか。 メールフォーム内にあるサブウィンドウをopenするためのボタンを イメージ画像にしようとしてるのですが、 <input type="image" src="xxx.gif" onClick="openWin()"> とすると、サブウィンドウは開くのですが、 親ウィンドウ側ではsubmitボタンとして機能してしまうようで、 <form action= で指定したcgiに飛んでしまいます。 サブウィンドウを開くためだけのボタンとして使うにはどうしたら良いでしょうか? お願いします。
777 :
775 :04/12/15 11:25:22 ID:PMDW1Tcl
>>776 レスどもです。
<form action="../cgi-bin/xxx.cgi" method="post" name="mailform"
onsubmit="return false">
と加えれば良いのでしょうか?
試してみた所、確かにサブウィンドopenで親ウィンドウもsubmitされないですが、
メールフォーム自体のSUBMITボタンも機能しなくなってしまいました・・・。
>>777 「onclick="openWin(); return false"」だ!!!
779 :
775 :04/12/15 11:46:01 ID:PMDW1Tcl
>>778 おお・:*:・ 出来ました。ありがとうございました!
780 :
Name_Not_Found :04/12/15 14:56:49 ID:0hYqe/Jh
window.openでtoolbar=no,menubar=noを指定しているにも係らず、 いくつかのPCでは開いたウィンドウにツールバー、メニューバーが 表示されてしまいます(身近にあってIEの設定を見ることのできる PCでは同じscriptでちゃんと非表示になるのですが・・・) 表示されてしまうPCのOSはXPsp2、IEは6.0sp1です。 OS、ブラウザのspレベルが原因で起こるのでしょうか? それともIEの設定によるものでしょうか? 情報のある方がいたら教えてください。
JavaScript OFFだったりしてね(ry
782 :
Name_Not_Found :04/12/15 19:43:48 ID:0hYqe/Jh
>>781 レスありがとうございます。
開いたwindow内のscriptは正常に動作しているようなんです。
だからJavaScript OFFってことはないはずなんですよ〜。
今windows updateするように依頼しているので、また経過を報告しますね。
>>782 とりあえず窓を開いているところのコード貼ってみない?
784 :
Name_Not_Found :04/12/16 00:50:56 ID:B9edhtEo
時刻をリアルタイムでテキスト表示するような単純なScriptを作っているのですが アクセスした瞬間の時刻は表示されるのですが1秒毎に変わってくれません。 できればどこが間違っているかみてもらえないでしょうか?
786 :
784 :04/12/16 00:59:24 ID:B9edhtEo
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function Time(){ newD=new Date(); Week= new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); Year=newD.getYear(); Month=newD.getMonth()+1; Date=newD.getDate(); Hours=newD.getHours(); Minutes=newD.getMinutes(); Seconds=newD.getSeconds(); Day= newD.getDay(); if (Year<1000) {Year+=1900} if (Hours<10) {Hours="0"+Hours} if (Minutes<10) {Minutes="0"+Minutes} if (Seconds<10) {Seconds="0"+Seconds} document.form1.box1.value= " " + Year + "/" + Month + "/" + Date + "(" + Week[Day] + ")" + " " + Hours + ":" + Minutes + ":" + Seconds; setTimeout("Time()",1000); } //--> </SCRIPT> </HEAD> <BODY>
787 :
784(続き) :04/12/16 01:01:56 ID:B9edhtEo
<FORM NAME="form1"> <INPUT NAME="box1" SIZE="31"> </FORM> <SCRIPT LANGUAGE="JavaScript"> <!-- Time(); //--> </SCRIPT> </BODY> </HTML> ………こんな感じです。
788 :
784 :04/12/16 01:06:56 ID:B9edhtEo
>>788 Date=newD.getDate(); ←
変数名をオリジナルと同じにして少しずつ試せばわかるだろうに。
>>784 Date=newD.getDate();
の行が問題あり。
変数 Date の名前を変えないと、おかしなことになる。
次に呼び出されたときの
newD=new Date();
で文句言われるハズなんだけど、エラーは出なかった?
791 :
790 :04/12/16 01:32:09 ID:???
かぶった・・・スマソ
792 :
Name_Not_Found :04/12/16 01:42:10 ID:B9edhtEo
成る程。 考えもなしに英語が対応関係にあるように変数名を変えてしまったのが原因だったのですね。 今日の朝部屋に置いてあった時計が壊れて 「これを機に自分のHPのTOPにリアルタイム時計でも置いとくか―」と作り始めたのですが。 これで漸くもやもやしていた1日が終わってくれました。 789さん・790さんどうも有難う御座いました。
793 :
Name_Not_Found :04/12/16 02:44:10 ID:RCo77Tc9
曜日を3英字で書いて分かるなら、月を3英字で書いても分かるだろうから、 Date.prototype.to(UTC|GMT)String が返す形式をちょっと加工して使えばよかろうに。 もしその「HP」とかいうドキュメントが公開されるなら、 仕様書に則して時刻表示形式を決めるべきだと思うが。
すれ違いだが変数名・関数名をキャメルで書く習慣はないのか? 組み込みのメソッドとかと命名規則が違って気持ち悪くないのか?
>>737 右クリックメニューっぽいものを表示してユーザーの個人情報を
盗み取られると困るのでできないようになってます。
あ、フィッシング詐欺の業者さんでしたか。それは失礼しました
JavaScriptでソースを暗号化、右クリック禁止、文字列選択不可能な文字列をコピーすることは可能でしょうか?
798 :
797 :04/12/16 09:37:49 ID:???
自己解決しますたorz A:IE以外のブラウザを使用。
教えていただけたら幸いです。 たとえば空欄のテキストフォームの隣に「本日」というボタンを 用意しておいて、それを押すとテキストフィールドに今日の日付が 入力されるJavaScriptってどんな感じになるでしょうか?
<HTML><BODY> <SCRIPT> <!-- d = new Date(); t = d.getMonth()+1 + '月' + d.getDate() + '日'; //--> </SCRIPT> <FORM> <input type="text"> <input type="button" onClick="document.forms[0].elements[0].value=t" value="本日"> </FORM> </BODY></HTML>
801 :
799 :04/12/16 18:33:27 ID:???
ありがとうございます!>800
ラジオボタンでテーブルの背景色を変えるにはどうすればいいですか? ページ全体の背景色を変えるのは見つかったのですが、どこを直せばテーブルにだけ適用できるのか分からなくて…
>>802 table に id でもつけて識別子にしよう。
で、getElementByid("id_no_mojiretsu") でアクセスすればよいです。
これで分からない場合、そのスクリプト自体の仕組みを理解する必要があります。
>>1-5 あたりを良く読んで頑張ってみてください。
それから、また分からないところがあったら質問してみると(・∀・)イイです。
onmouseupで左右同時クリックを(多少の誤差を許容して)判定する 簡単な方法とかライブラリとかありますか? 自作JSマインスイーパ用に一応使える奴を自分で作ったんですが、 もっと効率いい方法があったりしないのかな、と思って。
805 :
802 :04/12/16 21:32:47 ID:???
>803 ありがとうございます! getElementByidを使ったらすぐに出来ました。
getElementByidをにやにやしながらつっこんでおこう
807 :
803 :04/12/16 21:54:12 ID:???
>>806 恥ずかしさのあまり、おしっこ漏れました。
>>808 /java_top.html, /java/, /hp/ が URI に含まれる糞リソース貼るな。
>>809 禿同! (うーん、なんかなつかしい響きだ)
別に子供だろうと何だろうと糞よりはましさ。
いや、
>>809 の指摘は意味がなくはないぞ。HPだとかjavaだとか
いってる奴にまっとうにJavaScriptが解説できるとは思えんね。
一見分かりやすく親切でも大嘘を教え込まれる危険が大きい。
近寄らない方が吉だね。
ウインドウオープンについて教えて下さい。 ボタンではなく文字のみにするにはどうすれば良いですか? <SCRIPT LANGUAGE="JavaScript"> <!-- function open_win(){ window.open("001.html","","menubar=no,toolbar=no,location=no,status=no,scrollbars=yes,resizable=yes"); } //--> </SCRIPT> <FORM> <INPUT type="button" value="クリック" onClick="open_win()"> </FORM>
>>814 <span onclick="...">文字</span> とか
<a href="JS OFF時の行き先" onclick="...; return false">文字</a> とか。
>>815 様
いろいろやり方があるんですね。
ありがとうございました。
<INPUT type="button" value="クリック" onClick="open_win()" style="background: transparent; border: none;"> こういうのも気持ち悪くていいぞ。
いまだにlanguage属性を使ってるのはいかがなものか バージョンにうるさいんならともかく…
<script type="text/javascript">
Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… ↑ ローカルファイルだけじゃなくて一般にファイル読み書きができないんだっけ? クッキーと画像だけOKなんだっけ?
画像切り替えのキャッシュイメージって、 画像切り替え時にどこかで保持している必要はありますか? 具体的には、 function cacheImg() { //window.onload より。 var cache = new Image(); cache.src = 'foo.gif'; } function flipImage(img) { //イベントハンドラ等より。 img.src='foo.gif'; } 上記のように、局所変数ででも一旦読み込んでおけば破棄してしまっても 問題ないのでしょうか?それとも、どこかでそのsrcを持つ Imageオブジェクトを保持しておく必要があるのでしょうか? 手持ちの環境ではきちんとキャッシュが効いているようなのですが、 もしかしたら問題ある環境もあるかなと思いまして…。
>>820 自鯖のファイルなら読めるよ。他鯖はページ開かせるだけなら
できるけどその開いたページ内容はアクセスできない。
824 :
Name_Not_Found :04/12/17 20:28:26 ID:/k8LHI5l
>>821 破棄した場合でもキャッシュに残るかどうかは
実装依存(というかガベコレのタイミング依存)
な気がする。保持しておくのが無難と思うが。
キャッシュとガベージコレクトって関係ないはず。 キャッシュはキャッシュだ。
>>825 そんなの分からんよ、やっぱり実装依存だと思うね。
Weak Referenceとかって知ってる?
827 :
804 :04/12/17 23:17:24 ID:???
反応がないので自分で書いたの貼ってみます。 var MOUSEBUTTON_LEFT = 0; var MOUSEBUTTON_RIGHT = 2; var MOUSEBUTTON_BOTH = -1; if(document.all) { //IE MOUSEBUTTON_LEFT = 1; MOUSEBUTTON_BOTH = 3; } //左右ボタンを放す時間差がこれ未満だったら同時押しと判定(単位:ミリ秒) var WATCHER_THRESHOLD = 80; function MouseWatcher(obj) { obj.onmousedown = this.hook_onmousedown(obj.onmousedown); obj.onmouseup = this.hook_onmouseup(obj.onmouseup); this.left = false; this.right = false; this.threshold = WATCHER_THRESHOLD; this.last_mouseup = 0; } MouseWatcher.prototype.underThreshold = function() { if(this.last_mouseup == 0) return false; var ret = (new Date().getTime() - this.last_mouseup < this.threshold); this.last_mouseup = 0; return ret; }
828 :
804 :04/12/17 23:18:14 ID:???
MouseWatcher.prototype.hook_onmousedown = function(handler) { var watcher = this; return function(evt) { if(evt == undefined) evt = window.event; //IE if(evt.button == MOUSEBUTTON_LEFT || evt.button == MOUSEBUTTON_BOTH) watcher.left = true; if(evt.button == MOUSEBUTTON_RIGHT || evt.button == MOUSEBUTTON_BOTH) watcher.right = true; if(handler) handler(evt); } } MouseWatcher.prototype.hook_onmouseup = function(handler) { var watcher = this; return function(evt) { if(evt == undefined) evt = window.event; //IE if(evt.button == MOUSEBUTTON_LEFT || evt.button == MOUSEBUTTON_BOTH) watcher.left = false; if(evt.button == MOUSEBUTTON_RIGHT || evt.button == MOUSEBUTTON_BOTH) watcher.right = false; if((evt.button == MOUSEBUTTON_LEFT && watcher.right) || (evt.button == MOUSEBUTTON_RIGHT && watcher.left)) { watcher.last_mouseup = new Date().getTime(); } else if(watcher.underThreshold() || evt.button == MOUSEBUTTON_BOTH) { if(handler) { evt.bothButtons = true; handler(evt); } } else { if(handler) handler(evt); } } }
829 :
804 :04/12/17 23:19:42 ID:???
<!--使用例--> <html> <head> <script type="text/javascript" src="mousewatcher.js"></script> <script type="text/javascript"> function doc_onmouseup(evt) { if(evt == undefined) evt = window.event; if(evt.bothButtons) alert("左右"); else switch(evt.button) { case MOUSEBUTTON_LEFT: alert("左"); break; case MOUSEBUTTON_RIGHT: alert("右"); break; } } function body_onload() { document.oncontextmenu = function() {return false;} document.onmouseup = doc_onmouseup; document._mw = new MouseWatcher(document); } </script> </head> <body onload="body_onload();"> <p>左右同時クリックのテスト</p> </body> </html> こんな感じで作ったんですが、これより効率いいやりかたとかあったら アドバイスよろしくです。
830 :
K-tai :04/12/17 23:27:21 ID:3ZZ9NMyV
質問ですが、Javascriptは携帯ホームページに使えますか? よろしくお願いします。
>>804 そもそも、ボタンを同時に押さなきゃならないようなUIのデザインに
欠陥があると思う。
>>827 もともと1個のイベントとして取れないものなのだから
そうやって時間差を見るしかないと洩れも思うよ。
>>827-829 マインスイーパを楽しむ訪問者に限定せずとも、J(ava)Script を有効にしている UA の約 100% が、
WinIE5 以上、Mozilla1.7 以上である。attachEvent または addEventListener が使えるから、
イベントの追加で変則的な処理をする必要はない。
>>827-828 分岐が整理されていない。一つだけ指摘すると、
>>828 最後の else if ... else ... 部分は、
else if (handler) {
if (watcher.underThreshold() || evt.button == MOUSEBUTTON_BOTH)
evt.bothButtons = true;
handler( evt);
}
と同じ事では?
836 :
Name_Not_Found :04/12/18 11:27:50 ID:kg3+e6p+
JavaScriptでイメージを表示するのに document.write('<IMG SRC="xxx">); と記述するのはわかるんですが、 このイメージにリンクを付ける事はできますか? document.write('<A href="xxx"><IMG SRC="xxx"></A>); としても正しく動いてくれないみたいで困っています。 動作環境はWindowsXP+IE6です。 初心者スレでスレ違いとの指摘を受けましたので、こちらで 質問させていただきました。
しかも全角...
すみません、閲覧側のプリントスクリーンを無効にすることって可能ですか?
841 :
Name_Not_Found :04/12/18 12:40:22 ID:kg3+e6p+
>>837-838 …ほんとだ。
マジでスイマセン。逝ってきます…。
どうもありがとうございました。
842 :
836 :04/12/18 12:50:38 ID:kg3+e6p+
修正してみたんですが、やっぱりリンクが出来ません。 やっぱりこういう記述の仕方は出来ないものなのでしょうか。 もしそうなら、何か他のやり方はありませんでしょうか?
843 :
836 :04/12/18 13:37:28 ID:kg3+e6p+
自己レス。 ちゃんとリンク出来ました。 またもや恥ずかしいイージーミスを…。 何度もすいませんでした。
めげずにがんがれ。
どっちかというと、自分がミスをしているくせに「ちゃんと できている」と思い込む態度を改めるとずっとマシになるよ。 そんなことでこのスレに2回も質問したことを忘れるな。
846 :
Name_Not_Found :04/12/18 15:23:16 ID:ApjrlGpB
SSIやCGI(CGIをSSIで呼び出すのも可)によって正確な時間を取得し、JavaScriptでカウントダウン等の処理をするにはどうしたらよいでしょうか?
CGI で JavaScript 書けばいいだろ
848 :
846 :04/12/18 15:53:52 ID:ApjrlGpB
>>847 私がやりたいことは正確な時間(時間がずれているPCでも正しく見れる共通の時間)を取得したいことです。
説明がわかりづらくて申し訳ありません。
>>846 tp://www2.nict.go.jp/cgi-bin/JST.pl
こういうことだべ?
851 :
846 :04/12/18 16:06:12 ID:???
>>849 はい。そのようにしたいのですが、どのようなソースになりますか?
853 :
846 :04/12/18 16:07:48 ID:???
完璧に正確でなくともよろしいのです。通常のWEBサーバーの時刻を取得&JavaScriptで処理を行ないたいのですが・・・
856 :
610 :04/12/18 16:17:03 ID:???
>>854 SSIなどで時間取得→JavaScriptでリアルタイム処理としたいのですが。。
857 :
846 :04/12/18 16:19:46 ID:???
ミス JavaScriptでSSIを使おうとすると、どうしても<!---->の記述の不正が出てしまいます。。諦めることにします。
クヲートで括ることも知らんヴァカハケーン
860 :
804 :04/12/18 16:30:34 ID:???
みなさんコメントthxです。
>>832 winmine.exeの仕様を再現するためなので、勘弁して下さい。
>>833 やっぱそうですかね。本家でも似たような処理をしてるのかしら。
>>834 恥ずかしながらaddEventListenerは初めて知りました。まだあまり
よく分かってないんですが、「元のハンドラを横取りして、Eventオブジェクトを
加工してから元のハンドラに処理を投げる」ような処理も書き換えが
効くんでしょうか。
obj.onxxxx=func; の代替にobj.addEventListener('xxxx', func, false);
とするのかな、程度のイメージしか沸きません。
>>835 条件式に同じ変数が何回も出てくるのはみっともないなー、と思いつつも
目をつむっていました。耳が痛いです。
>>857 ネタ…か?
ちょっと落ち着いて基本サイト巡ってみなって。焦りすぎ。
863 :
Name_Not_Found :04/12/18 19:25:59 ID:+9QZ5g0o
<script type="text/javascript"> function _resize() { if (document.getElementById) { document.getElementById("layer1").style.left = window.outerWidth / 2; } } </script> </head> <body onresize="_resize()"> <div id="layer1" style="position:absolute;width:10px;top:0;left:0">a</div> </body> </html> 上のコードをNN7.1で動かそうとしてます。 スクリプトのif文の中に入りwindow.outerWidthの値も取れるのですが 代入後leftの値を見ると0ptで、もちろんdivブロックの移動も起きません。 何が間違っているんでしょうか?
>>863 window.outerWidth / 2.0;
865 :
864 :04/12/18 20:14:57 ID:???
866 :
Name_Not_Found :04/12/18 20:53:49 ID:I2KedJtj
>>860 >>835 の書き方が適切でなかったようで誤解されていますが、
>>828 の ..hook_onmousedown では if (handler) なのに、
..hook_onmouseup では結果的に else if (handler) となっている
ように見えるのだが良いのだろうか、という事です。
つまり、後者では handler が実行されない場合があるように読めた、という事です。
>>866 > toString()してからsplit()しようとしたら
> 改行が消えてうまくいきませんでした
とりあえず
javascript:alert( getSelection().toString().match( /[^\r\n]+/g))
してみた。思い通りに動いた。
>>863 outerWidth / 2 + "px"
// CSS1Compat モードでは、CSS1 または CSS2.1 仕様書に従う。
CSS プロパティ値の読み出しは、
>>9 FAQ8 の通り、
getComputedStyle( document.getElementById( "layer1"), "").getPropertyValue( "left")
とした方が間違いない。
質問です。 Internet Explorer for Handheld 4.01が対応してるのはJavaScript 1.5ですか?
872 :
871 :04/12/19 01:05:59 ID:???
恐らく解決です。 <script language="JavaScript1.1"><!-- document.writeln.... と順番にやっていったら1.2だけ反応しました。
874 :
821 :04/12/19 03:10:20 ID:???
>>824 遅レスすみません。ありがとうございます。
やっぱり実装次第ですよねー。無難に全部保持しておくことにします。
>>874 その Image オブジェクト自体へのスクリプトレベルでの問い合わせではないよ。
過去にセキュリティホールと指摘された、
(new Image).src = 'javascript:alert( "foo");'
を思い出せば自明だろうし、また、キャッシュを覗けば自明だろうし。
そして、特に、こういうレガシーな部分が仕様を変えて新規実装されることは *永久に* 無い。
また、そもそも、現在では、画像の先読み自体が不要では。
14.4kbps や 28.8kbps の接続速度など皆無。100MHz の CPU に 8MB のメモリに
100MB のハードディスクというクライアントマシンなど皆無。Image オブジェクトが
登場した当時とは環境が大きく違うから、先読みをする意味は薄い、というか、
使わない画像まで読み込むので、寧ろ邪魔。
>>860 > 元のハンドラを横取りして、Eventオブジェクトを
> 加工してから元のハンドラに処理を投げる
これは
>>828 のことでしょうか。簡単具体的に言うと、
..onmousedown = oldHandler
..onmousedown = newHandler
function newHandler () {
(略)
if (this[ 'on' + event.type]) this[ 'on' + event.type]( event);
}
ということでしょうか。
文意を正確に汲み取れている自信はありませんが、とりあえず、
そういう処理はしません。自動追加には必要ありません。
因みに、addEventListener と attachEvent は似ています。
WinIE にはイベントハンドラの結び付け方法が幾つか用意されていますが、
attachEvent と <public:attach .. /> がイベント自動追加します。
特に、attachEvent はその第二引数である関数の引数(全て)を無視して、
新たにイベントオブジェクトで上書きします。これは NN4 の
イベントモデルや、addEventListener と同じです。
イベントを書き換え(られ)てしまいたくないという要望を満たすために、
イベントに追加するという考え方があるのだろうと思われますが、
処理を細かく分割できるという仕様自体を上手に利用すれば、
後々のメンテナンス性向上に役立つかもしれません。
>>860 (
>>876 の続き)
>>827-829 を参考にして、別の仕様を考えてみます。略記すると、
- setTimeout で、80ミリ秒後に、左(右)ボタン押下用の処理を実行。
- 左(右)ボタンが押下され続けている状態(80ミリ秒内)で右(左)ボタンが押下されたら、
両ボタンが押下されたと見なし、clearTimeout して、両ボタン押下用の処理を実行。
という感じになります。
その処理を 5段階に分割してみます。
1. マウスが押下され続けているかどうか。
この Boolean 値を左右それぞれ 変数 l と r に入れておく。
2. 左(右)ボタンが押下され続けている時に、右(左)ボタンが押下されたかどうか。
この Boolean 値を変数 b に入れておく。
3. b == true の時、clearTimeout。
4. b == true の時、両ボタン押下用の処理を実行。
5. b == false の時、80ミリ秒後に左(右)ボタン押下用の処理を実行。
// JavaScript1.5 + DOM2
// 定数と変数
const P = 80; // 80ミリ秒
var t; // t = setTimeout( 左(右)ボタン押下用の処理, P);
var l = false; // 左ボタンが押下され続けていれば true
var r = false; // 右
var b = false; // 両
>>860 (
>>877 の続き)
// 処理1: 左(右)ボタンが押下され続けているかどうか。
// onmousedown で true、onmouseup で false。
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: l = true; break;
case 2: r = true;// break;
}
}, false);
document.addEventListener( 'mouseup', function (e) {
switch (e.button) {
case 0: case 2: l = r = false;// break;
}
}, false);
// 80ミリ秒という要求を追加する。
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: setTimeout( 'l = false;', P); break;
case 2: setTimeout( 'r = false;', P);// break;
}
}, false);
>>860 (
>>878 の続き)
// 処理2: 左(右)ボタンが押下され続けている時に、右(左)ボタンが押下されたかどうか。
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: b = r; break;
case 2: b = l;// break;
// 分かり易く冗長に書けば、
// case 0: if (r) b = true; else b = false; break;
// case 2: if (l) b = true; else b = false;// break;
}
}, false);
>>860 (
>>879 の続き)
// 処理3: b == true の時、clearTimeout( t) する。
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: case 2: if (b) clearTimeout( t);// break;
}
}, false);
// 処理4: b == true の時、両ボタン押下用の処理を実行。
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: case 2: if (b) (両ボタン押下用の処理)();// break;
}
}, false);
// 処理5: b == false の時、t = setTimeout( (左(右)ボタン押下用処理), P)。
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: if (!b) t = setTimeout( (左ボタン押下用処理), P); break;
case 2: if (!b) t = setTimeout( (右ボタン押下用処理), P);// break;
}
}, false);
>>860 (
>>880 の続き)
// おまけ。
document.addEventListener( 'contextmenu', function (e) {
e.stopPropagation(); e.preventDefault();
}, false);
以上です。しかし、
>>877-880 で完成ではありません。
そもそも、document に addEventListener しても良いのか、と。
マインスイーパの方眼部分全てを抱合する要素オブジェクトにすべきだろう、と。
そして、確かにこれは Firefox1.0 で問題無く動きますが、それだけのことです。
他のバージョンの Mozilla で動く保証はありませんし、
各押下用処理が重ければ正しく動作しないかもしれません。
保守を容易にする為に処理を分割して例示しましたが、実用段階では、
予想されるトラブルを避ける為に、自分の管理できるイベントは、
全て一つにまとめましょう。まとめるのを見越して、置換しやすくなるように、
switch (e.button) { case 0: ...; ... } な書き方に統一しています。
>>827-829 のように、分かり易い(定数|変数|関数)名をつけて、
適切に構造化して、Mozilla 用のスクリプトは完成です。
>>878 > document.addEventListener( 'mousedown', function (e) {
> switch (e.button) {
> case 0: setTimeout( 'l = false;', P); break;
> case 2: setTimeout( 'r = false;', P);// break;
> }
> }, false);
訂正。やはり、タイマーは丁寧に扱わないと。
// こういう訂正も、イベント追加という形で出来る。
var tt;
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: clearTimeout( tt); break;
case 2: clearTimeout( tt);// break;
}
}, false);
document.addEventListener( 'mousedown', function (e) {
switch (e.button) {
case 0: tt = setTimeout( 'l = false;', P); break;
case 2: tt = setTimeout( 'r = false;', P);// break;
}
}, false);
>>875 亀レスだけど。
読み込んでおかないでやるロールオーバ効果は、たとえ100Mbps通信であっても
ちらつくので見苦しいです。
>>846 セキュリティ設定次第だが、一応、JS だけで処理は完結できる。
つうか、JS だけでできるのにやらないとスレ違いにならないとも言えない。
>>849 にあるページに、
Standard = new Date( Date.parse("Sun Dec 19 08:32:21 2004") + 258 + JSToffset )
という部分がある。この、"Sun Dec 19 08:32:21 2004" 部分を書き換えようとしていると思う。
404 が返って来るリクエストを送り、Date レスポンスヘッダを利用すれば良い。
var uri = (new Date).getTime() + '.txt';
var ua = null;
try { ua = new ActiveXObject( 'Msxml2.XMLHTTP');} catch (e) {
try { ua = new ActiveXObject( 'Microsoft.XMLHTTP');} catch (e) {
try { ua = new XMLHttpRequest();} catch (e) { ;}}}
if (null != ua) {
ua.open( 'HEAD', uri, false);
ua.send( null);
Standard = new Date( Date.parse( ua.getResponseHeader( 'Date')) + 258 + JSToffset );
}
こんな感じ。これで出る誤差と
>>846 が望むようなサーバでの処理で出る誤差に、大差は無い。
>>885 なるほど、ロールオーバ「だけ」ならそういうことなのね。
ロールオーバに伴って別のこともしたい場合が多いんじゃないのかな。
>>885 中に書くテキストも画像化したい(装飾したい)ときに、
a要素の中身をどうするか、が面倒なんだよね、それ。
>>885 スレ違いだがそれはボックスのwidth, heightが固定じゃないと使えないからCSS的にも決定版なわけじゃない
win ie6 や mozilla 1.x系でまったく問題ないスクリプトが、macIE (5.x) で「";"が必要です」みたいなエラーではじかれるのは、一般に何が原因なのでしょうか?
JavaScriptの文法にきっちり従って書けばいいだけのことじゃないの。
892 :
Name_Not_Found :04/12/19 16:12:11 ID:DYjxzE03
教えてください。 <head> <script type="text/javascript"><!-- function obj () { this.t1 = "Hello"; } // --> </head> <body onload="fnc( new obj( ) );"> // fcn() は別ファイル … … <!-- document.write( t1 ); // --> とやるとエラーになるわけですが、やはり<head>の中で、o = new obj(); とやって、 document.write( o.t1 ); とやるしかないでしょうか? なんかカッコ悪い…
>>892 アンタのその「やりたい」コードのが何倍もカッコ悪いと
思うけどね、洩れは。
<script type="text/javascript">
function Obj(s) {
this.str = s;
this.toString = function() { return this.str; }
}
var o1 = new Obj('Hello');
// ここで func(o1)を呼びたければ呼ぶ
document.write(o1);
</script>
ちょっと知恵を貸してください。 Obj = window.open(<xxx.html>,"XXX"); のように、新しくウィンドウを生成したとします。 とんだ先のxxx.htmlの内容が、 <FRAMESET border="0" frameborder="NO"> <FRAMESET border="0" frameborder="NO"> <FRAME src='aaa.html' name="AA" noresize> <FRAME src='bbb.html' name="BB" noresize> </FRAMESET> <FRAMESET border="0" frameborder="NO"> <FRAME src='ccc.html' name="CC" noresize> <FRAME src='ddd.html' name="DD" noresize> </FRAMESET> </FRAMESET> のようにフレームの入れ子になっている場合、そのうちの特定のフレームのみを指定して リロードさせるようなことはできるでしょうか。 Obj.parent.BB.location.href = "eee.html"; のようにやってみていますが、うまくいきません。 よろしくおねがいします。
895 :
863 :04/12/19 22:41:21 ID:???
>>894 window.document.frames[1].open("eee.html","_self");
でいけるはず。
どなたか知恵をかしてください。
結果で出力したものをボタン一発でコピーしたいと思っているんですが、
いい知恵が浮かびません。
window.clipboardData.setData
でなんとかいけるかな、と思っていたのですが、
全部をコピーするような事ができなかったもので…(汗)
一発コピーできるような方法はないでしょうか。
以下、自分で途中まで作ってみたものです。
結果は出力できますが、コピーが…
http://smash.s68.xrea.com/uploader/filez/3119.html
クリックされた際の、カーソルの状態を調査するにはどうすれば良いのでしょうか? クリックイベントを拾った時、カーソルがdefaultなら何もしない、handなら何か処理を行う、 というふうに処理を分岐させたいのですが。
事故解決しました。this.style.cursorでした。調査不足でした。
>>898-899 styleオブジェクトのcursorプロパティにスクリプトで
値をセットしていたから読み取れたんだろ。
>>9 FAQ-8
>>900 そうです。
既存のメニュースクリプトを改造中で・・・。
>>889 HTMLで埋め込む画像自体にもwidthとheightがあるから、似たようなもの。
display:block出来なくてbackground-positionが適用されない時には、
JSでやるのと同様に複数枚の画像を用意すればよい。
HTMLのa要素を使う限りにおいて、約100%のブラウザが適用できるCSS規則だから、
JSのしゃしゃり出る幕は無い。
>>887 スレ違いだが、<a href...><img src="foo" class="x" ...></a>
.x { visibility: hidden; }
:link, :visited { background-image: url("foo"); }
a:hover { background-image: url("bar"); }
とかなんとか書けばいいだろ。
reg_1=/(http|ttp|tp):\/\/([!-z])+/
reg_2="
ttp://abc "
reg_3="
ttp://abcあいうえお "
でURL だけ かどうかを判定したい、つまりreg_2はマッチしてreg_3はマッチしたくないのですが、reg_1はどの様に書けばよいでしょうか?
reg_1だとreg_3の前半にマッチして
reg_3.test(reg_1)
がtrueになってしまいます。
それと1行の文字列のスペースを取り除いて
"
ttp://abc "
を
"
ttp://abc "
にしたいのですが\sを空白に置き換えると
"ここで はきものを脱いでください"→"ここではきものを脱いでください"
と文字列の途中の空白も消されてしまいます
先頭と末尾、どちらに有るか、何個有るかも変動します。
after=before.replace(reg_a,reg_b);
でreg_a,reg_bをどの様に定義したらよいか教えてください。
ちなみにURLの判定は無理が有りますがこれで良いです。
>>905 全部正規表現の問題だな。
^ と $ について調べると良い。
すいません、JavaScriptってどうやってOffにする(切る)んですか?
908 :
Name not Found :04/12/20 18:32:15 ID:fGxCgT/e
javaのopenメソッドで、小窓のセンタリングにpopupcenterという記述を 行っています。 最近ふっと思ったのですが、画面のcenterに来る設定しか知らない のですが、親元ページにセンタリングすることは可能なのでしょう か? よろしくですー
>>907 板違い。ブラウザとバージョンを明記してPC初心者板かソフトウェア板へ
>>908 java? popupcenter?
910 :
894 :04/12/20 20:12:30 ID:???
>>896 ありがとうございます。参考になりました。
ついさっきJavaScriptの勉強を始めたわけなのですが、 早速つまってしまいました。 ”CLICK”というラベルの付いたボタンを作成しようと思ったのですが、 以下の記述ではエラーが発生してしまい、何も表示されません。 どこに問題があるのでしょうか? <HTML> <HEAD> <script language = "JavaScript"> <!-- <form name = "form1"> <input type = "button" value = "CLICK"> </form> //--> </script> <noscript> JavaScriptが使えません </noscript> </HEAD> </HTML>
912 :
Name_Not_Found :04/12/20 23:01:28 ID:FfSxROtZ
window.open()で開いた窓(html)の中にあるJavaScriptにパラメータを渡すにはどうしたらよかと?
>>911 > どこに問題があるのでしょうか?
キミの頭。
>>92 親ウィンドウのwindow.open()が子ウィンドウのwindowを返す。
子ウィンドウのwindow.openerが親ウィンドウのwindowを返す。
あたりを利用すれ
917 :
911 :04/12/20 23:07:34 ID:???
マジなんですけど…。
918 :
Name_Not_Found :04/12/20 23:07:57 ID:FfSxROtZ
>>916 おお、そげなよかもんがあったとですか。あいがとごわした。
テンプレに ・JavaScriptとHTMLの違いを理解する者 を追加きぼんぬ。
920 :
911 :04/12/20 23:15:56 ID:???
スマン、わかった…。
921 :
Name_Not_Found :04/12/20 23:29:15 ID:FfSxROtZ
window.openerで親窓からのパラメータの受け渡しちゅうか、変数を参照することはできもしたが 同様に親窓にある処理を子窓から呼ぶのに、 a = window.opener.func(); とやったら、NN7.1では正常動作するとですが、IE6ではエラーになりもす。 マイクロソフトをしばいてもよかですか?
img.innerHTML=<img src='url' alt=''> でid="img"のタグ内容を書き換えてから window.scroll(0,999) でウィンドウスクロールされる関数を組んだんだけど、 画像表示時間と処理が干渉するのか、画面がスクロールされないことがあります。 解決方法はないでしょうか。よろしくお願いします。
>>922 setTimeout(function() { window.scroll(0, 999); }, 20);
とかどうかね。
次期テンプレ、FAQ等の希望あれば今のうちに議論しよ。 975超えたら次たてます。
925 :
908 :04/12/21 09:30:09 ID:fnV6016f
小窓オープン時のpopupcenterです。 親ページに <script language="JavaScript" type="text/JavaScript"> <!-- function popupCenter (url, name, width, height) { var left = (screen.availwidth - width) / 2; var top = (screen.availheight - height) / 2; var options = "left=" + left + ",top=" + top + ",width=" + width + " ,height=" + height; window.open(url, name, options); } //--> </script> を記述し、clickすべき部分にa要素で <a href="小窓ページ.htm" onclick="popupCenter(小窓ページ.htm','タイトル', 580, 460); return false;"><img src="クリックすべき画像.jpg" width="70" height="70" border="0"></a> としています。 これで小窓が 【画面】 のセンターには来るのですが、これを応用して 親ページのセンターに、という形にしたいのです。 達人様よろしくお願いします。
>>925 ということは、アンタは「親窓の画面上の位置」と「親窓の
幅と高さ」を取得する方法が分からないと。そう理解してよい?
927 :
908 :04/12/21 13:58:49 ID:fnV6016f
>>926 そのとおりですね。
var left = (ここ)
var top = (ここ)
で指示していることは分かるのですが、親窓の記述が
分からないです。
window が screen のどの辺にいるのか、を取得することはできないのではないかい? いや、Windows+MSIEならできるのかもしれんが。
>>925 Mozilla では大まかに出来る。IE では、Mozilla の outer(Width|Height)
に該当するプロパティが無いから、無理。ただし、親子窓共に JS で開いて、
ロケーションバーその他を無くしておけば、大まかにできるが、非現実的。
// その非現実を目の子でpx数えて実現してしまうと
// 悪意のあるサイトと間違われるから注意。
Mozilla。少なくとも数pxのずれが出るが、
screen(X|Y) + outer(Width|Height) - inner(Width|Height) / 2
で、スクリーン左上を原点とした時の表示領域部分の中心が求まる。
これに、子窓の中心: (子窓).outer(Width|Height) / 2
が重なるように、子窓の左上をセットすればよい。
このレスを書いていて、テンプレに、
http://lxr.mozilla.org/seamonkey/source/dom/public/idl/ は必要だろうと思った。
>>924
930 :
K-tai :04/12/21 15:27:56 ID:Tj4d1nMY
携帯用ホームページにJavaScriptは使えますか? よろしくお願いします。
932 :
K-tai :04/12/21 15:56:54 ID:Tj4d1nMY
携帯によるとは、キャリアによって違うということでしょうか?こういうことが 書いてあるサイトがあれば教えて欲しいのですが。 よろしくお願いします。
>>932 それ以前に携帯端末でJavaScriptが有効に動作する機種を探したほうが早い。普通は動かない。
JavaScriptの仕組み自体を考えれば、携帯では動かないと思うが。
もっとも最近の携帯がどうなってるのかは知らん。ただ、今現在では携帯=JavaScript動かない
>>929 それが読める人ならこのスレにはこないだろうと思った。
ColorStrという配列を作りそれをr_ColorStr = ColorStr.reverse(); でひっくり返しdocument.writeでその両方を使って書き出したいのですが、 例えば以下のように for(i=0;i<ColorStr.length;i++){ document.write(str1 + ColorStr[i] + str2 + r_ColorStr[i] + str3);} alert(r_ColorStr)、alert(ColorStr)、も同じ値が帰ってきます。 何がダメなのでしょうか?よろしくお願いします。
Colorstr.reverse()は自分自身をリバースさせて、なおかつ自分自身を返すから。 だから、 var r_ColorStr=ColorStr; r_ColorStr.reverse(); ; ってやればいい。 つーか、質問する時は変数を宣言してくれ… 読めねぇよ。
レスありがとうございます。 変えてみたのですが......。やはり変わりません。 具体的なソースを教えて頂けるとありがたいのですが....。 よろしくお願いします。ちょっと過去スレの旅に行ってきます。
でけました。document.writeを二行に分けて、ColorStr.reverse(); としました。ありがとうございました。
>>937-940 var a = new Array( 1, 2, 3);
var reference = a; // 参照として代入。同一の参照。
var duplicate = a.slice( 0); // 参照の複製を代入。コピー。
// var duplicate = Array.apply( null, a); としても複製できる。
// 確認。
a == reference; // true
a == duplicate; // false
// まず、a の reverse メソッドを実行してみる。
a.reverse(); // 3, 2, 1
reference; // 3, 2, 1 ( == a)
duplicate; // 1, 2, 3 不変。
// reference の reverse メソッドを実行してみても同じ結果。元に戻る。
reference.reverse(); // 1, 2, 3
a; // 1, 2, 3 ( == reference)
// duplicate の reverse メソッドを実行してみる。
duplicate.reverse(); // 3, 2, 1
reference; // 1, 2, 3 不変
a; // 1, 2, 3 不変
次を読め。
http://www.microsoft.com/japan/msdn/library/ja/script56/html/js56jsconvalref.asp
942 :
Name_Not_Found :04/12/22 11:06:39 ID:pktK+JPo
webページのボタンクリックで、ローカルにあるvbsをキックする処理を作った所、 ファイルの場所がCドライブ直下にあれば、成功するのですがCドライブにフォルダを作ってそこをキック するように変更したら、「ファイルが見つかりません」エラーになりました。なぜでしょう? -- これはOK 該当ファイルはC\:sample.vbs -- wshshell=new ActiveXObject("WScript.Shell"); wshshell.run("C:\\sample.vbs"); -- これがNG 該当ファイルはC\:test\hoge\sample.vbs -- wshshell=new ActiveXObject("WScript.Shell"); wshshell.run("C:\\test\\hoge\\sample.vbs"); IFRAME内である条件を満たせば上記がスクリプトが走るつくりになっています。
>>942 試したが、問題は再現されなかった。
//「C\:」みたいな誤記をしている人は似たようなミスをしているものだ。
"0123456789ABCDEF" "F0123456789ABCDE" "EF0123456789ABCD" "DEF0123456789ABC" "CDEF0123456789AB" "BCDEF0123456789A" "ABCDEF0123456789" "9ABCDEF012345678" "89ABCDEF01234567" "789ABCDEF0123456" "6789ABCDEF012345" "56789ABCDEF01234" "456789ABCDEF0123" "3456789ABCDEF012" "23456789ABCDEF01" "123456789ABCDEF0" こういうのを吐き出させるにはどうしたらいいのでしょうか? よろしくお願いします。
宿題か? var str=""; for(vari=0;i<0x10;i++){str+="\"";for(var j=0; j< 0x10;j++)str+=((0x10+j-i)%0x10).toString(0x10);str+="\"\n";} alert(str.toUpperCase());
あ、vari じゃなくて、var i だな。
訊き方が悪う御座いました。 "アイウエオ" "オアイウエ" "エオアイウ" "ウエオアイ" "イウエオア" でお願いします。
>947 氏ね
>>947 "アイウエオアイウエオ"
のi番目から5文字抜き出せばいいだろう。
あとはforとsubstrの使い方調べれ。
javascript:var str="";const code = "ア".charCodeAt(0);const length=5;for(var i=0;i<length;i++){str+="\"";for(var j=0;j<length;j++)str+=String.fromCharCode(((length+j-i)%length)*2+code);str+="\"\n";}alert(str);
JavaScriptに「const」なんてあった?
わかったからさっさと代替案を出してくれ
constの代わりにvarを使えばよかろう。
つーか、952はvarにしたら、マジで動くな…
CSSの切り替えスクリプトを使ってるんですが、Firefoxでたまに動作しなくなります。 JSコンソールを見たところ、 if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); この二つの行でエラーが発生しているようです。 エラー内容が、a.getAttribute("rel") has no properties、とあるのですが、これはどう言う意味なのでしょうか? どうすれば改善することが出来るか、どなたか宜しくお願いします。
つまり、relがないからnullになってるんだろ。
>>959 link 要素の rel 属性の存在を確かめていないから
rel 属性を取得(=null) になって、 null にプロパティなんてねーぞコラと怒られている。
if(a.getAttribute("rel") && a.getAttribute("rel").indexOf....
にしれ。
ていうかどこのスクリプトだ、それは……。
>>960-961 仕様書読め。例えば、このページで
javascript:alert(document.body.getAttribute('lang'))
すると、空の文字列ではなく、null が返って来る。
DOM1-3 全ての勧告で、空文字列と定められているから、紛れも無いバグだな。
>>959 そのスクリプト自体が遠回りなやり方をとっていることにも問題が無いとは言えない。
StyleSheetList ではなく NodeList に問い合わせる意義は想像できない。
HTMLでlink要素に忘れずrel属性値を書くか、
'string' == typeof a.getAttribute("rel")
という条件を if の最初に挿入するか。
良くありがちな質問だと思うのですが・・・ 下記の関数を、 function WeekdayName(weekday) { wname = new Array(7); wname[0] = "日"; wname[1] = "月"; wname[2] = "火"; wname[3] = "水"; wname[4] = "木"; wname[5] = "金"; wname[6] = "土"; wdname = this[weekday]; return wdname; } HTMLファイルの中に記述するとOKなのですが、 別ファイルにして、記述すると、 「終了していない文字列型の定数です。」 とエラーになります。 どうも"日"が悪いようで、これを"月"にしたりするとOKだったりします。 何がいけないのでしょうか?また回避策はあるのでしょうか?
>>963 なぜ「良くありがち」と判断するのか、その根拠をうかが
おうか。このスレで未だかって出たことがないような気がする。
文字コード変換ツールで文字コードをJIS、SJIS、EUCの3通り
に変換してテストしてみれ。
何で俺が仕様書を読まなくちゃいけないんだ? mozillaはわざとDOMを無視してるんだし。
?
>>964 素直にユニコードでエスケープした方がいいと思うが。
968 :
963 :04/12/23 17:24:22 ID:???
>>964 「終了していない文字列型の定数です。」でぐぐったら沢山出てきました。
"月"はよくて"日"が駄目というのは、文字コードに関係する
ような気がしてブラウザのエンコードを見ると、
UTF-8になってました。
HTMLはShiftJisで作成しているつもりなので、不思議です。
>>967 ユニコードでエスケープする方法を教えてください。
>>968 多分、JAVAのSDKに入ってるNative2Asciiが定番だとは思うが、
あまり素人にはお薦めできない。めんどいから。
escaped-unicodeを生成できるエディタはいくつかあるけど、
その気になれば、ローカルのjavascriptで生成することも可能。
とりあえず、"日"の代わりに"\u65e5"をいれておけば大丈夫でしょ。
//日月火水木金をescaped-unicodeにする方法
var str="日月火水木金土";var retval="";for(var i = 0;i<str.length;i++) retval+="\\u"+str.charCodeAt(i).toString(16); document.write(retval);
もちろん、生成する時に既に文字化けしてたら、どうしようもないが、
それはHTMLの中に書く方で何とか対処してくれ。
ちなみに答えは"\u65e5\u6708\u706b\u6c34\u6728\u91d1\u571f"
javascript: alert("\u65e5\u6708\u706b\u6c34\u6728\u91d1\u571f");
で確認できる。
970 :
963 :04/12/23 20:29:29 ID:???
>>969 ありがとうございます。
わかったことがあります。
現在作成しているページはhtmlではなく、aspxでした。
aspxの場合、ファイルをShiftJisで作成し、charsetをShiftJisに指定しても、
エンコードはUnicodeになるようです。
別ファイル(.js)をUnicodeで作成してみたらうまくいくようになりました。
色々とありがとうございました。
971 :
Name_Not_Found :04/12/23 22:20:16 ID:0aIRJ8jJ
Another HTML-lintを使うと、onclick属性を使用するときはonkeypress属性も併用するように警告されますが ボタンにonkeypressを追加した場合、Enterキーでボタンを押した場合onClickとonkeypressが同時に実行されてしまいます。 これに対処する(同時に2回実行されないようにする)にはどうしたらいいですか? よろしくお願いします。
>>971 同時ではない。順序は決まっているから、実験してみろ。
仮に、Enter キー を押した時の順序が、keypress → click ならば、
次のような処理になる。
var enterKeyPressed = false;
function foo (event) {
if (event.type == 'keypress') { if (event.keyCode == 13) { // Enter キー
enterKeyPressed = true;
bar( event);
setTimeout( 'enterKeyPressed = false', 100); // 本当に click イベントが発生しない UA への配慮
} } else if (enterKeyPressed) { // keypress に連続する click
enterKeyPressed = false;
} else { // click
bar( event);
}
}
function bar (event) { やりたい処理 }
重要なのは、アクセシビリティのために追記した HTML の onkeypress 属性を
無視しないよう工夫すること。要するに、foo 関数は
function foo (e) { if (e.type == 'click') { bar(); }}
と定義することも出来る ( keypress イベントを無視している) が、
それでは HTML の onkeypress 属性を書いた意味が無いだろう、ということ。
>>972 > 本当に click イベントが発生しない UA への配慮
「本当に」を「連続して」に訂正。
>>972 ブラウザによって順番が違う場合の配慮も必要じゃないの?
preventBubbleで泡の方を消せば万事解決。
>>976 違う。
// しかもそれは Mozilla の独自拡張メソッド。
フォームで、Undo/Redoボタンを付けたいのですが document.undo()のような事って出来るのでしょうか? 検索したのですが、期待する資料は出てきませんでした。 出来ない場合、change毎にテキスト等を記憶し、呼び出す等しかないでしょうか。 もし、他に有効的な方法があれば教えてください。
>>979 それがUndo/Redoのロジックだと思うょ
がんばって実装してみてね♪
981 :
Name_Not_Found :04/12/26 21:12:27 ID:Nn+buiLi
JavaScriptを実装するとき、HTMLファイルのヘッダーには <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Type" content="text/javascript; charset=Shift_JIS"> と2つ書く必要がありますか?
>>981 Content-Script-Typeでしょ。それぞれ役割が違う
983 :
981 :04/12/26 21:25:57 ID:???
>>982 > Content-Script-Typeでしょ。
ぬほっ(;´Д`)
すっかり書き間違えてました。
出直してきます。
>>981 charsetはいらない。
HTML中に記述するなら当然そのHTMLの文字コードと同じだし、
外部ファイルにするならcharset属性を使えばいいから。
985 :
Name_Not_Found :04/12/28 07:31:26 ID:jWbTRZuv
たまに、ホームページのソースに if(document.all){ }else if(document.getElementById){ }else if(document.layers){ } というものがありますが、 これは何を目的に何を判別しているのですか?
ブラウザの判別してると思う
>>985 > 何を目的に何を判別しているのですか?
未知のメソッドを実行させてエラーメッセージが出てしまうのを防ぐのが目的。
document.all をオブジェクトとして理解していますか、
document.getElementById を関数として理解していますか、
document.layers をオブジェクトとして理解していますか、と問い掛けている。
>>987 からなんとなく分かってもらえると思うが、直接的なブラウザ判定ではないということ、
そして、使うメソッドやプロパティを理解するかどうかを問う方が近道だということ。
直接的なブラウザ判定なら、navigator.userAgent 辺りを見て、自己申告される
ユーザエージェントを信じることになる。クライアントサイドで自己申告される
ユーザエージェントは、HTTP リクエストヘッダに比べれば、ユーザに書き換えられ難いので、
全てのユーザエージェントを把握していて、それら全ての J(ava)Script 実装まで
把握できているというなら、有効な手段にならないわけでもない。が、そもそも、
多数のユーザエージェント全てを把握しようと努力すること自体がナンセンス。
結局、前記「近道」に辿り着くことになる。
>>985 例えば、new Image と書きたいとする。ならばブラウザに、if (window.Image) と問えばよい。
例えば、document.images と書きたいとする。if (document.images) と問えばよい。
例えば、document.compatMode と書きたいとする。if (document.compatMode) と問えばよい。
ただし、String型のプロパティの場合は、その値に 'undefined' という文字列が現れない限り、
if ('CSS1Compat' == document.compatMode) と問う方が現実的。
例えば、if (document.implementation.hasFeature( 'Events', '2.0')) と書きたいとする。
if (document.implementation && document.implementation.hasFeature) {
if (document.implementation.hasFeature( 'Events', '2.0') { ... } } という感じになる。
実は、こういう面倒な記述は、(WinIE5 以上|Mozilla) では殆ど必要無い。
(HTC|XBL) を使うに限る。そもそも、これらは変数を隠蔽してくれるから、
それだけでも使わない手は無い。
991 :
985 :04/12/29 07:45:19 ID:2D4y5uzE
ありがとうございます。
Oh!
ume
ume
sakura
age
matsu
999
sen
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。