+ JavaScript の質問用スレッド vol.33 +
━━━━━JavaScript質問スレ道場訓━━━━━
一、礼節を重んじ常に努力精進すること
一、ブラクラに打ち勝つ精神力を持つこと
一、心身の優れたJavaScriptを学ぶこと
一、雑草の如く生涯JavaScriptを貫くこと
一、感謝と反省を忘れないこと
以上
━━━━━━━━━━━━━━━━━━━━━━
このスレに書き込むことが許されるものは以下のとおり
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・FAQ・過去ログや関連資料を読むことができる者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
(質問時、回答時にはなるべく対象環境を明記しよう)
前スレ
http://pc5.2ch.net/test/read.cgi/hp/1099662733/l50 FAQ・過去ログ・関連資料・その他質問スレは
>>1-10
【質問を書く上で】 弱気な表現は避ける 弁解じみた表現は良くない。また、まわりくどい。 ex) 超初心者で何もわかりませんが…… <そんなことより自分で試したことをた方が答えやすい> 情報を小出しにしない 読み手は馬鹿にされた気分になる。 無駄な倒置も不要だ。 使用したブラウザ、バージョン、OSくらい書こう。 感情的にならない 何の説明なく決め付ける文はよい印象を与えない。 また態度の大きい人は嫌われる。 ex) 答えられねぇんなら黙ってろ!!! <お前だけだよ> 無視するべきものは無視する 無能、知ったかぶり、宗教的主張、煽り、ぬるぽ等。 表記ミスに注意 内容がどんなにすばらしくても文字使いにミスがあると誤解を招く。 曖昧文は書かない いくつにも解釈できる文章は絶対に書かない。 ex) ここではきものをぬいでください。 「」など無駄な強調は避ける 読みにくい。♪や顔文字も同様である。 ソースは要点を整理して出す。 そのまま貼って動かせると試してもらいやすい。 長い場合はアップロードしてURIを貼る。
【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での操作は難しいですね。
10 :
Name_Not_Found :04/12/24 21:38:58 ID:NCoECfJY
訊きたいこと:表示させたページのリロード後、ページ内容のテキスト保存までを、javascriptを使ってワンクリックで処理させる方法。 出来ているjavascriptソース:下記のとおり。 問題点:location.reload()の処理の後、saveas命令でテキストのダウンロードは求められるが、出来たテキストファイルには何も保存されていない。 なお、location.reload()を消すと、ページ内の内容は保存されます。 リロードさせる理由:テキスト保存した時点での時刻を保存させるため。 ソース: <html><head> <!-- ページを表示した時点の日時取得と表示 --> <script language="JavaScript" type="text/javascript"> <!-- var mydate = new Date(); var h = mydate.getHours(); var m = mydate.getMinutes(); var s = mydate.getSeconds(); document.write("<br>", h,":", m,":", s); --></script> <!-- reload後SaveAs処理することで、テキストで保存した時の時間を保存ファイルに残す --> <script language="JavaScript" type="text/javascript"> <!-- function reload_and_text(){ location.reload();//ページリロード document.execCommand("SaveAs",true,"text.txt");//テキスト形式で保存 } // --></script> </head><body > <br><input type="button" value="TEXT保存" onclick="reload_and_text()"> テストページ </body></html> 長文すみません。onloadやsettimeoutなどいろいろ試行錯誤していますがうまくいきません。 ワンクリックによる連続処理についてご存知の方宜しくお願いします。
>>10 よく分からんのだけど、reload()開始したら直後に現在実行して
いるスクリプトもページもまっさらに消えるのでは?その状態で
保存しているとか(笑)
12 :
10 :04/12/24 22:51:28 ID:NCoECfJY
>>11 ん〜。。そのあたりがよくわからんのです。
ただ、TEXT保存のボタンを押た時点の時間に変わっていますので、ページ自体はリロードされていますし、保存を促すウィンドウも表示されるんですけどね。。
たとえば、リロード完了後のステータスを取得することによって、その次の保存処理が出来ればうまくいくかもと考えているんですが。
>>12 そもそもリロードせずにSaveAsだったらうまく行くの?
どこが問題か切り分けないとね。
>>14 >>10 > なお、location.reload()を消すと、ページ内の内容は保存されます。
>>10 質問に直接は関係無いが、
HEAD 要素型の内容モデルに BR 要素型も PCDATA も無い。
平たく言えば、<head> 要素内に <br> 要素や、HTML の文字は書けない。
ブラウザがフォローしてくれてるだけ。
>>10 一応言っておくと、(更新|作成)時間は、Scripting.FileSystemObject に問い合わせるべきだ。
が、それでは取得できない場合も現実にあるわな。
>>10 がやりたいことがそういう場合に該当するかどうかは知らないが。
1. 最初の <!-- ページを表示した時点の日時取得と表示 --> と
それに続くスクリプト要素を削除。
2. location.reload() を次で書き換える。
var d = new Date;
d.setTime( d.getTime() - 1000 * 60 * d.getTimezoneOffset());
document.body.insertAdjacentHTML( 'afterBegin',
'<p>' + d.toUTCString().match( /\d\d:\d\d:\d\d/) + '<\/p>');
// 日付は
>>10 の独自仕様に合わせてやったが、
// 明らかにメタデータ扱いなので、標準的な書式を使った方が賢い。
18 :
10 :04/12/25 09:59:11 ID:BpTM0Sn7
>>14-17 のみなさん。レスサンクスです
>>14 さんへ
>>15 さんのフォローのとおりです。保存できます。
>>16 さんへ
そうですね。ブラウザ(IE)に依存してると思います。
そのあたり気にせずに書いてました。
そもそも、execCommand("SaveAs"もIE依存のようですし。。
>>17 さんへ
ソースさんくすです。<m(__)m>
頂いたソースよくわからないんで、納得するまで勉強します。
>>11 さんの指摘のように、リロードされた時点で従前分の命令(保存指示)が宙に浮いてるのかも(従前のページを保存したくても存在しない)と考えました。
ので、やはり時間表記のほうに工夫をする必要があるのかもとの結論に達しました。そちらで頑張ります。
age
前スレ埋めようぜ
埋め立てするとホストチェックされて運営に睨まれるから(´・д・`)ヤダ
22 :
10 :04/12/25 16:21:16 ID:BpTM0Sn7
>>17 頂いたソースで望みどおりのことが出来そうです。
大変ありがとうございました。
ただし、ソースの内容(意味や動き)を一個々勉強しないと何が何やらで。。
レスを頂いた皆さん、ありがとうございました。またよろしくです。
23 :
Name_Not_Found :04/12/26 03:26:39 ID:NXg/xQtZ
初めて質問させていただきます。 言いますか、XP-sp2以降のIEで使えなくなったview-source命令なんですが、 何か変わりになるものはありませんでしょうか? たぶん、今さらの質問だと思うので、面倒でしたら誘導だけでしていただきたいのですが よろしくお願いいたします。
24 :
Name_Not_Found :04/12/26 11:44:31 ID:AJSNnAz7
iframe onload="func()" で読み込んだtxtファイルを HTMLに直したつもりなのですが、以下の方法だ改行が二重に入っています iframeのソース見るとタグは見当たらないのですが ひょっとしてiframeでtxtを読むと、どこかでHTMLになってますか? function func() { var elt = F1.document.body.innerHTML; elt = "<html>" + elt + "</html>"; F1.document.body.innerHTML = elt.replace(/\r|,\r?,\n/g,"<br>"); } インラインフレーム上でtxt表示だと自動改行が効かないので HTMLに直してみようかと思ってやってるのですが方向が間違ってるでしょうか?
失礼します。XP-SP2を使用しています。 1枚目の画像をA 2枚目の画像をB 3枚目の画像をC 4枚目の画像をDとして、マウスカーソルをのせると A→B→C→D→A→B→C・・・とループさせることは どのような書式で、できますでしょうか?
ボタンやフレームに対して同じ処理を行いたいとき
function func(n) {
var elt = ["F"+ n].document.body.innerHTML;}
のような感じで一度に指定する方法はないでしょうか?
>>25 ごめんなさい、脳内で混線してたみたい
29 :
28 :04/12/26 15:15:16 ID:???
自己解決しました、ごめんなさい
画像をランダムで表示させることはできたのですが、 先読みさせることが上手くいきません。 どのような方法で対処できますでしょうか? <script type="text/javascript" language="JavaScript"> <!-- imgset = new Array(); imgset[0] = new Array("a.gif","b.gif","c.gif","d.gif"); roimgtbl = new Array(); for (setno = 0; setno < imgset.length; setno++) { roimgtbl[setno] = new Array(); for (imgno = 0; imgno < imgset[setno].length; imgno++) { roimgtbl[setno][imgno] = new Image(); roimgtbl[setno][imgno].src = imgset[setno][imgno]; } } function rrover(setno) { return(roimgtbl[setno][Math.floor(Math.random() * imgset[setno].length)].src); } // --> </script>
>>30 roimgtbl[setno][imgno].src = imgset[setno][imgno];
この行にでてくるimgset二次元配列定義してなくない?
>>27 ソース書いてくれってこと?
32 :
27 :04/12/26 19:29:58 ID:???
>>27 htmlをどこまで知ってるかわからんけど、
<script language="JavaScript"><!--
cimg=new Array();
var i;
for(i=0;i<=3;i++){
cimg[i]=new Image();
cimg[i].src="./"+i+".gif";
}
i=1;
function picchange(){
if(i==4) i=0;
document.getElementById("p").src=cimg[i].src;
i++;
}
--></script>
これを</title>と</head>の間に挿入したら、
<img src="0.gif" id="p" onmouseover="picchange()">
今画像を表示させてるタグをこれに置き換えればいけると思う。
ただし画像ファイルがhtmlと同じディレクトリに入っていること、ABCDの画像ファイル名が順番に
0.gif 1.gif 2.gif 3.gif であることが条件ね。
拡張子変えたかったら8行目の部分を変更と、タグ部分の最初に表示させるsrcの変更が必要。
行頭に逆の連番をつけたくて、以下の様にすると function P_r(){ var x = 0;var l = "[";var r = "]"; var z = document.forms[0].elements[0].value; var tr = z.split(/[\n\r]+/); var ans = new Array(); for (i = tr.length-1; i >0 ; i--) { ans[i] = l + x + r + tr[i] ; x++; } document.forms[0].elements[0].value = ans.join("\n"); } [000] → 消失 [001] → [8][001] [002] → [7][002] [003] → [6][003] [004] → [5][004] [005] → [4][005] [006] → [3][006] [007] → [2][007] [008] → [1][008] [009] → [0][009] になってしまいます。どうすればいいのでしょうか
35 :
27 :04/12/26 20:40:35 ID:???
>>33 非常に解りやすい説明ですぐにできました。
ありがとうございました!
for (i = tr.length; i >0 ; i--) { ans[i] = l + x + r + tr[i-1] ; 最初に改行が入りますが解決しました。ありがとうございました。
37 :
27 :04/12/26 20:57:58 ID:???
>>33 教えていただいたソースをOPERAブラウザ(XP2)で表示
して見ましたら、左クリックを押すたびに画像が切り替わります。
IE系ブラウザでもクリックで切り替えることは可能なのでしょうか?
38 :
33 :04/12/26 21:13:44 ID:???
>>27 あら、ごめんよ。IEでのことしか考えてなかった。
OPERAはインストしてないから、どういう動作なのかちょっと調べないと分からないんだけど、
クリックしたときにIEでも画像チェンジしたい場合
<img src="0.gif" id="p" onmouseover="picchange()" onclick="picchange()"> に変更し
OPERAでクリックしても画像チェンジしたくない場合
<img src="0.gif" id="p" onmouseover="picchange()" onclick="return false;"> に変更すればOKかと思う。
HTMLファイルで同じ部分を複数のページで使い回すとき(メニューやコンテンツの部分など) JavaScriptを使って使い回す部分を外部ファイルの*.jsに保存し、 呼び出すページからこのファイルを読み込んで表示させているのですが、 JavaScriptを使わずにもっとスマートに行う方法ってありますか? この方法だとクライアント側でJavaScriptを無効にされると表示されなくなってしまうものでして・・・
40 :
27 :04/12/26 21:45:03 ID:???
>>38 本当にありがとうございます。
私的に神です。
>>39 JavaScriptを使わない方法をなんでここで聞く?
42 :
39 :04/12/26 21:54:39 ID:???
>>41 いえ、みなさんもこんな使い方しているのかなぁと思いまして。
同じ文言の使い回しにJavaScriptを使っている人なんて私くらいじゃないかと
不安になったもので・・・
>>42 JavaScriptでやってるなんて、まあ珍しいタイプだな。
代わりの方法ならSSIやPHPでも使ってください。
33氏に質問です。割り込みで申し訳ないです。 画像ファイルをhtmlと同じディレクトリではなく異なるディレクトリを 設置して画像をクリックする事にチェンジすることは可能でしょうか。 Aという画像をクリックすると1.2.3とチェンジし Bという画像をクリックすると4.5.6とチェンジする このような感じにしたいのですが。
46 :
33 :04/12/26 22:46:31 ID:???
>>44 >>45 さんも言っているが、当然だが可能。
画像ファイルのディレクトリ変更だけなら、
>>33 の8行目と、画像表示のタグをちょいといじれば出来るよ。
それと
>>7 にも書いてあるんだが、弱気な質問をせずに、
ソースが欲しいなら欲しいと、はっきり言ったほうが良い。
おれに限らず暇な人はいるから、少し運が良ければ例文サイトのURLを教えてもらえるかもしれないし、
かなり運が良ければソースをもらえるかもしれないよ。
ただここはあくまでも質問スレッド。
ソースをもらう場ではなく、少し学んでつまずいたときに質問する場だから、
過度な期待はしないように。
>>44 よければソース教えて頂きたいのですが。
お願いします。
>>47 ディレクトリ変更は
>>33 の8行目の
"./" この部分がディレクトリを示してるものだから、囲んであるダブルクォーテーションを消さないよう気をつけて
ディレクトリを指定すれば出来るよ。
>>48 ディレクトリの変更はできました。
皆さんありがとうございます。
Aという画像をクリックすると1.2.3とチェンジし
Bという画像をクリックすると4.5.6とチェンジする
これが上手くいきません。
>>49 うまくいかないってことは、自分でソース作ってみたの?
だとしたらコピペしてみてよ。
51 :
49 :04/12/27 01:58:10 ID:???
>>50 ソースは33さんが書いていたのをそのまま参考にして
ネットで調べていじってみたのですが
JavaScriptが全然理解できないです。
正直ソースが欲しいですが
参考になる例文サイトがあれば教えていただたいです。
>>51 とりあえずあなたの言うところの「1.2.3」「4.5.6」がなんなのかを説明(定義)しない
ことには始まらないのでは?
元の案件はA→B→C→D→A→B…って切り替えるのが条件だから。
53 :
49 :04/12/27 03:55:57 ID:???
>>52 「1.2.3」「4.5.6」はそれぞれ画像ファイルの名前です。
形式はJPGです。人物写真でロールオーバーさせてみたのですが重いです。
圧縮して100Kbyte前後の画像。田舎でネットがISDNまでしか使えません。
27さんのように切り替えたいのです。
Aの画像は1→2→3→1→2・・・
Bの画像は4→5→6→4→5・・・
XPでIE利用しています。
>>53 >>33 氏の書かれたスクリプトでは、
6行目までで取り替えるイメージのリソースを配列(メモリ)に読み込んでいて => αと呼ぶ
そのあと、ぐるぐる回す関数が書かれています。=> βと呼ぶ
>>53 で自分で整理して書いてみて多少気づいたかもしれませんが、Aの画像とBの画像では
置き換えられる画像のソースが違うだけで、動作要件は全く同じですよね?
ということは、αの部分をそれぞれA用B用に作って、βの利用する配列をそれぞれ変更
できるように、picchange()の引数でも使って渡してあげればいいわけです。
また、βでは画像を変更するイメージ要素を決め打ちしてしまっているのでそこも変更してください。
55 :
54 :04/12/27 04:14:37 ID:???
あ、あと、 αで先読み処理をしているので画像自体はパッパカ切り替わると思いますが、 画像のダウンロード自体は普通に行われます。 細い回線で大きなファイルをダウンロードする時間を短縮することはJavaScriptでは できませんので、あしからず。
教えてください。配列に任意のオブジェクトを入れようとして、うまくいきません。 function xy( in_x, in_y ) { this.x = in_x; this.y = in_y; return this; } var array_xy = new Array(); function init() { for ( var i = 0; i < 2; i++ ) array_xy[ i ] = new xy( i, i * i ); document.writeln( "<pre>length:" + array_xy.length ); for ( var tmp in array_xy ) { document.writeln( "array:" + tmp + tmp.constructor ); for ( var tmp2 in tmp ) document.writeln( "prop:" + tmp2 ); document.writeln( ", " ); } var z = new xy( 100, 200 ); document.writeln( z + z.constructor ); } これを実行するとIE6では、配列の中身のコンストラクタはStringになってしまいます。 これが、最後のあたりに書いてある z と同様 xy から作られたものにするには、 どうしたらよいのでしょうか? さらにFireFoxでは、最初のfor (in)の箇所で array_xy がないと言われます。 newの箇所では array_xy が見えているようです。こちらも原因を教えてもらえると助かります。
document.writeln( "array:" + array_xy[tmp] + array_xy[tmp].constructor );
>>56 var a = new Array( 'u', 'v', 'w');
for (var property in a) print( property); // 0 1 2
for (var property in a) print( a[ property]); // u v w
59 :
58 :04/12/27 13:34:35 ID:???
>>56 関係無いが、
コンストラクタでreturn thisする必要は無い、というか、JS初期に、
VB畑のアホ外人が勘違いして書き始めたことなので、いいかげん止めよう。
また、for (var property in array) は、思わぬ結果を招くので絶対にやってはならない。
例えば、Array.prototype.foo = ... なことを誰かが書いていたとすると、
for (var property in array) で 'foo' も引っかかる。
誰もが行儀よく delete Array.prototype.foo してくれていると楽観してはいけない。
61 :
56 :04/12/27 13:49:15 ID:???
>>57 ,
>>58 ありがとうございます。for( in )を理解していなかったようです。勉強します。
62 :
56 :04/12/27 14:30:53 ID:???
>>60 なるほど、return this しなくても参照が帰るから不要ということですね。
for(in)は危険なんですね。勉強になります。
そうするとfor(in)の使いどころはないんでしょうか。。。
63 :
49 :04/12/27 14:43:23 ID:???
>>54 さん。親切に教えて頂いてありがとうございます。
私がJavaScriptが理解できないため、どうすればいいのか
解らないんです。
ソース書きます。理解していないので無茶苦茶です。
A=1 B=4の画像です。(1.2.3)(4.5.6)も画像です。
Aの画像をクリックすると、Aの画像(1.2.3)が代わり
Bの画像をクリックしてもAの画像が切り替わり
Bの画像は変わりません。
<script language="JavaScript"><!--
cimg=new Array();
var i,j;
for(i=1,j=4; i<=4,j<=7; i++,j++){
cimg[i]=new Image();cimg[j]=new Image();
cimg[i].src="./"+i+".jpg";cimg[j].src="./"+j+".jpg";
}
i=1;j=4;
function picchange(){
if(i==4) i=1; if(j==8) j=4;
document.getElementById("p").src=cimg[i].src,
document.getElementById("q").src=cimg[j].src;
i++;j++;
}
--></script>
>>63 やりたいことはわかったし、アレンジに四苦八苦したのもなんとなく理解できる。確かにスクリプトはめちゃくちゃだけどねw
けどそうやってめちゃくちゃだけど書いてくれたほうが、説明しやすいし修正の指摘がしやすいのも事実だからね。
Aを0,1,2 Bを 3,4,5 とする。
ファイル名を修正しておいて。
さて、肝心のスクリプトだけど、
まずあなたが書いた4行目から8行目までを下のように修正。
for(i=0;i<=5;i++){
cimg[i]=new Image();
cimg[i].src="./"+i+".jpg";
}
i=1;j=4;
次にfunction部分の修正
function picchange1(){
if(i==3) i=0;
document.getElementById("p").src=cimg[i].src;
i++;}
function picchange2(){
if(j==6) j=3;
document.getElementById("q").src=cimg[j].src;
j++;}
これにごっそり置き換える。
最後に一つ目の画像配置タグを
<img src="./0.jpg" id="p" onmouseover="picchange1()">
二つ目の画像配置タグを
<img src="./3.jpg" id="q" onmouseover="picchange2()">
こんな感じで・・・・さらに増えるとこの手法じゃ大変だけど2つくらいならこれで良いかと。
65 :
49 :04/12/27 16:55:09 ID:???
>>64 Bの画像をクリックしても切り替わりません。
forの部分をどのように修正すればいいのでしょうか?
66 :
49 :04/12/27 20:12:47 ID:???
Aの画像(0.1.2)は64さんが教えて頂いたソースで 切り替われるですが、Bを(3.4.5)の画像が切り替われません。 以下のfor文を入れたのですが動作しません 色々やってみたのですが、画面が止まったりしてしまいます。 過去ログを全て拝見したのですが理解できませんでした。 すいません。助けていただけませんでしょうか。 for(i=0;i<=5;i++){ cimg[i]=new Image(); cimg[i].src="./"+i+".jpg"; } i=1; for(j=3;j<=5;i++){ cimg[j]=new Image(); cimg[j].src="./"+j+".jpg"; } =4;
67 :
54 :04/12/27 20:33:47 ID:???
>>66 えーと、まず、一つの画像をクリックしたら別の画像に切り替わる、
という単純なモノからやってみないかい?
いきなりいろいろやろうとするから大変なわけで。
68 :
49 :04/12/27 20:58:38 ID:???
>>67 どのようにしたらできるのでしょうか?
クラスの写真(私含めても5人しかいませんが)
クリックする事に一人一人の写真が切り替わるようにしたいのですが。
冬休み中になんとか作りたいもので・・急いでいてすいません。
cimg=new Array();
var i,j;
for(i=0;i<=5;i++){
cimg[i]=new Image();
cimg[i].src="./"+i+".jpg";
これでiに画像がいくことは理解したのですが
jに画像をいく書式がわからないんです。
69 :
64 :04/12/27 21:06:36 ID:???
>>49 for部分を修正する必要は無いはずだが。
変えなきゃならない部分はディレクトリ部分だけかな。
クリックさせたときのみ画像変更させたいなら、
タグ部分の、
onmouseoverをonclickに変更すれば良いだけの話。
70 :
64 :04/12/27 21:11:14 ID:???
>>68 >これでiに画像がいくことは理解したのですが
理解してないよ。
iに画像が行くのではなく、cimg[]という配列変数に画像を格納しただけ。
だからそこは i じゃなくて j でもOKってこと。
どうせすぐ後で i j に数字を代入しちゃってるんだから。
ディレクトリ間違ってない?
それとちゃんと 0 1 2 3 4 っていう連続の番号が画像ファイルについてる?
もうちょっとJavaScript理解してからこい
72 :
49 :04/12/27 21:14:27 ID:???
>>69 クリックできるようONCLICKには変更はしましたが
Bの画像が切り替わらないです。
<img src="./3.jpg" id="q" onclick="picchange2()">
"q”はdocument.getElementById("q").src=cimg[j].src;
j++;}から持ってきていると思うのですが
kのjに関する部分が教えて頂いた書式によると
for(i=0;i<=5;i++){
cimg[i]=new Image();
cimg[i].src="./"+i+".jpg";
}
i=1;j=4;
となっており、j については何か足さないといけないと考えるには
私の勘違いでしょうか?
これは単純なものではないと思うのですが。
73 :
49 :04/12/27 21:56:16 ID:???
>>70 再度見直したのですが、0 1 2 3 4 5の連続画像をindex.htmlと
同じ場所に置いています。ディレクトリを作成し0 1 2 3 4 5の
画像をディレクトリに移動させ(htmlと同じ場所の連続画像は削除)ても
Aの画像はクリックすれば切り替わるのですが(0→1→2→1・・)
Bの画像はクリックしても切り替われません。(3→4→5といかず3のままです)
>>71 中学に入ったらコンピュータクラブがあるので一から学びます。
板のルールに沿ってなくてすみません。
皆さん。理解しきれず申し訳ないです。
74 :
54 :04/12/27 23:15:52 ID:???
>>73 あー、いや、だからさ。
二つの画像をそれぞれころころ切り替える、なんてことは置いといて、
一つ画像を用意してソレをクリックしたら違う画像に切り替わる、
それだけの簡単なところから始めないと、といっている。
75 :
49 :04/12/28 00:46:34 ID:???
たびたびすみません。
64さんの教えて頂いた書式ですと、
IE系ブラウザですと駄目なのですが、
非IE系ブラウザのFireFfox等だと
Bの画像も切り替わります。
どうすればIEでも切り替えれるようになるのでしょうか。
>>74 54さん。ご親切にありがとうございます。
簡単なところを理解してから始めろということですね。
一つの画像を用意してクリックしたら切り替わるのは
64さんが教えてくださった書式で、できました。
76 :
Name_Not_Found :04/12/28 02:20:22 ID:Sq9Zw/Ij
77 :
Name_Not_Found :04/12/28 02:22:37 ID:Sq9Zw/Ij
78 :
Name_Not_Found :04/12/28 06:58:28 ID:bBCxn+fG
テンプレ一通り読んでみたのですがよくわからなかったので質問します。 サイト内のすべてのページ上部にリンクとタイトルの帯を載せたいのですが、そのやり方がわかりません。 何卒このやり方について教えてくだされ。
そりゃHTMLじゃけえすれ違い
>>78 外部JSファイルでタグやらをdocument.write()さすようにして、それを
各HTMLファイルのBODY内の好きなところでSCRIPT要素を使って呼び出す。
が簡単じゃ。そういうことだよね?
81 :
49 :04/12/29 00:21:34 ID:???
失礼します。 id="q"の部分を修正したらできました。 原因はIEのバグ同然の仕様の為でした。 教えてくださった皆さん。ありがとうございます。 ご迷惑をかけて本当に申し訳ございませんでした。
82 :
Name_Not_Found :04/12/29 13:18:45 ID:clx/A4B7
ボタンを押したとき、JavaScriptを使って確認ダイアログを出させたいと思ってます。 1つのときは下記のような感じで問題なく出せたのですが、ボタンを二つにした場合、 どうすればいいのかわかりません。 なにとぞご教授ください。m(_ _)mペコリ ■JavaScript function DEL(){ return window.confirm("削除しますか?"); } ■BODY <form action="bbs.cgi" method="post" onsubmit="return DEL();"> : <input class="button" name="del_trd" type="submit" value="削除する"> : </form>
>>82 どうしたいのかよくわからん。そのままでいいんじゃ?
84 :
82 :04/12/29 14:19:59 ID:clx/A4B7
>>83 あ、すみません。
ボタンが1つのときは対応できたのですが、下記のようにボタンを二つにして、
それぞれ別の確認ダイアログを出したいと思っています。
そのときにどうすればいいか、教えてください。m(_ _)mペコリ
■BODY
<form action="bbs.cgi" method="post" onsubmit="return DEL();">
:
<input class="button" name="del_trd" type="submit" value="削除する">
<input class="button" name="koushin" type="submit" value="更新する">
:
</form>
>>84 onsubmitをやめてinputタグ側を「onclick="return DEL()"」
「onclic="return UPD()"」のように。
form内のテキストボックスなどの複数のパラメータ(日本語)をgetで別ページに送ると 値がユニコードになって文字化けしてしまいます。 送る側ではescape(str) 受ける側ではunescape(unescape(str))しています。 どのようにすればいいのでしょうか?宜しくお願いします。
JavaScriptではUNICODEになるのを避ける方法はないだろ。 覚悟を決めて全部UNICODEで扱うことを勧めるね。
ウニコード
>>88 レスありがとうございます。
>覚悟を決めて全部UNICODEで扱うことを勧めるね。
というのはHTMLをUNICODEで書けということですか?
location.searchのパラメータ処理でいい方法はないでしょうか?
>>90 受信側のCGI等をウニコード対応にするのが早いかと。
その場合はencodeURIComponant()の方が良さそう。
>>90 HTMLが正常に表示されてるんなら、ソースの文字コードがなんであれ、
内部的にはすでにユニコードだぞ。
そこからDOMで値を取得してもやっぱりユニコード。
DOMStringがユニコードだから。
>>91-93 アドバイスありがとうございます。
>受信側のCGI等をウニコード対応にするのが早いかと。
受信側もhtmlです。受信側の複数のテキストボックスにlocation.searchのパラメータを分割して入れて、
そのパラメータを元にリンクタグとして吐き出すスクリプトを作っておけば、
リンクをクリックするだけで他のファイルの複数のテキストボックスに一気に入力できると思ったのですが、
私の現在の知識では難しいのでもう少し勉強して出直します。ありがとうございました。
>>94 だったら送信側でフォーム使わずにlocation.hrefで飛べばいーじゃん。
location.href = "hoge.htm?"+"&q="+document.forms[0].elements[0].value; という事ですか?こうすれば化けませんか?やってみます。ありがとうございます。
>>96 それでencodeURICompnent()を掛けたとしてもやぱりUNICODEになるよ。
化ける化けるというが全部UNICODEに正しく統一されるんであって
化けるわけじゃない。アンタ好みの文字コード以外は全部文字化け
だということにされるんじゃたまったもんじゃない。
□ AはBするとよい □ BはcでありDではない □ (ry □ (ry ↑チェックボックス チェックボックスにチェックをいれると横の問題文がテキストボックスAに、 チェックをいれた問題の解答がテキストボックスBに表示される (それぞれ複数選択可 というものが作りたいのですがどこから手をつけていいのかわかりません。 どのようにすればよいでしょうか。
>>99 まずは
>>5 の中から分かりやすいサイトを探して基礎を学ぼう。
簡単なサンプルを改造するとやりやすいかも知れない。
なお、そういった類のスクリプトはif文を組み合わせて解答を導くことになるだろう。
>>100 んなこたない。ifを使わなくても書けることは書ける。って言うか書けた。
3項演算子を2回 (問題と解答の分) 使ってしまったがな。 ○| ̄|_
いつそんな課題がでたのだお
103 :
101 :04/12/30 10:05:44 ID:???
>>102 単なる揚げ足取りだ。すまなかった。もう気にしないでくれ。
104 :
100 :04/12/30 10:33:16 ID:???
>>101 文末を「だろう」としたのがその辺の理由。
やろうと思えばチェックボックスに1、2、4、8と数字を割り当てて
チェックされた合計を添え字として配列から解答を読み出せば3項演算子も使わずに書ける。
決定表(decision table)とか知らないんだろうか(ぼそ)
知らなくてもなんら問題はないな フローチャートスレに帰れ
JavaScriptの改造依頼ってこのスレではNG? 別板にスクリプト改造依頼スレってあるんだけど、JavaScriptは板違いだし。
質問スレだから。あんたが改造をする上でぶつかった疑問を 質問するのならよい。全部やってくれというのはNG。
引数を使って任意の場所にinnerHTMLしたいのですが function test(basyo) { var Add = ""; for (var i=0; i<10; i++) { Add += "<li>"+i+"\n"; } document.getElementById('basyo').innerHTML += Add; } これではだめです。どのようにすればいいのでしょうか?宜しくお願いします。
>>109 function test(basyo) {
var Add = "";
for (var i=0; i<10; i++) {
Add += "<li>"+i+"\n";
}
document.getElementById(basyo).innerHTML = Add;
}
'document.getElementById(,,)' は Null またはオブジェクトではありません。 とでるのですが
113 :
Name_Not_Found :04/12/30 20:24:05 ID:EVrvC0H3
test('aaa')だったのですね。お手数おかけ致しました。
今日の日付に+1日と-5日を加えた1週間分の配列を得たいのですが 凄く難しいです。 どのようにすればいいのでしょうか?宜しくお願いします。
すいません、雪を降らせるのってどうやればできますか? そんなに激しく降らせるわけじゃないのでウザくならない程度にです。 小粒の雪をフワフワーって程度の。
>>114 ,115
とりあえず自分がどこまでやったのかソース貼り付けるなりしろよ
まったく分からないなら、まだそれをやる段階じゃねーんだよ
>>114 (今日の日付−2)を軸にして、前後3日を取ればOK
ex. 今日が12/15
-3:12/10 -2:12/11 -1:12/12 軸:12/13 +1:12/14 +2:12/15 +3:12/16
>>116-117 レス有り難うございます。
今日の日付(new Date()).getDate()
-日の日付(new Date((new Date()).getTime()+((-1)*任意の数 * 1000 * 60 * 60 * 24))).getDate()
+日の日付(new Date((new Date()).getTime()+(任意の数 * 1000 * 60 * 60 * 24))).getDate()
で得られることは分かるのですが、これを配列にするとなるとどうすればよいのか....分かりませんです。
>>117 のようにしたら12/32とかがでてきてしまいます。
(new Date((new Date()).getTime()+((i)*1000*60*60*24))).getDate() でできますね。でも月替わりがはいると.....。
>>118-119 12/32になるっていうのがわからん。「月」と「日」をそれぞれ取得
して連結するんでしょ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
var a = new Array(), today = new Date().getTime();
for(var i = -3; i <= 3; ++i) {
var d = new Date(today + i * 1000 * 60 * 60 * 24);
a.push((d.getMonth()+1) + '/' + d.getDate());
}
document.write(a.toString());
</script>
</body></html>
ソースまで有り難う御座います。これだと仮配列に格納せずに桁揃えが楽にできました。 今日はいろいろと学んだことが多かったです。ありがとうございました。
>>115 過去ログvol.4の300番とか参考になるかも。すげー古いけどね…
123 :
Name_Not_Found :04/12/31 21:57:53 ID:ju5Ymvyj
document.all.item(xxx).innerHTML こんなことをやりたいのですが、xxx変数のIDが存在しないとエラーになりますよね。 存在するかどうかチェックすることはできますか? ヒントだけでもかまいませんのでよろしくお願いできますでしょうか。
ifじゃ駄目なのか
DOM1によると、 var elm=document.getElementById("foo"); はfooというIDの要素が存在するならDOM要素を返す。 存在しないならnullを返す。 すなわち、 var str=""; var elm=document.getElementById("xxx"); if(elem) str += elm.innerHTML; alert(str);
126 :
123 :04/12/31 22:37:27 ID:ju5Ymvyj
はい、ifを使って実現できそうだと思うのですが、 その条件文はどのようにすればいいのでしょうか…。 if(document.all.item(xxx).innerHTML){ 処理; } ってやってみても変数xxxの持つIDが存在しないとエラーになります、、
>>126 馬鹿かあんたは。
>>125 が書いていることを読む気が
ないんなら/読む能力がないんなら帰れ。
128 :
123 :04/12/31 23:06:33 ID:ju5Ymvyj
>>125 あ、ありがとうございます。
試してみますね
>>125 ,127
ごめんなさい、いろいろ考えながらやってたら表示から投稿に時間かかってしまってました^^;;
> if (oObject != null) こういう例文を書く香具師は、冗談抜きで絶滅してほしい。
classアトリビュートに対して hoge.className = "abc"; とやるのと同じようなことをonmouseoverに行いたいのですけど、 どうやればできますか?
>>133 同じような、というのがわからん。単にイベントハンドラを上書き
していいのなら
hoge.onmouseover = function() { 動作,,, ; }
>>133 が知らないかもしれないから極めて初歩的なことを書いてみる。
<p class="abc def">...</p>
とHTMLソースに書いてあれば、CSSセレクタでは少なくとも
.abc
.def
.abc.def
の3通りがマッチする。
注意深い(というか当たり前だが)人なら
hoge.className = "abc"; // ただの上書き、書き換え
ではなく
hoge.className += " " + "abc"; // 追加
とするだろう。
削除は
hoge.className = hoge.className.replace( /\babc\b/g, "");
>>135 それだと「class="x abc y"」が「class="xy"」になってしまわない?
>>137 ならない。\bは単語の区切りにマッチするのであって単語の区切り文字にマッチするわけではない。
139 :
Name_Not_Found :05/01/03 10:59:33 ID:6Ww/V3Nc
いまエディットボックスが2つあって、コンボに「エディット1」、「エディット2」というオプションを持たせるとします。 このコンボを切り替えると、選ばれたエディットボックスのみ有効にしたいのです。 さらに<INPUT>でリセットボタンを用意します。 最初にコンボが「エディット1」となっている場合、コンボを切り替えて「エディット2」にして エディットボックス1を無効にし、それからリセットを押すと、コンボは「エディット1」になるのですが、 エディットボックス1は無効のままです。 なにかうまい方法は無いでしょうか? よろしくお願いします。
>>139 <input type="reset">は使わず、自前で全部初期状態に戻す動作を
<input type="button">で作れ。
141 :
Name_Not_Found :05/01/03 11:48:01 ID:6Ww/V3Nc
ありがとうございます。 現在初期状態を覚えていないのですが、 なにか便利なJavaScriptの関数ありますか? あと、resetの代わりにボタンで初期状態に戻すため、関数をかいて document.form.reset(); とかやってみたのですが、効きませんでした。 こういう場合、皆さんだとどういう風に作るのですか? OnLoad時に初期状態をグローバル変数とかに書いておくのですか?
>>141 >なにか便利なJavaScriptの関数ありますか?
関数なら、リファレンス見れば全部載ってる。
> OnLoad時に初期状態をグローバル変数とかに書いておくのですか?
色々あるけど、この場合、初期状態なんて覚えておく必要ないんじゃ?
・「コンボ」を「エディット1」にする。
・「エディットボックス1」を有効にする。
・「エディットボックス2」を無効にする。
の3つの処理を書いとくだけでええんとちがうか?
あとついでに、「コンボ」とか「エディットボックス」とか「関数」とか、
気持ちは判らんでも無いけど、変な言葉使いが気になる。
可能なら、ソース晒して、そのまま説明した方がいいと思うよ。
ありがとうございます。 コンボ(selectタグ)では初期選択がCGIで生成時に変える予定でした。(書いてませんでした。) そこでやはり最初に選択されているものを変数に代入しておいて・・・ という方法でやってみたいと思います。
だからコンボって言うなよ…
145 :
Name_Not_Found :05/01/03 17:50:51 ID:RXuKRqIm
>>144 は俗にcomboboxと呼ばれているものを具体的にどう呼ぶのだろうか。
scrolled list box とか drop-down menu とか。 「俗に」っつってもそんなに範囲広くないんじゃ? MS系に多い?
だいたいHTMLで記述してるまんまselectとかcheckboxとか言うのが 一番誤解がないと思うね。洩れもコンボボックスだとか連呼するヤシ の相談はよっぽど気が向かないと乗らないことにしてる。それは洩れの 勝手だしな。
VCのリソースエディタでしか使わんな。>コンボ
「Windowsの基本用語」 テキストボックスとリストボックスがセットになっているものを「コンボボックス」といいます。 またコンボボックスのうちリストボックスが通常非表示になっており[▼]を押すことにより 表示されるものは「ドロップダウンコンボボックス」と呼ばれます。 HTMLのコントロールはテキスト入力ができないので「ドロップダウンリストボックス」に相当します。
Windowsの方言だしなぁ……
コンボボックスをコンボって言うのはいいけど、 コンボじゃないのをコンボっていうな、ってことで。
155 :
Name_Not_Found :05/01/03 21:51:33
? ID:JwJxbzoR
ボクのために争うのはやめて!
menulistだと期待通りの検索結果なのにorz 結局、gtkが諸悪の根源ってこと?
JavaScript識者の諸兄等に質問させて戴きたいが宜しいだろうか? マウスオーバーの構文なんだが、同一html内で操作する記述文は何とか判ったんだが、フレーム構造のHPで、"メニュー側でマウスオーバーした時に、対応した文章がメイン側のテキストエリアに表示される"形の記述文ってどうなるのだろうか? 一応、考えては見たがチンプンカンプンで全然理解出来なかったので、識者である諸兄らの力を借りに来させて戴いた次第です 後、ココをこうすれば更に良くなるみたいな意見も御願いしまする ○自分が辿り着いた同一html内でのマウスオーバー記述文(※マウスオーバー関連に直接関係無い文章は削って書いてるので悪しからず) <center> <SCRIPT language="JavaScript"> <!-- msg=new Array(); msg[0]="説明1"; msg[1]="説明2"; msg[2]="説明3"; msg[3]="説明4"; function Msg(index){ document.myform.mytext.value=msg[index]; } // --> </SCRIPT> <div align="center"><A href="main.html" onMouseOver="Msg(1)" onMouseOut="Msg(0)">コンテンツ1</a></div> <div align="center"><A href="hazimeni.html" onMouseOver="Msg(2)" onMouseOut="Msg(0)">コンテンツ2</a></div> <div align="center"><A href="link.html" onMouseOver="Msg(3)" onMouseOut="Msg(0)">コンテンツ3</a></div> <FORM name="myform"> <div align="center"> <textarea style="COLOR: Black; BACKGROUND-COLOR: #FFFFF0" name="mytext" cols="60" rows="3" wrap="VIRTUAL">初期説明文</textarea> </div> </FORM>
160 :
159 :05/01/04 21:25:59 ID:???
あ〜、自分の書いたマウスオーバーの記述文の一部が判り辛くなってるな… 取り敢えず、"初期説明文=説明1"と考えて下され…_| ̄|●|||
>>159 parent.フォームのあるフレーム名.document.myform.mytext.value=msg[index];
162 :
159 :05/01/04 21:50:21 ID:???
>>161 まずは回答ありがとうございます
えっと、Script定義の記述文の所で"parent.フォームのあるフレーム名."を追加するだけで逝けるという事でいいんでしょうか?
聞く前に試せよ・・・
164 :
159 :05/01/04 22:03:24 ID:???
>>163 いやはや、氏の仰る通り質問厨になってて申し訳無いです…_| ̄|●|||
>>161 お蔭様で無事に上手くいきました
大変ありがとうございます
161氏と163氏が同一人物だったら申し訳ない
>>165 fontsize=1 → fontsize='12px';
fc1とfc2の " size="+fontsize+">"; → " style=\"font-size:"+fontsize+"\">";
CGI Script内にJava Scriptを書く事についてなのですが
ずるぼんあぷろだ
http://zurubon.strange-x.com/upload.txt ここの、実行時にページ上部に表示されるメッセージ部分…
# タイトルの下に表示するお知らせ
$info = '
気になる記事・ソース、自作のソースなどヽ(´ー`)ノ
';
…へ以下のように書き、sample.cgiというファイルを作り実行すると
Internet Server Errorになってしまいます。
<a href="URL" onMouseover="showtext('GUIDE')" onMouseout="hidetext()">USE</a>
マウスオーバーで表示される GUIDE を囲んでいるシングルクォーテーションが原因らしいのですが
CGIで作られたページにマウスオーバーでテキスト表示をさせるには、どのように書けばよろしいでしょうか。
・CGI自体はシングルクォーテーションが無ければ普通にあぷろだとして動作しました。
ずるぼんあぷろだの例
ttp://sorimati.s3.x-beat.com/upload/upload.cgi ・JavaScript自体も、普通のHTMLで期待通りに動作しました。
>>167 それはJavaScriptの質問じゃないんだが。
シングルクォートの前に \ をつけてエスケープ。
>>168 ありがとうございます、表示することができました。
>それはJavaScriptの質問じゃないんだが。
すみませんでした、短絡的にJavaScriptオンリーで考えてしまっていました。
170 :
Name_Not_Found :05/01/05 00:01:56 ID:5zhhe8+w
<SCRIPT language='JavaScript'> <!-- function down(theField) { var winTarget = "_blank"; open(theField[theField.selectedIndex].value, winTarget); } --> </script> <form name="link" method="GET"> <select name="link1" onChange="down(this);"> <option selected value="index.html">↓選択</option> <option value="アドレス">リンク1</option> <option value="アドレス">リンク2</option> <option value="">○○○</option> </select> </form> これらを使ってプルダウンの新窓でのリンクを設定しました。 この場合、○○○の部分はリンクにしたくないのですが クリックできてしまって、「このページは表示されません」となってしまいます。 プルダウンのリンクの場合、リンク以外の通常の文字入力は 不可能なのでしょうか?? 可能の場合どうすればいいのでしょうか? 調べてみても分かりません。教えてください。
>>170 <option value="">○○○</option>って書いてしまってるのだから
選択できてあたりまえだろ。
書かなきゃいい。
172 :
170 :05/01/05 00:16:26 ID:5zhhe8+w
>>171 <option>○○○
って書いてもリンクされてしまうし、
○○○
だけだとプルダウンの中に○○○が表示されません。
>>172 だーかーらー
そのソースはリンクさせるためのものでしょ。
なんでその中にリンク不要なものを書くわけ?
と言ってるの
174 :
170 :05/01/05 00:27:18 ID:5zhhe8+w
すいません。 プルダウンの中のメニューをカテゴリー分けにして そのカテゴリータイトル名はリンクにしたくなかったんです。 ありがとうございませいた。諦めます。
>>174 そういう用途ならoptgroup要素は?
>>170-174 みんな馬鹿じゃん。特定項目をタイトルにしたいんだったら
(そんなことは元質問を読めば分かるよなあ〜)、
JavaScriptなんか使わなくてもHTMLでできる。選ばれたく
ないoptionタグにdisabledを指定しろ。いっとくけどスレ
違いなんだからな、
>>170 はJavaScriptとHTMLの使い分け
が理解できるまで2度とくるな。
>>176 馬鹿はお前。
disabledが効くぐらいならそれでもいいが、やってから言え。
>>170 >>175 の言うようにこれでどうだ?
<form name="link" method="GET">
<select name="link1" onChange="down(this);">
<option selected value="index.html">↓選択</option>
<optgroup label="△△△">
<option value="アドレス">リンク1</option>
<option value="アドレス">リンク2</option>
</optgroup>
<optgroup label="○○○">
<option value="アドレス">リンク4</option>
<option value="アドレス">リンク5</option>
</optgroup>
</select>
</form>
valueが空なら飛ばなきゃいいだけ。
>>177 を見て不思議に思い、Firefoxで試した所、ふつうに効果があった。
DTDにもよるが、HTML4だとすれば、OPTION要素型にdisabled属性は定義されている。
可能な値はdisabledだけだから、厳密な方法で値を設定するには、
(オプション).disabled = 'disabled' または、
(オプション).setAttribute( 'disabled', 'disabled')
としなければならないだろうし、厳密な方法で値を削除するには、
(オプション).removeAttribute( 'disabled')
としなければならないだろう。
(ただし、JSからの操作は、正しかろうが間違いだろうが、
ヴェンダーのJS関連ドキュメントに従ってくれ。
例えば、true と false で切り替わるかもしれないとか。)
>>180 俺のところでは
Firefox OK
N6 OK
N4 NG
IE6 NG
>>170 その註釈宣言 (<!-- 略 -->、"コメント") は、HTMLとしては正しいが、JSとしては正しくない。
JSでは、「//」が一行コメント、「/* 略 */」が複数行コメントになっているし、
実際には、「<!--」も一行コメントとして扱われている。
「-->」は、これら3種のどれでもないから、JSの文法的には不正である。
これを防ぐために、「//-->」と書いて、「-->」をコメントアウトする。
<script type="text/javascript">
<!-- (HTMLではマーク宣言の開始区切り子及びコメント区切り子、JSでは一行コメント)
// (JSでは一行コメント) --> (HTMLではコメント区切り子及びマーク宣言終了区切り子)
</script>
逆に、JSとしては正しいが、HTMLとしては不正、と言う場合もある。
典型的なのは、JSに、<!-- 改行無し --> でコメントを挿入しているアホ。
<script type="text/javascript"><!--
...
<!--変なコメント-->
...
//-->
</script>
厳密に言えば、「<!--変な」の「--」がコメントの終了を示すわけだが、
(つまり、HTMLに直に書いてコメントアウトする場合、この世に存在しない
超ストリクトブラウザでは、JSにディクリメント「--」は使えない)
ブラウザは気を利かせて、「コメント-->」までをコメントとするだろう。
それでもやはり、HTMLのコメントとして正しく機能していないわけで。
>>182 そのHTML文書がHTML4ならば超ストリクトブラウザでもデクリメント使えるぞ。
HTML4においてscript要素の内容はCDATAであり"<!--"もコメントの開始としては認識されないからな。
184 :
sage :05/01/05 11:47:35 ID:njwfNbfS
下記のような状態で別ウィンドウで表示させるには どうしたらいいでしょうか? 教えてくだされば幸いです。 function frmsubmit_open(url) { document.frmmain.action = url; document.frmmain.submit(); }
document.frmmain.target = '_blank';
186 :
184 :05/01/05 11:56:45 ID:???
187 :
Name_Not_Found :05/01/05 12:34:03 ID:RPbkKlrt
フォームのチェックボックスが選択されているかどうかを調べるために 下のようにしたのですが、NN7.1で期待通りに動作しません。(IE6はOK) function selectcheck( x ) { if (( x.abc[0].checked == false ) && ( x.abc[1].checked == false ) && ( x.abc[2].checked == false )) { alert("選択汁!"); return false; } else { return true; } } ・ <form method="post" action="mailto:メアド" enctype="text/plain" onSubmit="return selectcheck(this)"> <input type="checkbox" name="abc" value="1">1 <input type="checkbox" name="abc" value="2">2 <input type="checkbox" name="abc" value="3">3 1つもチェックされていないときは alert()がでて正常動作。 1〜2個チェックされたときはメーラーが起動されて期待通り。 3個全部チェックされると無反応。(このときだけIEとNNで動作が違う) 試しに if (( x.abc[0].checked == true ) && ( x.abc[1].checked == true ) && ( x.abc[2].checked == true )) { alert("全部選択したな!"); return true; } とやると、alert()はでるものの、メールが送信されません。
チェックボックスの名前はかぶってはいかんよ。
189 :
188 :05/01/05 15:33:44 ID:???
つか、目的のチェックボックスだけ、例えば<span id="chk">とかでくくっておいて、 var tmp = document.getElementById("chk").getElementsByTagName("input"); for(var i=0 ; i<tmp.length; ;i++){ if(tmp[i].checked == false){ //処理; return false; } } とかした方がよくないかい? あと、mailto:ってスキームが必ずしも期待通りの動作はしないってのも考慮した方が よいと思った。
190 :
Name_Not_Found :05/01/05 16:00:31 ID:RPbkKlrt
>>188-189 > チェックボックスの名前はかぶってはいかんよ。
d。
まったくその通りでした。nameを変えたら正常動作。
>チェックボックスの名前はかぶってはいかんよ。 んなこたーない
0a1b2cdeという値を得るには <a href="javascript:void(0)" onClick="TEST('012','abcde'); return false;">TEST</a> var cnt = 0; function TEST(num,str) { varTest =""; k = num.length + str.length; for (i = 0; i < k; i++) { Test += num.charAt(cnt); Test += str.charAt(cnt); cnt++; } document.forms[0].elements[0].value =Test; } 一応これでも得られますが、本来どうすべきなのでしょうか?宜しくお願いします。
for (i = 0; i < k; i++) { Test += num.charAt(i); Test += str.charAt(i); } じゃいけないのか?
レス有り難うございます。 そこもおかしいですが、私がお尋ねしたいのは、 k = num.length + str.length; for (i = 0; i < k; i++)のところです。 回しすぎではないかと....。
document.forms[0].elements[Number(num.charAt(i))].click(); document.forms[0].elements[0].value += "\n-" + eval(str.charAt(i)) + "\n"; このようにしてnumは関数呼び出し用、strは文字列呼び出し用なので うしろの方になると -undefined -undefined になってしまうんです。いい案はないでしょうか。何卒宜しくお願いします。
>>195 何がやりたいのかさっぱりわからんな。
とりあえずフォーム部分のソースとスクリプト全部、それにやりたいこと言ってみ。
とりあえずevalしている意味がわからないが。
ソースは大きいので勘弁してください。 つまり日付、時刻を得る関数を配列に格納し document.forms[0].elements[Number(num.charAt(i))].click(); で呼び出し その間に document.forms[0].elements[0].value += eval(str.charAt(i)); で 定義した平成、月、/、-、等の文字列を挟み自由な順番、書式で日付、時刻の文字列が得られます。 問題はk = num.length + str.length; for (i = 0; i < k; i++)のところです。 不必要なlength分がundefinedや空の文字列となる事です。意味が通じると有り難いのですが...。 宜しくお願いします。
198 :
Name_Not_Found :05/01/06 12:35:37 ID:WD/Izcfm
>>197 相変わらずわかりづらいYO
とりあえず、なんで日付時刻を文字列として扱わなきゃならんの?
Dateオブジェクトに放り込んでおいて、使うときに各種組み込みメソッドで
お好みのかたちで取り出す方がわかりやすかろうと思うのだけれど。
引数付きのリンクにしておけばクリック一回でいろんなタイプのを作れますから
例えば
>>192 TEST('012','abcde')として呼び出せば、0番の関数,aと定義した文字列,1番の関数,bと定義した文字列2番の関数・・・という順番等で
2005-01-06-Thu-12-39-49 , 05/1/6/木/12:40:25 とこういう文字列が得られます。
>>199 やりたいことはわかったんだけど。
時刻を一続きの文字列として扱ってしまうと、ばらしたり戻したりの手間を手作り
しなきゃならなくて、そこで引っかかっているわけじゃん?
なので、TEST()の第一引数は文字列じゃなくて、Dateオブジェクトを使った方が良くないかい?
Date関連のメソッドを使えば好みのかたちですぐに引き出せるわけで、evalとかする必要もなく。
あと、第二引数の方も必ずしも一文字ずつになるとは限らないでしょ?例えば
年月日曜日時分秒、とか。
だったら、整形のパターンをあらかじめいくつか決めておいて配列に放り込んでおくのが楽だけど、
完全にフリーなかたちにこだわるのなら、時刻のどの要素に対してこの単位、というのを
明記(定義)できなければ前者のように決め打ちするのと根本的に大差ないわけだし。
201 :
200 :05/01/06 13:18:17 ID:???
>>200 の補足
誤:完全にフリーなかたちにこだわるのなら
正:完全にフリーなかたちにこだわるのでも
結局、表示の時に使うパターンを何通りかあらかじめ作っておいて、
TEST()の第一引数は時刻(オブジェクト)、第二引数はどのパターンにするか、
とするのがいいんじゃないかと思う。
もし、違うパターンがほしくなった場合は、表示のパターンの方に追加していくのが
いいんじゃないかな。
いやもうfunction() { return (new Date()).getFullYear(); }, てなかんじでパーツに分けてはいってます。TEST()の第一引数は配列に入った関数(Date関連のメソッド)の番号です。 第二引数の方は配列にすると使いづらいので例えばeval(str.charAt(a)); とすればvar a="時"と定義してあるものがでてくる訳です。 evalがないとそのまま出てきてしまうので適当にやったらうまく行ったんで・・・。 現在はボタンで手動で文字列を出すのはうまくいってます。ただボタンを押す数が多いので引数で自動的にという事なのです。 method="get"でもいけそうですし。
204 :
200 :05/01/06 13:55:30 ID:???
>>202 ん?じゃあ、
時刻の値はどこで与えているの?
現在時刻でいいの?
.setDate等を使えば現在時刻以外も得られそうですが、そうするともう一つ引数が必要になりますよね。 問題点は長さの違うnum.lengthとstr.lengthをどのようにすれば交互に挟み込めるかなのですが・・・。 あまりいじめないでください。宜しくお願いします。
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ★ ★ ☆ 質問者が返信する際は、名前欄に「最初に質問したレス番号」を入れろ ☆ ★ ★ ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
207 :
200 :05/01/06 14:47:13 ID:???
>>205 交互に挟む必要性がどこにあるのかを考えた方が早いよ。
表示されるかたちにとらわれすぎかと。
あと、いじめているつもりは誰もなかろうけど、あんたがルールを守っていないのは
>>206 の通り。
残り日数のカウントダウンしたいんですけど、これじゃあダメっぽぃ。 どうしたらいいでしょうか?宜しくお願いいたしますです。 <script language="JavaScript"> <!-- var today = new Date(); var thisYear = today.getFullYear(); var xDay = new Date(thisYear/11/31); var lastMilliSeconds = ((xDay - today)*1000*60*60*24); lastDays = Math.ceil(lastMilliSeconds); document.write(lastDays); // --> </script>
>>208 11月に31日は無いとか、thisYear + '/11/30' だろうとか、getTime()して単位をミリ秒に合わせろとか。
……とりあえず、
document.write( Math.ceil(
(new Date( '2005/11/31').getTime() - (new Date).getTime()) / (1000 * 60 * 60 * 24)
));
で、希望は満たされると思うが。
210 :
208 :05/01/06 18:15:03 ID:???
>>209 ありがとうございます。
早速やってみるです。
>>192 2つの文字列の長さが違うと困る、ということか?
もしそうなら、配列を使えば、よしなに計らってくれる。
約90%のブラウザで使える方法。
function mm (N, S) {
var n = N.split( '');
var s = S.split( '');
var i;
var c;
for (i = 1; c = s.shift(); i += 2) n.splice( i, 0, c);
retrun n;// 配列を返したい場合
return n.join( '');// 文字列を返したい場合
}
約100%のブラウザで使える方法。(split または join を知らないブラウザはほぼ絶滅した。)
function mm (N, S) {
var n = N.split( '');
var s = S.split( '');
var r = new Array;
var i;
for (i = 0; n[ i] || s[ i]; i++) {
r[ r.length] = n[ i];
r[ r.length] = s[ i];
}
retrun r;// 配列を返したい場合
return r.join( '');// 文字列を返したい場合
}
>>192 のテストは、
document.forms[ 0].elements[ 0].value = mm( '012', 'abcde');
みたいなかんじになる。
212 :
208 :05/01/06 18:53:17 ID:???
>>209 ありがとうございました。できました。年を指定したくない場合はgetFullYearを使って、
209さんが書いてくださったように、thisYear+'/○○/○○' で指定すればよいのですよね?
>>209 お前こそ大丈夫か?
Date型の月は0〜11だぞ?
>>213 'yyyy/mm/dd' と引数を与えるのと、getMonth() を混同するな。
>>211 間違えた。修正。
約100%のブラウザで使える方法。
function mm (N, S) {
var n = N.split( '');
var s = S.split( '');
var r = new Array;
var i = 0;
if (n.length < s.length) {
while (i < n.length) { r[ r.length] = n[ i]; r[ r.length] = s[ i++];}
if (0 < i) r = r.concat( s.slice( i));
} else {
while (i < s.length) { r[ r.length] = n[ i]; r[ r.length] = s[ i++];}
if (0 < i) r = r.concat( n.slice( i));
}
retrun r;// 配列を返したい場合
return r.join( '');// 文字列を返したい場合
}
>>213 ぉぃぉぃ。
// 2005年11月30日
new Date( 2005, 10, 30)
new Date( '2005/11/30')
217 :
Name_Not_Found :05/01/07 00:16:13 ID:KtYNxJjk
JavaScriptで外部のperl等のcgiで処理した結果を受け取るには
どうしたらいいでしょうか?
例えば、submit時に
http://hoge.com/hoge.cgiに文字列を渡して hoge.cgiでエンコードしたものをもう一度受け取って
submitするというような処理をしたいのですが。
window.openでwindowを開くときに値をgetで渡して
それをもういちど受け取るのはまわりくどい感じがするので
window.openしないでできるとうれしいのですが
>>217 一度リクエストを送らせる必要はあるわけだ。
隠しフレームを使うとか。
>>217 なんか無駄っぽい方法を考えている予感・・・
221 :
217 :05/01/07 00:28:50 ID:KtYNxJjk
222 :
217 :05/01/07 00:39:08 ID:KtYNxJjk
>>219 RFC?
>>220 二回リクエスト出すようですが、一方はいろんなところから
呼び出せる汎用的なものなので無駄じゃないと思いますが
外部のHTMLソースを取得できたりするような関数があれば
いいんですけどねー
フレームや別ウィンドウ使えばできるって言ってるだろう
>>223 それはわかってますよ?
それを使わずにする方法があれば教えて欲しいと言ってるんですが
んじゃ無理。
<script src="hoge.cgi?query"></script> を動的生成でGETリクエストとか。
228 :
Name_Not_Found :05/01/07 18:22:34 ID:evR3Jo0G
<HTML> <HEAD> <TITLE>スクリプト</TITLE> </HEAD> <BODY> <SCRIPT Language="JavaScript"> document.bgcolor="silver" </SCRIPT> </BODY> </HTML> javascriptやりはじめたのですが、反映されないのです。 大文字小文字がいけないのでしょうか?
>>228 JavaScriptは大文字小文字半角全角を区別する。
230 :
Name_Not_Found :05/01/07 18:38:47 ID:evR3Jo0G
>>229 ありがとうございます。
色々いじってみます。
232 :
Name_Not_Found :05/01/08 00:21:04 ID:aPVly4Wn
<HTML> <HEAD> <TITLE>スクリプト</TITLE> </HEAD> <BODY> <p>これはテストです</p> <A HREF="#" onClick="window.open()"><IMG SRC="image.jpg"></A> <SCRIPT Language="JavaScript"> document.bgColor="#FFEFD5" </SCRIPT> </BODY> </HTML> あれからちょっと進みました。 これでJPEG画像をとりこみたいのですが、失敗します。 マイピクチャの方に原因があるのでしょうか?
>>232 よくわからん。image.jpgが表示されないと? ならスレ違い
234 :
Name_Not_Found :05/01/08 00:46:09 ID:aPVly4Wn
>>233 ごめんなさい。解決しました。
今日はもう寝ます。ありがとうございました
235 :
Name_Not_Found :05/01/08 00:52:39 ID:Cn3c732E
はじめまして <script language="JavaScript" type="text/JavaScript"> <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } //--> </SCRIPT> はどういう意味か教えてください。お願いします
236 :
Name_Not_Found :05/01/08 00:54:04 ID:Cn3c732E
作ったページを見ようとしてサーバーにアップしたのですが、 アップしてらIFRAMEの部分が見れませんでした。 これはJAVASCRPTと関係あるのでしょうか?
>>235 名前から察するにImagesをpreloadしている
>>236 あるかもしれないしないかもしれない
238 :
235,236 :05/01/08 01:02:21 ID:Cn3c732E
この場合はどのように、IFRAMEをロードするようにできるのですか? できたら教えてください。
>>238 >>235 と
>>236 とは関係あるのか無いのか。
「見れない・できない・無理」は禁物だ。状況を説明すべし。
エラーがあるなら添えて初心者スレへ。
240 :
235,236 :05/01/08 01:30:53 ID:Cn3c732E
<script language="JavaScript" type="text/JavaScript"> <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } //--> </SCRIPT> はIFRAMEをロードすることと関係ありますか? 自分のソースみてここだけがよくわかりません。
242 :
Name_Not_Found :05/01/08 01:42:51 ID:Cn3c732E
IFRAMEがあるページをDREAMWEAVERで作りました。 自分のPC上、ページのテストをしましたら全て順調にいきました。 しかし、サーバーにアップロードしたらIFRAMEのページが現れなく、 IFRAMEのページが見つからないと出ます。 その後にボタンを押せば、IFRAMEのページはでます。 どこに問題があるのでしょうか? 教えてください。
2歳児か
胎児ですよ
245 :
Name_Not_Found :05/01/08 04:29:10 ID:7RxKOxKf
<form method=post action="maito:xxx" onsubmit="chk1( this )"> function chk1 ( p ) { ここでは p でフォームの中身を参照できる chk2( p ); } function chk2 ( q ) { ここでは q でフォームの中身を参照しようとすると、 「Nullまたはオブジェクトではありません」とエラーになる なぜだ? }
変数 q の中身をダンプしろ。
nullってわかっててダンプしろっていうのはなぁ… 245の単純なミスだと思う。
249 :
Name_Not_Found :05/01/08 10:10:07 ID:K0ThBD0u
function chk2 ( q ) { ここでは q でフォームの中身を参照しようとすると、 「Nullまたはオブジェクトではありません」とエラーになる NNではちゃんと動作するのですよ IEではエラー なぜ? }
IE固有の問題はMSのお客様相談センターで聞くしかないな。
251 :
Name_Not_Found :05/01/08 10:54:23 ID:K0ThBD0u
function chk2 ( q ) { alert( q ); これはだいじょぶ document.write( q ); これはダメ なぜ? }
とりあえず q じゃなくて普通の文字列で同じことを試せば分かるんじゃないかなあ・・・
253 :
Name_Not_Found :05/01/08 11:51:53 ID:K0ThBD0u
function chk2 ( q ) { alert( q ); これはだいじょぶ document.write( q ); これはダメ document.write( "文字列" ); これは問題ないのです どうやら他窓はOKで自窓にwrite()するとダメなのです なぜ? }
>>253 エラーを再現できん。つまり普通に動く。
なぜ?
255 :
Name_Not_Found :05/01/08 12:08:50 ID:K0ThBD0u
function chk2 ( q ) { document.open(); alert( q.vx.value ); q はフォームのオブジェクトなのです document.write( q.vx.value ); これはダメ NNではOKで IEはダメなのです なぜ? }
NNの挙動のほうがおかしい気がする・・・ document.open() は新しいドキュメントをオープンするのでそれまでの ドキュメントは消去されるはず。つーわけで「q.vx.value」が document.open() 後は読み出せない。 function chk2 ( q ) { v = q.vx.value; document.open(); alert( v ); document.write( v ); ... } だとどうだろう。
> document.open() は新しいドキュメントをオープンするのでそれまでの > ドキュメントは消去されるはず んなこたぁないよ。
Cのfopenでファイルが消えない、といったら想像しやすいだろうか。
Perlのopenでファイルが消えない、といったら想像しやすいだろうか。
PHPのfopenでファイルが消えない、といったら想像しやすいだろうか。
261 :
Name_Not_Found :05/01/08 13:46:35 ID:K0ThBD0u
function chk2 ( q ) { v = q.vx.value; document.open(); document.write( v ); これはうまくいきました どうもありがとう }
262 :
Name_Not_Found :05/01/08 14:00:34 ID:K0ThBD0u
// 一難去ってまた一難なのです function subfunc() { NNでは、subfunc()が未定義だと言うのです なぜ? } function mainfunc () { with ( document ) { open(); subfunc(); close(); } }
263 :
Name_Not_Found :05/01/08 14:30:44 ID:K0ThBD0u
function mainfunc () { ちなみに、こうやってもダメなのです document.open(); subfunc(); document.close(); }
>>257-260 意味不明なことをわざと書くな。つうかJavaScript得意じゃないだろ。回答するな。
>>262 >>256 読んだか?
そもそも、document.open → document.write って、どんなブラウザ想定してんだ?
7、8年前にタイムスリップしたような質問を発掘してんじゃねえよ。
267 :
Name_Not_Found :05/01/08 15:44:31 ID:K0ThBD0u
パブロフの犬がいるのです
268 :
Name_Not_Found :05/01/08 16:04:30 ID:K0ThBD0u
function mainfunc () { subfunc(); これすら未定義だというのです with ( document ) { open(); 何もしない close(); } }
>>268 いちいち小出しにせずにソース全部出しとけよ。
今のままじゃmainfuncが呼ばれるタイミングがわからん。
270 :
Name_Not_Found :05/01/08 16:12:06 ID:aPVly4Wn
<HTML> <HEAD> <TITLE>スクリプト</TITLE> <SCRIPT Language="JavaScript"> window.open("index.html",,"width=300,height=200") </SCRIPT> </HEAD> <BODY> <p>これはテストです</p> </BODY> </HTML> これを実行させたいのですけど、反映してくれません window.open("index.html")でやると実行してくれるのです。 ""がいけないのでしょうか?
273 :
Name_Not_Found :05/01/08 16:23:56 ID:aPVly4Wn
275 :
Name_Not_Found :05/01/08 19:44:08 ID:K0ThBD0u
function mainfunc () { subfunc(); 結局perlのCGIでJSを書くことにしました やれやれ with ( document ) { 何もしない } }
>>274 >>257 は正しくない。新規に document オブジェクトが作られるのは事実。
>>256 は間違ってないが、的外れ。
その関数の宣言は、document.hoge()=function(){} というわけではないので、
document が一新されても関係なく残っていなければおかしい。
//
>>265 でも書いたが、document.open を使うブラウザが存在しないわな。
// だから、これがレガシーな実装に準拠していようがいまいが、
// だれも困ることがないという。
何を偉そうに解説しているのか全然理解できないですが。document.open()を 呼ぶと実行中のページの中身がクリアされてJavaScriptコードも含めてまっさら になくなってしまう、というのは正しいでしょ。まあわざわざ呼ぶ必然性はない けどどのブラウザにだってあることはある。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> </head><body> <script type="text/javascript"> count = 0; setInterval(function() { document.getElementById('d0').innerHTML= (++count); }, 100); setTimeout(function() { document.open(); }, 5000); </script> <div id="d0"></div> </body></html>
>>275 質問内容よりも、やたら with を使っているのが気になる。例えば、
>>262 > with ( document ) {
> open();
> subfunc();
> close();
が、もし問題無く動くとして、
document.open() を探す → ある、実行。
document.subfunc() を探す → ない (*)
→ window.subfunc() を探す → ある、実行。
document.close() を探す → ある、実行。
というかんじになる。(*) が無意味な探索になっている。
実際、JavaScript1.3 あたりからだったと思うが、ドキュメントに
「処理を著しく遅くするから with を使わないように」
と書かれ始めていた。例えば、
with (o) while (i < L) y( i);
に対して、事前に、
var o = { i: 0, L: 10000, y: function (x) {...}}
のようになっていることは作為無しにはあり得ないだろう。ふつうは、
var o = { y: function (x) {...}}
var i = 0, L = 10000;
というかんじになっているだろうから、同じように with を使ってしまうと、
恩恵を受けるのは、o.y だけで、他は (*) のような蛇行を強いられる。
with が推奨されなくなったのは、こういう事実を踏まえている。
>>277 > document.open()を
> 呼ぶと実行中のページの中身がクリアされて
> JavaScriptコードも含めてまっさら
> になくなってしまう、というのは正しい
>>276 の通り、
JavaScriptコードそれ自体がまっさらになっても、
document オブジェクトを経由しなければ、残る。
これを利用したもので、window.name に文字列を一時保管するのがあるわな。
ホストが違っても、ブラウザを閉じるまで有効だから、
ブラウザを閉じるまでの一時的なcookieやuserDataを発行するよりは
確実にセッション情報を保持できるから普通に使われてるだろ。
ああ、先に
>>277 のかいたHTMLをよく読むべきだった。
あほ過ぎる。このあほにレスした自分がはずかしい。
>>280 documentオブジェクトを経由しないように直してみましたが、
やっぱり5秒たつとカウント止まるように思います。なぜでしょう。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
count = 0;
setInterval(function() { window.status = (++count); }, 100);
setTimeout(function() { document.open(); }, 5000);
</script>
</body></html>
えっと、ある資料請求のフォームがあるんですが、
そのページに(正確にはフォームより上側)にベリサインマークの画像を置いてます。
(外部サーバ(ベリサインとこ)にある画像を、<img src="
http://www.hogehoge....../hoge.jsp " />として呼び出してます)
で、こまったことに、ベリサインマークのレスポンスが悪いもんで(表示されるまで異様に時間がかかる)、
結果的に、フォームが表示されるのが遅く、資料請求数が減ってしまってます。
で、これを改善したいのですが、どうすれば得策でしょうか?
(なお、ベリサインシールをローカルにおくのはだめらしーです。なんでかはしりませんが)
//-----------------------------------------------------------
自分が考えたのは、とりあえず、ベリサインマークのところに(ダミーの)スペーサーgifを表示させて、
5秒くらいたってから(あるいは、ページがloadしきったら・・・どっちのほうがいいのかな)、
JavaScriptで、画像をベリサインマークに変えようかなぁと思ったのですが、
どうでしょう?
なんか難点ありますでしょか?
あるいは、もっと得策ありますでしょうか?
おわかりの方、よろしくお願いします。
>>283 > (なお、ベリサインシールをローカルにおくのはだめらしーです。なんでかはしりませんが)
これが判らんのなら、小細工しない方が良いよ。
たとえばさ、アンタが小細工をしてVerisignのマークを後から 出るようにできたとするわな。それが「不正」だとか言われない 確証はあるのかね。不正してでもクリックを増やせという話じゃ ないんだろ?こういうことは「たぶん大丈夫」なんかで進めない 方がいいと思うがね。
286 :
283 :05/01/09 14:15:23 ID:???
>>284-285 さん どもです。
んー、そですね。
ちとレギュレーション確認してみます。
質問です。 <ul id="id_ul"> <li>要素1</li> <li>要素2</li> <li>要素3</li> </ul> のような感じで、<li>の数が不定である場合、<li>を全て削除するにはどうすればいいのですか?
288 :
Name_Not_Found :05/01/09 17:58:27 ID:mnJWvGrE
<HTML> <HEAD> <TITLE>スクリプト</TITLE> <SCRIPT Language="JavaScript"> function myColor(){ if(document.myForm.myBlue.checked && document.myForm. myYellow.checked && document.myForm.myRed.checked){ document.bgColor="gray" } else if(document.myForm.myBlue.checked && document. myForm.myYellow.checked ){ document.bgColor="green" } else if(document.myForm.myBlue.checked && document. myForm.myRed.checked ){ document.bgColor="purple" } else if(document.myForm.myYellow.checked && document. myForm.myRed.checked ){ document.bgColor="orange" } else if(document.myForm.myBlue.checked){ document.bgColor="blue" } else if(document.myForm.myYellow.checked){ document.bgColor="yellow" }
289 :
Name_Not_Found :05/01/09 17:59:24 ID:mnJWvGrE
else if(document.myForm.myRed.checked){ document.bgColor="red" } else{ document.bgColor="white" } } </SCRIPT> </HEAD> <BODY> <FORM name="myForm"> これはテストです <INPUT TYPE="checkbox" NAME="myBlue" onClick="myColor=()">青 <INPUT TYPE="checkbox" NAME="myYellow" onClick="myColor=()">黄 <INPUT TYPE="checkbox" NAME="myRed" onClick="myColor=()">赤 </FORM> </BODY> ぜんぜん反映してくれません。 &&の所がいけないのでしょうか
>>287 whileで回してliをremoveChildとか。
ulをcloneNode(false)してparentNode.replaceChildとか。
>>289 気になった3点。
myColor=() → myColor()
</HTML>が無い。
タグ内に全角スペース混じってる。
>>287 var e = document.getElementById('id_ul');
while(e.childNodes.length > 0) e.removeChild(e.firstChild);
293 :
Name_Not_Found :05/01/09 18:36:58 ID:mnJWvGrE
>>291 返答ありがとうございます
</HTML>はコピー忘れでした
myColor=() 全角の所直してみました
タグ内に全角スペース混じってる checked )の所と&の所直してみました
でも反映されず。まったく動作していないからもっと大きなものなのかな
function myColor(){ ↑この開始カッコも全角。 全角スペースはメモ帳の「置換」機能で一括削除するといい。 ざっと見ただけで全角スペースが16箇所ある。
295 :
Name_Not_Found :05/01/09 20:11:27 ID:mnJWvGrE
置換機能便利ですね。やっぱり何の反応もしません。
296 :
287 :05/01/09 20:34:10 ID:???
>>290 ,
>>292 ありがとうございます。
あと、e.childNodes.lengthはe.hasChildNodes()でも問題は無いんでしょうか?
>>296 そんなのどっちでも同じってか趣味の問題でしょ。
298 :
Name_Not_Found :05/01/09 21:05:18 ID:mnJWvGrE
<HTML> <HEAD> <TITLE>スクリプト</TITLE> <SCRIPT Language="JavaScript"> function myColor(){ if(document.myForm.myMenu.value == "myBlue"){ document.bgColor="blue" } else if(document.myForm.myMenu.value == "myYellow"){ document.bgColor="yellow" } else if(document.myForm.myMenu.value == "myRed"){ document.bgColor="red" } } </SCRIPT> </HEAD> <BODY> <FORM NAME="myForm"> これはテストです <SELECT NAME="myMenu"onChange="myColor()"> <OPTION VALUUE="myBlue">青 <OPTION VALUUE="myYellow">黄 <OPTION VALUUE="myRed">赤 </SELECT> </FORM> </BODY> </HTML> 似たようなやつもだめだ〜。先進めず
>>298 今HTMLとJavaScriptを同時に勉強中なの?
それともコピペして使えれば良いや、って感じ?
300 :
Name_Not_Found :05/01/09 22:04:17 ID:mnJWvGrE
どちらかというとお勉強のほうです。 コピペだけなら、いつでもできると思うし なんか芸がないかなと思ってみたり
心優しいエロい人よ、 オレにVALUUEという単語の意味を教えてくれ
>>300 さらにもっと短いのからやれ。1文字でもエラーがあればプログラムは
まったく動かないというのは知ってるだろ?修行が足りなさすぎ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var a = [ 'white', /* 000 */ 'red', /* 001 */ 'yellow', /* 010 */
'orange', /* 011 */ 'blue', /* 100 */ 'purple', /* 101 */
'green', /* 110 */ 'gray']; /* 111 */
function myC() {
var v = 0, b = document.documentElement || document.body;
if(document.forms.myForm.elements.myBlue.checked) v |= 4;
if(document.forms.myForm.elements.myYellow.checked) v |= 2;
if(document.forms.myForm.elements.myRed.checked) v |= 1;
b.style.backgroundColor = a[v];
}
</script></head><body>
<form name="myForm" action="#" onsubmit="return false"><p>
<input type="checkbox" name="myBlue" onclick="myC()">Blue<br>
<input type="checkbox" name="myYellow" onclick="myC()">Yellow<br>
<input type="checkbox" name="myRed" onclick="myC()">Red</p></form>
</body></html>
303 :
Name_Not_Found :05/01/10 04:02:33 ID:tWSUjNis
IE6.0の上に損益計算書の入力シートを配置しようとしました。 数字の入力欄を<input type=text name="" size=8>を300個ぐらい配置 する事で解決しようとしましたが、入力欄の上限ってあるのでしょうか? 一応、ブラウザでは動くようなのですが・・・。
>>303 上限はないけどね。そんなん使い勝手いいの?入力する瞬間に
クリックするとそこが入力欄に切り替わるとかの方がスマート
そうな気もする。
Web作成って意味では板違いなんですが質問いいですか? セレクトボックスでリンクするスクリプト(選択のみでジャンプ出来るやつ)、 これって例えばC:\〜みたいなローカルに向けてリンクさせる事はできないんでしょうか。 自分は*.plsでネットラジオのurlを幾つか保存しているのですが わざわざフォルダを開き、ファイルを選ぶよりは一つのhtmlにまとめて 選択できるようしたいなって考えてるわけです。 ローカル以外なら2chだろうとamazonだろうと問題なく使えるので スクリプトの記述そのものは間違ってない筈なんですが。。。
306 :
303 :05/01/10 12:16:31 ID:???
>>304 うあ、ありがとうございます。
>入力する瞬間にクリックするとそこが入力欄に切り替わるとかの方がスマート
そんな事できるんですか・・・
頑張ります!
>>305 もしかしてローカルファイル等へのURIの書き方が分からないという
話?そんなのJavaScriptと関係ないがな。セキュリティ上の問題で
Web経由で開いたページのローカルファイルへのリンクが動作しない
ようになっているのを回避したいという話?それもJavaScriptと関係
ないっつかJSじゃ回避できないよなあ。どっかよそでやって。
>>306 簡単なデモ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function c(row, col, elt) {
var v = 'value="' + elt.innerHTML + '"', n = ' name="r'+row+'c'+col+'"';
elt.innerHTML = '<input type="text" ' + v + n + 'size="3">';
elt.onclick = null;
}
</script></head><body>
<form name="f0" action="#"><p><input type="submit"><br>
<table summary="test" border="2"><tbody>
<tr><th onclick="c(0,0,this)">あ</th><th onclick="c(0,1,this)">い</th></tr>
<tr><th onclick="c(1,0,this)">う</th><th onclick="c(1,1,this)">え</th></tr>
</tbody></table></p></form></body></html>
310 :
Name_Not_Found :05/01/10 16:00:06 ID:gF79VfIh
このようなフォームがあるのですが、 <form name="A001"> <input type="hidden" name="v1" value="130"> <input type="hidden" name="v2" value="大きなサイズ"> <input type="button" name="inc" value="増やす" onClick="increase()"> <input type="button" name="dec"value="減らす" onClick="decreaset()"> <input type="text" name="t1"> </form> onClickで呼び出す処理にパラメータを渡さずにフォームの中身を読み書きするには どうしたらいいでしょうか?
>>310 IDつけて
document.getElementById("ID").value
とか?
俺も初心者なので違ってたらすまそ
312 :
Name_Not_Found :05/01/10 16:45:09 ID:gF79VfIh
>>311 レスありがd。おれも初心者です。
やっぱりバラメータ無しは無理なんで、this.formを渡すことにしました。
>>310 使い回ししないなら直で書いてもいいじゃん
document.A001.v1.value
>>308 HSI=>RGB変換を使うのはどうだろう。
数式はググれば出てくるはず。
もしくは
#FF0000・・・#FF0011・・・#FF0022・・・
とスクリプトで全部生成して配列に格納してから順次参照していくとか。
315 :
306 :05/01/10 19:18:55 ID:???
>>309 今までは新人が「学生時代はJavaScriptでプログラムをやってました。」
等と言ったら最後、コケにしていた自分ですが、近頃は
「JavaScriptを侮っていた自分は、朝鮮戦争初期のアメリカ軍のようだな」
と思うようになりました。(児島譲著・朝鮮戦争第一巻参照)
ありがとうございました。
317 :
Name_Not_Found :05/01/11 00:33:31 ID:nFDxlz/w
319 :
308 :05/01/11 10:03:41 ID:???
>>314 HSI=>RGB=>HEX変換となり重そうです。
>もしくは
>#FF0000・・・#FF0011・・・#FF0022・・・
>とスクリプトで全部生成して配列に格納してから順次参照していくとか。
Hue,0,60,120,180,240,300
16進値,FF0000,FFFF00,00FF00,00FFFF,0000FF,FF00FF
10進値,[255.000.000],[255.255.000],[000.255.000],[000.255.255],[000.000.255],[255.000.255]
こういう順序で配列を生成するのが難しいです。
http://www.dakiny.com/color/a.html ここのような順番を出したいのですが分かりません。お分かりならお教え下さい。
>>319 それはJSじゃなくて、アルゴリズムの質問だろ。
他イケ。
321 :
Name_Not_Found :05/01/11 15:40:32 ID:aBhPo1Xf
<input type="button" value="戻る" onClick="history.back()"> これをJavaScriptで書こうとしているのですが、うまくいきません。 btn = document.createElement( "input" ); btn.setAttribute( "type", "button" ); btn.setAttribute( "value", "戻る" ); btn.setAttributeNode( "onClick" ); btn.setAttribute( "onClick", "history.back()" ); これで[戻る]ボタンはできるものの、onClickが設定されません。 setAttribute()、createAttribute()も試してみましたがダメでした。
>>321 >>btn.onclick = function(){ 処理 }
としてはどうだろうか。
323 :
Name_Not_Found :05/01/11 16:04:51 ID:aBhPo1Xf
>>322 ありがとうございます。ところが……
ボタンを押したときではなく、その行が実行されるときに定義した処理が実行されちゃいました。(汗
325 :
Name_Not_Found :05/01/11 17:05:55 ID:aBhPo1Xf
>>324 btn.setAttributeNode( document.createAttribute( "onClick" ) );
btn.onClick = function() {
alert( "おほほほ" );
}
>>325 JavaScriptは大文字小文字区別するぞ。勝手に大文字にすんな!!!
createAttributeなんか呼ばないでもいいんだ!
btn.onclick = function() { alert("おほほほ"); };
さあこの通りに直してみ!
>>321 DOM的にはaddEventListnerじゃないか
328 :
Name_Not_Found :05/01/11 17:14:25 ID:aBhPo1Xf
329 :
Name_Not_Found :05/01/11 17:23:11 ID:aBhPo1Xf
>>326 これもOKでした。
function func () { }
btn.setAttribute( "onclick", func );
func()にパラメータを渡すときはどうしたら???
330 :
Name_Not_Found :05/01/11 17:25:31 ID:aBhPo1Xf
>>327 おっしゃるとおりです。
ところがボタンがたくさんあるんで、addEventListenerを使うとコードが長くなっちゃいます。
331 :
Name_Not_Found :05/01/11 20:33:43 ID:edVXAa6W
divタグの中身をDOMで何かある度に変更っていう処理を //ここで中身を全部消す。 while(hoge.childNodes.length) { hoge.removeChild(hoge.lastChild); } //追加 hoge.appendChild(hogehoge); って感じでやってるんですが、もっといい方法ありますか?
フレームでwebページをAとBに分割して、Aに表示するhtmlファイルを、 用意した3つ程のhtmlファイルの中からランダム(確率は不問)で選んで 表示するというのは、どういうスクリプトを書けばいいんでしょうか? どなたかよろしくお願いします。
var page = new Array("page1.html","page2.html","page3.html"); i = Math.floor(Math.random() * 3); location.href = page[i];
334 :
322 :05/01/11 23:09:29 ID:???
>>327 結果はとほほな内容だったけど、質問者がフォーム部品の生成ではまっているようだったので、
MacIEを相手にしているのかな、と勝手に想像してあえて古い書き方にしてみました。
DOMいじりで統一するならeventListenerがいいよね。
<form name=f1> <input type="text" name="n"> </form> とあったとき、フォームの値を参照するのに document.f1.n とか document.forms[0].n とかやったら、 そんなプロパティーは無いと怒られますた。 どうすりゃ怒られずにすむでしょ?
document.forms[0].n.value
以下の内容のHTMLファイルを作るとエラーとなるのは どこに問題があるのでしょうか? -------------------------------------------- <script type="text/javascript"> document.write('<span id="span"></span>'); alert(document.getElementById('span').id); </script> -------------------------------------------- IE,Firefoxではエラーになり、Operaではエラーになりません。 また、この一番最初に 「任意のテキスト」か"<body>"を挿入するとエラーにならず、 body以外のタグを入れてもエラーのままです。
>>338 document がないから。
その辺のことが理解できるまでは、極端にhtmlのルールからはずれるような書き方は
しない方がいいよ。
>>339 > document がない
Firefox てすと。
alert(document); // [object HTMLDocument]
> 極端にhtmlのルールからはずれる
極端に、は大袈裟だと思うが。
html、head、bodyの3つの要素型は開始タグも終了タグも省略可能で、
この場合、span要素を書き出しているから、body要素が補完され、
残りの要素も自動補完されて然るべき。
「正しいHTML」にするためには、1つのtitle要素をscript要素より前に
書くだけでよいし、DTDを明示しておけば、より正しくなるし。
>>338 要素の自動補完に手間取っているだけだろう、と好意的に憶測してみる。
Firefox てすと。
document.write('<span id="span"><\/span>');
setTimeout("alert(document.getElementById('span').id)", 0); // span
>>338 Firefox テスト。
<script type="text/javascript">
document.write('<span id="span"><\/span>');
</script>
とだけ書いて、javascript:alert(document.documentElement.innerHTML) した結果:
<head><script type="text/javascript">
document.write('<span id="span"><\/span>');
</script></head><body><span id="span"></span></body>
Firefox は
>>340 で書いたより賢く自動補完とdocument.writeしている。
342 :
338 :05/01/12 23:43:41 ID:???
>>339-341 レスありがとうございます。
<span></span>
<script type="text/javascript">
alert(document.documentElement.innerHTML);
setTimeout("alert(document.documentElement.innerHTML)", 0);
</script>
上の結果から判断すると head, bodyを省略した再は
script は head の子に、span は body の子になるように補完され、
head から先に描画されるので、
> alert(document.documentElement.innerHTML);
時にはまだ span が存在しないためエラーになる。
ということでいいんでしょうか?
Operaではともに body の子になるため問題が無いようです。
また、なぜか text node が存在していても、ともに body の子要素になるようです。
<FORM NAME="F1"> <INPUT TYPE="hidden" NAME="In1" VALUE=""> というフォームがあって、 document.F1.In1.value = 1; とやると入るのは整数値?文字?
typeof document.F1.In1.value じゃだめですか?
右辺に1とだけ書けば数値だろ普通
>>344-345 代入した後に
if ( document.F1.In1.value ) == 1 { }
とかやったらしっかり動作していたんで、数値がはいったもよん。
>>346 if (document.F1.In1.value == "1") も試してから言ってるか
if (document.F1.In1.value === 1) ならfalseじゃね?
348 :
Name_Not_Found :05/01/13 04:18:41 ID:lVyi8zq4
WinのIEでFlashが入っていても入ってないと判定されてしまいます。どこが問題なんでしょうか? <script language="JavaScript" type="text/JavaScript"> <!-- function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { //v4.0 var ok=false; document.MM_returnValue = false; with (navigator) if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) { ok=(plugins && plugins[plgIn]); } else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1 if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null) ok=window.MM_flash; else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null) ok=window.MM_dir; else ok=autoGo; } if (!ok) theURL=altURL; if (theURL) window.location=theURL; } //--> </script> </head> <body onLoad="MM_checkPlugin('Shockwave Flash','choice.html','getflash.html',false);return document.MM_returnValue"> </body> <script name="Used by MM_checkPlugin" language="javascript"> <!-- with (navigator) if (appName.indexOf('Microsoft')!=-1 && appVersion.indexOf('Mac')==-1) document.write(''+ '<scr'+'ipt language="VBScript">\nOn error resume next\n'+ 'MM_dir = IsObject(CreateObject("SWCtl.SWCtl.1"))\n'+ 'MM_flash = NOT IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash"))\n</scr'+'ipt>'); //--> </script> </html>
349 :
Name_Not_Found :05/01/13 17:07:36 ID:l1xboQRe
クッキーが焼けなくて困りますた。 expires = new Date(); expires.setTime( expires.getTime() + ( 60 * 60 * 24 * 1000 * 365 ) ); document.cookie = "ABC=" + escape( str ) + "; expires=" + expires + ";"; if ( document.cookie ) alert( document.cookie ); else alert( "空" ); 他のサイトのクッキーは食うのでブラウザの設定とかは問題ないはず…
>>349 クッキーのexpiresははGMT形式で。
expires = new Date();
expires.setTime( expires.getTime() + ( 60 * 60 * 24 * 1000 * 365 ) );
expires = expires.toGMTString();
document.cookie = "ABC=" + escape( str ) + "; expires=" + expires + ";";
351 :
Name_Not_Found :05/01/13 17:51:14 ID:l1xboQRe
>>350 がーん! 知らなかった…
どうもありがとう。
電話番号のチェックをしようと思うのですが、うまくいきません。 if ( tel.match( /\d{2,6}-\d{0,4}-\d{4}/ ) ) return true; \d{2,6} は2〜6桁の数字というつもりなのですが、間違っているでしょうか?
return Boolean(tel.match(/^\d{2,6}-\d{0,4}-\d{4}$/)); 先頭と末尾にアンカー(固定)しないと部分文字列がマッチ してしまうでしょ。
アンカーとかいらねーし
355 :
Name_Not_Found :05/01/13 22:09:31 ID:XkZetFMG
スレ違いだったらごめんなさい。 Javascriptを使っているJetCHATにproxyか何かでIPを カモフラージュみたいにしてアク禁をまぬがれる方法を 教えて頂きたいです。僕がアク禁をされている訳じゃないのですが、 実際そういう人が居たので気になって・・・ 教えて頂ければ幸いです。よろしくお願い致します。
356 :
Name_Not_Found :05/01/13 22:17:12 ID:1XuEnpJa
tableで指定した範囲で画像をランダムに出すscript導入したいんですが <script type="text/javascript"> <!--- img = new Array(); // img[0] = 画像 img[1] = 画像 img[2] = "画像 function setimg() { n = Math.floor(Math.random() *3); // document.write("<img src='",img[n],"' WIDTH=数値 HEIGHT=数値 border=数値>"); } //---> </script> これで導入して表示されないんですがどうやったらうまく表示されますでしょうか?
>>356 >>9 Q3参照
それにさ、tableで指定した範囲に画像って、
setimgでそのtableを指定している部分がどこにも無いじゃん。
どこでもdocument.write()したら超能力であるかのように自動的に、 自分が入って欲しいと思うところにその内容が挿入された状態になる と思っているんでは。
>>356 iframeの中にimgタグのhtml出力でいいじゃん。
<textarea>のテキストを escape() してクッキー焼いてから、unescape() で取り出したものを <td>に貼り付けると、<pre>タグ使っても改行した後の行にスペース(?)が入っているように 見えるのは何故?
361 :
360 :05/01/14 01:47:11 ID:???
replace( /[\n\r]/g, "<br>" ) こうやったら キミんとこの嫁はん元気か?<br><br>ぼちぼちでんな ↑<pre>タグ取ったのになぜかそのまんま…
>>360 文字列を選択すると行末に空白があるように「見える」のはIEの仕様。
貼りつけてみれば空白は存在しないのはわかるだろ。
>>361 brが2個表れるのが不思議なのか?
だとしたらそれはIEが改行を\r\nに正規化するからであって何の不思議も無い。
教えてエロい人!!
エロい人は居ません
365 :
Name_Not_Found :05/01/14 10:20:16 ID:8wbGUX6r
すみません。 あるページ中に //========================================================== <a name="hoge" /><H2>ほげ</h2> <a name="hage" /><H2>はげ</h2> <a name="fuga" /><H2>ふが</h2> //========================================================== があるのですが、 これをもとに、(上記のh2がふえたり文字列が変わっても)自動的に <ul> <li><a href="#hoge">ほげ</a></li> <li><a href="#hage">はげ</a></li> <li><a href="#fuga">ふが</a></li> </ul> を表示させるJavaScript(VBScript)のかきかたってないでしょうか? //---------------------------------------------------------- できれば、 <a name="fuga" />もかかないようにしたいのですが、、、 それはむりですよねぇ・・・
ぜんぶh2に決まっているのならh2にID振れば<a name>は不要になるが。
>>365 var headingMap = new Array();
function insertTOCBefore(refChild) {
var toc = document.createElement("ul");
var headings = document.getElementsByTagName("h2");
for (var i = 0; i < headings.length; i++) {
var text = headings[i].firstChild.nodeValue;
var item = document.createElement("li");
headingMap[text] = headings[i];
item.appendChild(document.createTextNode(text));
item.onclick = goHeading;
toc.appendChild(item);
}
refChild.parentNode.insertBefore(toc, refChild);
}
function goHeading(evt) {
var source = (evt) ? evt.target : event.srcElement;
headingMap[source.firstChild.nodeValue].scrollIntoView();
}
window.onload = function() {
insertTOCBefore(document.getElementsByTagName("h1")[0].nextSibling);
};
IE6/Firefox 1.0にて動作確認。
目次をリンクにしたかったりOperaや古いブラウザにも対応させたかったら自分でどうぞ。
scrollToメソッドを使えばOperaにも対応できると思う。
>>365 スレ違いだがそんなマークアップ初めて見たな
369 :
Name_Not_Found :05/01/14 15:16:33 ID:9vn3iUpN
教えてください。 複数の画像を先読みしたいのですが 画像が多いしファイル名が数字の順番なので for関数を使ってみることにしました。 if(document.images){ movimg=new Array() for (i=0; i < 10; i++) { movimg[i] = new Image();movimg[i].src='00' + i + '.JPG' } } 動きません・・・。間違えてますでしょうか。 いろいろやってみたのですが、助けてください。
>>369 for (i=0; i < 10; i++) {
movimg[i] = new Image;
movimg[i].src='00' + i + '.JPG'
}
createElement()で作った<td>タグに class=xxx と入れたいんだけど、どうしたらいい? setAttribute()はだめだった。
>>371 IEだと"className"じゃないとダメとか
>>372 ピンポ〜ン!
うまくいった。サンキュー。
374 :
Name_Not_Found :05/01/14 16:48:38 ID:9Ca934Fl
Shift-JISの文字列をescape()なしでクッキーに焼くと、後でクッキー食べたときNN7.1 ENで 文字化けしているんですが、どうしたら復元できるでしょうか?
375 :
143 :05/01/14 17:02:30 ID:ZEPMRCJt
<input type="checkbox" value="checkbox"> <input type="text""> 左のチェックボックスを入れると右のテキストフィールドに任意の文字が出るようにしたいんですけれど これってJavaScriptで出来ますか?
>>375 できます。
と言ってほしいのか、このマゾ野郎!
377 :
375 :05/01/14 17:08:15 ID:???
違います。出来るなら教えてほしいんです。
>>374 escapeなし自体がそもそも間違いだから
380 :
375 :05/01/14 17:26:50 ID:???
全部です。そういうソースがあるなら教えてもらえますか?
383 :
375 :05/01/14 17:42:12 ID:???
分かりました。板汚してごめんね。
>>383 > 板汚して
板って言うあたりが確信犯だな。
385 :
Name_Not_Found :05/01/14 18:09:00 ID:9Ca934Fl
>>378 ううっ、やっぱり… orz
仕方ないのでescape()、unescape()追加しますた。
クッキーの値は UTF-8 でなければなりません。RFCで定義されています。
387 :
Name_Not_Found :05/01/15 03:06:41 ID:5cmHMNgd
画像上での右クリックメニュー用スクリプトとして、 「その画像のローカルキャッシュを指定したソフトで開く」 ということをしたいのですが、 キャッシュされたファイル名は、js側でどうやって取得すればいいんでしょうか?
>>388 どうもありがとうございます。
うーん、手動で検索するしかないかなあ。
__, .__ ( ・ω・;)
391 :
Name_Not_Found :05/01/15 15:18:51 ID:BF2Qoh8R
*.jsから他の*.jsをインクルードするには?
394 :
Name_Not_Found :05/01/15 15:57:52 ID:BF2Qoh8R
>>393 ううっ、createElement()ですか…
Perlのrequireみたいな記述はないんでしょうか?(朝からずっとぐぐっているのに見つかりません)
>>394 無いと思う。document.write('<script...')でもいい。
>>393 たいしたことはない。ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var e = document.createElement('script');
var b = document.documentElement || document.body;
b.appendChild(e); e.src = 'test.js';
}
</script></head><body>
<p><a href="javascript: test()">test</a></p>
</body></html>
397 :
Name_Not_Found :05/01/15 19:27:40 ID:BF2Qoh8R
>>395 orz
>>396 それやるくらいなら<head>に<script src=... します…
役立たず共晒しあげ
>>398 この
>>396 の方法なら思い立ったときいくつでも追加で読み込める
という利点があるけどね。ま、createElementとか恐いようならしょうも
ないんだけどね。
>>396 HTMLのDTDでは、HTML要素型の内容にSCRIPT要素型は定義されていない。
わざわざそれを無視して、html要素オブジェクト直下にscript要素オブジェクトを
生成追加している意図が誰にも (
>>396 含む) 分からないだろう。
>>394 > require
古くないWinIEなら、
とりあえずXMLHTTPで取ってきてeval。ActiveXObjectで引っかかるだろうから、
自分(script要素)にaddBehavior('#default#download')して、
http://msdn.microsoft.com/workshop/author/behaviors/reference/methods/startdownload.asp でonload後に取ってきて、eval。
どちらも、一旦「require」出来たら、userDataに記憶(属性値または#CDATA)しておけば次から速い。
Firefoxなら、XMLHttpRequestで同じことが出来るし、
いずれDOM3の(g|s)etUserDataが実装されるだろうし。
たいがいのDOM操作は、せいぜいDOM2-Coreの範囲におさまるわけで、
違いは、DOM2-EventsとWinIEのattachEventくらいだろう。
最大多数(WinIE)向けに書いて、それを「require」して、
attachEventをaddEventListenerに置換してevalすれば管理が楽。
最初から、attachEventの第三引数を意味無く与えておけば、置換が楽になる。
402 :
Name_Not_Found :05/01/16 00:29:52 ID:RC9DXhte
ほしゅ
あげたら危険だよ
404 :
Name_Not_Found :05/01/16 00:31:06 ID:jKZBvh8O
722 名前:Name_Not_Found [sage] 投稿日:05/01/15(土) 19:19:21 ID:??? そーだ、いいこと考えた! vipper.infoってwikiじゃん。 自由に編集、ファイル添付できるじゃん。 アダルト画像張り付けてやらね? そうすりゃ管理人の意図関係なく abされるじゃん! これひとつの事例としてまとめに歴史刻めるよな? 前グロ画像張り付けたとき 即効で書き戻されたけど、 やられないように真夜中に実行しよう♪
グローバル配列変数の使い方について教えてください。 いろいろな関数からその配列を初期化・更新するのですが、宣言の仕方は、、、 <script><!-- var a; // 配列 として、各関数の中で function fnc(){ a = new Array(); とするのと、 <script><!-- var a = new Array(); // 配列 どちらがいい(正しい)でしょうか。
後者でしょ。
var a = []; こうでもいい
location.reload( true )でページを再表示させると、<head>に<script src=... >で指定したJSファイルも 再読込されますよね? JSファイルが結構大きくなったので、再表示がちょっと重くなった感じなんですが、JSファイルを 再読込しないでページを再表示できないでしょうか?
>>409 FireFoxだから。ネスケ6や7もだな。
>>410 できません
再読込みしなかったらJSファイルを修正したときどうするつもり?
>>409 onscrollってIE専じゃなかったかな。
415 :
414 :05/01/16 12:30:29 ID:???
解決しました。pxを後ろにつけたらいけるみたいです。
416 :
Name_Not_Found :05/01/16 14:00:43 ID:7C+wDmN0
これからここでは 低レベルな質問したやつを死刑 即死刑 ぐぐってぐぐってぐぐりまくれ それからID強制表示にすれば自演なんてできっこないぜ
別に真面目にやってる限り、質問のレベルは問わないはずだが。 問題になるのは調べもしないとかの態度でしょ。
418 :
Name_Not_Found :05/01/16 15:51:17 ID:A5orsBKv
質問させてください。 geckoのDOMにIEでいうところのTextRange.htmlTextに あたるプロパティかなにかってありますか? 具体的にはgetSelection()で選択した範囲のHTML込みの テキストを取得したいのですけど。
Cプログラマなんだけど、オブジェクト指向言語としてのJavaScriptの入門書でいいのおせーて。
>>419 サイ本かMyUnixかなー。あとは知らない。
サイ本はわかったけど(www.openspc2.org/reibun/javascript/)、MyUnixって何?
424 :
321 :05/01/17 00:51:43 ID:e9SxuEpL
その後、 for ( i = 0; i < count; i++ ) { … btn = document.createElement( "input" ); btn.onclick = function ( i ) { abc( i ); }; … } とやったのですが、これは、 <input type= button onclick=abc(0) <input type= button onclick=abc(1) <input type= button onclick=abc(2) ↑こうなるんでしょうか? それとも、 <input type= button onclick=abc(i) <input type= button onclick=abc(i) <input type= button onclick=abc(i) ↑こうなるんでしょうか?
>>424 alert()とかはさんでやってみればわかるじゃん
<input ... onclick="abc()" ...
やってみりゃいいじゃん
428 :
Name_Not_Found :05/01/17 01:21:13 ID:e9SxuEpL
>>425 btn.onclick = function ( i ) { alert( i ); };
として、ボタンをクリックしたら全部 undefined と表示されますた。
ああ、困った…
430 :
Name_Not_Found :05/01/17 01:37:24 ID:e9SxuEpL
>>429 簡易データベースなんですけど、データベースの内容を一覧表示して、ボタンをクリックしたときに
そのデータを削除するようにしたいんです。
最初から作り直す気力は… orz
431 :
321 :05/01/17 02:26:33 ID:e9SxuEpL
NN7.1でやったら [object Event] と出ますた…
たぶんこうだろ btn.onclick = function() { abc( i ) };
>>432 それはダメね。変数iは1つだから。
>>428 正解はたぶん次のようにすること。
function f(i) { return function(i) { alert(i); }; }
for ( i = 0; i < count; i++ ) {
…
btn = document.createElement( "input" );
btn.onclick = f(i);
…
}
>>433 そりゃ同じだろ。パラメータとして渡るのはEventオブジェクトだけだよ。
しまった間違えた、これが正しい。パラメタではなく外側環境の 「i」を参照させる。 function f(i) { return function() { alert(i); }; } for ( i = 0; i < count; i++ ) { … btn = document.createElement( "input" ); btn.onclick = f(i); … }
eval("btn.onclick = f(i);");
437 :
321 :05/01/17 16:33:01 ID:n7V2k8tF
438 :
321 :05/01/17 17:13:50 ID:n7V2k8tF
setExpression()メソッドでオブジェクトを中央に配置したいのですが、 FirefoxでもOperaでもダメでした。 他に方法はないでしょうか?宜しくお願いします。
なんだって位置を計算して絶対位置指定すりゃどこにでも 置けるだろ?
441 :
Name_Not_Found :05/01/17 23:42:08 ID:0Y/oaKBS
ランダムに文字を表示にしつつ一文字づつ表示。 のやり方を教えて下さいよろしくおねがいします。
*どこに*表示するんだ?
猫の額に
>>439 setExpression は WinIE だけ。
FirefoxとOperaでは、positionをfixedにすると似たようなことが出来る。
(というか、これはほうむぺいじ作成のFAQで、もっと実用的な方法があるが。)
>>441 重複を許すのか、許さない(シャッフル)のか。
重複を許す場合、何文字取り出したいのか。
オリジナルWeb占いでも作ろうと思うので特に表示する場所は無いです
>>445 重複を許さない場合でよろしくお願いします。
で、自分ではどこまで勉強したのよ。全部書いたげるスレじゃ ないからね。
ランダムと一文字づつ表示のやり方はわかりました。 それを一緒にするやり方がどうもわからないです。
>>450 とりあえず、それぞれどうやっているか書いてみなよ。
その程度ならそれほど長くはないだろうし。
えーっとですね・・・ <META http-equiv="Content-Type" content="text/html;CHARSET=x-sjis"> <META http-equiv="Content-Style-Type" content="text/css"> <LINK rel="stylesheet" type="text/css" href="../../style.css"> <TITLE>タイトル</TITLE> <SCRIPT language="JavaScript"> <!-- x=0;var t="本文。"; function y() {x++;document.getElementById('z').innerHTML = t.substring(0,x); if( x >= t.length ){document.getElementById('z').innerHTML = t;} if( x < t.length ){setTimeout("y()", 100);}} //--> </SCRIPT> <BODY onLoad="y()"> <span id="z"></span> <SCRIPT language="javascript"> <!-- var c=new Array("1","2","3","4"); document.write(c[Math.floor(Math.random()*c.length)]); //--> </SCRIPT></BODY> </HTML> よくわからないですけど…こんな感じです。
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ★ ★ ☆ 新規質問は名前欄・メール欄を空にして行え ☆ ★ ★ ☆ 質問者が返信する際は、名前欄に「最初に質問したレス番号」を入れろ ☆ ★ ★ ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
>>452 まずは0〜(本文の文字数-1)の間で乱数を生成しろ。
次にcharAtで本文からランダムに1文字抜き出せ。
あとはinnerHTMLなりnodeValueなりで文字を書き出せ。
てか「よくわからない」じゃなくてFAQに挙げられたサイト読んで分かるようになれ。
>>452 もしかして、ランダムに1文字ずつっていうのは、ある文があって
その中の文字が1文字ずつ(最終的にあらわれる場所に)ランダムに
現れてくるっていうことなのかな。もしそうだとしたら、元の文字列
と同じ長さの空白文字列を用意してそれを1文字ずつ元の文字列に
置き換えて行くとかかな。
>>452 まず、表示したい文字列を配列に放り込む => この配列をstringとする
Math.floor(Math.random()*string.length) で一つ選ぶ。
ここまでが、ランダム表示部分。で、
関数 y() でtの代わりにstring[乱数]を使えばok
459 :
Name_Not_Found :05/01/18 13:28:48 ID:AEaW0Fgo
正規表現で質問です。 任意の文字数の英数字の最後に.(ドット)が続き、その塊を1回以上繰り返す。 というパターンを文字クラスを入れ子にして以下のように書いたのですが うまく動きません。どのように書けばよいかご教示願います。 /^[[0-9a-zA-Z]+\.]+$/
>>459 文字クラスというのは「順序」は表せないから。だいたいが
「0〜9の後にa〜zのどれかが来る」わけじゃないでしょ?
外側の[]を()に取り替えてみれ。
461 :
459 :05/01/18 17:42:05 ID:???
>>460 単にカッコでくくるだけでよかったんですね。
ありがとうございます。
462 :
Name_Not_Found :05/01/18 19:24:22 ID:ymitCJRI
document.getElementById('hoge').innerHTML = str; として入れたボタンのvalueを alert(document.forms[0].elements[1].value); で見るとundefinedになってしまいます。 ボタンの文字はきちんと出ていますが onClick="document.bgColor=this.value"で使いたいのですが.. 仕様上ダメなのでしょうか?
>>462 valueに入れるのはやめて適当なプロパティ名を考えて
そこに入れたらどうかな。
valueに入れないとbgColorが変えられないと思うのですが・・・。 連動メニューのボタン版なんです。大項目がselectで小項目がbuttonです 大項目を選択すると色名のボタンがhogeにinnerHTMLされるという感じなんですが いい案はないでしょうか?宜しくお願いします。
はあ? どういう風に覚えておこうと最後に色の指定を 要素.style.backgroundColor なりに入れればいいんでしょ。 valueから取り出せないっていうからだったらvalueと別の プロパティとに同じものを入れておいて別の方を取ればいい と思っただけで。べつに私の問題じゃないから好きにすれば。
>>462 ほかに原因があるとか、そういう可能性はないか? 動くっぽいぞ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>x</title></head><body>
<form>
<DIV id="hoge"></DIV>
</form>
<script type="text/javascript">
str = '<input type="button" value="Blue" onClick="document.bgColor=this.value">';
document.getElementById('hoge').innerHTML = str;
</script>
</body></html>
467 :
Name_Not_Found :05/01/19 14:16:13 ID:6F1/3uXn
質問です。 以下のように複数のラジオボタン選択項目を置き、 全て「yse」の値を選択した場合のみ 別ページへジャンプ出来る方法がありましたら教えて下さい。 <form name="form1" method="post" action=""> <p>問1 <input type="radio" name="Q1" value="yes">はい <input type="radio" name="Q1" value="no">いいえ <p>問2 <input type="radio" name="Q2" value="yes">はい <input type="radio" name="Q2" value="no">いいえ <p>問3 <input type="radio" name="Q3" value="yes">はい <input type="radio" name="Q3" value="no">いいえ</p> </form> 宜しくお願いします。
>>467 「別ページへジャンプ」っていうのはその条件のときのみフォームを送信できるってことでいいのかな?
onsubmitイベントですべての選択項目が"yes"のときはtrue、そうでなければfalseを返せ。
自分でやってみてうまくいかなかったのならうまくいかなかったソースを出せ。
469 :
467 :05/01/19 15:38:55 ID:???
>>468 サン
「別ページへジャンプ」は、(yesのみ選択された)条件のときのみ
アクセス許可され別のページに飛ばしたいという意味でした。
(ということはフォーム送信とイコールなのかな・・・?)
ほとんど知識が無いので似たようなソースを手本に作ろうと思ったのですが
それらしきものが見当らず、こちらで聞いてみました。
>>469 アクセス許可はJavaScriptではできない。ただチェックして飛ぶ飛ばない
を決めるのはできるけど、行き先ページを直リンしたら誰でも見えるので
いいのね?似たようなソースがないなんて大嘘でしょ、過去ログ読めって、
いくらでもあるよ。
471 :
467 :05/01/19 16:40:56 ID:???
>>469 サン
お返事ありがとうございます。
そこまで厳重にする予定ではないので直リンで行き先が見えて構いません。
過去ログ見てきます。
また分からなかったら質問するかもなので、その際は又よろしくです。
472 :
467 :05/01/19 17:16:31 ID:???
473 :
Name_Not_Found :05/01/19 20:28:19 ID:LL/jtsUB
質問です cloneNode() でコピーされた要素にidがあらかじめ設定されている場合、 idの重複は起きているのでしょうか。
474 :
Name_Not_Found :05/01/19 20:47:01 ID:Rzz2j6SM
携帯で作ったホムペに音楽が流れるようにしたいんですが、どのようなhtmlを使えばいいですか? 教えてください。 ちなみに、うpするところは用意しています。
>>474 それってJavaScriptと無関係
というか、それ以前の話で音楽だって種類があるから只「携帯で作ったホムペに音楽流したい」じゃ何がしたいのか意味不明
そもそも"携帯で開いてる時に音楽流したい"のか"携帯で作ったページだが音楽流したいのはPCで開いてる時"なのかが判らんし
前者ならcgiで着メロファイルを呼び出さなきゃ無理
しかもキャリア・機種毎で再生するファイル変えなきゃならん分非現実的
後者なら
<EMBED align=baseline MIDIファイル名 width=150 height=40 type=audio/midi repeat="true" loop="true" autostart="TRUE" border="0">
↑なんかは一つの実例
取り敢えずスレタイ位は読んでから投稿してくれ
>>473 起きているでしょう。しかしcloneしたものをドキュメントツリーに
差し込むまではcloneしたものは「別のツリー」なので重複は問題ない
ような気がします。差し込む前にIDを変更して回るとか。
iframeに読み込んだ外部ページの<title>を取得する方法ありますか?
他サーバなら絶対無理。FAQ
>>9 のQ1/A1にある通り。
479 :
Name_Not_Found :05/01/20 15:55:24 ID:eybTgc+8
スクロールバーである程度の領域に達したら音楽がなりはじめるようなことってできますか?
480 :
473 :05/01/20 16:38:27 ID:???
>>476 > 差し込むまではcloneしたものは「別のツリー」
よくわかりました。
どうもありがとう。
481 :
Name_Not_Found :05/01/20 17:06:41 ID:ZYLJwp5f
JSの場合クラスの配列ってどうやってやるんですか? var hage = new Array(3); var hage[0] = new class; var hage[1] = new class; var hage[2] = new class; こうゆう風に1つ1つnewしていくのはメンドーです。
482 :
Name_Not_Found :05/01/20 17:17:38 ID:ZYLJwp5f
↑ すみません、大した問題ではありませんでした。
>>481 あなた、for文って知ってる? ^_^;
var hage = new Array(3);
for(var i = 0; i < 3; ++i) hage[i] = new class();
484 :
481 :05/01/20 17:40:26 ID:???
やっぱ突っ込まれたか…図星ですorz
hogeを使うのは許せるが hageを使うのは許せない
hoke で。
<html> <head> <script language="javascript"> function test1_(a) { alert(a); setTimeout("test_1("+a+")",1000); } </script> </head> <body> <button onClick="test_1(this)">Click</button> </body> </html> このようにしてみたのですがsetTimeoutで呼ばれた時、 エラーが出てしまうのですが、何故だか分かりません... 誰かご教授をお願いします。
489 :
Name_Not_Found :05/01/20 21:41:55 ID:yHqiSqGF
すみません、質問です。 window.open() で開いた小窓に、親ウインドウ内から document.write() で <a href="#" onClick="window.print();">print</a> と書き込んだのですが、小窓のリンクをクリックしても IE6/win2000で動作しません。IE6/XPだとOKです。 また、win2000でも小窓のソースをファイル保存したものを 開くなら印刷ダイアログはちゃんと出ます。 どうしてなんでしょう? 私がヘタレなんですかね...
>>487 こういうことはちゃんと理解してから正解に到達するのが
自分のためだよね。そのalert(a)では何と表示されるか書いてみ。
みんなエディタはなに使ってんの?
493 :
Name_Not_Found :05/01/21 00:57:21 ID:ohZ5z1mK
age
Javascript程度ならメモ帳で充分
495 :
Name_Not_Found :05/01/21 09:59:13 ID:X46lwTBY
質問です。 フォーム内で、チェックボックスをチェックした場合のみ、 以降のテキストフィールドの入力を可能にしたいです。一応やってみたのが <script Language="JavaScript"><!-- function setTF(cOBJ,fName) { document.xxxform[fName].disabled = !cOBJ.checked; } // --></script> <form name="xxxform" method="post" action=""> <input type="checkbox" onClick="setTF(this,'field1','field2','field3')"> 承諾<P> 1<input name="field1" type="text" disabled><br> 2 <input name="field2" type="text" disabled><br> 3<input name="field3" type="text" disabled> </form> です。テキストフィールド「field1」は機能するのですが、2,3がダメです・・・。 あと、本当はチェックしたら、以降のフィールド全部を一括で入力可能にできたら 1番言いのですがそんな方法はございますか? フィールドの数が10数個あるのです。 宜しくお願いします。
関数にパラメタを4つ渡してるのに受ける方では2つしか 受け取っていないじゃん。脳内でいくつ渡してもよきにはからって くれるように勝手に期待すなって。 onclick="setTF(this,'field1');setTF(this,'field2');setTF(this,'field3');" あんたにはこういう地道なのがあってると思う。可変引数はもっと 修行積んでからね。
>>495 <script Language="JavaScript"><!--
function setTF(cOBJ) {
for (i = 1; i <= 3; i++) {
document.xxxform[i].disabled = !cOBJ.checked;
}
}
// --></script>
<form name="xxxform" method="post" action="">
<input type="checkbox" onClick="setTF(this)">
承諾<P>
1<input name="field1" type="text" disabled><br>
2<input name="field2" type="text" disabled><br>
3<input name="field3" type="text" disabled>
</form>
498 :
495 :05/01/21 11:55:14 ID:???
>>496 サン
ご回答ありがとうございます。
なるほど、こうすれば良かったんですね!手抜きしすぎてました。
>>497 サン
ご回答ありがとうございます。
神!これがやりたかったんです。本当に助かりました。
感謝です。
指定が必要な場合は
>>496 サンのやり方で指定していく事にしまs。
ありがとうございますた。
499 :
Name_Not_Found :05/01/21 13:29:00 ID:5QhwBdO6
こんな感じでxmlファイルを取得(IE6)していたのですが、 o = new ActiveXObject('Microsoft.XMLDOM'); o.async = false; o.load(<xml パス>); ※xmlはcgiで動的に出力 サイトをsslにしてhttpsとするとエラーになってしまいます。 具体的には o.parseError.reason に『 指定されたリソースのダウンロードは失敗しました。』 と出てしまいます。 httpの普通でやると出来るのにhttpsでアクセスするとダメです。xmlも静的なファイルだと大丈夫なのですが動的に出すと失敗するようです。 どのようにしたらよいのでしょうか?
>>499 鯖の認証方法の確認や、cgiによって出力されたファイル内容の確認についてはスレ違いだと思うがどうだろう
501 :
Name_Not_Found :05/01/21 15:11:46 ID:+EsSvIMy
教えて下さい。
http://aaa/bbb/ccc/??? 上記のようなURLの「???」の部分にフォームに入力された文字列を埋め込み、そのURLに
ジャンプさせるようなjavascriptはどのように記述すれば良いのでしょうか?
ご教授宜しくお願い致します。
504 :
Name_Not_Found :05/01/21 16:01:47 ID:+EsSvIMy
>>503 ありがとうございます。
しかしうまくいかない。。。
ちなみに部品名とは??
505 :
Name_Not_Found :05/01/21 17:10:49 ID:5QhwBdO6
>>502 ありがとうございます。
教えていただいたページを参考に、Pragma: no-cacheなどを出さないようにしたら出来ました。
バグ?なんですね。
パケット拾ってみたらちゃんとクライアントまではデータ来てるのように見えるのに
IEで×になってますね。
>>504 フォーム名→「<form name="..." ...>」のnameの値。
部品名→「<input type="text" name="..." ...>」のnameの値。
引数って 「ひきすう」ですか?それとも 「いんすう」ですか?
なぜ 「ひきかず」、や「いんかず」という読みの発想は無いんだあああああああああ!!!!
「引数」はもちろん「パラメータ」って読むんだよ。
. ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
(;´Д`)< スンマセン、直ぐに片付けます
-=≡ / ヽ \_______
. /| | |. |
-=≡ /. \ヽ/\\_
/ ヽ⌒)==ヽ_)= ∧_∧
-= / /⌒\.\ || || (´・ω・`) ←
>>508 / / > ) || || ( つ旦O
/ / / /_||_ || と_)_) _.
し' (_つ ̄(_)) ̄ (.)) ̄ (_)) ̄(.))
511 :
Name_Not_Found :05/01/21 19:18:51 ID:vBI5Odhj
1つのボタン(画像ファイル)を押すと次々に背景画像が変わるのはどうすればいいでしょう? ボタンの画像 button.gif 背景画像 bg1.gif bg2.gif bg3.gif よろしくお願いします。
512 :
511 :05/01/21 19:20:50 ID:???
【追加】 bg3.gif まで行ったら bg1.gif に戻ってくるようにしたいです。
>>512 まず自分がどこまでやったのか(勉強したのかも含む)を書いてくれ。
何もせずして、ソースだけ欲しいっていうんじゃスレ違いだ。
ブラウザを判別して、自動的にページを振り分けてジャンプするスクリプトを探してるんですが、 どっかにいいサンプル落ちてませんか?
516 :
Name_Not_Found :05/01/21 20:33:09 ID:Rr6iBs/g
buttonの配列を作りました。 押されたボタンの要素番号を取得するにはどうすればいいですか?
519 :
487 :05/01/21 20:44:41 ID:???
>>488 >>490 すみません..まだ良く理解できていないもので...
やりたいことを詳しく書くと
リンクをクリックしたら引数にオブジェクトを指定し、
そのオブジェクトのheightを少しづつ大きくしていきたいのです。
XPのエクスプローラーで表示される左側のボックスみたいな感じです。
対象のオブジェクトが複数あるのでthisで指定すれば簡単に出来ると思ったのですが...
>>487 のようにエラーになってしまいます...
出来たら原因と思われる部分に関連する用語だけでも教えてもらえないでしょうか?
ググって来ますので...
520 :
516 :05/01/21 20:55:29 ID:???
何となく分かりました。 というか要素番号を表すプロパティがないようなので、自分で識別番号を与えときます。
524 :
516 :05/01/21 21:04:39 ID:???
525 :
516 :05/01/21 21:07:20 ID:???
>>523 On_Click( func(this) )
って渡して、func内で番号に応じて処理を分けたい
まだ始めて3日目なんで分けわかんないこと言ってるかもw
526 :
516 :05/01/21 21:08:51 ID:???
527 :
516 :05/01/21 21:10:50 ID:???
誰か教えてください
thisの意味わかってればそんな質問など出ないはずだ。
>>527 「要素番号」というのはどういう定義なのか分からん。
もしかして「document.forms.フォーム名.elements[i]」の
iに相当する番号のこと?もしそうなら
function f(o) {
for(var i = 0; i < o.form.elements.length; ++i) {
if(o === o.form.elements[i]) return i;
}
reutrn -1;
}
とかして
<button onclick="alert(f(this))">
とかで試してみ。洩れは書いただけでチェックしてないからね。
>>519 thisを引数で渡すのはいいよ。でもそれを文字列に連結したら
それはもうオブジェクトじゃないから役に立たないぽ。そもそも
setTimeout()の第1引数に文字列渡すのがダサイのであって、
function test1_(a) {
aを使った処理処理
setTimeout(function() { test_1(a); },1000);
}
というふうに関数リテラル書けば何の問題もない。
そうだ、
>>522 サン、シングルクォーテーションとダブル
クォーテーションを組み合わせたらどううまくできるように
なるんだ?書いてみせてよ。洩れは全然思いつかんぞ。
532 :
519 :05/01/21 22:38:09 ID:???
533 :
516 :05/01/21 22:41:04 ID:???
>>529 サンクス。
でも、一応違う形で解決しました。
for (i~~~~)
document.write( "<input ~~~~~ On_Click( func(this,i)" )>
ってな感じ。
ちなみに527も偽者…まあいいけど。
ふと思ったんだけど、値を入れ替える関数(よくあるswap関数)ってJavaScriptだと作りづらくないですか?
535 :
519 :05/01/22 00:33:38 ID:???
>>534 そりゃそうだ。そこはJavaとよく似ている。まあこうかな。
function swap(a, b) { var c = window[a]; window[a] = window[b]; window[b] = c; }
... swap('x', 'y'); ...
グローバル変数しか扱えないけどね。
>>536 function swap (a, b) { var c = this[ a]; this[ a] = this[ b]; this[ b] = c;}
var o = { 0: 'foo', 1: 'bar', length: 2};
swap.call( o, 0, 1);
print( Array.prototype.toString.apply( o)); // bar,foo
swap.apply( o, [0, 1]);
print( Array.prototype.toString.apply( o)); // foo,bar (元に戻った)
o だけなら、o.swap = swap とするのが普通だが、
O0.prototype.swap = On.prototype.swap = .... On.prototype.swap = swap;
みたいになってくるとアホらしくなる。
そこで call(JavaScript1.5、JScript5.5) か apply(JavaScript1.2、JScript5.5) 。
混ぜてアホな書き方をすると、
o.swap = function (a, b) {
if (2 != arguments.length) return;
swap.call( this, a, b);} とか、
o.swap = function (a, b) {
if (arguments.length < 2) return;
swap.apply( this, Array.apply( null, arguments).slice( 0, 2));} とか。
で?っていう
539 :
495 :05/01/22 10:05:32 ID:???
>>495 ですが度々質問お願いします。
18以上ですか □はい
○同意しません ○同意する
┌─────┐
| 入室 │
└─────┘
上のフォームを作成まして、「はい」にチェックを入れると
下の同意選択ラジオボタンがアクティブになり、
同意するをチェックすると「入室」ボタンがアクティブになるように作ったんですが
ラジオボタンの名前をradio1、radio2としている為、
両方チェックする事が出来てしまいます。
名前を統一すると機能しません。教えて下さいませ。
<script Language="JavaScript"><!--
function setTF(cOBJ,fName)
{
document.form1[fName].disabled = !cOBJ.checked;
}
// --></script>
<form name="form1">
<p> 18以上
<input name="checkbox" type="checkbox" onClick="setTF(this,'radio1');setTF(this,'radio2');" >
はい</p>
<p>利用約款に
<input name="radio1" type="radio" disabled>同意しない
<input name="radio2" type="radio" disabled onClick="setTF(this,'button');">同意する<p>
<input name="button" type="button" onClick="location.href='linkpage.htm'" value="入室" disabled>
</form>
541 :
495 :05/01/22 13:04:39 ID:???
>>540 業者じゃないです。
ほんとはクイズ形式っぽく進ませるためのものなんですけど
保険業者のフォームを見て参考にしたので・・・。
>>538 図々しい奴だ。おまえの頭も使え。540じゃないが、銭をむしりとってやりたい。
function swap (a, b) { var c = this[ a]; this[ a] = this[ b]; this[ b] = c;}
グローバル変数はできる。
var x = 1; var y = 2;
swap.call( null, 'x', 'y'); alert( x);// 2
引数も出来る。
function test (x, y) { swap.call( arguments, 0, 1); alert( x);}
test( 1, 2);// 2
ローカル変数は無理。もちろん、
function test () { var scope = new Object; scope.x = 1; scope.y = 2;
swap.call( scope, 'x', 'y'); alert( scope.x);}
test();// 2
とすればできるが……。
>>542 の続き。
NN4 (262-1, 262-2) では、できて然るべきのような気がするが、できない。
function test () { var x = 1; var y = 2;
swap.call( arguments.callee, 'x', 'y'); alert( x);}
test();// 1 のまま。
ただし、NN4では、次のようにすればできるが……。
function test () { swap.call( arguments.callee, 'x', 'y'); alert( x);}
test.x = 1; test.y = 2;
test();// 2
あるいは……
function test () {
arguments.callee.x = 1; arguments.callee.y = 2;
swap.call( arguments.callee, 'x', 'y'); alert( x);}
test();// 2
つまり、ローカル変数では、
var x = 1; var y = 2; var tmp;
tmp = x; x = y; y = tmp;
のようにするしかないということ。swap の定義は無理。
>>539 排他的な項目なのに、name属性値を別な値にするのがおかしい。
まずname属性値は1つにしておき、その後でそのname属性値の要素配列を
取得し、その配列のすべての要素に対してdisabled切り替えを使う。
あるいはid属性使ってgetElementByIdを使うか。
講習費として
>>539 から100?ウ没収。月曜日までに指定する口座に振り込め。
545 :
539 :05/01/22 18:01:02 ID:hQ3ejg2v
>>542 −
>>544 サン
ご回答ありがとうございました。
色んな例を出して頂き感謝です。ネ申!
でもちと理解不足でまだ出来てません。
頭使ってやってみます。また聞くかもしれないのでその際はよろしゅう・・・。
振り込めを言いつつ教えてくれるその親切、忘れませぬ。
546 :
Name_Not_Found :05/01/22 18:24:14 ID:DdK1qiGO
VMLで分度器を表示して、onmousedown等で角度を算出する物を作りたいのですが
それのヒントとなるようなキーワードはありますでしょうか
<v:oval style="width:80; height:80" strokeweight="1" onmousedown="angle(event.x,event.y);" />
今は上記のようなイベントの座標を取得してるだけのような段階で、
Math.PI とか使用するんだろうナァとか色々考えたのですが挫折気味です・・・
アナログ時計は何かヒントになるかなと思い
ttp://tool.s53.xrea.com/7_31.html などを参考にしたりしていました。
よろしくおねがいしますです。
IEがabbr要素に対応していないので、 abbr要素をacronym要素に置換するJavaScriptがあると聞いたのですが、 そのソースはありますか?
>>547 俺が前書いた奴
with (navigator.userAgent)
if (indexOf("MSIE") != -1 && indexOf("Windows") != -1)
with (document.body)
innerHTML = innerHTML.replace(/(<\/?)abbr/ig, "$1acronym");
549 :
548 :05/01/22 18:51:28 ID:???
550 :
534 :05/01/22 19:36:23 ID:???
>>536 ちょっと遅れたけど、サンクス。
JavaScriptはこの辺りが厄介ですね。
551 :
Name_Not_Found :05/01/22 19:36:22 ID:mNHuz1+/
Win IE6を利用しています。 styleの指定をタグで、 <p id="test" style="color:red;">これはテストです</p> とした場合は、JavaScriptからstyle情報を取得できるのですが、 <style type="text/css" media="all"> <!-- p.test{color:red;} --> </style> <p id="test" class="test">これはテストです</p> という風に、CSSのクラスでstyleを指定した場合は、 JavaScriptからstyle情報を取得できません。 これはこういうものなのでしょうか?
↑この時、取得したいのは、style.colorの情報です。
554 :
551 :05/01/22 23:34:40 ID:???
なるほど。。
>>546 あんたいくつだ?
大学に入れば三角関数の逆関数というものを習う。
高校生以下でもぐぐればすぐにわかるだろう。
Math.PIはラジアンから度に直すときしか使わんはず。
>>546 俺は大学生だが546が分からないのヤバイかな?
いやそんなことないだろ?な? そうだと言ってくれ!
558 :
Name_Not_Found :05/01/23 02:08:27 ID:4+hy3ANL
Buttonの色を変えるにはどうしたらいいのですか? document.〜 = white; という風に変更したいのですが…
そーゆーのはCSSでやろうよ
>>557 てか
>>556 が大袈裟に厨房でも理解可能みたいに言ってるが大学生あたりじゃないと無理だろ
>>558 document.getElementsByTagName("Button")[お前の変えたいやつ].style.backgroundColor = white;
"white" は未定義です
>>562 var white = "White"; などという可能性は?
無いっ!
565 :
Name_Not_Found :05/01/23 15:56:41 ID:b8/uXTWU
教えてください。xpsp2になってからスクリプトがあるページって ポップアップブロッカーみたいなのが出ますよね? あれを回避する為にはスクリプトを使わないという方法しかないのでしょうか?
566 :
558 :05/01/23 15:57:07 ID:???
すみません、whiteは適当でした。
>>561 ありがとうございます。
助かりました!
WebPageテンプレートを配布しようと思うのですが、 DLするファイルの中身はトップページだけの方がいいでしょうか? それとも、その他のページもセットで配布した方がいいのでしょうか?
ハイ?
569 :
558 :05/01/23 16:42:53 ID:Eqv23+l3
>>561 すみません、できませんでした。
a = document.getElementsByTagName('button');
alert(a.length);
で調べてみたのですが、0と表示されてしまいます。
(もちろんボタン自体は表示されています)
a = document.getElementsByTagName('form');
alert(a.length);
ならちゃんとした値が表示されるのですが…
<button>タグがないから無理?
>>569 > <button>タグがない
あたりめーだ。
>>569 <input type="button" か。
inputElements = document.getElementsByTagName("input");
for (i = 0; i < inputElements.length; i++)
if (inputElements[i].type == "button")
inputElements[i].style.backgroundColor = "white";
572 :
558 :05/01/23 16:57:03 ID:???
>>571 それです!
おかげでちゃんと色が変わりました!
ありがとうございます。
>>567 そのくらい自分で判断しなさいよ。
掲示板設置しておいて、要求されたら全部込みこみのものも配布すればいいじゃん。
変数はvarできちんと宣言しろ、カスども。
指定したJPEG画像から指定したピクセル範囲を抜き出して表示したり、 指定したJPEG画像から指定した右側何ピクセル分を切り捨てて表示したり、 などといったテクニックがありましたらお教え願えませんでしょうか?
578 :
576 :05/01/24 01:04:41 ID:???
回答ありがとうございます。 後は何とかやってみます。
ここのテンプレ見て初めてjavascriptにclassとかあるの知った・・・ 関数の引数がvbでいうところのoptionalなのも初めて知った・・・ でもなんでclassなのにfunctionで定義するのかよくわかりません! 偉い人の考えはボクには分かりません! すごく保守しにくそうな言語だと思いましたが きっとjavascriptの達人ならそんなことはないんでしょうね。 もっと勉強しようと思いましたまる
580 :
Name_Not_Found :05/01/24 01:39:04 ID:PHN7ktfP
id1.style.display="block"; id2.style.display="block"; id3.style.display="block"; ... id99.style.display="block"; っていうのをfor文で繰り返し処理したかったので for (number=1 ; number<=60 ; number++) { var idx = "id"+number; ※ idx.style.display="block"; } としてみたところ、だめでした。 それで考えたこと↓ 型が互換性なかったみたいだから、※の部分で型を変換させればいいのかな? でも 文字列型→??? 何に変えればいいか分かりません(´Д⊂ モウダメポ 迷える初心者にご教授をm( __ __ )m 「ここ嫁」とか「こうしろ」等・・
581 :
580 :05/01/24 01:41:44 ID:PHN7ktfP
number<=60→99(;・∀・)
>>9 のQ7を見るといいよ。
document.forms.myform.elements[変数名].value
という使い方なので
※の下の行を
〜.elements[idx].style.display = "block";
で。
583 :
580 :05/01/24 02:01:18 ID:PHN7ktfP
>>582 おあっ・・かたじけない。
ありがとうございます 。・゚・(ノ∀`)・゚・。
584 :
Name_Not_Found :05/01/24 02:54:33 ID:sgmrmIu9
指定した桁数以下で考えられるa〜zの組み合わせを全部羅列したいんだけど どんなアルゴリズムが(・∀・)イイ!? a〜z aa〜az ba〜bz ca〜cz | | za〜zz | | aaa〜zzz | | 〜zzzz 〜zzzzz | |
585 :
Name_Not_Found :05/01/24 02:59:52 ID:sgmrmIu9
総当りで普通にやるかな。。。
a〜zを数字にみたてると16進数だから 羅列しようとしているのは16進数表示でn桁の数字。 だから10進数表示に直した時 0,1,2,3,...となるようにするのが一番かと.。 だからはじめに10進数で123と並べていって それを操作して16進数になおせばokでは?
あ。26進数ですね
余計なコト考えてたみたいでアリマス。 アルゴリズムがどうこう言うレベルの話じゃなかったですね^^; 普通に出来ました。 どうもですv
JavaScriptでCPUの速度を知ることって無理ですよね?
ループ演算して各CPUでそれが何秒かかったかで判断するとか
>>589 var t1 = new Date().getTime();
for(var i = 0; i < 1000000; ) i = i +1;
var t2 = nwe Date().getTime();
alert(t2-t1);
592 :
589 :05/01/24 08:35:31 ID:???
>>590-591 dクス
演算してみて、スコアで測るわけですね。。
システムに関するデータを直接引き出すのは無理なのは、
分かってはいましたが。
>>592 そんなこというのなら「CPUの速度」を定義してみ。どうやって
どういう数値を計るのか。
javascriptでhtml上にある画像のウインド枠からの 絶対位置はどのように取ればいいのでしょうか? 試したのを羅列します。 document.gazo.left = undefined document.gazo.style.left = NULL document.gazo.posLeft = undefined document.gazo.style.posLeft = 0 document.gazo.scrollLeft = 0 document.gazo.style.scrollLeft = undefined やっぱりリファレンス等見てもそれらしいのがないので無理なんですかね? ちなみに予想では20くらいの値が帰ってくる予定です。
596 :
coredus :05/01/24 16:07:52 ID:NsqcCi08
NN6, IE6, Opera 6, IE4+ function getOffset (evt) { if (window.event && typeof event.offsetX != 'undefined') return {x: event.offsetX, y: event.offsetY}; else if (evt && evt.target && evt.target.offsetParent) { var elementCoords = getPageCoords(evt.target); return {x: evt.clientX + window.pageXOffset - elementCoords.x, y: evt.clientY + window.pageYOffset - elementCoords.y }; } }
>>594 その手の質問は過去に10回以上出ている。過去ログ嫁!!!
>>595 >>596 ありがとうございました。
お二人のを参考にして試したところうまくいきました。
>>579 プロトタイプベースオブジェクト指向言語は、慣れたらかなり使い易いよ。
600 :
Name_Not_Found :05/01/24 19:12:12 ID:7mHS+/tM
こんばんは。 テキストフィールドにデフォルトで文字が入っている 時に.focus()でフォーカスを当てた場合に 先頭にカーソルが移動するのですが、 文字列の最後にフォーカスをあてることは出来ますか?
>>600 IEならTextRangeオブジェクト、Mozilla系ならtextLengthプロパティ/setSelectionRangeメソッドを使え。
htmlソースからタグを削除したいのですが、どうすればいいんでしょう? str.replace(/^<.*>$/g, ""); こんな感じですが全然動かないです。
603 :
Name_Not_Found :05/01/24 23:53:08 ID:DUjhFYBo
JavaScriptでフォームに入った文字の色で条件分岐することは出来ないのでしょうか? color.myColorRed = new Array("RGB",1,0,0); fObj = this.getField("Text1"); if(fObj.textColor==color.myColorRed) 〜処理〜 } と組んだのですが動いてくれませんでした・・・
>>603 fObj.textColor とか color.myColorRed とかを alert()で表示させてみれ。
>>602 あんた正規表現の「^」とか「$」とかどういう意味か知ってる?
知ってるのなら書いてみれ。知らないのなら知らないまま書くのやめれ。
605 :
602 :05/01/25 01:07:06 ID:???
>>604 ^は先頭で、$は末尾ですよね?
先頭に<があって末尾に>がある文字列にマッチするんじゃないのかなぁ…
>>605 説明はあってるけど理解が違うようだな。
str全体の最初が < で最後が > じゃないとマッチしない。
607 :
602 :05/01/25 01:16:02 ID:???
あ、そういう意味だったんですか。 もうちょっと正規表現の勉強してきます。
608 :
602 :05/01/25 01:18:54 ID:???
これの意味教えて下さい <SCRIPT language=JavaScript> <!-- var meg="こんにちはマーシー!"; function Mclick(migi) { if (document.layers || (document.getElementById && !document.all)) { if(migi.which==2 || migi.which==3) { alert(meg); return false;} } } function Husei() { if (document.all) {alert(meg); return false;} } if (document.layers){ document.captureEvents(Event.MOUSEDOWN); document.onmousedown=Mclick; }else{document.onmouseup=Mclick; document.oncontextmenu=Husei;} // --> </SCRIPT>
やあ、こんにちはクニコ!
611 :
Name_Not_Found :05/01/25 02:10:10 ID:wXKLbYyQ
友人のサイトのトップページで、コンテンツへのリンクに ロールオーバーを使っているのですが、 WinXP+IE5.5で見ると違う画像が変化しています。(NNだと大丈夫でした) Macで作っているようなのでWin+IEでの表示だけおかしいのかもしれませんが・・ ソースを見てみると、それぞれ画像の name は指定してあるのですが、 name=01 と指定してある画像にポインタを乗せると一番最初にある画像が変化します。 (name=01の画像は上から数えて3番目くらいにあります) そのあと順番に、name=02に乗せると上から2番目にある画像が変化・・ といった感じで、全体的に画像がずれて反応しています。 これは、name=hogehoge01 など、数字のみでなければ回避できるのでしょうか? 自分もほとんど理解していない状態なので質問の意味が わかりづらかったら申し訳ありません。 考えられる原因、対処法などがありましたらアドバイスよろしくお願いします。
>>611 ふ〜ん・・・・・友人の・・・・サイトね〜?
ココでアドバイスを乞う前にその友人に教えてやれ。
ま、あれだ。URL 晒せないなら黙ってカエレ! ってこった。
613 :
611 :05/01/25 05:50:25 ID:???
>>611 本当に友人のです。
友人の知り合いに作ってもらってて言いづらいらしく、私に相談されました。
ソースを見たけど今ひとつ理解できなかったので心当たりを聞いてみました。
こっそり直せるなら直したい、ということです。
どういったことが原因で起こるのかだけでも、
どなたかアドバイスいただけましたら助かります。よろしくお願いします。
>>611 HTML4: <!ATTLIST IMG ... name CDATA ...
XHTML1: <!ATTLIST img ... name NMTOKEN ...
だから、いずれにしても、name 属性の値が数字だけであることに問題は無い。
問題なのは、それが0から始まった場合、[ ] 演算子でアクセスしたからといって、
JScript 独自の仕様通りに数値 (10進整数) に変えてしまうこと。
(例) document.images[ '010.1'] == document.images[ 10] // true (IE)
>>611 の案: > name="hogehoge01"
のほかにもう一つ案がある。IE5.5以前を切り捨てること。
具体的には、HTMLCollection の namedItem を使う。
(例) document.images.namedItem( '01')
>>614 げげっ! JScriptにそんな邪悪な仕様があるとは…さすがだ!!!(何が?)
>>614 つうか、[ ] を使わず、( ) を使えば、何でもありだな。
document.images( '01')
document.images.item( '01')
document.images.namedItem( '01')
document.all( '01')
document.all.item( '01')
document.all.namedItem( '01')
(先祖要素オブジェクト).all( '01')
(先祖要素オブジェクト).all.item( '01')
(先祖要素オブジェクト).all.namedItem( '01')
(親要素オブジェクト).children( '01')
(親要素オブジェクト).children.item( '01')
(親要素オブジェクト).children.namedItem( '01')
617 :
Name_Not_Found :05/01/25 11:09:08 ID:rdB/OX+S
配列を戻り値にするにはどうしたらいいのでしょうか? function GetArray() { var a = new Array(3); return a; } function main() { var a = new Array(3); a = GetArray(); //× var a = GetArray(); //× var a = new Array(GetArray()) //× } 色々試しましたが無理でした。 仕方なく引数にして受け取ることにしたのですが、やはり扱いづらいので教えてください。
>>616 images(...)とかchildrenとかはIE限定だから無理に使わないほうがよくね?
>>617 普通にできるが。何をやりたくてどううまくいかなかったんだ?
619 :
617 :05/01/25 11:58:03 ID:VK8V2zH1
>>618 ほんと普通にやりたいだけなんですよ。
できれば例文お願いします。
620 :
617 :05/01/25 12:04:39 ID:???
あれっ!? 普通にできました…ごめんなさい。
621 :
Name_Not_Found :05/01/25 12:11:06 ID:FTmSyDYN
CGIのフォームを改造中です。ちょっと知恵を貸してください。
更新履歴CGIを利用して作品アップページのようなものを作成中です。
更新履歴は項目が分けられる下のCGIのver1を利用してています。
ttp://www.lira.co.jp/t-room/re_cgi/history/index.html さて、現状はこんな感じです。
作品をジャンルフォルダ内に日付で分けて保存してあります。(\ジャンル○○\050125\ファイル名…という感じ)
上記CGIを利用して作成日付・ジャンルを選択し、リンク先URLにジャンル名+日付+ファイル名を入力しています。
しかし、よく考えれば日付もジャンル名も上で選択するので二度手間です。
そこで考えたのですが、日付・項目を選択したら、自動的にURLの後ろ部分に追加されるようには出来ないでしょうか?
ttp://www.ueda.info.waseda.ac.jp/~gaku/js/how025.html このページを見つけたのですが、これは1項目ですよね。複数項目をうまくセットできないでしょうか?
また、項目名に関しては今後増えることはほとんど無いのでCGIの項目名を読み取りに言ってセットするのではなく
リストの中に埋め込んでしまってもOKです。
以上、説明が足りないとか何か良い方法があったら教えてください。
>>621 年・月・日・項目の値を拾って連結するfunctionを
各selectにonChangeで仕込んでURLに吐き出せばいいだけ。
623 :
621 :05/01/25 16:08:52 ID:FTmSyDYN
>>622 返答ありがとうございます。
しかし、方法が全然わかりません。
このサイト読め!ってのがあったらそれでもかまいません。
方法を教えてください。
624 :
611 :05/01/25 16:10:01 ID:???
お礼が遅くなりました。
>>614 さん
大変わかりやすい説明、どうもありがとうございました。
「仕様」にそういったものがあるとは・・やはり難しいです。
最後の2行についてこれから勉強してきます。
>>616 さん
>>618 さんもアドバイスありがとうございました。
>>623 function createURL() {
with(document.regform) {
url.value = "exsample.com/"; //サイトドメイン名
url.value += contents.value == ''? new_contents.value:contents.value; //ジャンル
url.value += "/" + year.value + mon.value + day.value + "/"; //日付
}
}
formに以下のようにnameを付ける
<form action="./history.cgi" method="post" name="regform">
selectとinputに以下のように呼出しを付ける
<select name="year" onChange="createURL();">
<select name="mon" onChange="createURL();">
<select name="day" onChange="createURL();">
<select name="contents" onChange="createURL();">
<input type="text" name="new_contents" size=30 onChange="createURL();">
>>624 遅レスだけど、ロールオーバするくらい、name属性使わなくてもできるYO!
NN4とか、DOMインタフェイスがアレなブラウザは無理だけど。
628 :
602 :05/01/25 21:18:16 ID:YaXkdK8U
>>603 fObj.textColor とか color.myColorRed とかを alert()で表示させてみれ。
ありがと。お陰で解決しました。
629 :
Name_Not_Found :05/01/25 21:26:54 ID:/5u7577W
下の様なトランプのカード52枚をランダムに表示させる関数を作りました。 3枚ずつまとめて、カギかっこ番号をつけ、15枚で折り返しています。 (1)S1 S2 S3 (2)S4 S5 S6(3).... (6)D1 D2 D3(7).....見たいに。 質問は、トランプのカードを1組だけでなく何組も表示したい。それを全部(1),(2),,,,みたいに するのではなく、1組目のカードは(101),(102),(103)みたいに番号を振り、2組目のカードは (201),(202),,,,みたいに表示できるようにしたいのですが、どうすればよいですか。 myCd(n);みたいにスクリプトを入れると(n01),(n02),,,,みたいに表示させたい。 どう変更すればよい? function myCd(){var Rf="<font color=red>", Rl="</font>", H= "♥ ", C="♣ ", S="♠ ", D="♦ "; myD = new Array(52); for (i=1; i<11; i++) myD[i-1] = Rf+H+i+Rl; myD[10] = Rf+H+"J"+Rl, myD[11] = Rf+H+"Q"+Rl, myD[12] = Rf+H+"K"+Rl for (i=1; i<11; i++) myD[i+12] = C+i; myD[23] = C+"J", myD[24] = C+"Q", myD[25] = C+"K" for (i=1; i<11; i++) myD[i+25] = S+i; myD[36] = S+"J", myD[37] = S+"Q", myD[38] = S+"K" for (i=1; i<11; i++) myD[i+38] = Rf+D+i+Rl; myD[49] = Rf+D+"J"+Rl, myD[50] = Rf+D+"Q"+Rl, myD[51] = Rf+D+"K"+Rl for (i=0; i<500; i++){ // 500回 myD の内容をシャッフルする myA = Math.floor( Math.random() * 52 ) // 0〜51 を決める myB = Math.floor( Math.random() * 52 ) // 0〜51 を決める myX = myD[myA]; // myD の myA番目とmyB番目の内容を入れ替える myD[myA] = myD[myB]; myD[myB] = myX; } for (k=1; k<4; k++){for (i=(k-1)*5+1; i<k*5+1; i++) {document.write(" (",i, ")"); for (j=(i-1)*3; j<3*i ; j++){ document.write(myD[j]," ")}} document.write("<br>")} for (i=16; i<18; i++){ document.write(" (", i, ")"); for (j=(i-1)*3; j<3*i ; j++){ document.write(myD[j]," ")}} document.write(myD[51])}
(1) 「function myCd(prefix) { ...」のようにする。 (2) 「document.write('(' + prefix + String(100+i).substring(1) + ')');」とする。 ちなみにdocument.writeで複数引数ってうまく動かない場合があったような 気がする。
631 :
Name_Not_Found :05/01/26 01:53:27 ID:VjaXJ7hi
>>630 質問に対する的確な答えありがとうございます。2度手間になるので
すが、自分が本来考えていたのはCd(3);と入れれば、(301)S1 S2 S3
(302),,,ではなく(21)S1 S2 S3(22),,,みたいにCd()に入れる数字nに
対して(n-1)×10。自分の質問に対する答案を見れば、自分でそのやり方
は判ると思ったのですが、判りません(涙)。
632 :
629 :05/01/26 03:14:59 ID:VjaXJ7hi
633 :
621 :05/01/26 10:26:45 ID:j0ubRzwG
>>623 返答ありがとうございます。
ただ、1つ問題が…
日付を決定すると、日付だけが入力され、その後ジャンルを選択すると
ジャンル+日付が足されてしまいます。
例として日付を050125にセットしジャンルをPictとすると、
/050125/pict/050125 となってしまいます。
もちろん、日付を間違った!ってなると後ろに追加されていってしまいます。
これはどうしようもないのでしょうか?随時セットされていく方法がありましたら
お願いします。
<form name="inp"><INPUT type="text" name="word"></form> <form name="a1" action="a1.cgi" onsubmit="word.value=inp.word.value;"> <INPUT type="hidden" name="word" value=""> <INPUT type="submit"> </form> <form name="a2" action="a2.cgi" onsubmit="x[word].value=inp.word.value;"> <INPUT type="hidden" name="x[word]" value=""> <INPUT type="submit"> </form> のように書いた。 a1は想定通りに動いてくれたが、a2はエラーが出る。 x[word].valueの記述に間違いがあるのは確かだが、 どのように記述すればいいのかわからん。 力を貸してください! 仕様として <INPUT type="hidden" name="x[word]" value=""> の部分は変更できない。 ちなみに <form name="a2" action="a2.cgi"> <INPUT type="text" name="x[word]" value=""> <INPUT type="submit"> </form> とすると正常に動作する。
635 :
634 :05/01/26 12:04:10 ID:???
<form name="a2" action="a2.cgi" onsubmit="elements[0].value=inp.word.value;"> で一応解決しました。
>>634 FAQ
>>9 のQ7/A7を読め。それを読んでも理解できないほど素人
だったらもっかい質問すれ。
オンライン対戦ゲームを作りたいのですが、どうしたらいいかさっぱり分かりません。 お薦めのサイトか参考書があれば教えてください。
639 :
Name_Not_Found :05/01/26 15:31:19 ID:mECrmyEv
age
640 :
638 :05/01/26 16:35:50 ID:???
解決しました!
641 :
621 :05/01/26 17:15:50 ID:j0ubRzwG
>>637 返答ありがとうございます。うーん。コピペしただけなのですが・・・
----------
print "function createURL() {\n";
print "with(document.regform) {\n";
# ドメイン名は別に指定してあるから必要ないみたい、
# print "url.value = \"exsample.com/\"; //サイトドメイン名\n";
print "url.value += contents.value == ''? new_contents.value:contents.value; //ジャンル \n";
print "url.value += \"/\" + year.value + mon.value + day.value + \"/\"; //日付\n";
print "}}\n";
print "<form action=\"$script\" method=\"post\" name=\"regform\">\n";
print "<select name=\"year\" onChange=\"createURL();\"> \n";
print "<select name=\"mon\" onChange=\"createURL();\">\n";
print "<select name=\"day\" onChange=\"createURL();\">\n";
print "<select name=\"contents\" onChange=\"createURL();\">\n";
print "<td align=\"right\">\n";
print "(新 規</td>\n";
print "<td>:</td>\n";
print "<td><input type=\"text\" name=\"new_contents\" size=30 onChange=\"createURL();\">\n";
print "←新規項目はここに入力)</td>\n";
print "<br>\n";
print "</td>\n";
----------
こう変えただけなのですが…
何か間違っているのでしょうか?
>>641 変えたならコピペじゃないだろ。
サイトドメイン名の部分がいらないならその次を直さないとおかしいのは当然。
url.value += contents.value == ''? new_contents.value:contents.value; //ジャンル
↓
url.value = contents.value == ''? new_contents.value:contents.value; //ジャンル
Arrayオブジェクトのsortメソッドの比較関数を探しています。 文字コード順なら比較関数無し、数字の小さい順ならfunction hikaku(a,b){ return(b-a); }なわけですが、 ソート前: ["hoge10","hoge01a","hogehoge2","hoge01b","hoge1a"] ソート後: ["hoge01a","hoge1a","hoge01c","hoge10","hogehogehoge2"] こんな感じで文字の部分は文字コード順、数字の部分は小さい順、数字が同じ場合は後続する文字の文字コード順、それも同じなら頭の0が多い順にソートしたいのです。 検索してみても数字だけの比較関数ばっかにヒットして見つかりません。 どなたかこんなスクリプトを組んでいただけないでしょうか?
>>643 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
var a = ["hoge10","hoge01a","hogehoge2","hoge01b","hoge1a"];
function f(x1, y1) {
var x = x1.match(/([A-Za-z]*)([0-9]*)(.*)/);
var y = y1.match(/([A-Za-z]*)([0-9]*)(.*)/);
if(x[1] != y[1]) return x[1]>y[1] ? 1 : -1;
if(Number(x[2]) != Number(y[2])) return Number(x[2])>Number(y[2]) ? 1 : -1;
if(x[3] != y[3]) return x[3]>y[3] ? 1 : -1;
if(x[2] != y[2]) return x[2]>y[2] ? 1 : -1;
return 0;
}
document.write(a.sort(f));
</script>
</body></html>
>>644 ありがとうございました。
正規表現が使えるとやっぱ幅が広がりますね。勉強しなくては。
646 :
Name_Not_Found :05/01/26 22:21:34 ID:CeLp0Anj
SP2入れたIEでJS使ったページを表示しようとしたら 警告が出るようになってるね。 こんないたずらに警戒心あおるようなことされたらもうJS使えないよ。 訪問者が逃げちゃう。 お前らどうしてますか?
648 :
646 :05/01/26 22:30:49 ID:???
ローカルで実行してたからですたorz ちゃんとwebに上げれば大丈夫なんだね スンマソン
JavaScriptを外部ファイルで指定するタグを記入すると ページ上のその部分に段落ができてしまうと思うんだけど 段落ができないようにする方法はない?
650 :
649 :05/01/27 01:28:54 ID:???
よく考えればなんかスレ違いのような気がしてきたから 日を置いてサイト製作スレでも逝って来る・・・
651 :
yumi :05/01/27 06:21:18 ID:xG6w1578
教えて下さい。 今ホームページを制作している途中です。 その中で、一つの大きな画像の中(たくさん商品が写っています。)から気に入った商品をクリックすると 別の説明のページへリンクさせる様にしたいのです。このソースを 教えて下さい。どうかよろしくお願いします!
>>651 それは「イメージマップ」といってJavaScriptと無関係。
初心者スレでもいけば。
>>651 ホームページ制作王なら、全てがワンタッチ解決。
654 :
Name_Not_Found :05/01/27 09:20:21 ID:YuXLlxds
教えて下さい サブウィンドウを <script type="text/javascript"> <!-- function SubWindow() { open("picture.jpg", "Window02", width=600, height=450") } // --> </script> <body> <a href="javascript:SubWindow()">このテキストをクリック</a> </body> のようにして開きたいのですが、picture.jpgのマージンを0で 開きたいのですが、どうしても隙間が空いてしまいます。 どうすればマージンを0で開けるのか どなたか教えて頂けないでしょうか? どうぞよろしくお願いします。
655 :
Name_Not_Found :05/01/27 10:04:20 ID:+H0CjvtL
>>654 ホームページ制作王を使えば即解決。
ホームページ制作王を使わずして21世紀のWebオーサリングを語るなかれ。
>>654 そのままでは無理ぽ。MSIEの仕様だから。
なので開きたい画像を貼り付けたドキュメントを用意して、それを開くようにしる。
あと、せっかく関数化するなら、
function SubWindow(url){
window.open(url,"Window02","width=600,height=450");
}
<a href="hoge.html" onclick="SubWindow(this.href);return false;">このテキストをクリック</a>
とした方が親切かも。
657 :
656 :05/01/27 11:21:13 ID:???
>>656 本題が抜けてた。
貼り付けたドキュメントでCSSでbodyのマージンを0にすれば良いです。
すまそすまそ。
>>654 function SubWindow() {
var w = window.open('_blank', 'Window02', 'width=600,height=450');
w.document.writeln('<body background="picture.jpg"><\/body>');
w.document.close();
}
要するにURIをJPG指定するなってこった
>>658 スラをエスケープしているところに良心を感じました。
いろんなスレでホームページ制作王とやらを宣伝しているのはやっぱり業者ですか?
662 :
Name_Not_Found :05/01/27 14:45:16 ID:9BOxwLkr
以下のストップウォッチスクリプト、if(lap==1){...}if(lap==2){..}...の部分、for構文で書くにはどうすれば良いですか。. <html><head><script language="JavaScript"><!-- var a, b, min, sec, xi, x, timer; xmin=0; xsec=0; flg=0; flg2=0; lap=0; ii=0; tt='' function doStrt(){if (flg==0) {xi=new Date();a=xi.getTime()-(document.tokei.fun.value*60000+document.tokei.byo.value*1000); Ct();flg=1} if(flg2==1){flg2=0; document.tokei.Stp.value="Stop"} if(lap >0){document.tokei.Stt.value="Lap"; readout =min+":"+sec; } if(lap==1){document.tokei.m1.value=readout}if(lap==2){document.tokei.m2.value=readout} if(lap==3){document.tokei.m3.value=readout}if(lap==4){document.tokei.m4.value=readout}lap=lap+1} function Ct(){timer=setTimeout("Ct()",1000);x=new Date(); b=x.getTime();min=Math.floor((b-a)/60000); sec=Math.floor(((b-a)%60000)/1000);document.tokei.fun.value=min;document.tokei.byo.value=sec;} function doStp(x){if(flg2==0){document.tokei.Stt.value="Start"; document.tokei.Stp.value="Reset"; xmin=eval(x.fun.value);xsec=eval(x.byo.value);flg=0; flg2=1} else{document.tokei.Stp.value="Stop"; document.tokei.fun.value="0"; document.tokei.byo.value="0";flg=0; flg2=0; lap=0; document.tokei.m1.value=""; document.tokei.m2.value=""; document.tokei.m3.value=""; document.tokei.m4.value=""; }clearTimeout(timer)} //--></script></head><body><form method="post" name="tokei"> <input size=3 name="fun" value="0">分 <input size=2 name="byo" value="0">秒 <input type="button" value="Start" onClick="doStrt()" name="Stt"> <input type="button" value="Stop" onClick="doStp(this.form)" name="Stp"> <br><input name="m1" size="8"><input name="m2" size="8"><input name="m3" size="8"> <input name="m4" size="8"></form></body></html>
読んでもらおうという意志が感じられない。
ホームページ制作王を使えば即(ry
>>662 var lapmax=4;
for (var i=1;i<=lapmax;i++){
if(lap==i){
document.tokei.elements["m"+i].value=readout;
}
}
665 :
Name_Not_Found :05/01/27 17:40:27 ID:44Pp7m8O
質問させて頂きます。 XSLTでXMLをHTMLとして表示しているのですが、 XSLTから更に幾つかのXSLTを切り替える様にしたいと思っています。 (CSSを切り替えているサイトのように) この場合<script>・・・・はXSLTのテンプレート内の<head>〜</head>に HTMLの場合と同様に記述すればよいのでしょうか? OS:Me プラウザ:Firefox IE6
var CHK=document.forms[0].elements[0].checked; (CHK == true)?CHK = false:CHK = true; と書くと動きませんが、 (document.forms[0].elements[0].checked == true)?document.forms[0].elements[0].checked = false:document.forms[0].elements[0].checked = true; と書くと動きます。 なぜでしょうか?
667 :
Name_Not_Found :05/01/27 18:09:15 ID:9BOxwLkr
>>664 感謝感謝。
>>663 だって本文が長いとか、いろいろけちをつけられて、漸く受理されたんだもの。
>>9 のFAQのQ3に関係しているのですが以下のことが判りません。
>>629 のトランプカードをランダムに表示する関数があり,
それを利用して
>>662 のストップウォッチ(最初のスタート)を押すと、
トランプカードが表示されるようにしたいのですが、どう変更すれば良いですか。
(最初のスタートを押すまでトランプを見えないようにしたい。)
現在は
<DIV ID = "test0">
<SCRIPT language=JavaScript><!--myCd(1);// --></SCRIPT>
<SCRIPT language=JavaScript><!--myCd(2);// --></SCRIPT></DIV>
<A HREF="javascript:showLAYER('test0')">現れる</A>
を書いて、「現れる」をクリックしているのですが、…。
668 :
coredus :05/01/27 18:31:55 ID:h2qCy2sN
>>666 ホームページ制作<s>工</s>なら、即解決
(類似品に注意してください)
var CHK=document.forms[0].elements[0].checked;
var CHK2=document.forms[0].elements[0];
(CHK==true)?CHK2.checked=false:CHK2.checked = true;
すべてのaタグに onClick="clink(this)" を挿入したいのですがどのようにすればいいのでしょうか? 宜しくお願いします。
>>670 var tmp_a = document.getElementsByTagName("a");
for(var i=0 ; i<tmp.length ; i++){
tmp[i].onclick = function(){clink(this);}
}
↓がeventつかってもっと簡潔に書いてくれるかも。
672 :
coredus :05/01/27 21:58:41 ID:XzvJt3vY
>>666 ホームページ制作<s>工</s>なら、即解決
(類似品に注意してください)
よく分からんが、onClick="clink(this)"がお望みなら…
形としてはこんなとこ?(テストしてない)
var x=new Array('j1|text-1','j2|text-2','j3|text-3','j4|text-4');
for(var i=0;i<x.length;++i){
y=x[i].split('|');
document.write('<a href="'+y[0]+'.htm"
onClick="clink(this);return false">'+y[1]+'<\/a><br>')
}
673 :
coredus :05/01/27 22:03:14 ID:SuGX2yHs
674 :
670 :05/01/27 22:18:07 ID:???
>>671-2 onClickでラジオボタンのtargetを参照する関数(clink())に引数にthisを
送りたかったので671で解決できました。有り難う御座います。
var anchors = document.getElementsByTagName("a"); for(var i=0; i<anchors.length; i++) { // IEだけで良いなら anchors.item(i).attachEvent("onclick", function(){click()}); // W3CDOMなら //anchors.item(i).addEventListener("click", function(e){click(e)}, false); } thisはclick()のなかで window.event.srcElementで取れる。 //W3CDOMならe.targetで取れる。 //古いgeckoだとテキストノードが取れることも //あるのでテキストノードだったらparentNodeを取れ。
676 :
667 :05/01/28 06:42:05 ID:Ol991Ww4
スルーされているけど、
>>667 の件、自己解決しました。doStrt()関数の中ににshowLAYER()関数を入れれば良い
だけでした。
677 :
621 :05/01/28 09:53:16 ID:JrCfxHcS
>>642 遅レスすみません。
指摘ありがとうございました。ばっちり出来ました。
678 :
Name_Not_Found :05/01/28 15:43:08 ID:HoadAThN
<h2>更新ボタンを押してください</h2> <h2>同じフルーツがそろうかな? 16807分の7の確立に挑戦</h2> <script type="text/javascript"> <!-- for(){ num=math.floor(Math.random()*7)+1; document.write('<img src=image/fruit'+num+'.gif>'); } // --> </script> </body> </html> これのforのところには何を入れればいいんでしょうか? ちなみにフルーツを5個出してランダムでそろうかということをするらしいんですが
>>678 宿題か?
"for文"で検索してわかりやすいサイトを探してみな。
javascript:alert(['大吉','中吉','吉','末吉','凶'][new Date%5]) これって文法あってますか?
自分で試せ エラーが出れば間違ってるんだろう
682 :
680 :05/01/28 18:39:15 ID:???
自分の環境ではエラーが出ないので(Firefox1.0, IE6)知識の有る人に聞いてます。
じゃあFirefox1.0とIE6インスコして試せば良いじゃん
初歩的な質問で申し訳ないのですが、JSで同ページの任意nameの場所にリンクする、 つまり**.html#nameに移動する時、新しいウィンドウで行く方法を教えてください location.hrefを使うと一瞬行くんですがすぐにリロードして一番上に行っちゃいます。 window.open()とwindow.close()を一緒に使えばいいんでしょうがなんか嫌なので困ってます。 具体的な処理は「ボタンを押せばform内のinput(タイプはtext)項目に書いた文字をnameとして持つ オブジェクトの位置にリンクする」です。 ●#nameニリンク ●すぐにリンク ●同じウィンドウでリンク
>>675 > window.event.srcElementで取れる。
javascript:document.attachEvent( 'onclick', function (e) { alert( e.srcElement.nodeName)});eval()
> W3CDOMならe.targetで取れる。
document.links[ 0].addEventListener( 'mouseover', function (e) {
alert( e.currentTarget == document.links[ 0]);
}, false);
>>688 srcElementに相当するのはtargetじゃないか?
currentTargetに相当する物はIEで取得できないよね?
.htmlにPHPのアクセス解析は入れられないものなのですか?
次レスのソースで、ページ読み込み時にselectが”5”になりません。 但し 11行目:obj.value = 5; を alert(); obj.value = 5; のように、alertで何でも良いから吐かせてやると ページ読み込み時にちゃんとselectが”5”になります。 そこで質問なのですが、 なぜalertを吐かせなければ値が反映されないのでしょうか? alertを吐かせずに値を反映させる方法があれば宜しくご教授下さい
<html><head><title></title> <script type="text/javascript"> function init(){ obj=document.getElementById("hoge"); for(i=0;i<10;i++){ var opt = document.createElement("option"); opt.value = i; opt.appendChild(document.createTextNode(i)); obj.appendChild(opt); } obj.value = 5; } </script> </head><body onload="init()"> <select id="hoge"></select> </body></html>
javascriptに関しての知識はまったくありませんが、質問させて下さい。 mailtoを使って訪問者にお問い合わせをして頂こうと思います。 subject body などを使って自分のフォーマットに合わせて記入していただこうと思うのですが、 お問い合わせいただいたときのページのタイトルとURLも合わせて本文の中に 記入したいと思います。 どの様にjavascriptを記入すればよいでしょうか?
それはHTMLです javaじゃないです
>>696 JavaScript は java じゃないです
document.write('<a href="mailto:
[email protected] ?subject=' + document.title + '">...');
とかだろ? りっぱにJavaScriptじゃん。
699 :
Name_Not_Found :05/01/29 09:08:03 ID:AFcl8rSr
700 :
Name_Not_Found :05/01/29 10:24:21 ID:ksrwRc8d
質問です。 <FORM> <SELECT onchange="window.parent.F.location.href=this[this.selectedIndex].value"> <OPTION selected value="#">select.</OPTION> <OPTION value="#">1</OPTION> <OPTION value="#">2</OPTION> <OPTION value="#">3</OPTION> </SELECT></FORM> という感じのセレクトフォームで、同ページ内のターゲット先に移動できるようにしたいです (アンカーの<a name="#">みたいに) アドバイスをお願いします。
701 :
Name_Not_Found :05/01/29 12:16:39 ID:sgRFOsFq
<FORM> <SELECT onchange="window.parent.F.location.href='some.html'+this[this.selectedIndex].value"> <OPTION selected value="#">select.</OPTION> <OPTION value="#1">1</OPTION> <OPTION value="#2">2</OPTION> <OPTION value="#3">3</OPTION> </SELECT></FORM> じゃダメ? おっ、メシだって。きょうはウチはロールキャベツ(らしい)。
>>701 すみません。指定場所のタグの記述も教えてください(´・ω・`)
ロールキャベツおいしそう〜〜
703 :
702 :05/01/29 12:48:56 ID:???
自己解決しました 失礼します
704 :
Name_Not_Found :05/01/29 14:10:11 ID:ASZwgab/
お願いします。 サブウィンドウのテキストフィールドの内容を 親ウィンドウのフィールドにコピーしたいのですが、 複数を一括コピーにしたいため、うまくいきません。 ●サブウィンドウ側 <SCRIPT Language="JavaScript"><!-- function setData() { window.opener.document.Form1.リンゴ.value = document.Form2.リンゴ.value; } // --></SCRIPT> <Form NAME="Form2"> <input name="リンゴ" type="text"> <input name="メロン" type="text"> <input type="submit" name="button" value="コピー" onClick="setData()"> </Form> ●親ウィンドウ <Form NAME="Form1"> <input name="リンゴ" type="text"> <input name="メロン" type="text"> </Form> サブウィンドウのsetData()の部分、メロンをどのように書けば良いのでしょう?
普通にりんごのときと同じように書いてけば。
706 :
704 :05/01/29 14:28:16 ID:ASZwgab/
<SCRIPT Language="JavaScript"><!-- function setData() { window.opener.document.Form1.必要スキル.value = document.Form2.必要スキル.value; } function setData() { window.opener.document.Form1.メロン.value = document.Form2.メロン.value; } // --> </SCRIPT> ではダメですよね?
707 :
Name_Not_Found :05/01/29 14:47:27 ID:GqW3Chla
>>706 [助言1]まとめて拾ってくるなら、そういうやり方でしましょ。
つか。あんた、8ビットって知ってる?
>>706 まとめ方が違うんだよ。まさか一つの関数内には1行しか書けないとか思ってるんじゃないだろね。
>>707 一応ECMAScript 3では識別子に非LatinのUnicode文字を使えるそうだからな……。
まあブラウザの実装がどうなってるかは知らないけど。
709 :
706 :05/01/29 15:09:23 ID:ASZwgab/
レスありがとうございます。
>>708 まとめ方が分かりません・・・。
window.opener.document.Form1.リンゴ;メロン.value = document.Form2.リンゴ;メロン.value;
だとダメですよね?
711 :
707 :05/01/29 15:38:49 ID:b9N2z+FN
>>708 ECMAScript3読んでてあの質問してるんだったら、オレ死んでお詫びします。
712 :
706 :05/01/29 15:41:50 ID:ASZwgab/
713 :
706 :05/01/29 15:50:36 ID:ASZwgab/
度々すみません。 window.opener.document.form1.( "ringo" +"melon" ).value = document.subform.( "ringo" +"melon" ).value; じゃダメですか!?
714 :
710 :05/01/29 16:03:00 ID:???
>>713 だから、「感覚で書くな」といってるだろ。
初心者向けのチュートリアルだっていくらでもあるだろうからちゃんと読め。
715 :
713 :05/01/29 17:05:57 ID:ASZwgab/
>>714 はい_| ̄|○ 勉強します。すみません。
あの、さっきのとは別の質問なのですが、宜しいでしょうか。
checkboxをチェックすると、テキストフィールドにその値が表示されるように
しました。
このとき、テキストフィールド内に、checkboxごとの改行は自動的に入れる事が
可能でしょうか?
このサンプルで言うと、AとBを改行したいです。
調べてみましたが、改行に関して見つけることが出来ませんでした。
教えて下さい。
<script language="JavaScript" type="text/JavaScript">
<!--
function check(checkbox) {
if(checkbox.checked){
document.form1.field.value += checkbox.value;
}else{
document.form1.field.value = document.form1.field.value.replace(checkbox.value, "");
}
}
// --></script>
<FORM NAME="form1">
<input type="checkbox" onClick="check(this)" value="A">
<input type="checkbox" onClick="check(this)" value="B">
<textarea name="field" cols="3" rows="2"></textarea>
</FORM>
716 :
707 :05/01/29 17:58:31 ID:Cts3RsTN
>>712 ホントかよ。教えてもらったんで、いまECMAScript3を読んでるとこだって?
じゃあ、やっぱなーんも知らなかったちゅうことだ。
ECMAScript3がよめるくらいなら、こんなこと人に聞くことないだろが。
717 :
713 :05/01/29 18:08:42 ID:9BT5thSz
>>716 読めるって良くわかんないですけど、
コピーして簡単にカスタマイズするしか脳がないので
ここで聞いたら、テンプレ読めと言われたので、読んでみたんです。
でもやっぱり、ちんぷんかんぷんでした。
このスレはちょっと前はもっと優しい人が多かった気がしますが、
なんか殺伐としてきましたね。
無償で聞いているから、図ずうしいとは思いますが、
でしたら何のためのスレなんでしょうね?お邪魔しました。
>>713 齧った程度の奴に答えるほど暇じゃない
多少なりとも身に付けてから、出直して来い
719 :
Name_Not_Found :05/01/29 19:20:52 ID:ptTufxQr
>>717 さん
私の意見では、プログラミングの質問には皆さんとてもよくお答えになって
おられると思いますよ。上達へのお手伝いというのでしょうか。でも、シン
タックスの当てっこをしているわけではありませんので、それなりに基本が
必要ですし、そういうやり方で聞かれるとつい不適当な回答も投稿されたり
しますね。結局のところ、魚をもらうよりは、魚の釣り方を教えてもらうよ
うにするのがいいのです。
720 :
686 :05/01/29 19:43:18 ID:???
>>686 質問文に間違いがありました。
×新しいウィンドウで行く方法
○同じウィンドウで行く方法
>>720 location.hash
たとえば、
ttp://hyuki.com/diary/ の keynavi とか。
ページ内リンクで履歴が肥大して鬱陶しいなら、scrollIntoView。
……つうか、リロードするか?
LWP (Perl) を持っているというなら、
% perl -MLWP -e "print LWP::UserAgent->new->get('ページあどれす')->headers->as_string;"
無いけど Windows であるというならば、
var ua = new ActiveXObject( 'Msxml2.XMLHTTP');
ua.open( 'GET', WScript.Arguments( 0), false);
ua.send();
WScript.Echo( ua.getAllResponseHeaders());
な .js ファイルを作って (たとえば C:\h.js とする)、
C:\>cscript h.js ページあどれす
して、結果を貼ってみろ。
// 分かればやってみてくれ。分からなければ結構だが。
>>720 ああ、もしかして
<a href="#" onclick="...">...</a>
にしてるのか。もしそうなら、
onclick="...;return false;"
みたいに書き加えれば。
>>715 まあなんつーか、自分で調べられる能力がついてくれればみんながハッピーちゅーことだから。
あまり自分では考えない姿勢をののしられるのは愛の鞭と受け取ってもらえるとありがたいなー、みたいな。
で、あんたはそのサンプルスクリプトをどれほど理解してるんだ?
とりあえず改行文字はエスケープシーケンスを使って"\n"とあらわせるわけだが。
注意すべき点はWinIEだとテキストエリアに文字列をセットした時点で\nが\r\nに正規化されることかな。
Macの場合は知らんが気になるんならreplace(/\r\n?/g, "\n")で改行コードを\nに統一しとくと楽だぞ。
724 :
kkk :05/01/30 06:44:14 ID:9T2MgA4r
javs scriptで表示されている画像ってどうにかして保存できないものでしょうか?
できるけど手順書くのが面倒
うまくトグル出来ません .Close{display:none;} .Open{display:block;} <script language="JavaScript"> flag=0; flag2=0; function H_S(id){ elm=document.getElementById(id); if (elm.className == 'Open') elm.className='Close'; else elm.className='Open' } function test(Dokoni) { CurObj = document.getElementById(Dokoni); H_S(Dokoni); if(flag == 0){ var Add = ""; for (var i=0; i<3; i++) {Add += "<li>test"+i;} CurObj.innerHTML = Add; flag = !flag; }else{ CurObj.innerHTML = ""; flag = !flag; } }
function test2(Dokoni,FileName) { CurObj = document.getElementById(Dokoni); H_S(Dokoni); if(flag2 == 0){ var Add = ""; Add += '<iframe name="Memo" src="'; Add += FileName; Add += '"></iframe>'; CurObj.innerHTML = Add; flag2 = !flag2; }else{ CurObj.innerHTML = ""; flag2 = !flag2; } } </script> いい案はないでしょうか?
一番上の行が抜けてしまいました。
任意の場所に任意のオブジェクトを、表示したり隠したりしたいのですが
>>762 うまくトグル出来ません
です。宜しくお願い致します。
730 :
kkk :05/01/30 10:47:42 ID:Hk1LhuJD
>>725 そこをなんとかお願いします。
ちなみに、javs scriptはJavaScriptでした。
お気にさわったのであれば気を取りなおしてください。
>>730 スクリプト読めばURLわかるでしょ。
PCにできるんだから君にできないはずが無い。
いざとなったらPrintScreen使えばいいと思うよ。ほらDelキーの上のあたりにあるでしょ?
733 :
Name_Not_Found :05/01/30 11:44:16 ID:GOK4pd9E
formの中をfor構文を使って書けますか? 具体的には下の1 <input name="m1" size="8"> 2<...>...3...4... の部分をfor (var i=1;i<=6;i++)を使って。 <form method="post" name="tokei"> <input size=3 name="fun" value="0">分 <input size=2 name="byo" value="0">秒 <input type="button" value="Start" onClick="doStrt()" name="Stt"> <input type="button" value="Stop" onClick="doStp(this.form)" name="Stp"> <br>1 <input name="m1" size="8"> 2 <input name="m2" size="8"> 3 <input name="m3" size="8"> 4 <input name="m4" size="8"> 5 <input name="m5" size="8"> 6 <input name="m6" size="8"> </form>
734 :
Name_Not_Found :05/01/30 11:58:07 ID:r4N8TbG8
>>733 で、自分ではどうやってみたの?
何が不変で何を変数にすればいいのか考えて、まず書いてごらんよ。
きっといいことあるから。
735 :
Name_Not_Found :05/01/30 12:07:46 ID:AvpD+113
>>732 でしゅよね。右クリック禁止してるやつ、ばっかみたい。
画像にウォータマークってキャッチに誘われてついALLABOUTのサイト行って
みたけど、ひどいねあそこって。
736 :
733 :05/01/30 12:08:22 ID:GOK4pd9E
>>734 formの中をfor構文でいろいろ書いたらhtmlファイルが真っ白になった。
あるいは、javascriptなどが表示されたりして上手く行かなかった。
だから質問している。浅はかな憶測をしないように。
>735 htmlを保存する方法を考える あとはわかるよな?
738 :
Name_Not_Found :05/01/30 12:18:39 ID:GOK4pd9E
>>734 お前は馬鹿なのか。質問を見れば、質問者は何が不変で何が変数かかわかっているだろうが。
>>733 736 738
じゃあ基本からやり直したほうがいいよ。
740 :
734 :05/01/30 12:47:27 ID:bf0MNCts
>>736 浅はかな憶測ってネ、あんた。
じゃあ、そのおバカなコードをさらしてみなよ。それですべてが明らかになる。
質問するなら謙虚な姿勢は大切にしたいぞ。
741 :
734 :05/01/30 12:58:06 ID:M9o5tSq+
>>738 ,
>>733 ,
>>736 おっと、書き忘れた。
IDくらい隠してから人を馬鹿呼ばわりしなよ。だから、for構文でhtmlファイ
ルが真っ白になっちまうのさ。嫌われてんだよ、要するに。
>ID:GOK4pd9E m9(^Д^)プギャー
743 :
738 :05/01/30 13:30:01 ID:GOK4pd9E
>>741 バカ呼ばわりしていない。バカかと問いかけただけだ。
>>740 の要望に応えて晒してやるよ。
顕著じゃなかったのはそっちの方だろうが。
<input ... name="Sto">と<br>1 <input ...)の間に
for (var i=1;i<=6;i++){document.write(i)}を書くと、
for (var ...)がそのままhtmlファイル上に表示される。
<script type="text/javascript">
for (var i=1;i<=6;i++){document.write(i, '<input name=\"m"',i,'size ="8" > ')}
</script>
を間に挟むと期待していたものに近いものが表示されるが、サイズが8になっていない。
真っ白になったのはどうしたのか忘れた。
NGID:GOK4pd9E 以下放置で
745 :
748 :05/01/30 13:41:04 ID:GOK4pd9E
表示されるが、フォームとして機能していない。
たぶん、type="〜"が抜けてるだけ。こういう場合、 “解釈された結果”を見るのではなく、テキストエリアに でも出力して“出力されるHTML文そのもの”を確認すると 楽に解決できる。機能しないのは別問題か? <script type="text/javascript"> var kaere=""; for(var i=1;i<=6;i++){ kaere+=i+' <input type="text" size="8" name="m'+i+'">'; } document.write(kaere); </script>
747 :
748 :05/01/30 14:28:18 ID:GOK4pd9E
ありがとう。正解は得られたが、自分の過ちを理解していないので、同じ過ちを繰り返しそう。
748 :
Name_Not_Found :05/01/30 15:06:23 ID:t9Z6N1Cc
>ID:GOK4pd9E もう来るな。
<script>って<head>内以外に書くことあるのか。 なんかすげー汚い感じがする。
750 :
726 :05/01/30 19:13:57 ID:???
スルーされてるんですけど・・・。 どなたか宜しくお願いします。
751 :
Name_Not_Found :05/01/30 19:59:01 ID:GOK4pd9E
>>749 美的センスは人それぞれとして、body内でjsファイルを呼び込んだり、しょっちゅう使うだろうが。
ていうか、外部ファイルにすればheadではリンクするだけだろうが。
749じゃないが、俺も全部外部jsで、 イベントも属性使わずにattachEvent/addEventListenerだな。 見た目スッキリいい感じ。
>>726 どううまくいかないんだ?
個人的にはflagとかflag2とかDokoniとかtestとかいう名前の
変数やら関数やらでいっぱいのソースは読みたくなくなるがな。
754 :
726 :05/01/30 20:57:44 ID:???
目的は任意の場所に任意のオブジェクトを、表示したり隠したりしたいのですが ヒントを頂ければと。
だからよ、うまくいかないとかじゃなくてどういうエラーが出るんだ?
もう放置するべ
757 :
726 :05/01/30 22:00:04 ID:???
エラーは出ませんがトグルが干渉して意図どおりに表示出来ないのです。
758 :
qq :05/01/30 22:19:42 ID:t6314AO8
カリスマさんって、最初のころ神的だったホレさまのこと? まだ答えてくれてるの?すごい良い人だったね(てか、勝手に過去形)。
自演糞が淘汰されてきていることは良い傾向
>>757 いや、だからね、「意図どおりに表示できない」のは最初からわかってるんだから
今実際にどんな動作になってるのかを聞いてるのよ。わかる?
こっちだってエスパーじゃないんだから関数を呼び出すタイミングもわからないのに
うまくいかないとだけいわれても困るのよ。
もう面倒くさいからHTMLもひっくるめてソース全部載せてみ。
どこかにソースをうpするならともかく ベタベタ貼られても迷惑だからもうほっとけよ。
762 :
Name_Not_Found :05/01/30 23:52:50 ID:cEC+2mm6
763 :
762 :05/01/30 23:54:16 ID:???
書いた瞬間に判った。ブール値にしてるんだな。スマソ
>>761 ウザすぎ。なぜCSSで書かないのか分からん。
そこでなんでCSSが出てくるのか分からん。
>>763 分かりやすさのためには「Boolean(document.all)」がイイ!
>>765 そこでなんで藻舞が出てくるのか分からん。
>>680 とか
>>762 とか、JavaScriptでもここまでトリッキーにできるとは思わなかったなあ
お前が頭堅いだけ
>726 質問はもっと詳しく。 「うまくトグル出来ません」では「間違ってるから」としか答えられない。 わざわざ内容を把握してくれるお人よしはそう現れない。 ソース載せるにしても、重要なところに絞る。 例えば726なら、とり合えずFOR文を消して表示する文字列を固定してみたり、 表示/非表示を切り替えるidを引数で受け取るのを一旦やめて固定してみたり。 もしそれで動けば、for文の中が間違ってるとか、値の受け渡しがうまくいってないと判明する訳で。 そんくらい自分で出来るだろうに。 726もそれだけで動いたし。 で、宜しくないところが判明したら質問汁。 「FORの部分でエラーが出る」とか「値の受け渡しがうまくいかない」とか。 具体的聞けば答える人も増えるハズ。 >いい案はないでしょうか? 良い案というか、プログラムの書き方自体変。 せめてインデントつけるとかせいよ。 flag=0;とか変数使うのも勧められない。何かと面倒なことが増えるから。 それから、いくら試行錯誤中だからといって、この関数名の付け方とか気に食わん。 ついでに、パッと見で「ん?」と思ったのは条件分岐の中にある「flag = !flag;」 何故にifとelseの両方に入れてんの? 条件分岐抜けた後に1コ書けば十分だろうに。
>>726 俺ならこうやるな。参考にどーぞ
<p id="nd">hello</p>
<button onclick="func('nd')">click</button>
<script>
function func(_id) {
o = document.getElementById(_id)
o.style.display = ["block", "none"][ (o.flag = !o.flag)-0 ];
}
</script>
質問は二つ (1)下の関数でwhile(true){....}のところを単にxx=xx.replace(....)にすると 1個だけの変換でなぜ満足してしまうのか。 (2)J, Q, Kの変換は上手く行くが、Aに関してはスペードとクラブしか変換しない。 なぜか。ハートやダイヤもちゃんと変換する方法は?" 1 "のところを" 1"と1の後の 空白を消すとハートやダイヤも変換するが、ハートの10をハートのA0みたいに余計 なところも変換する。 function myCd(n){var Rf="<font color=red>", Rl="</font>" H= "♥ ", C="♣ ", S="♠ ", D="♦ "; myD=new Array(52); for(i=1; i<14; i++) myD[i-1] = Rf+H+i+Rl; for(i=1; i<14; i++) myD[i+12] = Rf+D+i+Rl; for(i=1; i<14; i++) myD[i+25] = S+i; for(i=1; i<14; i++) myD[i+38] = C+i; var xx=""; for(j=1; j<53 ; j++){ xx+='('+j+')'+myD[j-1]+" "} xx+="<hr>"; while(true){yy=xx; xx=yy.replace(" 11"," J"); if(xx==yy){break;}} while(true){yy=xx; xx=yy.replace(" 12"," Q"); if(xx==yy){break;}} while(true){yy=xx; xx=yy.replace(" 13"," K"); if(xx==yy){break;}} while(true){yy=xx; xx=yy.replace(" 1 "," A "); if(xx==yy){break;}}
>>772 (1)仕様。正規表現パターンを調べれば意図どおりに動作する指定方法が分かると思う。
(2)myCd()においてハートの1が実際にどのようになるかを追っていけば、
"<font color=red>H_1</font>_"となることが分かる("_"は半角スペース)
ダイヤも同様。
774 :
773 :05/01/31 09:08:42 ID:???
追記。 今のやり方を変えないで動作させるなら、以下の方法で対処できる。 (A)10も先に別のもの、例えばXなどに変えてから次に1を変換し、それからそのXを再度10に戻せばよい。 (B)Rf、Rlを追加するタイミングを例えばxx生成時に合わせてしまう。
775 :
Name_Not_Found :05/01/31 09:43:24 ID:tnm9pqu5
innerHTMLとJavaScriptを使ってタグを書き換えたいのですが、 上手く書き換えられません。innerHTMLだとどのようにすれば書き換えられるのですか? <td id="myMes">3</td>を<td id="myMes" style="color:#0000ff;">3</td>にしたいのです。
> innerHTMLとJavaScriptを使ってタグを書き換えたいのですが、 │ │ ≡ ('('('('A` ) < ツマンネーネタダナ │≡ 〜( ( ( ( 〜) │ ≡ ノノノノ ノ サッ ↓
>>775 「inner」って英語でどういう意味だと思う?
実際どういう風に書いているのか貼ってみれ。
778 :
772 :05/01/31 10:32:53 ID:X7MFrx6n
>>773 >>774 的確な答案、ごっつあんです。(A)の案は、私も考えましたが、元々
for(i=1; i<14; i++)の部分はi<11で、myD[11]=RF+H+"J"+Rl;みたいに
していたのを見やすくするために変更したので、これ以上複雑にしたくないと
思いました。(B)は思いつきません。ただ、773のレスでRl="</font>"を
Rl="_</font>"("_"は半角スペース) にすれば良いと気付きました。サンクス。
779 :
Name_Not_Found :05/01/31 10:33:46 ID:tnm9pqu5
>>777 初心者のため良くわかっていなくてすいません。
document.writeでテーブルを作っていくやり方じゃなくて
既にあるタグを今日の日付だけ色をinnerHTMLで変えたかったんです。
<head>
<style type="text/css">
<!--
.style1 {font-size: 12px}
.style3 {font-size: large; font-weight: bold; }
.style4 {color: #00FF00}
-->
</style>
<script language="JavaScript">
<!--
function myFunc(){
myD = new Date( ) ;
myDate = myD.getDate(); //日
myMes = new Array(31);
for(j=0;j<31;j++){
if((myMes[j]+1)==myDate){document.write(myMes[j].innerHTML="COLOR='floralwhite'">);}
}
</script>
780 :
Name_Not_Found :05/01/31 11:18:36 ID:AEIEmrN/
>>779 className 使うよろし。style変更はCSSで。DHTMLもできるようになるぞ。
ステータスバーで文字をスクロールさせたいんですが、 <script Language="JavaScript"> var Gstcnt = 0; var Gmsg = "あいうえお"; var Gblnk = " "; var Gstr = Gblnk + Gblnk + Gblnk + Gmsg; function scroll() window.status = Gstr.substring(Gstcnt++,Gstr.length); if (Gstcnt>Gstr.length){ Gstcnt=0;} setTimeout("scroll()",150);} </script> 右→左ではなく左→右にスクロールさせるにはどうしたらいいのか教えてください。
782 :
Name_Not_Found :05/01/31 11:49:41 ID:eoGRqG9d
あいうえお→あえおいう みたいに文字列をシャッフルさせるスクリプト教えて頂けませんか?
任意の日をユーザーに書き込んでもらい、 100日後は何月何日かをそのページのフォーム内に出すスクリプトがおいてある サイトはないでしょうか? カウントダウンするスクリプトはたくさんありますが、 上記のものは探し回ってもありませんでした。 申し訳ありませんが、お願いいたします。
785 :
Name_Not_Found :05/01/31 12:57:25 ID:oMf+0QNr
>>781 ステータスバーはメッセージを動かすところではない。タイトルバーも然り。
第一そんなもんだれも注目しない。
ただ、どうしてもというのなら、アラビア語圏のサイトにヒントがあると思われ。
その前に、これではスクリプトが動かんぞ(たぶん)。
>>784 その「任意の日」というのは「今年の」でよいのか。それとも年も
指定するのか。まあどっちにせよ、年・月・日からDateオブジェクトを
作ってそれをもとに100日後のDateオブジェクトを作って月・日を取り
出して表示するんでしょ。読める過去ログに沢山あるよ。終了。
>>779 innerHTMLはタグの「内側」を変更するんであって、タグの属性は変更
できないだろ。よく考えろ。アンタがやりたいことは
myMes[j].style.backgroundColor = '色';
これだけでできる。これも過去ログに山のようにある。過去ログが読め
ない奴は書き込む資格がないと
>>1 に書いてあるだろ?
>>782 "JavaScript 配列 シャッフル"でググってみ。sliceメソッドなんかはArrayにもStringにもあるから応用きくでしょ。
まあもうちょっとJavaScriptらしくメソッドとして使いたいっていうんなら
String.prototype.shuffle = function()
{
var original = this.valueOf();
var shuffled = "";
for (var i = original.length; i; i--) {
var j = Math.floor(Math.random() * i);
shuffled += original.charAt(j);
original = original.substring(0, j) + original.substring(j + 1, i);
}
return shuffled;
}
shuffledString = originalString.shuffle();
といったあたりかね。
788 :
784 :05/01/31 13:29:05 ID:???
早い返答ありがとうございます。 助かります。 >786 >その「任意の日」というのは「今年の」でよいのか。それとも年も 指定するのか。 年月日です。 サンプルがないと今の自分にはちょっと…
>>788 Dateオブジェクトの作り方はわかるか?
new Date("2005/1/31") とか new Date(2005, 0, 31) とかやる以外に
new Date(数値) とやる方法もあるわけだ。
このときの「数値」ってのは1970年1月1日から経過した時間を表してて
getTimeメソッドを使うと後からでも取得できる。
つまりは入力された日付を表すDateオブジェクトのgetTimeで得られた値に
100日分の時間を足した値を元にして新しいDateオブジェクトを作ればいいわけよ。
後は自分で調べろ。
>>788 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function calc() {
var e = document.forms.f0.elements;
var d1 = new Date(Number(e.i0.value),Number(e.i1.value)-1,Number(e.i2.value));
var d2 = new Date(d1.getTime() + 1000*60*60*24*100);
alert(d2.getFullYear() + '.' + (d2.getMonth()+1) + '.' + d2.getDate());
}
</script>
</head><body>
<form name="f0" action="#" onclick="return false"><p>
<input type="text" name="i0" value="2005"><input type="text" name="i1">
<input type="text" name="i2"><input type="button" onclick="calc()">
</p></form></body></html>
>>787 素人にとってそういう人力改造は応用かもしれないが……。
例えば、次の様に、処理を委ねることは「応用」と言える。
(call を知らない古いJSなら、委ね先の shuffle に引数を設定して this で参照させなければすむ。)
Array.prototype.shuffle = function () {
shuffle.call( this);
}
String.prototype.shuffle = function () {
var a = this.split( '');
shuffle.call( a);// a.shuffle() としては駄目。結合させない。
return a.join( '');
}
function shuffle () {
var i = this.length;
var j;
var tmp;
while (0 < i) {
j = Math.floor( Math.random() * i--);
if (i != j) {
tmp = this[ i];
this[ i] = this[ j];
this[ j] = tmp;
}
}
}
792 :
784 :05/01/31 13:56:35 ID:???
ありがとうございました。 貴重な時間を割いてくださってありがとうございました。 後は自分で頑張ってみます。 今から仕事なので、深夜からがんばります。
>>788 ミリ秒とかなんとか深く考えなくても、Dateオブジェクトがよきに計らってくれる。
var d = new Date;
d.setDate( d.getDate() + 100);
794 :
787 :05/01/31 14:16:27 ID:???
>>791 指摘ありがとう。Arrayで定義しといてそれを利用するってのは思い浮かばんかったわ。
で、申し訳ないんだけど a.shuffle() としてはだめな理由がわかりません。
「結合させない」とはどういう意味か教えてくれないでしょうか?
>>793 おお、それって知らなかった。簡単でいいね。
>>794 Arrayオブジェクトにshuffle()メソッドを追加してるんだから
a.shuffle()としたらそれが呼ばれちゃうだろ。つまり自分で自分を
呼んでしまい無限再帰呼び出しになる。
>>791 function shuffle(a) { ... のように1引数で受けた方が分かりやすい
んじゃないの。さらに同名の関数は混乱をまねくから(上記の通り)
shuffle_array()とか名前を変えた方が。
797 :
Name_Not_Found :05/01/31 14:33:17 ID:tnm9pqu5
>>786 ありがとうございます。このように書かれていたのでinnerHTMLで
タグを書き換えられるのかと勘違いしていました。
この読み書き可能なプロパティは、
テキストとHTMLタグの組み合わせになる。ただし、
<html>、<head>、<title>タグは除く。
このプロパティを設定すると、指定した文字列で、
エレメントの既存の内容を完全に置き換えてしまう。
もし文字列にHTMLタグが含まれていた場合には、文字列は解釈されて、
ドキュメントの中でそれが置かれるべきところにフォーマットされて配置される。
注 このプロパティはドキュメントがロード中に設定することはできない。
設定する前にonloadイベントを待つようにしなければならない。
TextRange、innerHTML、outerHTMLによってダイナミックにタグを作る場合には、
新しく作成したタグのためのイベント作成にはJScriptを使用しなければならない。
VBScriptはサポートされていない。
798 :
mochi :05/01/31 14:47:42 ID:SSGZxizE
初心者です。 現在サーバーでCGIが使えないため、別の方法で次のことが できるかどなたか教えてください!!! 【ラジオボタンの選択により、メールの送信先を変更したい。】 例:○Aサポート ○Bサポート ○Cサポート ←ラジオボタン ●Aサポートを選択し、送信ボタンを押した場合、 Aサポートへメールが送信される。 ●Bサポートを選択し、送信ボタンを押した場合、 Bサポートへメールが送信される。 また、現在では、【送信】ボタンを押すと電子メールを使用して 送信するようになっています。 IEより以下のポップアップが表示されます。 【このフォームは電子メールを使用して送信されています。 このフォームを送信すると、電子メールアドレスが 受信者に公表され、フォームのデータが暗号化されずに 送信されます。 この送信は続行できますが、取り消すこともできます。】 <FORM action="mailto:メールアドレス?Subject=問い合わせ" method="post" enctype="text/plain" onSubmit="relocate()"> よろしくお願いします。
800 :
Name_Not_Found :05/01/31 15:12:58 ID:FzvqXBDC
>>797 だからそういうことをしたいのならそのタグを囲む外側の
タグに対応する要素のinnerHTMLを変更する。
NGID:初心者です
NGIDじゃねーや。NGwordだ
>>797 tdタグ自体を指定すればいい。
単純なのは各tdタグにidを振る。
805 :
782 :05/01/31 15:40:28 ID:eoGRqG9d
>>787 >>791 ありがとうございます。
例えば、var message="aiueo";のaiueoをシャッフルさせて表示させるように
するにはどうしてらよいのでしょうか?
806 :
787 :05/01/31 15:47:39 ID:???
>>796 ありがとうございます。しかしまだよくわかりません。
わかりやすくするため
Array.prototype.shuffle = function _1() {
String.prototype.shuffle = function _2() {
とします。
function _1 の中で Array::shuffle を呼ぶと無限再帰になるというのは分かるのですが
function _2 の中で a.shuffle() とすると無限再帰になるというのがわかりません。
この場合 a.shuffle() としていても function _1 が呼ばれ、
その中で function shuffle が呼ばれるので無限再帰にはならないのではないでしょうか?
実際 JavaScript 1.5 (Firefox 1.0) 、JScript 5.6 (IE 6) の両者において
a.shuffle() としてもうまく動いているように見えます。
勘違いがあったらご指摘よろしくお願いします。
>>805 >>787 ,791さん二人が教えてくれたスクリプトが理解できないんだったら、
素直にそう言った方が良いよ。
ちょっと考えてみ。
配列と、Mathオブジェクト駆使すれば、力技っぽくなるけど十分シャッフルは可能だよ。
長くてすみません。質問失礼します。 <HTML><HEAD> <script language="JavaScript"> function calc(){ document.form01.goukei1.value=eval(document.form01.sara1.value) document.form01.sara2.value=350*eval(document.form01.sara1.value); document.form01.goukei2.value=eval(document.form01.sara2.value);} </script></HEAD> <body><form name="form01"> <table bgcolor="#ffffff" width="600" border="3" cellpadding="5"> <tr><td>小 皿</td> <td> 350円</td> <td><input type="text" size="10" name="sara1">個</td> <td><input type="text" size="10" name="sara2">円</td></tr> <tr><td><input type="button" value="合計計算" onclick="calc()"></td> <td></td> <td><input type="text" size="10" name="goukei1">個</td> <td><input type="text" size="10" name="goukei2">円</td> </tr></table><br> <input type="reset" value="数値をリセット"> </form></body></HTML> 小皿のほかに2項目ほどありますが省略しました。 〜個のところに入力して合計計算を押すと数量と小計が出るものです。 空欄のままボタンを押すとNaNになってしまうので、 空欄を0に書き換えて計算できるようにするにはどうしたらいいでしょうか。
809 :
Name_Not_Found :05/01/31 16:10:44 ID:ydsdZrdN
>>808 document.form01.sara1.value が空欄でないときだけ関数を実行させればいいよね。
それをjavaScriptにわかってもらえるようにしよう。
>>808 1.最初からテキストボックスのvalueを0にしておく
reset押したときと初期値が0になるので追加で関数が必要ない。
2.document.form01.goukei1.value=eval(document.form01.sara1.value)
(関係ないが↑セミコロン抜けてる。お気をつけ。)
この行を、
document.form01.sara1.value=""?document.form01.goukei1.value=0:document.form01.goukei1.value=eval(document.form01.sara1.value);
に置き換える。
どちらでもどうぞ。
お勧めは簡単な1ですけどね。
2使う場合はコピペ推奨
811 :
808 :05/01/31 16:40:59 ID:???
ありがとうございます!
方法はいくつかあるのですね。
valueを0にする方法を使わせていただきます。
他の2つはもっと勉強してわかるようにします。セミコロンも気をつけます!
助かりました
>>809 、
>>810
>>806 そりゃStringの方は好きにすればいいんじゃない。
呼び出しが余計にあったりとか洩れは気持ち悪いが。
813 :
Name_Not_Found :05/01/31 17:21:35 ID:tnm9pqu5
>>804 ありがとうございます。
各SPANタグにidを振って今日の日付に当てはまるものだけに
innerHTMLで書き換えるような処理にしたのですけど上手くいきません。
構文エラーが出たのですがinnerHTMLの書き換え方が間違っているのでしようか?
テーブル部分は<SPAN id="myMes[0]"><td>1</td></SPAN>で31まで作っていて
<P><input type="button" value="日付" onclick="myFunc()"></P>で
呼び出すようになっています。勘違いがあったらご指摘宜しくお願いします。
<script language="JavaScript">
<!--
function myFunc(){
myD = new Date( ) ;
myDate = myD.getDate(); //日
myMes = new Array(31);
for(j=0;j<31;j++){
if((myMes[j]+1)==myDate){
var obj=document.getElementById("myMes[j]");
obj.innerHTML="<td class='style4'>2</td>";
}
}
-->
</script>
>>813 あんたそりゃHTML自体一から勉強しなおしたほうがいいよ。
それから誰かが言ってたと思うけどスタイルを変えるだけなら別にinnerHTMLなんて使う必要ないんだから。
classNameプロパティ使えばclass属性の値は書き換えられるわけだし。
815 :
Name_Not_Found :05/01/31 18:50:24 ID:Rh6Qc8Ss
>>810 2.
またえーかげんなことを。あとで雨裸馬れるよ。それに、最初から0入っ
てるってのは商売上縁起わるいしアンチョコすぎ。ちゃんと教えてあげて。
816 :
726 :05/01/31 20:27:30 ID:???
>>770-771 亀レス申し訳ありません。
ご親切なご指摘有り難う御座います。
宜しくないところは
1 <a href="javascript:void(0)" onclick="test2('aaa','test.txt'); return false;">aaa</a>
2 <a href="javascript:void(0)" onclick="test2('bbb','test.txt'); return false;">bbb</a>
として
1をクリックして2をクリックするとflagが1なので2は表示されない。
1をクリックして表示を消すと、flagが0なので2をクリックすると2は表示される。
問題点は閉じて開かないと、開けないということなので
>flag=0;とか変数使うのも勧められない。
というご指摘通りなんです。で如何にすべきかというところで
771のfunction func(_id) {
o = document.getElementById(_id)
o.style.display = ["block", "none"][ (o.flag = !o.flag)-0 ];
}
という表現は目から鱗なのですが、如何せん何故これでうまく動くのか良く分かりません。
いろいろと探してはみましたが["block", "none"][ (o.flag = !o.flag)-0 ]の様な表現もその説明も見つかりません。
再度お手数ですがこういう表現の名称および説明があるところを教えて頂ければ幸いです。
宜しくお願い致します。
817 :
Name_Not_Found :05/01/31 20:55:16 ID:uhw+3NAO
>>816 なぜに直接作者にこれはどういう意味なんですかと聞かないの?
トピク的に関係ないけど、
<a href="javascript:void(0)" onclick="test2('aaa','test.txt'); return false;">aaa</a>
のreturn falseってどういうイミあんの?void(0)も正しくないような。疑問続出。
818 :
Name_Not_Found :05/01/31 21:41:49 ID:nFS95+39
return falseとvoid(0)はテンプレからとったので特に意味はないですが <!--<a href-killed(Trinity's)="javascript:void(0)" onClick="alert('test');return false">alert('test')</a>--> return falseはhrefにURIを入れたときに便利、void(0)は#をいれるよりもいいと思われ・・・ 間違った解釈なら教えてください。
819 :
Name_Not_Found :05/01/31 22:25:08 ID:zOEoMVPz
IEと、DOM2Events対応ブラウザで同じように使えるように Eventクラスのラッパーを作ってるんですが、 cancelBubble=trueはstopPropagation()と同じ returnValue=falseはpreventDefault()と同じ で間違いないでしょうか? 試したところでは同じような気がしますが、 違いなどご存知でしたら教えてくらはい。
<head><script language="JavaScript"> <!--// //tuki=12;//hi=25;//moji1='クリスマスまで後';//moji2='日';//moji3='今日はクリスマス'; //hayasa=150;kekkamoji='';my_time=0;hajime=0; function count() { hiduke=new Date(); tosi=hiduke.getFullYear(); ima=hiduke.getTime(); my=new Date(tosi+'/'+tuki+'/'+hi).getTime(); if(my < ima && ima < my+86400000) { kekkamoji=moji3; ScrollMoji(); }else { if(my < ima)my+=31536000000;my=Math.ceil((my-ima)/60/60/24/1000); kekkamoji=moji1+my+moji2; ScrollMoji();}}function ScrollMoji() { ji=" "; bunn=ji+kekkamoji; len=bunn.length+1; document.form1.text1.value=bunn.substring(hajime,len); hajime=(hajime > len)?0:hajime+1; clearTimeout(my_time); my_time=setTimeout('count()',hayasa); } //--></script></head><body onLoad="count();"><form name="form1"><input type="text" name="text1" size="30"></form></body> こんなのがあったんで使ってみた。1個だけなら普通に動いたけど 3個続けて貼ってやろうとしたらできなかった。 どうしても3個使いたいんで教えてください。
for文とwhile文の違いは何ですか?
824 :
Name_Not_Found :05/02/01 00:45:10 ID:Lhfm11Co
>>824 function onLoad_proc()
内の
parent.main.document.frm.adr.value = '{$adr}';
>>816 マンドクセーけど書いた本人だからな。簡単に…
> ["block", "none"][ (o.flag = !o.flag)-0 ]
これは配列。 alert(["block", "none"][1]); とでもしてみれ
> (o.flag = !o.flag)-0
-0 することでboolean型を数値に形変換し有効な添え字に
> o.flag
各オブジェクトに自分自身の状態を真偽値で格納させている。
>>826 余計なもんダウンロードさせんなヴォケ!
ドキュメントに書いてあるじゃん。
義務教育は卒業したと仮定するが、英語は習ったよな?
添付ドキュメントを全読しろ。以上。
>>821 3個貼ったって、まさかbodyが3つあるHTMLを作ったんじゃ…
そんなんだったらJavaScript以前の問題だが。
830 :
Name_Not_Found :05/02/01 09:15:56 ID:KGk1pkGX
>>821 うちの主人の申しますには、これ変数の種類とスコープをお勉強して納得解決ざ
ます。おほほほ。でも、どうして変数無効化されてるのかはナゾざます。
831 :
Name_Not_Found :05/02/01 09:25:18 ID:MxoLP7GP
遅レスで自己レスでもあるのだが
>>667 function my_Tbl(nn){
document.all("test0").innerHTML="";
for(kk=1; kk<nn+1; kk++){myCd(kk);}}
という新しい関数を作り、関数doStrt()の一番最初にif(lap==0){my_Tbl(2);}を入れる。
関数myCd(n)を以下の様に変更する。後半部分document.writeで書き足している部分を
変数xxを変更していくようにする。そして変数xxに最初にdocument.all("test0").innerHTML;
を入れておく。最期にdocument.write(xx)とやらずに
if(document.all){document.all("test0").innerHTML=xx;}
else{document.getElementById("test0").innerHTML=xx;}
みたいにやる。
832 :
Name_Not_Found :05/02/01 09:35:16 ID:gEuCGpcw
広告付きのホームページを無料で作る方法ってありますか?
834 :
q :05/02/01 10:14:59 ID:l6F9Tf7Y
質問です。 <script type="text/javascript"><!--// と <script type="text/javascript"> <!--// で記述上どちらが適正ですか。振舞いにちがいはあったりしますか? 教えてください。
>>827 レス有り難うございます。
ジャグ配列というそうですね。
願わくばもう少し深く知りたいので、ジャグ配列のサンプル等が置いてあるところを知りたいのですが
Jagged Array ジャグ配列ではヒットしません。
無いですかね?うざいといわれそうなのでもうひきあげます。
有り難う御座いました。
836 :
Name_Not_Found :05/02/01 11:34:33 ID:BBM7ZpkW
>>835 もう少し深くって、ここまで827が説明してくれてこれ以上なに知りたいの?
結局自分で分析しまくるチカラなきゃどんなサイト見たってダメじゃないのか。
だから文科省が考える力を、っていってんだよ。
837 :
Name_Not_Found :05/02/01 11:43:53 ID:10ex+hA7
質問です。 フォームのテキストボックスの入力チェックについてなのですが、 <td><input type="text" id=shuh[X] name=shuh_X size="2" maxlength="2">:<input type="text" id=shum[X] name=shum_X size="2" maxlength="2"></td> <td><input type="text" id=taih[X] name=taih_X size="2" maxlength="2">:<input type="text" id=taim[X] name=taim_X size="2" maxlength="2"></td> <td><select size="X" id=shukkin_type[X] name=shukkin_type_X><option value="通常">通常</option><option value="休">休</option></select></td> ※for文でループさせて、Xの部分は1,2,3…と増える。 このようなフォームの場合、入力チェック(空欄だったらアラートを表示)はどのようにすればいいのでしょう? ループを使いたいのですが、うまく動いてくれません。
>>837 うまくいかなかったfor文も書きなされ
じゃないと指摘しようがない
>>837 まずFAQ
>>9 のQ7/A7を読め。それで分からなければアンタの
「動かない」コードを貼れ。何も書いてないんだったら質問する
資格がないと思え。
>>835 全然Jagged Arrayじゃないじゃん! 普通の2次元配列だろ。
840 :
837 :05/02/01 12:34:07 ID:10ex+hA7
>>838-839 すみません。コードはこれです。
var num=frm.elements.date.length;
for(var i=1;i<num;i++){
if ((frm.elements.shukkin_type[i].value == "通常") ||
(frm.elements.shukkin_type[i].value == "休出")){
if((frm.elements.shuh[i].value == "") ||
(frm.elements.shum[i].value == "")){
alert(frm.elements.date[i].value+" の出勤時間を入力してください。");
return false;
} else if((frm.elements.taih[i].value == "") ||
(frm.elements.taim[i].value == "")){
alert(frm.elements.date[i].value+" の退社時間を入力してください。");
return false;
}
if((frm.elements.shuh[i].value < 1) || (frm.elements.shuh[i].value > 31) ||
(frm.elements.shum[i].value < 0) || (frm.elements.shum[i].value > 59)){
alert(frm.elements.date[i].value+" の出勤時間を修正してください。");
return false;
} else if((frm.elements.taih[i].value < 1) || (frm.elements.taih[i].value > 31) ||
(frm.elements.taim[i].value < 0) || (frm.elements.taim[i].value > 59)){
alert(frm.elements.date[i].value+" の退社時間を修正してください。");
return false;
}
}
}
alert("送信します。");
return true;
}
ところで、Jagged Arrayってどんなの? おせーて。
842 :
841 :05/02/01 12:46:11 ID:???
>>841 スレ違い
>>839 にじげんはいれつぅ?
var a = [ 'block', 'hidden' ]
function i (o) {
var n;
if (o.flag) o.flag = false; else o.flag = true;
n = o.flag - 0;
return n;
}
alert( a[ i(o) ] );
こういう a をにじげんはいれつという人がいるのか。とりあえず晒し上げとく。
>>837 質問への回答ではないが、HTML がおかしい。
input の id は ID だから、「[」と「]」は使えない。
input の name は CDATA だから、「[」も「]」も使える。
正しいHTMLになるように入れ替えてやり直してみてはと思うが。
<input type="text" name="shuh[X]" id="shuh_X" ...
うーんダメですわかりません
どなたか教えて頂けませんか?
>>805
847 :
784 :05/02/01 14:10:37 ID:???
遅くなりましたが、 何とかできました。マジでうれし泣きしています。苦労したんで。 >786>789>790>793 さん、ありがとうございました。
848 :
837 :05/02/01 14:21:37 ID:10ex+hA7
>>845 そうなのですか!知らなかった…orz
修正してみます。
ちなみに今更聞けないことを聞いちゃいますが、
frm.elements.XXX.valueなどのXXXってIDとNAMEどっちを見てるんでしょう?
・教えを請う ・学習する 似て非なるものだということを自覚してほすぃが、ここは質問用スレ。 難しいところだね。 NAME
教えてください。たとえば、 var myArray = new Array(5) は、カラの配列要素が5つあることを宣言してますよね。 とすると、myArray[0]=5 という意味で、この1行形式で書くにはどうすれば いいのでしょうか。苦しまぎれに、 var myArray = new Array(5,'') としてみましたが、もちろん駄目でした。
852 :
Name_Not_Found :05/02/01 16:28:38 ID:+YOigZLT BE:12077388-
表をソートしたいと思うのですが 2重配列を使って a,b,c,d e,f,c,g h,i,j,g h,l,m,n な表を配列に収納 A[0]=new Array("e","b","c","g") A[1]=new Array("e","f","c","d") A[2]=new Array("h","i","j","g") A[3]=new Array("h","l","m","n") で縦4つ目のdでソートしたいのです。 sort(A[0])だと横でソートされてしまいますし…… 縦でソートして A[0]=new Array("e","f","c","d") A[1]=new Array("e","b","c","g") A[2]=new Array("h","i","j","g") A[3]=new Array("h","l","m","n") にしたいのです。 よろしく御願いします。
>>835 全然ジャグ配列じゃない。ただの配列リテラル。それも1元配列。
前半の [ ] は配列リテラルを表し後半の [ ] は添え字を表す。
同じ記号でも意味が異なる。ただそれだけ。
>>852 A.sort(function(x, y) {
if(x[3] > y[3]) return 1;
else if(x[3] < y[3]) return -1;
else return 0; });
>>851 さん ありがとうございます。
なるほど。でも、私の本によると、
var myArray = new Array();
でカラの箱が用意されるが、その際同時に、配列要素を設定することもできる
として、
var myArray = new Array('name','age','sex');
のように説明されています。new演算子で生成したその空箱にポンと"name"1つ
を放り込むことはこの形ではできないのでしょうか。この形は、2以上の場合に
成立するという仕様ということですか。ちょっとギモンなものですので。
本によるとじゃねーよ。 素直に空で用意して次の行で代入すりゃいいだろ。 何をいつまでもぐちぐち言ってる必要があるんだ?
857 :
Name_Not_Found :05/02/01 17:19:24 ID:vnSWjTXc
すいません。質問させてください。 よくメールフォームにある「メールアドレス入力欄」と「再確認用のメールアドレス」欄に違うアドレスを入力したらアラームが出るようにしようと、 form の name は form1に。 アドレスを fromとfrom2 として、head内に <script> function check(){ val1 = document.form1.from.value; val2 = document.form1.from2.value; if(val1 != val2){ alert("メールアドレスと確認用アドレスが異なります。ブラウザの戻るボタンで戻って正しく入力してください。"); return false}; return true; } </script> と記述しました。 すると、win IEの6では作動したのですが、他のバージョンやMacでは作動しませんでした。 これは何が原因なんでしょうか。いくつか試したのですがどうしても分かりません。よろしくお願いします。
>>857 とりあえず、(val1 != val2) が何を返しているか確認してみてはどうだろうか。
>>856 あっ、わからなかったもので。すいません。
おー、こわ。
>>859 「2の場合以上についてのみ成立する仕様です」
ECMA-262で「1個の場合は長さ指定」と決まってる。
アンタの持ってる本がダメダメだから捨てたら(ry
>>855 (´-`).。oO(
>>850 はなぜ本の内容から削るだけでなく数値で試そうとしたのだろう…
フォームのセレクト部品ごとに違うイベントを発生させることって可能でしょうか? optionタグはイベントを発生しないみたいなので、ムリですかね・・。
それぞれが01a.html〜07c.htmlをリンク先とする15個のリンクスポット文字列01a〜07cを、 2重のfor文を使って出力する関数を作りたいと思いました。 その際に、その関数をLink()とします。 で、a,b,cをこのままの順で格納する配列abcを宣言し、初期化するとする。 また2重ループで使うカウンタ変数を宣言(iとします) それで、 01a 01b 01c と3つ表示させたら改行させるとします。 で、色々考えたのですがよく理解ができていないようなので下記に記述したものを お見せしますのでご教授お願いいたします。 <script type="text/javascript> <!-- abc=new Array("a","b","c"); var i; function makeLinkSpot(){ for(i=1;i<8;i++){ 途中までは出来たのですが ここからどういう風に記述したらよいのかわかりませんので お教え下さいませ。よろしくお願いいたします。
864 :
863 :05/02/01 18:59:50 ID:???
>>863 の追記: リンクに対する関数がLink()ではなくmakeLinkSpot()でした。
865 :
863 :05/02/01 19:03:03 ID:???
>>863 げげ・・・スレ汚しすいません… これはヘッダ部に記述し、makeLinkSpot()はボディ部から
呼び出す仕様です。
>>863 なんで、「01a.html〜07c.html」で、リンク先が「15個」になるの?
867 :
863 :05/02/01 19:09:57 ID:???
>>863 だったら素直に for文 2つ書けばいいんじゃない?単に。
>>863 var count = new Array("1","2","3","4","5","6","7");
var abc = new Array("a","b","c");
for(var i=0 ; i<count.length ; i++){
for(var j=0 ; j<abc.length ; j++){
var str = "0" + count[i] + abc[j];
var url = str + ".html";
var string = "<a href=¥"" + url + "¥">" + str + "</a>";
document.write(string);
}
}
こんなかんじ?
870 :
863 :05/02/01 19:30:08 ID:???
>>868 そう for文2つかけばいいんですけどね。記述がわかんないんですよ(汗
871 :
863 :05/02/01 19:35:36 ID:???
872 :
863 :05/02/01 19:41:21 ID:???
>>869 そんな感じです。あとは、01a 01b 01c<br>02a 02b 02c<br>・・・・・と
なるように配置したいわけですです。
873 :
Name_Not_Found :05/02/01 19:55:38 ID:MxoLP7GP
>>871 <script type=text/javascript>
var abc = new Array("a","b","c");
msg=""
for(var i=1 ; i<8 ; i++){
for(var j=0 ; j<3 ; j++){
msg += "0"+ i + abc[j] +" "; }
msg+="<br>" ;}
document.write(msg);
</script>
874 :
Name_Not_Found :05/02/01 19:58:51 ID:MxoLP7GP
>>871 リンクもつけるなら
<script type=text/javascript>
var abc = new Array("a","b","c");
msg=""
for(var i=1 ; i<8 ; i++){
for(var j=0 ; j<3 ; j++){
msg += "<a href='0+ i + abc[j]+\'.html\''>0"+ i + abc[j] +"</a> "; }
msg+="<br>" ;}
document.write(msg);
</script>
875 :
863 :05/02/01 19:59:13 ID:???
>>873 ありがとうございます。
ちなみにnewArrayを使わない方法だと、
<!--
var i
for(i=1;i<6;i++)
window.document.write("<a href='c0"+i+"a.html'>c0"+i+"a</a> <a href='c0"+i+"b.html'>c0"+i+"b</a>
<a href='c0"+i+"c.html'>c0"+i+"c</a><br><br>");
//-->
です。
ようするにnewArrayを使って上の記述と同じようなものを作りたいということなんです。
876 :
863 :05/02/01 20:00:42 ID:???
>>874 ありがとうございます。私が記述している間に・・・お早いことですw
>>856 答えもしらねえくせに吼えてんじゃねーよ、このヴォケ!
消えろ!
878 :
863 :05/02/01 21:19:33 ID:???
>>874 874さんのものを少しいじらせていただきましたら無事に表示がされ、リンクもきちんと
できていました。ありがとうございます。
お礼言うのも良いけど 頭からもらったソースを信用するんじゃなしに ソース見て再検討しる
880 :
863 :05/02/01 22:28:36 ID:???
881 :
874 :05/02/01 22:46:45 ID:MxoLP7GP
>>878 >>874 より下のほうがスマートかも。
<script type=text/javascript>
var abc = new Array("a","b","c","d");
msg=""
for(var i=1 ; i<9 ; i++){
for(var j=0 ; j<3 ; j++){
msg +=("0"+i + abc[j]).link('"0"+i + abc[j]'.html) +" "; }
msg+="<br>" ;}
document.write(msg);
</script>
>>846 何がだめで、どう動かないのか、
ソースを出しなされってばよ
883 :
Name_Not_Found :05/02/02 00:18:46 ID:REC/FP2x
<script>タグで別のドメインのサーバーにあるファイルを指定する事は不可能ですよね?
>>859 ヴォケカスに言われたくらいですぐあやまるな。どんな小さなことでも疑問が
あるなら分かるまで徹底的に聞け。だれかが教えてくれる。
887 :
Name_Not_Found :05/02/02 11:21:05 ID:Yv2TiD/b
こんにちは。JavaScript初心者です。 画像を入れ替えるスクリプトなのですが、 <script type="text/javascript"> function ImgChange(pic1,pic2){ document.images[pic2].src=mona[pic1].src; return false; } </script> で、どうして return falseを付けなければならないのでしょうか。 良く分かりません。教えてくらさい。
>>887 FAQ
>>9 のQ5/A5は読んだんだろうね?
HTML側からどうやってその関数を読んでいるかによるわけだけど。
一々「初心者です」とか言うなよ。 自分で初心者だと思うんなら 質問する前にテンプレとかリファレンスサイト一通り見てきてくれ
>>890 各種仕様書の和訳は必要だが、他の個人サイトは全て削除して構わない。
>>890-891 仕様書や和訳だけだと敷居が高すぎるんじゃないかと思う。
個人サイトもできるだけショボくないところを探して掲載する
ようにしたい。またはどうショボいかとか警告つきでリンクするとか。
893 :
887 :05/02/02 19:26:30 ID:CVt7BtNr
>>890 仕様書とその和訳だけだと初心者はまず読む気をなくす。もっと簡潔で要点を抑えた
サイトが必要。ほとんど使わないような用語まで含めてすべて説明してあると長くなる
し、用例がないと具体的に良くわからないし。しょぼいサイトはあっという間に読めるの
だからあっても良いだろう。電波を飛ばしているサイトとか、誤った方向へ導くサイトは
ない方が良いけど。
↑ 今時ime.nuも知らない人の数
なんのことかとオモタ
ime.nuなんて永らく通ってないから 何のことか一瞬わからんかった
900 :
Name_Not_Found :05/02/03 04:40:48 ID:heV5qRI1
外部javascriptに値を渡すにはどうしたらいいんでしょうか?
たとえば、忍者システムズの解析用のスクリプト
<script src="
http://j1.shinobi.jp/ufo/パラメータ "></script>
こんな感じのは、裏でどういう処理をしているんでしょう?
.htaccessでリダイレクトして一旦違うプログラム(php等)に渡して、って事なんでしょうか・・・
やりたい事は忍者同様の仕組みで、iframeに別コンテンツを表示する(呼び出した側のパラメータによって内容を変える)、といった事です。
901 :
900 :05/02/03 05:54:28 ID:???
自己レス 力技な気もしますが、↑で思ったようにやったら出来そうです。 もうちょっとやってみます。
902 :
ゆき :05/02/03 06:04:10 ID:Po7jpKvj
>>902 投稿する前に規約読んだか?
いずれ莫大な額の広告料が請求されるであろう。
「ホームページ制作王」もまた然り。
904 :
handai :05/02/03 10:26:24 ID:0KgXEM09
いま思たんやけど、ガイシュツいうて切り捨ててたらホント利用者減る思わん? ヴァージョン代わりにだけ繁盛する板になったりして。ユーザフレンドリな板芽座サ変?
えっと、折れ的にはガイシュツはガイシュツでいいんすけど、過去ログのHTML化を早くしてほしいっす。 以上(メシ行こう)
質問です。 フレームを用いたサイトでwindow.openメソッドを使用し アドレスには画像ファイルを複数格納したディレクトリを指定すると フレーム内にエクスプローラの様なファイル名の一覧表示がされますが、 この際に画像のサムネイル表示も自動的にされるような設定等できないでしょうか? (丁度 右クリックポップアップ→表示→縮小版 のようなイメージです windows2000)
>>906 ファイル名一覧はサーバー側の機能だ。
自分でサムネイル並べたページ作るか
フォルダを指定したときはサムネイル並べた
ページを生成するようなプログラムでも組め。
>>904 HTML化された過去スレを読めば分かるが、もう2年以上
ガイシュツと言いまくってずっとやってるけどこの通り
順調に延びている。逆に甘やかし始めたら恐ろしいことに
なると思われ。
909 :
906 :05/02/03 13:24:23 ID:???
>>907 了解しました、ジェネレートするようします。
でももしできるなら楽できると思ったんですが惜しいです。
そもそもユーザ全員がWindowsXP使いだったのなら良かったんです。。
厨房が悪いとはいはんが、いい質問きぼーん。はよ乞い。
>>909 サーバー側で作らないってことはディレクトリの中身をいちいち全部ダウンロードされる可能性があるわけだが。
クライアント側にそういう機能を付けることは不可能ではないがとても迷惑なうえ
結局はサーバサイドでサムネール作らなと実用的にブラウズが出来ないことも多いわけだが。
912 :
852 :05/02/03 16:16:10 ID:GY0mrEU1
>>854 ありがとうございます。早速試してみます。
913 :
yumi :05/02/03 16:58:06 ID:H9bbW8+j
質問です。 画像の先読みをするとき、多数の画像で重い場合には、そのページの最後の方で 先読みを実行させればよいというのを聞いたことがあります。 ........ ........ <script language='javascript'> sakiYomi(); </script> </body></html> というような感じです。しかし、やってみても効果がよく分かりません。 理論的に正しい考え方ですか。
914 :
Name_Not_Found :05/02/03 17:31:05 ID:huYYscXh
下のようなページを作りたいのですが、メニューのURLが割と頻繁に変わるので メニュー部分はフレームにしたいのですがそうするとコンテンツ名がフレームに合わせられません。 なので、リンクをクリックするとフレームでページを開き、かつ指定部分の文字列を変更、というスクリプトを探しています。 Javascriptサンプル集などを探してもありませんでした。どなたか分かる方いらっしゃいましたらよろしくお願いします。 コンテンツ名 ================== Menu1 Menu2 Menu3 ================== コンテンツ中身コンテ ンツ中身コンテンツ中 身コンテンツ中身コン テンツ中身・・・・・・・・
>>913 onload のタイミングでやればいいのだよ。
916 :
914 :05/02/03 17:36:50 ID:???
他のコンテンツが先に読み込まれるので有効なのではないかと思います。 ローカルや速いサーバーだと効果が分かりにくいですが、 海外の激遅サーバーで試してみると効果が分かります。
>>915 コンテンツ中身のドキュメントのonloadのタイミングで、
parent(もしくはtopでも)のtitle要素の中身を書き換えてあげればいいのだよ。
>>913 変化なしの理由がキャッシュだったとか…ってさすがにそれは確認してるか。
>>914 ”かつ”なんて考えるから見つからないんだろう。
フレームでページを開くのにJavaScriptを使う必要はない。
targetでフレームを指定したリンクのonclickイベントで文字列を変更すればいい。
Perlでのcrpt()みたいなことをJavaScriptでしようと思ったんだけど、 どう書けばいいのかなa。教えて、スマヌ。
ネスケとモジラ(DOMだけじゃなく)のマニュアルどこでしょ?
>>914 JS使わんでも、どーせフレームにするなら、
<iframe>とか<object>でメニューのHTML埋め込むようにしてもいいんじゃね?
それだとメニューのリンクだけ target="_top" とかにすればいいしさあ。
それか、外部JSにして、メニュー部分だけ後から追加するようにしてもいいし。
createElement とかわかんなかったら document.write でいいからやってみればいい。
926 :
Name_Not_Found :05/02/04 08:31:55 ID:NsoDqY0E
framesetでframespacing=0 frameborder=0 border=0を使わずに枠線を消す方法はあるのでしょうか? 試しにIEの枠線を消そうと framesetのonLoadで window.document.all("fs_main").frameSpacing = 0; ('fs_main'はframesetのname属性値) とかやってみたんですがダメです。 alert(window.document.all('fs_main').tagName); とやるときちんとFRAMESETと帰ってくるのですが、 alert(window.document.all('fs_main').frameSpacing); では値が帰ってきません。 msdnライブラリやらあちこち調べたり試しましたが上手くいきません やっぱりこの3つは使わないと不可能なのでしょうか? すなおにframespacing=0 frameborder=0 border=0と書いとけと言われればそれまでですが、 もしご存知の方おられましたらよろしくご教授お願いします。
927 :
Name_Not_Found :05/02/04 09:56:23 ID:3aXjJYbj
変数でポインタっていうの、何ですか? サパーリ分かりません。請懇切説明。
>>927 アンタの質問、サパーリ分かりません。終了。
>>927 変数、ポインタでググるもよし、
Cの本とか買ってくれば1章か2章くらいで必ず出てくるので、それを読むも良し。
がんがれ。
930 :
927 :05/02/04 12:06:03 ID:oPgcuf7O
>>928 さん: そうですか、分かりませんか。残念です。
プロパティに個別にアクセスしなくてもすむ優れた方法らしいのですが。
サパーリです。UNIXなのかも。
>>930 アンタの質問の内容が分からんという意味なんだが。まさか
FAQ
>>9 のQ6/A6とかじゃないよな(ry
932 :
Name_Not_Found :05/02/04 13:16:36 ID:kfDsLBNX
htmlにある数値(プライベートIPかグローバルIPです)が 表示されています。 これをプライベートIPの時は表示しないという ことができますでしょうか? 192.168から始まれば非表示、それ以外なら そのまま表示ということにしたいのですが。 replace関数とかでいいのでしょうか?
>>932 その表示されている範囲を囲むタグにidを振って、*表示完了後に*
var e = document.getElementById(ID名);
e.innerHTML = e.innerHTML.replace(/192\.168\.[0-9]+\.[0-9]+/g, '');
>>934 idふれるなら、 tag#id { display: none } でいいじゃんw
936 :
932 :05/02/04 14:13:59 ID:???
ありがとうございます。 もっと簡単に document.body.innerHTML=document.body.innerHTML.replace(/192\.168\.[0-9]+\.[0-9]+/g, ''); にしてみたところうまくいきました。
>>936 そりゃ過激だなあ。掲示板かなんかじゃないの?その書き込みの
中に「192.168.x.x」を書いた人がいたらそれも消えてなくなるとか
心配じゃないのならいいんだけどさ。
938 :
Name_Not_Found :05/02/04 14:34:19 ID:oWbIbRHf
タグの中身ではなく、特定のタグ自体を消すことってできますか? 例えば、DIVのidがbのタグだけ消すとか。 <div id="a">foo<div id="b">baa</div></div> ↓ <div id="a">foobaa</div>
target = document.getElementById("b"); target.parentNode.removeChild(target);
それじゃ要素が消える
>>938 そんなタグなら消すというより<!で置き換えておしまい!
>>938 var x = document.getElementById('b');
x.parentNode.replaceChild(x.firstChild, x);
943 :
938 :05/02/04 14:46:36 ID:oWbIbRHf
>939 レスありがとうございます。 removeChildだと<div id="a">foo</div>になりますよね? そうではなく、<div id="a">foobaa</div>としたいっす。 つうか、baaってなんだ。。。barだろうがorz
target = document.getElementById("b"); string = target.childNodes[0].cloneNode(); myParent = target.parentNode; myParent.insertBefore(string,target); myParent.removeChild(target); こんなかんじ?
945 :
839 :05/02/04 14:50:29 ID:???
あー、すまん、読み間違えてた。 それじゃ var target = document.getElementById("b"); var content = document.createDocumentFragment(); while (target.hasChildNodes()) { content.appendChild(target.firstChild); } target.parentElement.replaceChild(content, target); だな。
946 :
839 :05/02/04 14:52:39 ID:???
さらに訂正。
>>945 の最後の行はparentElementではなくparentNodeだな。IEならどっちでも動くが。
まあ他の人もいろいろ書いてるし好きなようにしてくれや。
947 :
939 :05/02/04 14:53:45 ID:???
恥ずかしい…… レス番号100もずれてた……
948 :
938 :05/02/04 15:05:51 ID:???
>944 SUGEEE。 消したいタグの中に子供がいたときを考慮して こんな感じで逝きたいと思います。 target = document.getElementById("b"); myParent = target.parentNode; myParent.insertBefore(document.createTextNode(target.innerHTML),target); myParent.removeChild(target);
>>938 /*@cc_on @if (@_jscript) b.removeNode(); @else@*/ 省略 /*@end@*/
>>948 おしい。
3行目: while (myParent.hasChildNodes()) myParent.insertBefore( target.firstChild, target);
951 :
939 :05/02/04 15:23:27 ID:+A/mn2Oi
>>950 さらにおしい。
3行目: while (target.hasChildNodes()) myParent.insertBefore( target.firstChild, target);
952 :
Name_Not_Found :05/02/04 15:38:07 ID:R00z5sw0
DOM使いの方が結構いらっしゃるようなので、 お勧めの書籍やサイトがあったら教えてほしいです。 よろしくお願いします。
>951の処理って<br />みたいなのはどうなるんだ? やってみろってのはナシ。
スレ立て人です。新スレは 975 越えたら。ショボくない サイトのおすすめは今のところなかったのでショボいかも と注記してこれまで通りの個人サイトを入れますかね?
>>957 そこのはやりすぎだと思うなあ。まずは素朴なのから順に
学んで行くのがいいんじゃないかな。だけど重大な問題は、
「継承のしかた」なんて質問はほぼ絶無(言語オタク的興味
者を除いては)だということ。で、そういう質問がきたら
ム板のプロトタイプベースオブジェクト指向へ誘導すれば
足りる。そうだね、そのあたりのスレをテンプレに入れて
おこうね。
Hallo liebe 2ch-Gemeinde, ich arbeite gerade an einer anwendung, wo ich verschiedene variablen halb dynamisch erzeugen will. fruit= new Array('apple','banana'); x=0; eval( fruit[x]+'tree') = new Array() ); //soll dann ergeben: appletree = new Array(); aber so geht es leider nicht :( Vielen Dank und Grus Bernhard
>>959 You should use:
window[fruit[x] + 'tree'] = new Array();
You shouldn't use eval(). It is difficult to use and
tend to cause trouble (as in you). JavaScript has
enough tools that you can carry on without any eval().
>>958 > プロトタイプベースオブジェクト指向へ誘導すれば
Web板で質問するような超ドシロウトを誘導したらコロヌ。
>>961 ドシロートはそんな質問しないから安心すれってば。
まあテンプレにリンク入れるのはやめときましょかね。
>>957 「継承」とは、プロトタイプベースの ECMA262-3 を必死に
Java っぽく書こうとしている馬鹿どもがよく使う言葉。
もうねえ、そういう言葉を使ってるだけでそのサイトはアウトなの。
>>960 Moin,
Vielen Dank fur die Antworten.
MfG
Bernhard
(・∀・)ジサクジエーン
プロトタイプベースでも継承(委譲)はあるだろ
継承と委譲は区別するとか、狭義の(実装の)継承とインタフェースの 継承は区別するとか、そういう話になってくるが、もはやスレ違いだな。
969 :
Name_Not_Found :05/02/05 12:25:05 ID:p0gEamlv
「とほほのWWW入門」ってマチガイ多い。けど、神戸大学の情報処理学科の演習
では激しく引用してるんだな。ふーむ。纏まってて便利ならってことか。
>>959 ,960,964,965,966 は自作監督主演とみる。助演が主演てことだろ。
とほほ は個人運営の特定来訪者向けのリファレンスとしてなら問題なかろ かと言って、 本職、もしくは不特定多数向けのサイト作ってる人なら そもそも とほほ は見ないし
配列でのレコード記法とはどのようなものをいいますか? 探しても解説見当たりません。
>>971 聞いたことないねえ。
var a = ['abc', 'def', 'ght'];
とかそういう奴のこと?配列リテラルとかいうよな。あるいは
var o = {tokyo:10, osaka:20, nagoya:30};
とかそういう奴のこと?これはオブジェクトリテラルとかいうよな。
あるいは上記に対して「o.tokyo」という書き方?でも配列と関係
ないんだよね。
>>969 洩れが
>>960 だけど何が問題なんだ?普通の質問に普通に答えた
だけだろ。独語と英語なだけで。ヘンなマンセー
>>965 が出た
ためにややこしくなって迷惑だな。語学コンプしてんじゃねーよ。
ちなみに洩れは2外はフラ語だったんで独語はほとんどわからん。
でも常連なら誰だってあのソース見れば質問内容は分かるよな。
>>969-970 スレ立て人です。とほほは嫌いだけどそういうことで入れろという人
ばっかりなら入れますが。入れるの反対な人いない?
975 :
Name_Not_Found :05/02/05 14:02:44 ID:M8ttfnev
>>974 入れる必要ない。リファレンスとして使うにも他のサイトのほうがましだし、
とほほのサイトでジャヴァスクリプトに関して役にたったことないし。
>>975 代わりになるそのましなサイトを提示しろよ。
できないならとほほを入れておいてよし。
ではとりあえず「現状通り」とします。新スレで議論してね。
979 :
Name_Not_Found :05/02/05 14:36:59 ID:M8ttfnev
>>976 とほほの書いていることは、チュートリアルサイトとかで充分だろうが。
結局、代わりのサイトにしろチュートリアルサイトにしろ、 どこがマシか示せるわけじゃなくただケチつけたいだけってことか。
既にとほほ以外のサイトが複数載ってるだろ。それよりも とほほがマシだっていうのなら具体的に言えよ。洩れも リファレンスは本来のリファレンス(NS、W3C、MSDN)を見る べきだと思うね。
>>980 >4と>5でとほほを入れる意味が無いってのは
十分示されてると思うが
リファレンスだけで足りたりサンプルのサイトを探せるやつ専用スレならな。 いっそチュートリアルサイト・サンプルサイトなんかなくして 質問に沿ったサイトを質問毎に提示してやれば?
言いだしっぺの法則。 頑張れよ
986 :
Name_Not_Found :05/02/05 15:33:54 ID:M8ttfnev
>>983 とほほ信者か。とほほ貶されて怒っているのか。
質問に沿ったサイトを紹介するのが良い場合もあるが、
サイトを紹介するより具体的に答えた方が楽の場合もある。
質問しても必ずしも答えが返って来るとは限らず、用語の
意味とかだったらリファレンス見れよ、になる。
>>986 信者でも怒っているわけでもない。
お前みたいに自分が見ないからいらないという態度が気に入らないだけ。
ずっと上げっぱなしで書いているM8ttfnev←このバカなに?
もう一人の馬鹿を晒しageしてるんじゃないの?
バカが二人いたわけか・・・
ageる馬鹿と とほほにこだわる馬鹿
ageる馬鹿は他スレにも迷惑 とほほにこだわるのはこのスレだけのこと
もういいじゃん、埋めちゃえば終わるでしょ。
998 :
Name_Not_Found :05/02/05 18:07:36 ID:kM3KpdcJ
^^
落とせ落とせ
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。