+ JavaScript の質問用スレッド vol.24 +
━━━━━JavaScript質問スレ道場訓━━━━━
一、礼節を重んじ常に努力精進すること
一、ブラクラに打ち勝つ精神力を持つこと
一、心身の優れたJavaScriptを学ぶこと
一、雑草の如く生涯JavaScriptを貫くこと
一、感謝と反省を忘れないこと
以上
━━━━━━━━━━━━━━━━━━━━━━
このスレに書き込むことが許されるものは以下のとおり
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・過去ログや関連資料を読むことができる者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
(質問時、回答時にはなるべく対象環境を明記しよう)
前スレ
http://pc2.2ch.net/test/read.cgi/hp/1067085950/l50 過去ログ・関連資料・その他質問スレは
>>1-10
4 :
Name_Not_Found:03/12/09 13:24 ID:WiRs/ban
【質問を書く上で】
弱気な表現は避ける
弁解じみた表現は良くない。また、まわりくどい。
ex) 超初心者で何もわかりませんが……
<そんなことより自分で試してみた記述を書いてくれた方が答えやすい>
情報を小出しにしない
読み手は馬鹿にされた気分になる。
無駄な倒置も不要だ。
使用したブラウザ、バージョン、OSくらい書こう。
感情的にならない
何の説明なく決め付ける文はよい印象を与えない。
また態度の大きい人は嫌われる。
ex) 答えられねぇんなら黙ってろ!!! <お前だけだよ>
無視するべきものは無視する
無能、知ったかぶり、宗教的主張、煽り、ぬるぽ等。
表記ミスに注意
内容がどんなにすばらしくても文字使いにミスがあると誤解を招く。
曖昧文は書かない
いくつにも解釈できる文章は絶対に書かない。
ex) ここではきものをぬいでください。
「」など無駄な強調は避ける
読みにくい。♪や顔文字も同様である。
ソースは要点を整理して出す。
そのまま貼って動かせると試してもらいやすい。
長い場合はアップロードしてURIを貼る。
/ ̄ ̄ ̄ ̄ ̄ ̄\
/ \
/ ヽ
l:::::::::. |
|:::::::::: (●) (●) |
|::::::::::::::::: \___/ | 7ゲト
ヽ:::::::::::::::::::. \/ ノ
alert("8ゲト");
・皈テ・サ・ク・罍シチェ、ヨ・ル・ケ・ク。コェ・ラ・キ・マセホ・・。・プゲラ
ン・トモ・・。マンコ・
11 :
1:03/12/09 17:52 ID:???
>>9 やれるもんならやってみな(笑)削除依頼書き込んだら貼ってね。
依頼文面が読んでみたい。
過去23スレも消費したこのスレとあんたとどっちが糞かは自明。
13 :
Name_Not_Found:03/12/09 18:41 ID:lubPZlkW
test.html?string=test
なんていう感じで送られた値を取得するために、パスを取得してから切り分けようとしたのですが上手くいきません。
document.URL だと、Macだと取得できるのですが、Winだと?以降が取得できずに困っています。
またはクエリストリングを使わずに、リンク元から値を取得する方法はないでしょうか。
loxation.search
>>14 ロクサーションでつか。カコイイな。
location.search
で。
s/x/c/;
ごめん規制で訂正できんかった。
11 名前:1[sage] 投稿日:03/12/09 17:52 ID:???
>>9 やれるもんならやってみな(笑)削除依頼書き込んだら貼ってね。
依頼文面が読んでみたい。
過去23スレも消費したこのスレとあんたとどっちが糞かは自明。
あはは!
18 :
Name_Not_Found:03/12/09 19:19 ID:lubPZlkW
location.search
でできました!ありがとうございます。
window.open(hogehoge); <!--hogehoge=別のURL-->
この時、URL先におけるrefererをこっちで別のに置き換えて
URL先に渡す方法ってあります?
相手先の検索ページが自分のページ内部からのrefererでないとキックされてしまい、
そこのトップページからの操作が面倒くさいので。
別にProxyツールをインストールしてreferer設定する手もありますが、
たかだかrefererを書き換えるだけの為にツール入れるのも何だと思いまして。
21 :
19:03/12/09 21:27 ID:???
>>
22 :
19:03/12/09 21:29 ID:???
>>21 リターンキー打ってしまった _| ̄|○/
>>20 サンクス。ないでつか…
CGIでもなさそうだな、多分。
24 :
Name_Not_Found:03/12/09 23:12 ID:lWLhFojH
例えばmainというファイル(プログラムソースコード)に
1〜10のファイル(プログラムソース)を入れる、結合させる
ということは出来るのでしょうか?
>>23 AllAboutJapanのJavaScriptのところはどうよ?
1〜10までのファイルを普通に<SCRIPT SRC="***">で読み込めば。
質問させて頂きます。
まず、以下のようなフォームがあります。
<form method="get" name="form1">
<input type="radio" name="radio1" value="1">value1
<input type="radio" name="radio1" value="2">value2
<input type="radio" name="radio1" value="3">value3
</form>
で、ラジオボタン脇のテキスト(value1〜3)にリンクをつけ、クリックするだけでラジオボタンのon/offを切り替えようと思っています。
つまり、
<form method="get" name="form1">
<input type="radio" name="radio1" value="1"><a href="javascript: value="1"をonにする">value1</a>
29 :
28:03/12/10 05:33 ID:???
途中で書き込んでしまいました、申し訳ありません。
<form method="get" name="form1">
<input type="radio" name="radio1" value="1"><a href="javascript: value="1"をonにする">value1</a>
<input type="radio" name="radio1" value="2"><a href="javascript: value="2"をonにする">value2</a>
<input type="radio" name="radio1" value="3"><a hrfe="javascript: value="3"をonにする">value3</a>
</form>
としたいのですが、どなたか解答、ヒント、あるいは実際にそのようなスクリプトを
使っている参考サイトなど教えて頂ければ幸いです。
どうぞよろしくお願いします。
31 :
Name_Not_Found:03/12/10 07:03 ID:3EmQuh8v
複数のフレームのページを作っていて、さらに
キーボード入力をcaptureしているのですが、
ブラウジング時にフレームを移動したり、
フレームをクリックするなど操作をした拍子に
captureできなくなることがあります。
複数のフレームのページではcaptureは難しいのでしょうか?
captureのコードは各フレーム内ではなく、フレームセットが定義されている
トップのページ内に書いています。
33 :
Name_Not_Found:03/12/10 11:39 ID:kZ3mOUWd
JavaScriptで
ファイルのダウンロードが
タイムアウト等で失敗した事を検知してエラーメッセージ等
表示したいのですが可能でしょうか。
とりあえず下記のように見えないIFRAMEを使ってFRAMEのonloadイベントに関数を
仕込もうとやってみました。
ですが外から設定したonloadが呼ばれないようです。
ダウンするファイルがHTMLならそれ自身にonLoadを仕込むこともできるでしょうが
CSVファイルなどをダウンロードさせるときに外からonLoadイベントは
設定することはできないのでしょうか?
34 :
つづき:03/12/10 11:40 ID:???
<html>
<head>
<title>aaa</title>
</head>
<body>
<FORM name="form1" method="POST" >
<INPUT name="param1" >
<INPUT type="button" value="ダウン開始" onClick="doDownload();" >
</FORM>
<IFRAME name="dummy" src="xxx.htm" style="display: none;"></IFRAME>
<!-- 中略 -->
</body>
</html>
document.dummy.onload = chkDownload;
function chkDownload(){
alert( "chktest" );
}
function doDownload(){
document.form1.action = "download.cgi";
document.form1.target = "dummy";
document.form1.submit();
}
35 :
Name_Not_Found:03/12/10 11:45 ID:9GtInWN7
<frameset cols="0,100,*" SCROLLING=no frameborder=0>
<script language="JavaScript">
<!--
if(escape(document.referrer) != ""){
MyReferrer = escape(document.referrer);
} else {
MyReferrer = "ブックマークやメールソフト";
}
document.write("<frame SRC=
http://www.xxx.jp/kiroku.php?MyRef=" + MyReferrer + " WIDTH=1 HEIGHT=1 name=1>");
document.write(MyReferrer);
//-->
</script><noscript><frame SRC=
http://www.xxx.jp/kiroku.php?MyRef=javaoff WIDTH=1 HEIGHT=1 name=1></noscript>
<frame src=menu.htm name=menu>
<frame src=top.htm name=menu>
</frameset>
どこのURLから飛んでくるのかを調べるために、フレームを埋め込んで、
ジャバスクリプトから得た値をPHPプログラムに送るというようにしたいのですが、
↑のプログラムですと、どんな場合でも
「
http://www.xxx.jp/kiroku.php?MyRef=javaoff」が送られて来ます。
どうにしたら、「MyReferrer」の値が送られてくるようになりますか?
>>35 parent.document.referrer
でやってみ。
>>33 こんな感じ。
<script>
flag=0;
function chkDownload(){
if(flag>1) alert( "chktest" );
}
</script>
<IFRAME name="dummy" src="xxx.htm" style="display: none;" onload="chkDownload(flag++)"></IFRAME>
37 :
35:03/12/10 15:09 ID:???
>>36 あ、簡単にできるんですね、ありがとう!!
age
naze?
40 :
Name_Not_Found:03/12/10 16:24 ID:n77ltL+E
(旧スレより)
xmlファイルをNN7で取得するにはどのようにすればいいでしょうか?
IEでは、
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.load("test.xml");
のような形で取っていますがNNの資料が無く困っています。
NNについて書いてる本もめちゃくちゃ少なく困ってます(誰か書いて♪。買うから。)
NNでxmlファイルを取得するにはどのようにすればいいのでしょうか?
>>40 N7.1 なら
var doc=document.implementation.createDocument('','',null);
doc.async=false;
doc.load('test.xml');
でいける。7.0x系だと async が使えないので
var doc=document.implementation.createDocument('','',null);
doc.addEventListener('load', function(){ロード後の処理}, false);
doc.load('test.xml');
とかすることになる。
43 :
Name_Not_Found:03/12/11 02:26 ID:jGvp5M2x
<SCRIPT LANGUAGE="JavaScript">
<!--
var flag=0;
function shake(){
for (i=0;i<20;i++){
top.window.moveBy(0,15);
top.window.moveBy(0,-15);
}
if(flag>0){
setTimeout('shake()',200);
flag=0;
}
}
//-->
</SCRIPT>
<a href="javascript:void(0)" onclick="shake();">画面が震えます</a>
ウィンドウを揺らすスクリプトを書いてみたんですが、
この書き方だと、もともとflagがないので一度も振動するはずないと思うんですが、なぜか一度だけ振動します。
var flag=1;
とすると二度振動してしまいます。
何も処理させないと延々と振動しつづけてしまうので、
一度だけ振動させるにはどうしたらいいものかと変数flagを加えてみたので
結果としては良いんですが・・・納得いきません(;・∀・)
なぜ一度振動するんでしょうか?
45 :
Name_Not_Found:03/12/11 02:46 ID:jGvp5M2x
>>44 どういうことでしょう?
onloadは使ってませんが…
>>43 何を疑問に思ってるか意味がわからん
そういう動きをするように書いてるじゃないか
47 :
43:03/12/11 04:00 ID:jGvp5M2x
あーわかりました。
自分を呼び出してるからおかしかったんですね。
違う関数から、呼び出したらうまく行きました。
>>42 がんばってください。
たくさん売れるといいですね。
売りものとは書いてないみたいだが。
宣伝するなら板違ね
てか、有料のJSってあるの?
作ってもらう経費ならいざしらず
50 :
Name_Not_Found:03/12/11 09:32 ID:CkMDoWP6
>>41 有り難うございます。7系だけでも違ってくるんですね。
有り難うございます。助かります。もっと資料が多いといいんですけど...。
51 :
Name_Not_Found:03/12/11 11:06 ID:6iiVDS+3
質問させて下さい。
クリックするとツリー型メニューが出てくる…という
スクリプトを使ってみたのですが、一部のブラウザで動かないようなのです。
訪問者へ調査を行ったところ、IE6.0とその他WIN用タブブラウザで動かないそうです。
タブブラウザで動作しないことは予め覚悟の上だったのですが、
一番シェアの大きなIE6.0で動かないようなので、困っています。
MacIEでは問題なく動作します。
<script language="JavaScript"><!--
vType = ["none","block"];
function exMenu(tName)
{
tMenu = document.all[tName].style;
tMenu.display = vType[tMenu.display.indexOf("none") + 1];
}
// --></script>
52 :
51つづき:03/12/11 11:07 ID:6iiVDS+3
<FONT CLASS=en LANG=en><P>ZZZ<BR>
<A HREF="javaScript:exMenu('xxx')">+</A>XXX<BR>
<SPAN ID="xxx" STYLE="display:none">
├1-<A HREF="aaa.html">a</A><BR>
└2-<A HREF="bbb.html">b</A></SPAN></P></FONT>
これにCSSで
.en { font-family:'Chicago','Arial Black'; letter-spacing:2px; font-size:12px; }
SPAN { font-size:10px; letter-spacing:normal; }
を指定しています。
2バイト文字にまで欧文フォントを指定していることや
Macで欧文フォントを表示するために言語指定を英語にしていることなどが
原因ではないかと思うのですが、言語指定やフォント指定を外したら動きますか。
それともスクリプト自体に何か問題があるのでしょうか。
なにぶんWINで確認できる環境がないため、ご助力いただければと思います。
53 :
Name_Not_Found:03/12/11 11:20 ID:nGDYbYUg
一つのページにある複数form全てを一つの宛先にsubmitするにはどうすればよいでしょうか?
>>51 WinIE6で動くけど?
>>53 宛先が同じなら一つの form にまとめれ。
55 :
Name_Not_Found:03/12/11 12:03 ID:K8rUIW7q
すいません、フレームの扱いで悩んでいるのでお力をお貸しください。
index.htmlという1つのHTMLファイルから
別ディレクトリにあるフレーム定義ファイル(例えばtest/index.html)にリンクをします。
このフレーム定義ファイルでは左右分けの2フレームで
左がmenu.html(name=menu)、右がmain.html(name=main)
と定義しているとします。
その際、menuは固定でいいのですが、
右側のmainの内容を初めのindex.htmlからのリンクにより変更したいのです。
これはASPサービスへのリンクでパラメータを利用した
ASPサービスを行っているサイトにリンクすることになります。
この用にフレームを書き換えることは可能でしょうか?
ご教授のほどよろしくお願いします。
56 :
Name_Not_Found:03/12/11 14:16 ID:2ipRqjDK
初心者的な質問かと思うのですが、検索してもわからなかったので、
ちょっと教えてくださいませ…
特定のフォーム(SELECT)の背景色の変更はできますでしょうか?
<FORM name="selecttest">
<SELECT name="sel1">
<OPTION value="white">白色
<OPTION value="yellow">黄色
<OPTION value="red">赤色
</SELECT>
</FORM>
というフォームがあったとして、選択を変更すると、
このフォームの背景色が変わるようにしたいのですが…
<form> の背景なら
<SELECT onchange="this.form.style.backgroundColor=this.options[this.options.selectedIndex].value">
<select> の背景なら
<SELECT onchange="this.style.backgroundColor=this.options[this.options.selectedIndex].value">
58 :
56:03/12/11 14:34 ID:???
ほうほう多謝です!
試してみますー!
59 :
33:03/12/11 14:57 ID:???
>>36 ありがとうございます
どうにか解決の糸口がつかめました。
JavaScriptから
HTTPレスポンスのエラーコード(200とか400とか)を
みる方法はないでしょうか。
IFRAME内などの子フレームの読み込みエラーの有無によって
処理を切り替えたいのですが。
61 :
53:03/12/11 17:13 ID:nGDYbYUg
>>60 無理です。onLoadでも見て処理すればいいでしょう。
どうか教えて下さい。
A.htmlとB.htmlの二つがあり、
必ずA.htmlからB.htmlに行かせたい場合、
どのようにすれば良いのでしょうか?
リファラを使う事はなんとか分るのですが、
それを使ってどう処理すれば良いのかが分りません。
何卒お教え下さい。
もしくは解説しているサイトをお教え下さい。お願いします。
>>63 Locationか
Metaタグでいんでね?
65 :
Name_Not_Found:03/12/12 02:22 ID:MvqCjfoY
画像をクリックするとページの中に
フレームか何かでメニューを表示するというJavaScriptを置きたいのですが
JavaScriptをonにしていないと切り替わらないようにするには
どうすればいいですか?
66 :
Name_Not_Found:03/12/12 02:46 ID:vNRUHkzr
relative や absolute な div が入れ子になっていて、
その内側に目標の div があり、それは子も持っているんですが、
目標の div の中をクリックした時に、クリックされた座標を
その div の左上からの相対座標で取得するには、
どうしたらいいんでしょうか?
>>66 足し算やら引き算やら。
掛け算や割り算は無いから安心すれ
68 :
66:03/12/12 19:26 ID:???
>>67 やっぱり、それしかないんですか。
どうもありがとうございました。
69 :
Name_Not_Found:03/12/13 00:08 ID:APt/w4JW
ネスケではsetTimeout()関数は、戻り値を受け取らないと動きがおかしくなるor動かないという話は本当でしょうか?
例:
setTimeout("fncSample()",500); ・・・×
ret = setTimeout("fncSample()",500); ・・・○
70 :
Name_Not_Found:03/12/13 00:35 ID:6P1S1d0x
document.write('<img src = "./hoge.jpg" target = "hagehoge">');
上記のように画像を表示したいのですが、<img>タグは認識しているようですが、pathが認識されていません。
なにが悪いのでしょうか?
71 :
66:03/12/13 00:38 ID:???
スタイルシートで position を設定している要素の position は、
どうしたら分かるんでしょうか?
目標の div の位置を求めるために、parentNode をたどって
position が relative, fixed, absolute な要素の
offsetLeft や offsetTop を足していこうと思ったんですが、
そこで詰まりました。
72 :
66:03/12/13 00:41 ID:???
今どうやってるのか、書いてませんでした。
element.style.position を見てたんですが、<div style="position:relative;">
など、直接書いたものしか取得できませんでした。
73 :
70:03/12/13 00:43 ID:???
>>70 自己解決しました。
画像ファイルに問題がありました。
ファイル1を読み込み、違うファイルaに書き込む。
ファイル2を読み込み、さっきと同じファイルaに
書き込んだ場合、最初に書き込まれた物の
下に追加になるのでしょうか?
それとも上書きになり、最初に書き込んだ物は
消えるのでしょうか?
書き込むとはどうやって?
76 :
Name_Not_Found:03/12/13 00:57 ID:giSgjbkv
文字列にカーソルが触れると<div>のようなの場所に
メッセージが表示されるようにしたいんですがどうしたらいいんでしょう。
>>74 ダミーを用意してやってみればわかるだろ。
上書きされるのが嫌なら変数に加算していって、最後に全部書き込めば。
Perlか?
>>76 onmouseoverでDIVのvisibilityを"visible"
またはonmouseoverでDIVのinnerHTML="メッセージ"
んでonmouseoutで消す。
簡単なロールオーバーだね。
78 :
66:03/12/13 02:52 ID:???
>>71-72 を書き込んだ後、もう一度いろんなサイトを回って、
Mozilla Firebird 0.7 では、
var style = document.defaultView.getComputedStyle (element, null);
position = style.getPropertyValue ('position');
で取得できるようになりました。
けれど、これでは IE6.0SP1 でエラーが出てしまいます。
79 :
Name_Not_Found:03/12/13 09:46 ID:LTvpekql
画像を使ったメニューで、現在、下記のスクリプトを使っているのですが、
(元:
ttp://www.openspc2.org/reibun/javascript/mouse/004/index.html)
<HEAD>
<SCRIPT LANGUAGE="JavaScript"><!--
function exMenu(tName) {
tMenu = document.all[tName].style;
if (tMenu.display == 'none') tMenu.display = "block";
else tMenu.display = "none"; }
// --></SCRIPT>
</HEAD>
<BODY>
・・・
<A HREF="" onMouseover="javaScript:exMenu('treeMenu1')"><IMG SRC="メニューボタン1"></A>
・・・
<A HREF="" onMouseover="javaScript:exMenu('treeMenu2')"><IMG SRC="メニューボタン2"></A>
・・・
(続く)
80 :
79:03/12/13 09:46 ID:???
(続き)
・・・
<DIV ID="treeMenu1" STYLE="display:none">
<IMG SRC="サブメニューボタンA">
<IMG SRC="サブメニューボタンB">
</DIV>
・・・
<DIV ID="treeMenu2" STYLE="display:none">
<IMG SRC="サブメニューボタンC">
<IMG SRC="サブメニューボタンD">
</DIV>
・・・
</BODY>
↑これだと、メニューボタン1から2へマウスを移動したとき、また、その逆の
場合も、先に表示されたtreeMenuが表示されたままになってしまいます。
(メニューボタン1から1へマウス移動後、2に乗せた場合は大丈夫)
メニューボタン1から2へマウスカーソルを移動したとき、treeMenu1を非表示
にするには、どのようなスクリプトを書けば良いのでしょうか?
(実際には、メニューボタンが6コあります)
長文、駄文で申し訳ないのですが、よろしくご教授願います。
onMouseoutイベントをtreeMenuに入れてみたのですが、上手く動きません
でした。
<script type="text/javascript"><!--
var MaeNoMenu = null;
function exMenu(tName) {
if (document.getElementById || document.all) {
var ImaNoMenu = document.getElementById ?
document.getElementById(tName).style : document.all(tName).style;
ImaNoMenu.display = ImaNoMenu.display == 'none' ? 'block' : 'none';
if (MaeNoMenu) MaeNoMenu.display = MaeNoMenu == ImaNoMenu ? 'block' : 'none';
MaeNoMenu = ImaNoMenu;
} return false }
//--></script></HEAD><BODY>
<A HREF="javascript:void(0)" onmouseover="exMenu('treeMenu1')">
<IMG SRC="メニューボタン1" alt="ボタン1"></A>
<A HREF="javascript:void(0)" onmouseover="exMenu('treeMenu2')">
<IMG SRC="メニューボタン2" alt="ボタン2"></A>
<DIV ID="treeMenu1" STYLE="display:none"><IMG SRC="サブメニューボタンA" alt="ボタンA">
<IMG SRC="サブメニューボタンB" alt="ボタンB"></DIV>
<DIV ID="treeMenu2" STYLE="display:none"><IMG SRC="サブメニューボタンC" alt="ボタンC">
<IMG SRC="サブメニューボタンD" alt="ボタンD"></DIV></BODY>
82 :
79:03/12/13 11:31 ID:???
>>81 即レスおよびスクリプト、ありがとうございます。
上記のソースで、意図したように動くようになりました。
前のソースと見比べて、勉強したいと思います。
本当に助かりました!!!
83 :
Name_Not_Found:03/12/13 15:51 ID:RJuJZNrm
nは1000未満の自然数として、それを表示する際、3桁まで0で埋めたいのですが
if n<10 document.write("00" + n);
else n<100 document.write("0" + n);
みたいにするしか方法は無いのでしょうか?
perlでいうところのsprintfのようなものはないのでしょうか。
nai
どうも。
>>83 document.write(("00" + n).match(/...$/));
88 :
Name_Not_Found:03/12/13 20:49 ID:APt/w4JW
自分で実験汁。
90 :
76:03/12/13 22:11 ID:???
91 :
Name_Not_Found:03/12/13 23:57 ID:Fq6z6oXP
javascriptで
location.href="aaa.cgi?" + str;
とやりたいのですが、strのエンコードはどのように行えばいいでしょうか?
普通に<form method="get">で行われるエンコードと、escapeで行われる
エンコードが違うのですが、<form>の場合の変換方法で行いたいのですが、
どのようにすればよいのでしょうか?
>>91 <form>の方はShift_JISエンコードだね。
<form>を使わないんならIE限定の技しかないような気がする。
以下過去ログで教えてもらったやり方。
// 引数sの一文字目の16進Shift_JISコードを返すVBScript
execScript('Function VBASC(s):VBASC=HEX(ASC(s)):End Function','vbs');
function sjis(str){
var re = /\w/; //エンコードしない文字指定
for(var tmp = "", c, i = 0; i < str.length; i++){
c = str.charAt(i);
if(c.match(re))
tmp += c;
else
tmp += "%" + VBASC(c);
}
return tmp;
}
alert(sjis("あいうえお"))
93 :
Name_Not_Found:03/12/14 01:16 ID:auzNJRg/
質問です。
以下の例1のような左右に分かれたページで、「サービスガイド」をクリックすると、その下のメニューが下に移動して、その間にサブメニューが表示され、
さらにマウスが移動したら、そのサブメニューが閉じて、元に戻るようなスクリプトを探しています。そのようなスクリプトってないでしょうか?
ご存知の方、よろしくお願いいたします。教えてクンですみません。
例1
http://www.starcat.ne.jp/mediacat/
94 :
Name_Not_Found:03/12/14 08:50 ID:awnyW5Ow
>>92 有り難うございます。IEではそのようにしたいと思います。
NNでは....。
96 :
Name_Not_Found:03/12/14 15:13 ID:kvMF/MK7
>>95 IE5.5, Netscape6, Opera7 以降だけならJavaScript使わなくても
CSSだけでできるはず。
98 :
97:03/12/14 15:26 ID:???
すまん。
>>93の構造だと <a href> の中に更に <a href> を
入れることになってHTML的にマヅイんで、IEは除外。
ネスケとOperaは全ての要素に対して :hover が使えるから
<a href>を入れ子にすることなく動作するはず。
99 :
Name_Not_Found:03/12/14 15:34 ID:XmFb8tXy
>>96 タイトルバー消してもwindow.moveTo() はちゃんと使えてますが...
<html lang="ja">
<head>
<hta:application border="none"/>
<title>test</title>
</head>
<body>
<p><input type="button" id="btnExit" value="終了" onclick="window.close();"/></p>
<p><input type="button" id="btnMove" value="移動" onclick="window.moveTo(x.value, y.value);"/>
移動先 (<input id="x" type="text" size="4" value="0"/>,
<input id="y" type="text" size="4" value="0"/>)</p>
</body>
</html>
100 :
96:03/12/14 15:43 ID:kvMF/MK7
onMouseMoveイベントと組み合わせるとエラーになります。
>>96リンク先のHTAはうごきませんよね?
たぶんIEのバージョンアップでセキュリティが強化されて
動かなくなったんじゃないかとは予想してるんですが。
(最初から動かないもののサンプルを掲載してるとも思えないので。)
>>100 マウスのドラッグ中はmoveToがエラーになるようです。
>>101 HTAとIEは関係ありまくりです。
ただWeb制作とは余り関係ないと言える。
103 :
Name_Not_Found:03/12/14 18:41 ID:5pzhrwws
質問です。よろしくお願いします。
http://www.trunk.gr.jp/hpkouza112.html こちらのページのサンプルのように、
スクロールしても同じ位置に出るレイヤーを
置きたいのですが、Topでは無く、bottom基準にした場合、
どこをどのように書き換えればいいのかわかりませんでした。
下にピッタリ張り付いたようなMENUを考えています。
おわかりの方、どうかご教授お願いいたします。
>>130 top を bottom に書き替えればいいんじゃないでしょうか?
105 :
104:03/12/14 21:47 ID:???
>>103 ご丁寧にも関数用意してあるだろ。
var y = scrollTop() + winHeight() - "DIV の高さ";
>>104 ( ゚д゚) ポカーン
107 :
103:03/12/14 23:46 ID:5pzhrwws
>>104 最初にやってみました。結果は…(´・ω・`)ショボーン
>>106 できました!!!!!!!!!大変ありがとうございました。なんとか納品できそうです(^^;;
108 :
Name_Not_Found:03/12/15 01:57 ID:ySMk7bZS
selectのoption valueで投稿先を変更してたいんだが
ただ<option value>〜hogehoge.cgi</option>とかやってもだめなんだな
フォームにname持たせてJavascriptでフォーム操作とかできそうだけどうまくいかない
どうかご教授お願いいたします
>>108 valueの値をlocation.hrefで飛ばせばいいんでない。
>>108 フォームの構成が
<form name="a">
<select name="b">
<option>A
<option>B
<option>C
</select>
</form>
なら
document.a.b.options.value で値を取得できる
あとは
>>109
すみません。
a.htmlに次のようなのがあり、
<iframe src=b.html name="frame1">
b.htmlにはテキストボックスがあるとき
a.htmlからJavaScriptを使って
テキストボックスの内容を得るにはどうしたらいいんですか?
微妙にスレ違いかもしれませんがおながいします
HTML-lintでキェック項目に
<SCRIPT>〜</SCRIPT> 内の要素はすべてコメントで囲んだ方が安全です。
とあるけど、コメントで囲んでないとダメなブラウザって
具体的に何でしょうか?
>>113 俺も知らん。JavaScriptが初めて実装されたのはNN2.0なわけだが
NN2.0ではコメントアウトしなくてもちゃんと動作するし、ゴミが表示されることもない。
古いネスケで問題になるのは <table> の中に <script> を書くと
ソースコードがゴミとして表示される場合があるってことくらいか。
<style> についてはコメントアウトしてないと、NN3.x以前で
スタイルシートの中身がゴミとして表示される。
NN1.0なんて存在するの?
117 :
ボコ:03/12/16 23:03 ID:o53iODA0
こんにちは、javascriptははじめたばかりなのですが、
どうかよろしくお願いいたします。
メニューに使うボックスを適当な感じに配置するプログラムを作っています。
┏━━┓┏━━┓┏━━┓┏━━┓こんな感じのメニューにmouseOverすると、
┗━━┛┗━━┛┗━━┛┗━━┏←(ポインタ)
≡┌─┐┌─┐┌─┐┌─┐┌─┐
≡└─┘└─┘└─┘└─┘└─┘という感じでサブメニューが出てくる具合です。
IEではできていて、NNでも動かせるように奮闘中なのです。
IEではボックスを同じ"ID"名で量産した場合のアクセス方法が、配列で、
ID[*].style.pixelLeft 又は
document.all["ID"][*].style.pixelLeft
また、NNのVer4以下の場合、layersで、ほぼ同じ用にできるのに対して、
NNのVer6以上ではgetElementById("ID")でやらなければいけませんよね?
この場合で同じようにgetElementById["ID"][*]というようにやろうとすると、
エラーになってしまいます。
"ID"+iなどで、名前自体を変えていく方法も考えたのですが、そうするとCSSの方で
可変のメニュー数に対して同じだけスタイルを対応させなければいけなくなり、
どうも合理的でなくて気に入らないんです。
getElementByIdはどのようなクラス構造というか、allとは根本的に違う気がしてきましたが、
どういったようにアクセスすればいいのか、教えていただけないでしょうか?
また、NNではstyleのPixelLeftが使えないのですが、
かといってLeftでも文字型なので演算できず、途方にくれております。
欲張りですいませんが、これについてもどのように皆さんは処理しているのか、
できたら教えていただけないでしょうか?
よろしくお願いいたします。m(-_-)ミ
同じID名って・・・
id属性の値は document-wide unique じゃないといけないし
getElementById も document-wide unique なIDを前提に設計されてるんだから
ネスケ6とかOpera7とか標準に準拠したブラウザで「IDの配列」が動作しないのは
むしろ当たり前なんじゃない?
てゆうか、IEでそんな無茶苦茶な方法が使えるって方がびっくりだけど。
120 :
ボコ:03/12/17 00:19 ID:tSLOutPD
>>118さん
なるほど・・・確かにそうかもです。
考えてみればお恥ずかしいですが仕様などをみて書いたわけでなく、
Cの知識が微妙に混ざって、こんな感じでやればできるかな、という勢いで
書いてみたら偶然IEでのみ動いた、ということなのかもです。
どうもアドバイスありがとうございました!
なんかまた色々やってみますです。
またよろです。
>>117 id="hoge0" class="hage"
みたいにして、スタイルは "hage" に適用して id だけ変えていけば。
ノードを丸ごとテキストで取得したいのですが、どのようにすれば良いでしょうか?
たとえば、
<font id=test color=ff0000 size=5>あいうえお</font>
のようなコードがあったとき、
test.innerHTMLは「あいうえお」ですが、
「<font id=test color=ff0000 size=5>あいうえお</font>」と、丸ごとテキストで取得できないでしょうか。
123 :
122:03/12/18 02:10 ID:???
outerHTMLでした。
outerHTML
は、IEでしか使えなかったかな
>id属性の値は document-wide unique じゃないといけないし
逝け
?
W3C信者だとか何とか言う以前にIDが一意的でないと
document.getElementById()とか全部困るわけだろ。
IE専が大好きならしょうがないけど元質問者は他の
ブラウザでも動かしたいという意図だからね。
「対象環境や使用技術は質問者の裁量であることを理解する者」
なんだ。信者かどうかって話なんか。
てっきり「英語が読めないから日本語で書け」って意味かと思った。
<body>
abcdefg
</body>
↑の様に、本文にある文字列のなかから
JavaScriptでbcをefに変えて表示したいのですよ。
(aefdefgと表示させたいわけです)
で、文章全体を指すオブジェクト(?)というか
@.replace("bc", "ef");
↑に入る文字を教えていただけたら幸いです。
132 :
131:03/12/19 16:27 ID:gupE/ord
すいません、ちょっと下がりすぎていると思うので
僭越ながらageさせていただきます
document.body.innerHTML
135 :
134:03/12/19 21:52 ID:???
ってか、やっぱYahoo!のソースすらできない・・・
倉庫vol.18の556 エラーで取得できませんですた。
自分用のActiveDesktop作りたいんだけどナァ
137 :
Name_Not_Found:03/12/21 13:37 ID:QmSJ7gVE
スクリプト全般の話になってしまいますが、
script要素がインライン要素として使えるのに対して、
noscript要素はブロック要素で中にはHx P PRE DIV BLOCKQUOTE等の要素しか
入れられないことになっていたかと思います。
実際にスクリプトを組んだところ、ものすごく冗長になってしまったのですが、
そういうものなのでしょうか? いい回避方法はありますか?
拙い例ですがこんな感じです.
---- HTML部 -----
<script type='text/javascript' src='./foo.js' charset='EUC-JP'>
</script>
<noscript>
<p>javascriptが有効でないのでここでは結果は
表示できません。ご了承ください。[以下500文字くらい続く。]
</p>
</noscript>
---- foo.js -----
document.write("<p>");
// 何らかの処理
document.write("[以下500文字くらい続く。]");
document.write("</p>");
うまく意図が伝わらなかったらごめんなさい。
138 :
Name_Not_Found:03/12/21 15:19 ID:YPU4Aj4+
javaで変数の配列宣言をするにはどうすればよいでしょうか?
例えば、strAA(2003,12,20)=1 みたいな変数を使いたい場合です。
139 :
Name_Not_Found:03/12/21 16:40 ID:YPU4Aj4+
138です。
下記にて解決しました。失礼
var strAA = new Array();
>>137 JS ONでもOFFでも共通の部分が沢山あるということね。
それだったらその部分を別HTMLにしといて取り込むとかどう?
---main.html---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
document.writeln('<p>JavaScript ON<\/p>');
document.writeln('<p><object data="t1.html"><\/object><\/p>');
</script>
<noscript>
<p>JavaScript OFF</p>
<p><object data="r24n140-t1.html"></object></p>
</noscript>
</body></html>
---t1.html---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<p>これはテストです。<p>
</body></html>
>>134 のは、ローカル環境って言うか同一ドメイン内?じゃないと駄目なのかな
142 :
Name_Not_Found:03/12/22 01:45 ID:MSkMe/74
質問です。
function edit(d){
document.d.src = "a.png";
}
という構文では、「d.src =」となってしまいます。
これを「document.変数値.src =」にしたいのですけど、どうすればいいのでしょうか・・・。
document.images[d].src
144 :
142:03/12/22 02:45 ID:???
>>143 ありがとうございます!!見落としてました・・・
145 :
Name_Not_Found:03/12/22 02:57 ID:MSkMe/74
重ねて質問です。
function edit(d){
document.images[d].src = "a.png";
}
(省略)
<a href="javascript:edit(010)"><img src="b.png" name="010"></a>
この様な形でb.pngをクリックしても、変数dに代入されるのは
「010」ではなく「10」になってしまいます。
どうにかして「010」にする方法はないでしょうか?
>>145 <a href="javascript:edit('010')">
しかしおかしいなぁ・・・JavaScriptでは0で始まる数値は8進数とみなされるから
「10」ではなく「8」になってしまうってならわかるんだが・・・
ただECMAScriptでは8進数が非推奨になってるし、Operaなんかはとっくに
8進数捨ててるからブラウザによるんだろうけど。
>>145 ちなみに、name属性の値が数字で始まるのはHTML的に不正。
document.images[d].src は document.images.d.src と同じだから
プロパティ名が数字で始まるのはJavaScript的に不正。
IEみたいに大らかなブラウザでは動作するかもしれないけど
仕様上動作が保証されてるわけじゃないんで
nameの値はアルファベットで始めた方が無難なんじゃない?
強制はしないが。
>>146 ウオーッ シングルクオーテーション・・・どうもっす!
>>147 色々と試してみた結果、やっぱアルファベットじゃないとエラー起きるみたいっすね・・・
うーん、色々と試してみます。
149 :
Name_Not_Found:03/12/22 14:31 ID:z3xsSXM8
javascriptにて変数に値を入れるのを20行ぐらいにすると
値が正しく変数に入っていない項目が出来てしまいます。
どうすればちゃんと入るでしょうか?
var ABC = new Array();
ABC[1,1] = '123';
ABC[1,2] = '456';
ABC[1,3] = '789';
↓
20行続く
ABC[1.20] = '999';
JavaScriptに2次元配列はない。
>>149 ABC[1,1] = '123';
ABC[1.20] = '999';
↑これらはそれぞれどういう意図なのかを
以下の***を埋めて説明して下さい
「配列ABCの***に***という文字列を代入」
1.2 == 1.20 なんだろう。
154 :
Name_Not_Found:03/12/22 20:42 ID:Vws6lr8Q
オブジェクトのメソッドを参照させることは出来ないでしょうか?
function TestObject(value) {
this.value = value;
this.writeValue = function(e) {
document.write(this.value);
}
}
var test = TestObject(8945);
document.onmousedown = test.writeValue;
とすると、onmousedownが呼ばれたときに
「this.value はnullまたは存在しない」と言われてしまいます
155 :
154:03/12/22 20:43 ID:???
var test = new TestObject(8945);
でした
>>154-155 document.onmousedown = function() { test.writeValue(); };
オブジェクトからメソッドだけひっこ抜いてしまったらそれは
もうただの関数だからthisなんて存在しない。
157 :
Name_Not_Found:03/12/22 23:57 ID:+JGba1hc
サイト内の複数の箇所からリンクされるページがあって、
とてもじゃないけど、戻るリンクを<a href="url">で書いてられない様な場合
<a href="#" onclick="history.go(-1);">とかで戻るリンクを作るのはよくあると
思いますがそのページ内でインラインフレームを使ったり、または同一ページ内で
ネームアンカーを使った場合、historyだとクリックした回数分戻るを押さないと
元のhtmlには戻れないですよね?
でdocument.write ("<A HREF=\"", document.referrer, "\">戻る</A>");
なんて書いてみましたがこれだとうまく行く様です。
なんとなく自信がもてないんですがこれであってるでしょうか?
また、何か問題があったりもっと良いソースがあれば御教授願います。
158 :
Name_Not_Found:03/12/22 23:59 ID:AMAFq+5e
質問です。
<IMG src="a.png" name="b">
のsrcの部分(a.png)を参照・表示しようとして
document.write(document.b.src);
としてみたのですが、これだとなぜかエラーになってしまいます・・・
どうにかしてsrcの部分を参照・表示することはできないでしょうか?
>>151 ABC = new Array();
ABC[1] = new Array();
ABC[1][1] = '123';
ABC[1][20] = '999';
>>157 >何か問題があったりもっと良いソースがあれば御教授願います。
history.go(); でも document.referrer; でも
どっちにしても嫌われる。とだけ言っておこう。
>>158 ネタなんだかナンだか。。
>>143
普段からJavaScriptを無効にしてると
「戻ることができない戻るリンク」
「閉じることができない閉じるボタン」
こんなのばっかりだから、好きにしてくれって感じ。
ナビ用のリンクなんて制作者の自己満足に過ぎないんだし、当てにもしていない。
161 :
Name_Not_Found:03/12/23 01:26 ID:p6x74G6C
>>159>>160 あてにならないのはあたしも承知なんです。
事実あたしも普段はjavascript切ってますし。
どうしてもクライアントが独立したfaqページを
インラインフレームで見せるというのが気に入ってしまい
あっちゃっこっちゃからリンクを貼れと。
サイト内のどこからくるかわからんので現在地表示のナビゲーションは破綻。
とにかく戻れればいいと苦肉の策で。
もっとも、ユーザー層を考えればjavascriptの存在すら知らないような
方を対象にしてるもんなのでまぁいいかなと。
162 :
158:03/12/23 01:29 ID:???
>>159 えっ・・・うっわ、応用力に欠けすぎですね俺(汗
このエラーに半日以上悩んでいた俺って一体ーッ
ありがとうございます!
質問です。
JavaScriptを使用すると、
ボタンを押すだけで画像が次々と変わるようにできますが、
同じようにFlashを変わるようにはできないでしょうか?
「Flash HTML講座 JavaScript」の検索では見つかりませんでした。
どこか良いページ、もしくは直接ご教授頂ければ嬉しいです。
>>163 ActionScript で loadMovie(); 使った方が無難。
どうしてもってなら、IFrame でも使ってやるかな。
Imageの様に obj.src = path; じゃ動かんかった。
↓みたいな感じか。
# Parent HTML
<script>
n=0;
function func(){
if((d=document).getElemetById || d.all)
((d.all)? d.all.iframeId: d.getElementById("iframeId")).src = "iframeFile.html?" + n++;
}
</script>
<iframe src=iframeFile.html id=iframeId></iframe>
<a href="#" onclick="func();">change</a>
# iframe src=iframeFile.html
<script>
defaultFlash = "default.swf";
swfz = new Array();
swfz[0] = "flash01.swf";
swfz[1] = "flash02.swf";
swfz[2] = "flash03.swf";
path = ((fn=location.search.substring(1)) && !isNaN(fn))? swfz[((fn<swfz.length)?fn:0)] : defaultFlash;
document.write("<object><param value='" + path + "'><embed src='" + path + "'></embed></object>");
</script>
>>163 しくった。こっちな感じ。
# Parent HTML
<script>
maxFlashFileLen = 3; // ファイル数
n=0;
function func(){
if((d=document).getElemetById || d.all)
((d.all)? d.all.iframeId: d.getElementById("iframeId")).src = "iframeFile.html?" + (n<maxFlashFileLen)?n:0;
}
</script>
<iframe src=iframeFile.html id=iframeId></iframe>
<a href="#" onclick="func();">change</a>
# iframe src=iframeFile.html
<script>
defaultFlash = "default.swf"; // デフォルトのFlash
swfz = new Array();
swfz[0] = "flash01.swf";
swfz[1] = "flash02.swf";
swfz[2] = "flash03.swf";
path = ((fn=location.search))? swfz[fn.substring(1)]: defaultFlash;
document.write("<object><param value='" + path + "'><embed src='" + path + "'></embed></object>");
</script>
166 :
163:03/12/23 05:19 ID:???
>>164 ご丁寧にありがとうございます。
おかげさまで出来上がりました。
本当に助かりました。
このスレの人たちここまで技術あるんならみんなで協力して
何か一つのすごいもの作ればいいのに・・
knowhowを集めて一つのサイトを作るとしたら、互換性の検証が面倒だね。
関係ないけど
http://www.faireal.net/demo/bigint0.5/beta5/test PigPGP v0.2
動的にセッション鍵を発生させ、そのセッション鍵で入力テキストを暗号化するとともに、
暗号化した出力の末尾に、復号用セッション鍵をRSAで暗号化したものを付け足します。
さらに、デバッグ出力では、この変換を逆向きに行い、原文を復元します。
すなわち、暗号文末尾の復号用セッション鍵を読んで、
そのRSA暗号を解除して復号用セッション鍵を取り出し、
それを使って全体の暗号を解除します。
セッション暗号化の方式と乱数の発生は考える余地がありますが、
PGP/RSAの現実の実装の原理はこれです。
javascriptでpgpを実装したみたいだよ
┌─┐ ┌─┐
│1. │ │ │
│2. │ →│ │
│3. │ ←│ │
│4. │ │ │
└─┘ └─┘
[送信]
こういうふうにリストボックスが二個並んでいて
項目を選んで矢印をクリックすると項目と値がもう片方のリストボックスに
移動するものを作りたいのですがどうしたらよいでしょうか?
>>169 まず自分はどうしたらよいと思うかを書かないと
このスレではろくなレスはもらえないよ。
>>169 select02.text = select01.text;
フォーム部品の操作でもお勉強してくれ。
そういや <select> のことを巷ではリストボックスと呼ぶのか?
おれはセレクトと呼んでるからリストボックスとか言われてもピンとこないんだよな。
やっぱリストといえば <LI> だろ。
174 :
Name_Not_Found:03/12/24 15:27 ID:1UwyLi/J
親画面から、子画面のスクリプトを実行することはできるのでしょうか?
値を変更することはできるのですが、実行することができません。
>>174 消防言語で意味不明。
ソース又は具体的に述べよ。
<img ISMAP>
イベントでこいつの座標を取得したいんだけど
やはりどーやっても無理なのかね?
自分自身にGETしたクエリを見るんじゃ意味ないんだよ。
にしても
<a href="javascript:func()"><img ISMAP></a>
こいつがエラーとは知らなかったよな。
>>176 送信先をjavascript:スキームにしたところで
送信側でquery_stringを見ることはできない。
そのへんはフォームと一緒と思われ。
てかフツーにonclickで座標拾って算出すればいいと思うんだけど。
ismapであることの必要性はあるの?
>>177 必要性ではなく楽をしたかったと。
それに、なにか可能性を秘めてるようにも思えたし。w
onclickで取る方がイメージマップをなんだかんだするより
単純明快だと思うけどなー。
180 :
Name_Not_Found:03/12/27 12:26 ID:jc0zq4Ml
質問です。
ブラウザの表示高(その時開いているウインドウの大きさでスクロールが必要にならないぎりぎりの大きさ)
を参照するにはどうしたらいいのでしょうか?
innerHeightとかだと、本文の行数が多い時には有効なのですが、行数が少ない値の時にはブラウザいっぱいの値が帰ってきません。
>>180 過去ログのどっかからとって来て抜粋。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var w = 0, h = 0;
function getSize() {
if(document.documentElement && document.documentElement.clientWidth) {
w = document.documentElement.clientWidth;
h = document.documentElement.clientHeight;
} else if(document.body && document.body.clientWidth) {
w = document.body.clientWidth; h = document.body.clientHeight;
} else if(window.innerWidth) {
w = window.innerWidth; h = window.innerHeight;
}
window.alert("w = " + w + "; h = " + h);
}
</script>
</head><body onload="getSize()">
</body></html>
ブラウザによってJavaScriptのescape()とunescape()の挙動が違うので、
クッキーに日本語入れて、CGIとの共有が出来ないのですが、
JavaScriptでescape()とunescape()の代わりを実装した良い例はないでしょうか?
encodeURI("ぬるぽ");
184 :
180:03/12/27 20:28 ID:???
>>181さん
どうもありがとうございました。
過去ログにちゃんとのってたんですね。
見つけられませんでした。
185 :
180:03/12/28 00:55 ID:???
mozillaで試すとうまくいきませんでした。
いろいろしらべてみてうまくいったら報告します。
>>185 Unix上のMozillaで試したけどOKだったが。どううまく行かなの?
wもhも0になっちゃうってこと?
187 :
Name_Not_Found:03/12/28 23:39 ID:YPG1Ht9E
質問です。
function test(){
OBJ.onload=new Function('alert('test')');
}
といった具合にonloadハンドラを組み込んでいるのですが、
関数の中でonloadを定義することは出来ないのでしょうか?
onloadを組み込もうとしているオブジェクトは同関数で生成したiframeタグで、
onmouseoverなどの他のイベントハンドラを試すと成功します。
>>187 出来る。
てかシングルクウォートの中でシングルクウォートを使っちゃてるようでは
他にも記述ミスが存在するんじゃないか?
>>187 iframeタグはそもそもHTML的にonloadハンドラつけらんないでしょ。
内側のロードするドキュメント側につけるしかないんじゃないの。
あぁぁ、すんません脱力感の余り
>>187のミス気付きませんでした。
この手の記述ミスはありえないはずですが一応見直してみます。
>>188 みたいですね。。
先程どこかのサイトでイベントハンドラの追加をクラスのような形にしてonloadを利用する例を見ました。
まぁそこではWindowが対象オブジェクトでしたが。。
>>189 やはりiframeというのがネックのようですね。
<iframe onload=test()></iframe>が有効なんで行けるだろうと思ってたんですが。。
>内側のロードするドキュメント側につける
都合上iframe内のドキュメントが別サーバでXSS問題に引っかかるんでその方法が使えないのです。。
先ほどはappendchildで追加したiframeタグに適用してたので
とりあえず今度はinenrHTMLでイベントハンドラごと追加してみます。
成功しました。
<div id=obj><iframe></iframe></div>を生成した後
document.getElementById('obj').firstChild.onload=test();とする手法はアウトですが、
document.getElementById('obj').innerHTML='<iframe onload=test()></iframe>';
としてやるとIE6ではOKのようです。
やはりブラウザのサポートの問題でした。
お騒がせして申し訳ないです。
>>191 こんなソース拾ったが
var flg=0;
function Hoge(){ if (flg!=0) alert("loaded") }
function iframeLoad(url)
{
flg=1;
ifrm.location.href=url;
}
<iframe src="" name="ifrm" onload="Hoge()"></iframe>
IE6では動いた
193 :
192:03/12/29 03:08 ID:???
ミス。スマソ
下等生物が紛れ込んでるな。
195 :
Name_Not_Found:03/12/29 15:51 ID:GLtodrPW
質問です
<html>
<head></head>
<body>
<script type="text/javascript" src="1.js">
alert("hello");
</script>
<span onclick="func()">clickme</span>
</body>
</html>
とやったときアラートが表示されなかったんですが、原因はなんでしょう?
(1.jsの中身はfunc(){document.write("string")}のみです。
document.writeの中身は表示されました。)
教えてください。お願いします。
196 :
195:03/12/29 15:54 ID:???
すみません。document.writeの中身は表示されたというのは間違いです。
もうちょっとテストしてから再び質問します。
197 :
195:03/12/29 16:04 ID:GLtodrPW
再質問です。1.htmファイル:
<html>
<head></head>
<body>
<script type="text/javascript" src="1.js">
alert=("文字をクリックして下さい");
</script>
<span onclick="func()">文字</span>
</body>
</html>
と同じディレクトリに1.jsファイル:
function func(){
document.write("string");
}
を作って、1.htmファイルをブラウザで開いたところ、
(「文字」をクリックすると「string」がきちんと表示されはするんですが、)
開いたときに出るはずのアラート「文字をクリックして下さい」が出ません。
どうすればうまくいくのかご教示願います。
>>195 script要素の内容と、同じscript要素のsrc属性で指定した外部スクリプトが
ともに解釈・実行されることは、
HTML4仕様の下記の記述に従う実装では100%ありえません。
www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/scripts.html#h-18.2.1
> スクリプトは、この SCRIPT要素の内容か、または外部ファイルで定義される。
> src属性の設定がない場合、
> ユーザエージェントは当該要素の内容をスクリプトであると解釈しなければならない。
> src属性の値がURIだった場合、ユーザエージェントは当該要素内容を無視し、
> このURIからスクリプトを取得する必要がある。
199 :
195:03/12/29 16:22 ID:GLtodrPW
回答ありがとうございます。
要素とか内容とかよく分からないのですが、外部jsファイルを使いたいときは、
つねに
>>198のことを気をつけないということになりますかね。
では「具体的にどう対処すれば」いいんでしょう。
>>198の記述からは読み取れなかったです。
「当該要素内容を無視し、」ということは外部ファイルを使うときは
スクリプトタグのなかに何も書けないんじゃないですか?
<head>
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript">
alert("文字をクリックして下さい");
</script>
</head>
201 :
195:03/12/29 16:29 ID:???
今いろいろ試したんですがどうしても
>>198のページ406で見れなかったです。
>>199 script要素は文書中にいくつあってもいいので
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript">
alert=("文字をクリックして下さい");
</script>
とかでいいと思うのだが。
>>199 だからscriptタグを複数書いたりするんじゃないか
まあ今回やりたいことはこれでいいだろ
<html>
<head>
<script langauge="text/javascript" src="1.js"></script>
</head>
<body>
<span onclick="func()">文字</span>
</body>
</html>
1.js
function func(){
alert("文字をクリックして下さい");
document.write("string");
}
204 :
195:03/12/29 16:33 ID:GLtodrPW
205 :
195:03/12/29 16:35 ID:GLtodrPW
>>203 ありがとうございます。
そうすればうまくいくことはさっき確認してます。
たしかに今回はこれでうまくいくんですけど。。。
206 :
195:03/12/29 16:41 ID:GLtodrPW
>>203 本質とは関係ないですが、
クリックしたときのイベントドリブンで出るアラートが
「文字をクリックしてください」
だと「こうすればうまくいく」とはいえないですね。
うーん。。
>>205 やりたいことがサッパリ解らん。
どういうことを実現したくてあのソースを書いたの?
208 :
195:03/12/29 16:49 ID:GLtodrPW
解決しました。初歩的なミスでした。
alert=("string")ではなくalert("string")ですね。
>>207 もともとはもっと長いソースだったので構造だけを取り出したんです。
Flashサイトで、テキストを読み込ませて表示してます。
このテキストにはAタグが使えて、他のページに飛ばす事が可能です。
で、この他のページをPOPUP風にしたい訳です。
この場合って、この他ページのwindow自体に自windowのJavaScriptを記述すれば良いのでしょうか?
210 :
Name_Not_Found:03/12/29 17:36 ID:PKE63Wst
iframeみたいに、クリックしたのにあわせて、
同一ページ内に文章を表示させたいんですが、どうやったらいいでしょうか?
<body>
「天気」をクリックしたら天気の内容を
「行事」をクリックしたら行事の内容を
「季節」をクリックしたら季節の内容を
<div class="naiyou">
それぞれの内容をここにひょうじさせたい
</div>
</body>
これをフレーム使わずにできますでしょうか?
>>210 過去ログ読みなよ。クリックに対して応答するのは分かるよね。
リンクでもonclickでもできるし。で、divにid振って
document.getElementById('ID名').innerHTML = 'メッセージ';
これだけ。IEでもGeckoでもOperaでも動くよ。
getElementById 使うなら、
node 作って append するのも良いかと。
ポップアップでCGI表示させるとツールバーONにならない??
>>213 window.open時にサイズ指定等をして未指定の部分がoffになっただけだろ。
215 :
210:03/12/29 21:35 ID:???
>>211 疑似 インラインフレームとかでぐぐってたんですが申し訳ありません。
教えて頂いたので短い内容のは問題ないんですが、それぞれの内容が長いので、
できれば各内容を外部に置いて、呼び出せるようにできたらと思うんです。
それなら新しいページを作った方が早いというのはちょっと置いておきまして・・・
>>215 object要素のdataプロパティを取り替えるとかではどうかな。
217 :
231:03/12/29 21:52 ID:???
>>214 スマソ。もっと最悪。
scrollbarsのs抜かしてたわ。
さよなら。
質問させてください。
function xxx(){
var a; //string
a="line0";
a.style.color="white";
}
<span id='line0'>abcdef</span>
これだとエラーになるんですが、
(変数).styleできちんと動作させる方法ってあります?
>>218 a = document.getElementById('line0');
220 :
218:03/12/29 22:21 ID:???
>219
動きました!
即レスありがとうございました。
221 :
Name_Not_Found:03/12/29 23:28 ID:0crRseoF
これ、ページに入るたびに背景画像が
ランダムに変わるスクプリトみたいなんですけど
背景が並んで出ます
右下に一個だけ背景出したいんですけど
どーすりゃいいもですか? お願いします
<SCRIPT LANGUAGE="JavaScript">
<!--
back=new Array(5);
back[0]="壁紙に使うファイルの名前1";
back[1]="壁紙に使うファイルの名前2";
back[2]="壁紙に使うファイルの名前3";
back[3]="壁紙に使うファイルの名前4";
back[4]="壁紙に使うファイルの名前5";
MyBack=Math.floor(5*Math.random());
document.write("<body background='"+back[MyBack]+"'>");
//-->
</SCRIPT>
>>221 そのへんの制御はCSSでできます。CSS質問スレへどぞ。
<span>で囲まれたテキストを太字にするのはどうやりましたっけ?
document.id.style.font="bold"
document.id.style.font-weight="bold"
とかいろいろ試してみたんですけどダメで・・・
そのspanにはid振ってあるんだろうね。省略しまくりは自分は危ういから嫌い。
document.getElementById('ID名').style.fontWeight = 'bold';
あるいは「'bold'」の変わりに900とか数値指定の方がいいのかな。
225 :
223:03/12/31 18:48 ID:???
>>224 ありがとうございました。"-"いらなかったんですね。
いや、お恥ずかしい。
CSSプロパティから「-」を取り除き、代わりに次の文字を
大文字にする。なぜなら「-」は「引き算」だから。
あとJavaScriptの中では大文字小文字ちゃんと合わせない
と駄目よ。
228 :
Name_Not_Found:04/01/01 16:46 ID:KK0rd14G
よろしくご指導を。
画像のリンク部分にマウスを持って行くと、下にメニューが表示されjavascriptですが、
メニューのでる範囲にFLSHが表示される範囲があるとFLSHに負けて
メニューが隠れてしまいます。
回避方法はないでしょうか?
229 :
Name_Not_Found:04/01/01 18:02 ID:7CMYJIZR
正月ぐらい休もうよ。
>>227 なるでしょ。そのデザインというか表現をパクりたいと
思ってパクるわけだから。頼んで分けてもらうのが吉。
厳密なJavaScript解説Webサイトでお勧めありますか?
サンプル集とかじゃなく概念的で系統的・体系的・正統的な解説。
HTMLやCSSだとけっこう見かけるんですけどね〜
あ、仕様書ではなく入門向きのサイトお願いします。できれば日本語で。
>230
まるきり同じタイプの(でもCGI本体自体は違う)掲示板を
違う幾つかのサイトでも扱っているんですよ。
例として一つのサイトをあげただけなんですが。
なので、javaスクリプト自体の、どこからどこまでが自分で組み立てたものかというのが
明確にわかるようなものを知りたかったのです。
234 :
231:04/01/01 20:38 ID:???
235 :
231:04/01/01 20:53 ID:???
237 :
231:04/01/01 21:36 ID:???
>>236 おお、注文してしまいました!
これをたくさんの人に勧めて広く布教に努めます。
ありがとうございました。
241 :
231:04/01/02 00:07 ID:???
>>237 ぬおお、今日からJavaScriptに帰依します!寝言もJavaScript言語で吐きます
↗
242 :
750:04/01/02 20:58 ID:hSqkY3V7
JavaScriptでの値代入を下記のようにやった場合、031013の方が
うまく代入できてないんですがどうしてでしょうか。
031013の配列を031014にすると代入できるのですが。
解決方法教えて下さい。
お願いします。
test['030113']='03/01/13';
test['031013']='03/10/13';
そりゃー不思議だねえ。うまくいかないソースの要点
貼ってみなよ。これだけじゃ何ともいえない。
244 :
242:04/01/03 08:20 ID:U0wdz1dJ
>>243 こんな感じに書いてます。
どこがおかしいでしょうか。
year = target.getYear();
mon = target.getMonth();
test['030113']='03/01/13';
test['031013']='03/10/13';
15個続く
↓
while (day <= 31) {
var tuki = month;
var hi= day;
var nen = year;
tuki = String(tuki+101).substring(1);
hi = String(hi+100).substring(1);
nen = String(year).substring(2);
var test2 = nen + '/' + tuki + '/' + hi;
if (test[nen + tuki + hi] == test2) HTML += "<font color=red>";
else HTML += "<font color=black>";
day ++;
}
document.write(HTML);
>>244 whileの前に
for(var x in test) document.writeln('<br>' + x + ' : ' + test[x]);
入れて正しく入っているか確認してみたら。
246 :
Name_Not_Found:04/01/03 14:15 ID:TVgYK0IS
初歩的な質問なですが、
今日始めて NN 使いました。
function f() {return 1}
var o = new Object;
o.ff = f;
var of = o.ff;
document.write(o.ff()); // IE6 NN7.1 共に 1
dw = document.write;
dw("test"); // IE6は test NN7.1はエラー
何でなんだろう?
それとも、NNに何か設定でもあるのでしょうか?
ちなみに、
document.write(dw); //IE6 NN7.1 共に
// function write() { [native code] }
ということは、dw の値はどちらも
関数 write への参照値が入っていると思うんですが・・・
よろしくお願いします。
247 :
242:04/01/03 14:32 ID:U0wdz1dJ
>>245 ご教授いただきましたロジックでデバックしたところ
プログラムミスが判明しました。
ありがとうございました。
248 :
Name_Not_Found:04/01/03 14:45 ID:TVgYK0IS
239>>
デンポラリ使って、this.メンバ排除! 美しい!!!!
>>246 一般にオブジェクトからメソッドだけひっこ抜いて動くと思う?次の例を見て
考えよう。IEで動くとすればそれはタマタマでしょ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
function show() { alert(this.msg); }
function Test(m) { this.msg = m; this.show = show; }
var t1 = new Test('Hello.');
var t2 = new Test('Goodbye.');
t1.show(); t2.show(); // OK
var s = t1.show; // 関数だけ取り出し
alert(s.toString()); // もちろんただの関数
s(); // オブジェクトがないからmsgもない
</script></pre>
</body></html>
250 :
Name_Not_Found:04/01/03 15:20 ID:TVgYK0IS
>>249 ありがとうございす!
IEのwriteメソッドがたまたま
thisを使ってなかっただけなんですね。
メソッド内部で this 使ってたら
関数だけ呼び出したとき、
this= window
になりますね! ^_^;
251 :
250:04/01/03 15:36 ID:TVgYK0IS
↑
まさに「ま」ぬけです!! ^_^;
<a href="javascript:(ジャバスクリプトの文)">
というのはあんまり調べても見かけなかったんですが、
・IE6でもNNでも使えますか?
・これってEMCAscriptの仕様ですか?
>>253 じぶんでやってみれば
でもソレ使うとさ、shiftキーおしながらクリックされたらエラーになるよ。
あと、「新しいウインドウで開く」もエラーになる。
使えねぇかと。
<a href="#" onclick="*****;return false">
これでいいんじゃない?
>>253-254 javascript: URIはブラウザの仕様でしょ、そもそもECMA
(EMCAじゃないねん!)は言語の仕様を定めているのであって
その呼び出し方とかは関知しないところだから。IE、Gecko、
Operaなどほとんどのブラウザで使えるでしょ。
256 :
Name_Not_Found:04/01/04 13:33 ID:waxtUM8b
CD-ROMからオートランでindex.htmlページを開くというものを作っているのですが
index.htmlを読み込み時にツールバーやアドレスバーを非表示にしたいのです。
親ウインドウのツールバーを制御するにはどうしたら良いのでしょうか。
ローカルで実行するならexeかませてもよさそうなもんだけど。
258 :
Name_Not_Found:04/01/04 23:40 ID:o1o4fUo8
「項目1」「項目2」「項目3」…という項目のリストを
ユーザが好きなように並び替えてフォームで送信する
仕組みを作りたいのですが、既存のフォームの部品では
なかなか上手く実現できそうにありません。
JavaScriptを使ってなんとかユーザにわかりやすくて
直感的に並び替えができる操作を実現したいのですが、
そのためのアイデアまたは実際にやっているサイトなどが
あれば教えてください。
>>258 受け取り側のCGIじゃ順番なんて関係ないだろうに。
ま、一応
項目を入れたリストボックスと空のリストボックスを用意して
選択された項目を空の方に入れて
hidden に値そのものか、並びでも入れてCGIで処理する。
textarea に入れてった方がいいか。
っと、こういうことでいいのか?
>>256 HTMLアプリケーションがおすすめ。
まあまずはそのファイルの拡張子を.htaにしてみるこった。
261 :
256:04/01/05 13:12 ID:89CWac0I
>>260 どうもありがとう。希望に近いことはできました。
でもこれ、autorunで起動するにはどうすればいいの?
open=index.hta かと思ったけど思うように動かない・・・
262 :
262:04/01/05 15:19 ID:UWYzcbpI
該当の日付になったら『今日は****の日』と表示させる方法を教えてください。
『****まであと****日』というのはJavaScript系のサイトで出まわっていますが
該当日だけ表示させる方法が見つかりません。
263 :
↑:04/01/05 16:26 ID:???
自分で作る気は全くないらしいね.
さほどむずかしくもないのに...
選択された RADIO ボタンの内容により、テーブルの内容を
変化させたいと思い、javascript でいろいろやったのですが
うまくいきません。
<DIV ID="A">
<TABLE>(略)</TABLE>
</DIV>
のようにし、TABLE 自体の表示/非表示する事はできたのですが、
<TABLE>
<DIV ID="A">
<TR>
<TD></TD>
</TR>
</DIV>
<DIV ID="B">
<TR>
<TD></TD>
</TR>
</DIV>
</TABLE>
のようにテーブルの一部を表示/非表示させる方法がわかりません。
このような事を行なう方法があれば教えてください。
javascript は
document.getElementById("A").style.display = "block";
document.getElementById("A").style.display = "none";
で表示/表示をしています。
よろしくお願いします。
>>264 ある程度は仕方ないかと。使いたい奴と作りたい奴は必ずしも一致しない。
262にゼロから自作させたら満足に動くようになるまで1ヶ月はかかると思われ。
>>265 <tr id="A">
>>266 まあ,仕方ないといってしまえばそうだけど...
JavaScript をマスターすることによって
逆に HTML,CSS の理解が深まる事もあるんだけどなぁ.
大切なのは怖じ気づかずに取り組む事かと...
JavaScriptでどうやってHTMLの理解が深まるのか興味あるなぁ
>>268 たとえば form object は document.forms[n].elements[n] で表される.
これは form object を type に関らず,同等のものとして扱える事を意味する.
なによりも原語で表されているので
漢字に置き換えられた言葉よりも直感的に理解できる.
ようは JavaScript は HTML の要素(elements)を object として指し示し,
それにたいする操作の方法(method)を記述するしているに過ぎない.
的確に object を指定した記述ができると言う事は HTML の理解に繋がると思う.
っつーか、それ、DOMの話だから。
ブラウザのJavaScriptで使うってだけでしょ。
JavaScriptとは関係無いから。
>>269 お前はJavaScriptもHTMLもまだ半分しかマスターしていない。
…とか思われそうな発言だな、なんか。
平易な表現を選ぼうとして失敗してるのか本当にその程度の理解でしかないのかよく解らん。
そこそこ理解してるんだろうとは思うし、関連を理解することが有意義だとも思うけどさ。
ビジュアル面でjavascriptで自分の思ったようなことをしようとすると、
ある程度、HTML+CSSの知識が必要になりますので、
マークアップとレイアウトの分離などを、よく理解する必要がでてきます。
ということかと思った。
273 :
Name_Not_Found:04/01/05 20:55 ID:rTwn7Y+K
そのウインドウ自身を「全画面表示」(WinのIEの「表示」ー「全画面表示」)
にする方法はあるんでしょうか?
新しいウインドウでなら、windows.open の中に fullscreen を入れる方法
を教えていただいてできたんですが・・・
こうかな。
document.write("F11を押してください。");
残念ですが無理です
IEの仕様なので
>>270-271 なんだかファウストの お話を思い出してしまったよ〜.
(地霊に出会って,絶望するくだり...)
確かに厳密な部分では僕は半端者さ.
うえ〜ん.
>275
それじゃしようがないね。
null は懲りもせず又 ヴァカ 晒しにきたのか。
メデテー野郎だな。
iframeのように別のページを自分の中に表示したいのですが、
iframeを使うと、幅、高さが固定してしまいますよね。
できれば、スクロールバーを使用することなく、
全ての内容を表示させたいのです。
それで、別のページからxmlのdomのimportNodeとappendChildを
使って、javascriptで、コピーさせようなどとも考えましたが、
上手くいかないようでして、
何かいい方法はないものか、ご教授いただければと思い、
投稿させていただきました。
よろしくお願いします。
282 :
280:04/01/06 04:35 ID:???
innerHTMLが便利なことに気付きました。
ただ、別のページのHTMLを取得する方法が分かりません。
window.openで新しいページを開かず、読み込む方法は無いのでしょうか。
>>281 ソースでたらめ.
ローカルで修正しようとしても相変わらずなので,
サーバーサイドで勝手に何かをやっている可能性が...
284 :
281:04/01/06 05:43 ID:???
>>283 うぅぅぅ、スミマセン、でたらめですか…。
どの様に書き換えれば良ろしいでしょうか?
IEでの動きを、NNやOperaでも再現したいのです。
IE、NN、Operaで動きさえすれば、シンプルな物で良いのですが…。
>>280 外部ソースの取得はIEの場合要ActiveX。
過去ログを XmlHttp とか XmlHttpRequest とかで検索すると出てくると思う。
でも、iframeで埋め込んで、ロード後にiframe内文書の幅と高さを取得して
iframeの幅と高さを再設定してやるとかでもいいような?
最近、厨に
右クリック禁止、キーボード入力禁止、クリック禁止
教えた香具師いるか?
よく逝ってる掲示板がそれの被害あって
書き込みできねーじゃねーかYO!
スクリプト無効にすればおk。
スクリプト無しでは動かないようなら、直接POSTだ。
ていうかそんなのの被害にあってる掲示板システムてかなりマズいのでは…
まあ287はそこの管理者じゃないようだからどうしようもないが。
どうせUAを置き換えせず吐いているんだろ。
そんなクソCGIは厨でもハックできるからな。
とりあえずレンタル先に言えば速攻で修正してくれるし
スクリプト吐いてる書き込み消せば元に戻る。
291 :
280:04/01/07 00:44 ID:???
>>286 よそのHTMLファイルを参照するのに、
どうしても、ActiveXなどが必要となってしまうのですね。
HTMLファイルに限らず、よそのバイナリやテキストファイルが
(もちろん、HTTPで公開されているものに限るのですが)
Javascriptなどで標準で読めることができてもいいはずだと
思うし、そういう需要ってあまりないのでしょうかね。
ありがとうございました。
それが一体どれほど悪用できるか考えてないんだろうね…
293 :
Name_Not_Found:04/01/07 14:39 ID:wwdsQwDA
すいません質問です。
Exciteのウェブページ翻訳サービスのように、
Formからデータ送信 → 「作業中です」 → 「終了しました、表示」
みたいなシステムを作りたいのですが、
Exciteの「翻訳中」の表示は、以下のrelocate()をonloadしているようなのです。
function relocate() {
setTimeout( "document.location = '/world/url/body/?wb_url=&submit=(次へ続く)
%83E%83F%83u%83y%81%5B%83W%96%7C%96%F3&wb_lp=ENJA&wb_dis=2&wb_co=excitejapan'", 1000 );
}
これには
「翻訳中であれば表示を変えずにおき、翻訳が終わったら結果を参照する」
という機能はあるのでしょうか?
よろしくお願いします。
>>293 " script を解読して欲しい " と言う意味ですか ?
(仮にそうだとしても decode しないと,何のことやら...)
まず, decode する script を作るのが先決だと思いますよ.
ざっと見て解るのは 1000 mili second 経過後に,
CGI に get でアクセスしているということくらいかな ?
そこから先は CGI のお仕事...
>>293 そんな機能ありません。
ただ単に1秒後に
/world/url/body/?wb_url=&submi(略
に飛ぶだけです。
CGI側で処理が終わっていたら「終了しました」を吐いてるだけです。
ニ九四へ
null氏ね
>>295 おやおや...ごていねいな新年の挨拶痛み入りまする〜.
297 :
Name_Not_Found:04/01/07 19:49 ID:QSSBAxdY
すみません、質問です。
現在当サイトで設置しているBBSの送信フォームの送信ボタンが画像になっています。
この画像のロールオーバーってどうやってもできないんでしょうか?
オンマウスで画像を変化させて、クリックで情報送信 っていうかんじにしたいのです。
よろしくお願いします。
299 :
Name_Not_Found:04/01/07 20:32 ID:QSSBAxdY
>>298 アドバイスどうもありがとうです!
そして、説明不足ですみませんでした。
当サイトのBBSの送信フォームが、つまり
<INPUT TYPE="image" SRC="XXXXXXXX.gif" WIDTH="XX" HEIGHT="XX" BORDER="0" VALUE="submit" TABINDEX="5">
こんなかんじになってて、この画像をロールオーバーさせたいってことなんです。
やっぱり無理なのでしょうか。。。
>>299 う〜〜〜. ますますわっかりましぇ〜ん
んで,逆質問.
・ 掲示板はカスタマイズできるのね ?
・ form 操作の script を書けますか ?
・ event handler(onClick など)は,attributes (属性) 扱いなので,
ほとんどの elements (要素)で使えるのを知っていますか ?
(単に function call すれば良いだけなんですど〜)
301 :
Name_Not_Found:04/01/07 20:51 ID:0mU8YxcZ
JavaScriptで数値計算系のことをやらせているんですが、
環境によって結果が異なると辛いので、以下のことを質問します。
1.実行環境のビッグエンディアンとリトルエンディアンの違いは影響しますか?(JAVAのようにVMで保証)
2.JavaScriptのrandは環境依存なのでしょうか?(再現性が欲しい)
お願いします
その
>>298 に書かれているonmouseover属性中のコードでいかにして
画像を差し替えているのか説明してみてくれ。まさか画像ファイル名
が書かれていたら自動的に差し替えられるとか思っていないよな?
303 :
299:04/01/07 20:57 ID:???
>>300 す、すみません。。。
質問答えます
・ 掲示板はカスタマイズできるのね ?
−−−程度にもよりますが、簡単なカスタマイズならギリギリできます(汗。
・ form 操作の script を書けますか ?
−−−無理です。
・ event handler(onClick など)は,attributes (属性) 扱いなので,
ほとんどの elements (要素)で使えるのを知っていますか ?
(単に function call すれば良いだけなんですど〜)
−−−未知の世界です。
ちょっと書いてみたけどN4では動かないねえ。Geckoは大丈夫だけど。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg(e, f) { e.src = f; }
</script>
</head><body>
<form name="f1" method="post" action="#"><p><input type="text" name="t0">
<input type="image" src="t0.png"
onmouseover="chg(this,'t1.png')" onmouseout="chg(this,'t0.png')"></p></form>
</body></html>
>>301 う〜〜〜〜.
動作確認をとっていなかったです〜(ぐは〜)
<img src="a.png" onClick="src='b.png'">
取り合えず,これで動作します〜.
(スマートかどうかは別として...)
>>301 >1.
ネイティブECMAScriptの範囲なら影響ない。
ホストオブジェクト等実行環境による追加実装については
個々の仕様に依存して影響があったりなかったりするだろう。
>2.
Math.random() のこと言ってるならそのアルゴリズムは実装依存。
てか再現性があったらそんなの乱数じゃないって。
>>303 う〜〜〜,どうしたものか...
(でしゃばった責任を少し...)
返答からして, script を書いてあげるしかないのかしらん ?
で,どこの掲示板 ?
308 :
301:04/01/07 21:57 ID:???
>>306 Math.random()はSEEDが指定できないのね。
(いまリファレンスを引いて知った)
線形合同法あたりを自前で実装して解決することにします。
で、線形合同法って、オーバーフローを意図的にさせて、計算をするんだけど、
オーバーフローさせた場合の挙動って環境依存ですか?
>てか再現性があったらそんなの乱数じゃないって。
乱数じゃなくて、擬似乱数が欲しいので。
>>303 <img src="a.png" onMouseOver="this.src='b.png'" onMouseOut="this.src='a.gif'">
・ 上記のものは script とは言いがたいけれど, 取り合えず2つの画像を切り替える働きをします.
・ a.png, b.png はそれぞれ適当に置き換えてね.
>>308 数を扱う型はNaNもInfinityも一緒くたのNumber型しかないので
オーバーフローも自前で実装することになるかと。
311 :
Name_Not_Found:04/01/08 10:09 ID:rY+Ku850
<form>
<input type="submit" value="Aへ"> <input type="submit" value="Bへ">
SELECT_FORM_A
<select name="selectFormA" size="3">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
SELECT_FORM_B
<select name="selectFormB" size="3">
</select>
</form>
このように二つのセレクトメニューがあって、
メニューAの内容をどれか選択して「Bへ」ボタンを押すと
それがBに行き、
メニューBの内容をどれか選択して「Aへ」ボタンを押すと
それがAに行くという動作を、javascriptでどうすればできますか?
313 :
299:04/01/08 11:37 ID:???
>>304,307,309
アドバイスどうもありがとうございました!
昨晩はずっとCGIとJavaScriptと格闘したまま気付けば寝てしまっていました。。。
現状だとOnMouseOverで画像は切り替わるところまできました。
ですが、OnMouseOutで切り替わりません。
ソースは304さんに教えていただいた
<script type="text/javascript">
function chg(e, f) { e.src = f; }
</script>
中略
<INPUT TYPE="image" SRC="btn_off.gif" WIDTH="XX" HEIGHT="XX" BORDER="0" VALUE="submit" TABINDEX="5" onmouseover="chg(this,'btn_on.gif')" onmouseout="chg(this,'btn_off.gif')">
です。
しかし難しいですね^^;)
>>313 ん、変わらん?
ファイル名間違えてるんじゃねーの?
<INPUT TYPE="image" SRC="btn_off.gif" VALUE="submit" onmouseover="this.src='btn_on.gif'" onmouseout="this.src='btn_off.gif'">
>>311 object, method が不明ですよ.
何をやりたいのか整理しなおしてくださいね.
317 :
299:04/01/08 12:57 ID:???
>>314,315
うわわわわ!やってしまってました!!!!!
>>315さんの言うとおり、ファイル名(ディレクトリ表記)を間違えてました!
すごく久々にHTMLに触れたので超初歩的ミスに気付かったです!!!!!
アドバイスいろいろとありがとうございました!無事に作動しました!!!!!感動!!!!!
>>314さんの言うとおり、ひとつひとつ問題をクリアしつつ精進しますです!!!!!
これからもがんばります!!!!!ありがとうございました!!!!!
( ´∀`)
318 :
311:04/01/08 14:45 ID:rY+Ku850
<form method="post" name="myFORM">
<input type="submit" value="Aへ" onclick="changeFormA(this.form)"> <input type="submit" value="Bへ" onclick="changeFormB(this.form)">
SELECT_FORM_A
<select name="selectFormA" size="3">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
SELECT_FORM_B
<select name="selectFormB" size="3">
</select>
</form>
こんな感じにしたんですけど、クリックしたら画面が切り換ってしまうので、
リストボックスの内容が変化したかわからないのです。
画面が切り換らないで、その場で値を変えるにはどうすればよいでしょうか。
IEのツールバーの変更の画面みたいなイメージです。
>画面が切り換らないで、その場で値を変えるにはどうすればよいでしょうか。
submit じゃなくて button
320 :
311:04/01/08 14:48 ID:rY+Ku850
<script language="JavaScript"><!--
function ChangeFormA(formName){
var selectVal;
selectVal = formName.selectFormA.value;
myFORM.selectFormB.value = selection; //ここがダメ
}
--></script>
Bのリストボックスに値が入らないのです。
321 :
311:04/01/08 14:50 ID:rY+Ku850
すいません、間違えました。
myFORM.selectFormB.value = selectVal; //ここがダメ
でもやっぱりダメだった。
322 :
311:04/01/08 14:51 ID:???
>319
ありがとうございます。画面が切りかわらないでうまくいきました。
323 :
Name_Not_Found:04/01/08 15:00 ID:PeSjjuBj
他のinput要素にOnFocusした時にsubmitボタンのスタイルを変更するには
イベント・ハンドラを何にすればよいですか。
ふつうformのinput(type="text")要素かtextarea要素にカーソルを入れると
送信ボタン(<input type="submit">)に黒い枠線で影がつきますよね(Win98/IE6の場合)。
あのスタイルを赤の枠線に変更したいのですが、
onFocus="this.style.border='10px solid #f00'"では
送信ボタンをクリックした時しか変更されないのです。
フォーカスしたときに動作させたいすべての要素に
onfocus="document.forms.フォーム名.elements.送信ボタン名.style.border='....'"
という属性を指定すれば。ちなみにフォーム名も送信ボタン名もname属性と
して指定してね。
325 :
323:04/01/08 15:23 ID:???
>>324 ううむ、フォーカスしたときに動作させたいすべての要素に、ですか。
<input type="submit">だけに指定するって楽な方法は無いのですね。
でも、とすると、IEなどはデフォルトで全てのinput要素に
>>324みたいな属性が振ってあるわけかしらん。
326 :
Name_Not_Found:04/01/08 15:29 ID:faVtU/fm
書き込まずに送信するミスを防ぐため、次の通りスクリプトを組みました。
function check()
{
txt = document.myForm.comments.value;
if (txt == "") { alert("入力がありません"); return false; }
}
<form name="GuestForm" onSubmit="return check()">
<textarea name="comments" rows="5" cols="50"></textarea>
<input type="submit" value="送信する" class="button" onClick="check()">
<input type="reset" value="消す" class="button">
</form>
実行すると、一応は空書き込みを防げますが、なぜか警告が二度出ます。
どうすれば警告は一度だけに直せますか。
327 :
326:04/01/08 15:37 ID:???
あ、もしかしてsubmitボタンのonClick="check()"が不要なのかな。
onSubmit="return check()"だけで済みますか。
>>327 当然。
>>311 過去ログからもってきて改訂した。過去ログちゃんと探したら。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg(a, b) {
var s1 = document.forms.f1.elements[a];
var s2 = document.forms.f1.elements[b];
if(s1.options.length <= 0) return;
var t = s1.options[s1.selectedIndex].text;
s2.options[s2.options.length] = new Option(t, t, false, true);
if(s1.remove) s1.remove(s1.selectedIndex);
}
</script>
</head><body>
<form name="f1" action="#"><p>
<select name="s1">
<option>猫</option><option>犬</option><option>うさぎ</option></select>
<select name="s2"></select>
<input type="button" value="L→R" onclick="chg('s1','s2')">
<input type="button" value="L←R" onclick="chg('s2','s1')">
</p></form></body></html>
329 :
311:04/01/08 16:09 ID:???
>>328 いやはや、面目ねえ。
都会の人はすげんだな。
<script language="JavaScript">
<!--
function SymError()
{
return true;
}
window.onerror = SymError;
var SymRealWinOpen = window.open;
function SymWinOpen(url, name, attributes)
{
return (new Object());
}
window.open = SymWinOpen;
//-->
</script>
↑最近よく見かけるのですがこれって何ですか?
331 :
↑:04/01/08 18:19 ID:???
じゃヴぁすくりぷと
333 :
↑:04/01/08 18:48 ID:???
334 :
Name_Not_Found:04/01/08 19:47 ID://wVL+cz
<form>のmethod="get"で次ページへ値を飛ばして、その次ページで
location.searchで取得し、処理しようとしているのですが、全角の
文字があった場合にエンコードされてしまって処理できません。
unescapeを使いましたがやはり、unicodeでないといけないようで
うまくいきません(IE6使用)。
<form>でurlエンコードされた文字をデコードする方法は無いでしょうか?
String.fromCharCodeを利用して何とかならないか頑張っているのですが
どうしてもうまくいきません。
こんにちわ。ちょっと悩んでいるのですが・・・
あくまで例えなんですが、
「フォルダとファイルのようなツリー構造もの」を管理するのには
どのようなプログラミングをしたらよいのでしょうか。
フォルダのようなものの中には、フォルダかファイルがあり、
ファイルのようなものの中身は文字列です。
実装させたい機能は、
・指定のパスに、フォルダもしくはパスを追加する
・ファイルにアクセスし文字列を取得
・ファイルにアクセスし文字列を書き込み
・フォルダの中身を配列で取得し、
各要素がフォルダかファイルか識別できる
くらいです。
コピー・削除のような機能は必要ありません。
実際の運用では階層の深さは5階層くらいまでで、
ひとつのフォルダに入るフォルダとファイルは、20以下です。
配列を使ってやろうかと考えましたが、フォルダの中身がファイルだったり
フォルダだったりするのでうまくいきませんでした。
よろしくお願いいたします。
質問です。
ActiveXで取得したユーザイベントをJavaScriptに渡す方法はあるのでしょうか?
ご回答よろしくお願い致します。
ご質問させて頂きます。
配列(1,2,3,4,5)をシャッフルし、writeするスクリプト(以下参照)を書いてみたのですが、
[object Object]と言った文字列しかwriteされず、少々困っております。
何か基本的な事だとは思うのですが、ググってみても参考になる物が見当たりませんでした。
どなたかアドバイスを頂ければ幸いです。
function _shuffle() {
var arr = _shuffle;
var max = arr.arguments.length;
for (var i = max; --i; ) {
var j = Math.floor(Math.random() * max);
if (i == j) { continue; }
var ii = arr.arguments[i];
var jj = arr.arguments[j];
arr.arguments[i] = jj;
arr.arguments[j] = ii;
}
return arr.arguments;
}
function _write() {
var arr = _write;
var max = arr.arguments.length;
for (var i = 0; i < max; ++i) {
document.write(arr.arguments[i]);
}
return true;
}
array = new Array(1, 2, 3, 4, 5);
shuffle_arr = _shuffle(array);
_write(shuffle_arr);
>>338 念のためですが,
function _shuffle() が何をやっているのかを説明してください.
( 'arr' は function _shuffle() 自身を指し示しています.)
('max ' は function _shuffle() の argument の個数ですが,これは常に 1 です.)
>>338 てか、そんなヘンなやり方で引数受け取ろうとしないで
普通に function _shuffle ( array ) { ... } でやってみなよ。
>>338 function _shuffle() {
var max = arguments[0].length;
for (var i = max; --i; ) {
var j = Math.floor(Math.random() * max - 1);
var ii = arguments[0][i];
arguments[0][i] = arguments[0][j];
arguments[0][j] = ii;
}
return arguments[0];
}
function _write() {
var max = arguments[0].length;
for (var i = 0; i < max; ++i) {
document.write(arr.arguments[0][i]);
}
return true;
}
array = new Array(1, 2, 3, 4, 5);
shuffle_arr = _shuffle(array);
_write(shuffle_arr);
>>334 form を使う代わりに
location.href=url+'?'+str; (str: 次のページに渡す文字列)
と,して見てはいかが ?
(動作確認していません. 無責任でごめんなさい.)
343 :
336:04/01/08 21:57 ID:???
追記です。
自分で試してみたのは、
VC++でActiveXを作成(
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_activex_controls.3a_.adding_custom_events_to_an_activex_control.aspを参考にしました。)
そこでできたocxファイルをインストールして、下記のHTML(多少省略)で実行。
OnEventでユーザイベント(OnNotify)が発生し、それを検知する予定でした。
<HEAD><SCRIPT type="text/javascript" >
<!-- function OnEvent() {
Test.DoEvent();
}-->
</SCRIPT>
<SCRIPT FOR="Test" EVENT="OnNotify()" LANGUAGE="JavaScript"><!--
window.document.destination.data.value = "Notify!!";
window.document.destination.submit(); --></SCRIPT>
</HEAD>
<BODY>
<OBJECT ID="Test" NAME="Test" CLASSID="clsid:00000000-0000-0000-0000-000000000000" CODEBASE="./Test.ocx"></OBJECT>
<FORM ACTION="dest.cgi" METHOD="POST" NAME="destination">
<INPUT TYPE="hidden" NAME="data" VALUE=""> <INPUT TYPE="submit" VALUE="送信">
</FORM>
<FORM NAME DoEvent>
<INPUT TYPE="button" NAME="DoEvent" VALUE="Event" onclick="self.OnEvent()">
</FORM>
</BODY>
どなたかご教授お願いいたします。
>>343 さすがにスレ違いかな。
ム板から攻めることをお勧めする。
ここはJavaScriptで何をやるか、のスレだからね…
345 :
335:04/01/08 22:53 ID:???
>337
具体的にはどうやればいいのでしょうか。
>344
プログラム板のJavaScriptのスレで、
Webブラウザ組込みのJavaScriptに関することはWeb制作板へ
という書き込みがあったので、こちらかなと思いました。
スレ汚し申し訳ございませんでした・・・
347 :
Name_Not_Found:04/01/08 23:17 ID:TLKimAjM
質問させていただきます。
次(
>>348に書き込ませていただきます)
のようなソースでmedia playerのActiveXコントロールを
javaScriptで制御したいのですが、mac osX環境(ブラウザは
IE,Safari,NN等試しました)で閲覧することがどうしてもできません。
(windows環境では正常に表示されます)
macの場合ActiveXコントロールに互換性が無いということを
聞いたのですが、なにか対応するブラウザが存在したり他の方法
で制御するようなことは出来ないのでしょうか。
御教示のほどよろしくお願いいたします。
348 :
Name_Not_Found:04/01/08 23:18 ID:TLKimAjM
347のソースです
<HTML>
<HEAD>
</HEAD>
<BODY onLoad="setMovie()">
<Form name="myForm">
<input type="text" name="myPositionTime" size="30" readonly>
<input type="button" value="PAUSE" onClick="clicli()">
</FORM>
<embed type="application/x-mplayer2" name="P1"
pluginspage = "
http://www.microsoft.com/windows/mediaplayer/" width="200" height="140" src="mms://ストリ−ミングサーバのURL/hoge.wmv" showcontrols="1">
</embed>
<SCRIPT Language="javaScript">
function setMovie()
{
myId1=setInterval("cont()",200);
}
function cont()
{
document.myForm.myPositionTime.value=P1.currentPosition;
}
function clicli()
{
P1.Stop();
}
</SCRIPT>
<SCRIPT FOR=P1 EVENT=PlayStateChange(NewState) LANGUAGE="JavaScript">
if(NewState==2){
alert("PAUSEボタンがおされました");}
</SCRIPT>
</BODY>
</HTML>
JavaScriptで関数に変数を参照渡しするにはどうしたらいいですか?
全部グローb(ry
>>334 ><form>のmethod="get"で次ページへ値を飛ばして、その次ページで
>location.searchで取得し、処理しようとしているのですが、全角の
>文字があった場合にエンコードされてしまって処理できません。
IE6で動きさえすればよいなら、
先にその値をencodeURI()でUTF-8エンコードをしてやって
あとでdecodeURI(location.search)でデコードすればいいかと。
ブラウザによるエンコードはShift_JISだから
それをデコードするとなるとIE6のJScriptだけでは無理で
VBScriptのChr関数を使う事になると思う。
(これはこれで面白そうだから作ってみたいが)
352 :
Name_Not_Found:04/01/09 01:21 ID:6Rrbii21
>>342 >>351 有り難うございます。
手動でURLの後ろにくっつける場合は普通にescapeとunescape
で出来るのですが、checkboxやradioなどが有る場合にスクリプト
の記述が増えてしまうので、<form>だけでやりたいと思っていま
した。そのほうがバグの危険性が減りますし。
VBScriptはなるべく使いたくありません(NN対応を迫られたときに
対応できない為)。JavaScriptではデコードはやっぱり無理なので
しょうか。
>>352 >JavaScriptではデコードはやっぱり無理なのでしょうか。
セキュリティーによる制限を除けば JavaScript は柔軟にできています.
decode については自分で関数を作ればどうにかなる気がします.
(character code は規則正しくできているので変換しやすいかと...)
未読リンクと既読リンクが同じ色で見分けがつかないページで、
既読の色だけをJavaScript(Bookmarklet)で別の色に変更するには
どのようにすれば良いですか?
javascript:void(document.vlinkColor='800080');
としてみたのですが、StyleSheetで指定された既読リンク色を
変えることができませんでした。
356 :
Name_Not_Found:04/01/09 06:23 ID:Hve3MrAi
#amp;&〜〜タイプではなくて、&〜〜タイプが出るようにするには
どうしたらいいのでしょうか。
<script language="JavaScript">
s="0123456789";s+="abcdefghijklmnopqrstuvwxyz";
s+="ABCDEFGHIJKLMNOPQRSTUVWXYZ";s+="|+-*/=!#$%&^~\\|@`[]{}:;,.?";
function c(){
if(form1.radio1[0].checked){h=form1.radio1[0].value;}else{h=form1.radio1[1].value;}
w=form1.text1.value;v=form1.text2.value;l=form1.text2.value.length;
document.write(h+w+".");
for(i=0;i<l;i++){
if((v.charCodeAt(i)==46)&&((v.charCodeAt(i+1)==13)||(i+1==l)))
{document.write("&"+"#38;#46;");}
else{if(v.charCodeAt(i)==13){document.write("<br>"+h+w+".");i++;}
else{if(s.indexOf(v.charAt(i),0)>=0){document.write(v.charAt(i));}
else{document.write("&"+"#38;#"+v.charCodeAt(i)+";");}}}}}
</script>
<form name="form1"><input type="button" value="変換する" onclick=c();>
<input name="radio1" type="radio" value="
http://" checked>http
<input name="radio1" type="radio" value="
ftp://">ftp
<input name="text1" type="text" value="www"><br>
<textarea name="text2" cols="40" rows=5></textarea></form>
357 :
訂正です:04/01/09 06:24 ID:Hve3MrAi
&#〜〜タイプではなくて、&〜〜タイプが出るようにするには
どうしたらいいのでしょうか。
>>349 オブジェクトは参照渡ししかできないがその他の型の参照渡しはできません。
>>353 Unicode⇔SJIS(JIS X 0208)間の変換は全然規則的じゃないので
自前で関数(変換表)を書くのは相当な力技かと思います。
(大変な作業ではないがサイズが大きくなる)
>>357 変換表書きましょう。大した量ではありません。
>>358 ツッコミありがとうございます.
Unicode について良く調べてから発言すべきでした.
日本語文字コードはなにかと問題が多いですね.
>>356 document.write() の使い方が問題ですよ〜.
"変換する" を押したとたん...
それと s は regular expression と思われます.
しかし,その後の使われ方が...
一工夫した方が良いんじゃないかなぁ ?
361 :
Name_Not_Found:04/01/09 12:45 ID:Vzhgqpbs
次のif構文で、{}内を空白にするのは許容される書き方ですか。
function check()
{
if (window.confirm("これで送信しますか?"))
{ } else {return false;}
}
<form onSubmit="return check()">
空欄の{ }内にreturn true;を入れると二重送信になるので
止むなく空欄にしてお茶を濁してるんですが。
もっと良いやり方があったらご教示下さい。
>>361 許容されるけど、単に
return window.confirm("これで送信しますか?");
とかでいいような気がする。
一般的には条件式が true のときの処理内容がなければ
if ( !(条件式) ) { ... } とかにするんじゃないかな。
>>361 > 空欄の{ }内にreturn true;を入れると二重送信になるので
そうなの?
364 :
361:04/01/09 13:02 ID:???
>>362さん、有り難う。
その方がソースがスッキリしますね。
もともと確認ウィンドウ(confirm)はOKボタンが押された場合はtrue、
キャンセルが押された場合はfalseを返すんですから、return false;も不要でした。
初心者でそこまで頭が回りませんでした。
>>363 confirmでOKを押すことによりtrueが返されるのと
if構文のreturn true;とで、二重になる。
二重書き込みを狙ってやるにはいいかも?
>>365 >>361 の confirm が返す true は if 分の条件式で評価されておしまい。
if 文が返す true はただの check() の戻り値。
onsubmit="return check()" では一回trueが返るだけ。
# てかJavaScriptの関数やイベントハンドラは値を複数返すなんて芸当できないから。
もし二重書き込みが発生するなら、それは全然別の箇所に原因があると思われ。
367 :
338:04/01/09 14:13 ID:???
>>341 あぁぁぁぁぁあああ!!!なるほど!!
連想配列として渡されていたのか!!
激しく理解致しました。ありがとうありがとうありがとう。
ものすっごくありがとう!
>>354 javascript:void(document.body.innerHTML+='<style>a:visited{color:#800080 !important;}</style>');
が一番手堅いと思われる。
#id:visited { color: red !important }
.class:visited { color: red !important }
こういうの以外には勝てる。
submit するたびに confirm が出る掲示板なんて...
>>367 何をどう理解したのか教えてもらえないかな ?
370 :
Name_Not_Found:04/01/09 17:21 ID:JHASRtJR
<select name="hoge">
<option value="aaa">aaa</option>
<option value="bbb">bbb</option>
</select>
optionの個数って調べられますか?
form.hoge.options.length とかで
つまらん質問でスマソだが
function today(){
var now = new Date();
alert(now.getFullYear()+"年"+(now.getMonth()+1)+"月"+now.getDay()+"日");}
を実行すると
「2004年1月9日」となるはずなのに、
「2004年1月5日」になっちまうのは、どっか変なのかなぁ?
コンパネの「日付」と時間は狂ってないし。
win2000SP3+IE6.0 での実行結果。
>>372 あんたのマニュアルの見方(ないし見ようとしない態度)がヘンなんでしょ。
getDay()っていうのは「曜日」を0〜6の数値で返す。金曜日だから5で正解。
「何日」か取り出したければgetDate()だってば。
374 :
372:04/01/09 18:08 ID:???
375 :
361:04/01/09 18:54 ID:???
>>375 submit は JavaScript でもできると言いたかった訳.
document.forms[0].submit();
てな感じ.
ただし,このやり方は JavaScript を切っているとボタンを押しても無視される.
しかし,大抵の場合,この方が都合が良い.
なによりもすべての処理が終了した後で submit できるので
トラブルを未然に防げるのが利点.
もちろん, 2 重送信も腕次第で防げる.
377 :
361:04/01/09 19:52 ID:???
句点(。)のかわりにピリオド(.)を使うやつはnullだ!
やつは間違った解答で質問者を陥れようとしているぞ!!
無視しよう!!!
>>377 >相手の環境を選ばないサイト作りが目標ですから。
つまり, js 切っているときには,間違ったデータが送られても良いという訳ね.
さらに, submit のたびに confirm が出るのは全く問題なしと...
2 重送信もまったくどうでも良いってこと ?
>>378 間違っている時には,現場を押さえる.
これ鉄則.
>>377 このままでは,誤解されそうなので補足.
・ なんのために JavaScript でチェックしようとしているのかを思い出してね.
・ <input type="submit"> と onSubmit の組み合わせは,
先に submit された後で処理が行われる可能性がある.
>>379 >つまり, js 切っているときには,間違ったデータが送られても良いという訳ね.
JavaScriptオフのときにはデータの送信すらできないってよりは、良いやね。
>さらに, submit のたびに confirm が出るのは全く問題なしと...
2ちゃんねるで「書きこみ&クッキー確認」の画面を出すみたいなものだからね。
問題無いやね。
二重送信の問題は
>>362で解決済みなんだし。
初心者相手にいちゃもんつけたらダメだぜ。
> ・ <input type="submit"> と onSubmit の組み合わせは,
> 先に submit された後で処理が行われる可能性がある.
そんな可能性はないので、騙されないように。
>>381 説明不足だったかもしれないけど,
JavaScript でのチェックをやる以上は on であるのが前提.
" 相手の環境を選ばないサイト作り " と言うのなら js は使えないことになるはず.
要するに望むものが矛盾していると言いたかった訳.
"どっちなんだ ? " と...
>2ちゃんねるで「書きこみ&クッキー確認」の画面を出すみたいなものだからね
これには,あえて反論しなかった.
でも,考えて欲しい.
confirm なり alert などのダイアログが出るとクリックする事を強要される.
2ch の cookie はそれが何らかの理由によって存在しないと判断された時のみに出る.
毎回クリックを強制するようなものと同列に比べるのはおかしいと思いますが.
>>383 >" 相手の環境を選ばないサイト作り " と言うのなら js は使えないことになるはず.
JavaScriptオンの時は附加機能が働くってだけのこと。
基本機能である書き込み→送信はNo Scriptでも機能可能でなければならぬ。
CSS未対応ブラウザでもちゃんと見られるHTMLを書くのと一緒。それ位、わかってね。
>毎回クリックを強制するようなものと同列に比べるのはおかしいと思いますが.
これは好みの差もある。しかし、プレヴュー画面を出して
書き込み内容を確認させる掲示板は珍しくないのだから、許容範囲では。
JavaScriptっつったらあくまで利便性だろ
nullは巣に帰れ。
JavaScriptなんて飾りです。……
>>384 説明不足を反省.
議論しにきているのではないので,この話はなかった事に.
はい、じゃぁパンツ脱いでみようか
説明不足ってよりも、JavaScriptに依存したページを作る
>>376の思考法に問題が……
>>390 うちでは 100% 依存であります.
どの道,閑古鳥も寄り付かない状態なので,個人的実験場以外の何ものでも...
ちなみにウチの掲示板では条件に会わない時には
alert を出しまくるようにしています.
(ほとんど嫌がらせ... 誰も寄り付かないのはこのせいかも...)
素顏に自信が無いと厚化粧になるんだよね。
>>391 男は黙って素のHTMLで勝負。
>>392 そろそろ巣に帰ろうと思ってたのに...
煽っていただくと,つい長居してしまいますよ〜.
でも,一言いわせてくで !
js は機能性向上の目的のみに限定使用しています.
装飾目的では一切 js 使ってません.
(この判断は僕が行っているので他人様が何と言おうと知るものか !)
で、JavaScriptオフだと本来の機能すら動作しなくなる、と。アホクサ。
>>393
>(この判断は僕が行っているので他人様が何と言おうと知るものか !)
他人の立場に立てない者が機能性だぁ?
>>394-393 なんだか呼び止められているような気が...
(相手してあげると " かまってちゃん " と言われるしぃ〜)
とりあえず,ばいばい.
二度と来ないでいいよ。
window.close()の時に出る、確認ダイアログのメッセージを
独自なものに変えたいんです
可能ですか?
400
401 Unauthorized
alert('オリジナルメッセージ');
if(document.all){
window.opener=true;
}
window.close();
ってやればできんことは無いけど
将来的にバグフィックスされるかもね。
403 :
Name_Not_Found:04/01/09 23:31 ID:adwRI/kp
割り算で整数の余りを出すにはどんな関数がありますでしょうか?
例:3/2の結果は余り1みたいに
l
>>403 3 % 2
つーかこれくらいは
ググればでてくるだろ。
406 :
Name_Not_Found:04/01/09 23:52 ID:Z6IlhBJ8
教えてください。
ページ全体ではなく、
特定の範囲だけ右クリックを使えないように
するにはどうしたらよいでしょうか?
407 :
406:04/01/09 23:54 ID:Z6IlhBJ8
追記
NN4.*対応にしたいです。
このスレでは右クリ禁止とかは(たとえ部分範囲であろうとも)
回答されないでしょう。ちゃんちゃん。
>>1 読んでね。
おまえらちっと教えろ
このスレのまとめサイトはどこだ?
410 :
403:04/01/10 07:14 ID:6C4cn5Nl
412 :
406:04/01/10 10:35 ID:PvPPFCVA
私も右クリック禁止は嫌いなんですが、
どうしても、必要なんです。
右クリックじゃなくても良いのですが、
textboxがあり、値を誘導はできても、
ユーザーに入力してもらいたくないところがあって、
onfocusイベントでthis.blur()するようにしてるのですが、
テキストボックス上で右クリックしコピペは出来てしまいます。
これをなんとか回避したいのです。
NN4.*対応なのでdisalbedもreadonlyも使えません。
入力項目じゃないのにtextbox使うな、というのもなしで、
何か良いお知恵をお借りできませんか?
>>412 右クリック以外で実装できそうな気が。
onChangeとか使えないのかな?
>>412-413 まずそれ(onchange)が考えられるよね。あと上に透明なdivをかぶせて
触れなくするというのはどうかな?
文章中の「」の中身だけを取り出し、それぞれの登場回数も調べているのですが
とりあえず期待通りの値は取得できていますが、自分でも何か変だなと思う処理過程なので
もっと効率良い方法はありますでしょうか?
var syori_data = ""; // 処理後のデータ
var re1 = new RegExp( "「(.+?)」","g" );
var re2 = new RegExp();
var data = new Array(); // 「」の中身だけを格納する配列(または<b>と</b>などに変更なども)
var count = new Number(); // 登場回数のカウント用
var kakkoDataArray = Bunsyou.match( re1 ); // Bunsyou が対象の文字列
var str = kakkoDataArray.join("\t"); // 配列をタブで結合
for (i=0; i<kakkoDataArray.length; i++)
{
data[i] = kakkoDataArray[i].replace( re1 , "$1"); // 不要部分を削除
re2.compile( "「" +data[i]+ "」" ); // 正規表現をコンパイル
while ( str.match( re2 ) ) { str = str.replace( re2, "" ); count++; } // マッチしたら削除してカウントUP
if ( count ) { syori_data += count +"\t"+ data1[i] +"\n"; count=0; }
}
alert( syori_data );
ちょっと間違えました。
var count = new Number(0);
data1[i] は data[i] でした
>>415 俺だったらこうかな。
var re1=RegExp( "「(.+?)」", "g" ), data=new Object(), result=Array(), m;
while ( m = re1.exec(Bunsyou) )
if ( !data[m[1]] ) data[m[1]]=1; else data[m[1]]++;
for ( var i in data ) result.push( data[i] + '\t' + i );
alert( result.join('\n') );
>>417 さん、レスありがとうございます。
動作確認しました、凄いです。
もう何がどうなってる処理なのか理解できない部分が多いので、調べながらコードを読んでいますが、
下の while の中が比較じゃないとこや、for( in ) で配列の数だけ処理できるとこが勉強になりました。
while ( m = re1.exec(Bunsyou) ) {
if ( !data[m[1]] ) data[m[1]]=1; else data[m[1]]++;
}
ただ上の if の処理が全く理解できませんでした (´・ω・`)
>>418 要は、Bunsyou = '「あ」「あ」「う」「あ」「い」「あ」「う」'; だったときに
こういうデータを作ろうとしたワケ。↓
data['あ']=4
data['い']=1
data['う']=2
OS WinXP SP2ですが、外部JavaScriptファイルで
document.body.setAttribute( "onload","foo1();" );
document.body.setAttribute( "onresize","foo1();" );
と書いた所、最初のonloadの方の追加は上手くいくのですが
次のonresizeのの追加がIE6では上手くいきません
onresize自体は、規格外の機能なのは分かっていますが
MozFi0.7とOpera7.23では上手く動いてくれているので、出来れば(on…)の様な要素は、外部ファイルで追加するように作りたいのですが
何方か良い回避方法ご存じないでしょうか?
re1.exec(Bunsyou) は色々検索して分かってきました。
match と違い、正規表現内の n個目の (...) の部分が m[n] に入るんですね。
var kakkoDataArray = Bunsyou.match( re1 ); // でマッチ部分全てを配列に入れ
data[i] = kakkoDataArray[i].replace( re1 , "$1"); // で不要部分を削除
としてたのがアホらしいですね (´・ω・`)
var data = new Object();
Array ではなく Object であるのも分からないのですが
処理後にできた形をみると、連想配列になっているのですかね?
>>420 window.onresize=foo1; でいいじゃん。
>>421 > match と違い、正規表現内の n個目の (...) の部分が m[n] に入るんですね。
match でもグローバルマッチでなければそういう挙動になるよ。
> 連想配列になっているのですかね?
JavaScriptでは、連想配列ってオブジェクトと同じものだから。
>>422 さん、色々とご教示ありがとうございました。
424 :
420:04/01/10 16:58 ID:???
>422
…動きましたね
初心者ボケすいません
>>419 出遅れたけど集計時にループ使わない版。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function f() {
var tbl = new Object(), res = new Array();
document.forms.f0.elements.i0.value.replace(/「(.+?)」/g,
function(s, t) { if(!tbl[t]) tbl[t] = 1; else ++tbl[t]; return ''; });
for(var i in tbl) res.push(tbl[i] + '\t' + i);
alert(res.join('\n'));
}
</script>
</head><body>
<form name="f0" action="#"><p><input type="text" size="60"name="i0">
<input type="button" value="Ex" onclick="f()"></p></form>
</body></html>
426 :
Name_Not_Found:04/01/10 20:45 ID:gBBpMs2p
すみません。質問です。
マピオンの郵便番号検索のように
テキストフォームに入力した内容に応じて飛び先を変えるページを
JavaScriptで作りたいのですが可能でしょうか?
よろしくお願いします。
>>426 簡単なのならできるけど、
大掛かりなのはちょっと無理があったり非現実的だったりするかも。
>>426 できると思います.
" テキストフォームに入力した内容 " にもよりますけどね.
ところで,不思議な事があります.
js を読み書きできる人は質問する前に script を書き始めているはず...
そこで行き詰まった時に他人の意見を求める事になるのよん.
あなたは,どの程度 js を理解しているのかしらん ?
429 :
426:04/01/10 23:17 ID:gBBpMs2p
ご回答ありがとうございます。
JSは0から書いたことはほとんどありません。
目的のサンプルなどをネットで検索して
応急処置的に理解して書くことがほとんどですが、
このテキストフォームからのリンクのものが見つからなかったので
質問させていただきました。
ですので、できればすごく簡単なサンプルでいいので
教えていただけると大変助かります。
スクリプトが長くなるようなら書いてもらうのは申し訳ないので
ヒントだけでも教えていただきたいです。
430 :
426:04/01/10 23:19 ID:gBBpMs2p
書き忘れてしまいましたが、
" テキストフォームに入力した内容 "は単なる半角数字です。
よろしくお願いします。
分かんないならどこの処理が分かんないか書いてくれ。
全部わかんないってのはナシな。
・テキストフォームに入力した内容を取得する→変数に文字列を格納
・郵便番号を引数にし、リンクで飛ぶ先のURL文字列を返す関数を作成。(基本的にif文分岐)
・okボタンを押したとき、関数を実行し、返り値のURLをlocation.hrefにセット。
だいたいこんな感じでやればいいと思うんだが。
432 :
426:04/01/11 00:27 ID:Yxj9IIIO
>>431 ありがとうございます。理解できました。
自分で0から書いたことがないので
基本設計を考えるのを放棄するくせがついてしまったようです。いかんいかん。
そこらへん勉強しなおします。
433 :
Name_Not_Found:04/01/11 04:55 ID:mivgSAET
画像にあったサイズにプラウザの大きさを変更していきたいのですが、
javascriptの記述方法を伝授してくだされ
100×200で120×240のウインドウを開き、200×300では240×360‥‥‥といった具合であります
435 :
Name_Not_Found:04/01/11 23:05 ID:GUCO0m2D
function preview(title_en,contentsno) {
alert(document.f.★.value);
}
<form name="f" method="post" action="index.cgi">
<textarea name="contents_1">あいうえお</textarea>
<input type="button" name="button" value="プレビュー"
OnClick = "javascript:preview('hoge',1)">
<textarea name="contents_2">かきくけこ</textarea>
<input type="button" name="button" value="プレビュー"
OnClick = "javascript:preview('fuge',2)">
<textarea name="contents_3">さしすせそ</textarea>
<input type="button" name="button" value="プレビュー"
OnClick = "javascript:preview('bar',3)">
</form>
というコードで、
たとえば2番目のボタンを押したときに、2番目のtextareaの内容を取得するには、
どうすればいいのでしょう?
(つまり、★の部分を「contents_第2引数」という文字列にしたいのですが・・・
function preview(title_en,contentsno) {
tmpStr = "contents_" + contentsno;
alert(document.f.tmpStr.value);
}
などとやってみたものの、だめでした。どなたか教えていただければ幸いです。
>>435 激しく瀕出かつガイシュツだけど、JavaScriptでは「x.p」と「x['p']」
は同じもの。従って「document.forms.f.elements['contents_' + contentsno].value」
とすればよいでしょ。ちなみにformsとかelementsを略すのは嫌いなので勝手に
入れました。取りたければ勝手に取ってください。
>>435 nameじゃなくてidをつけて
getElementByIdとかdocumentallとか使うのがベスト。
>JavaScriptでは「x.p」と「x['p']」は同じもの。
2つのアクセス方法があるというだけで、同じものではない。
439 :
435:04/01/12 00:36 ID:???
function ireru(){
document.aiueo.test.value = "あ";
}
を
<FORM name="aiuro"><INPUT name="test" size="8" value="">
<INPUT type="button" value="入れる" onclick="ireru()"><form>
なら大丈夫だけどnameが数字(一文字)だとキチンと動作しないのは
皆ご存知ですが、けど、name=1にした状態でなんとかしていれたい。
でも代入しようとしても数字一文字だから効かないし・・いい方法ないですか
>>440 素直にnameを変更した方が早いと思われ。
442 :
435:04/01/12 01:17 ID:???
たびたびすみません。いただいたヘルプで、
<input type="button">でフォームをsubmitするスクリプトを書いたものの、
submitメソッドしようとする行で、
「オブジェクトでサポートされていないプロパティまたはメソッドです。」
と怒られてしまいます。
さんざんぐぐったりリファレンスサイトを見たのですが、全く理由がわかりません。
どなたか、ヒントやポインタだけでもいいので、教えていただけないでしょうか?
function preview(title_en,contentsno,filename) {
f = window.document.forms["textform"];
f.preview_title_en.value = title_en;
f.preview_contents.value = f.elements['contents_' + contentsno].value;
alert(f.preview_contents.value);
f.action = filename;
f.target = title_en;
f.submit();
}
<form method="post" action="./text.cgi" name="textform">
<!--<↓プレビュー用>-->
<input type="hidden" name="preview_title_en">
<input type="hidden" name="preview_contents">
<input type="button" name="button" value="プレビュー"
OnClick = "javascript:preview('top',1,'index.cgi')">
<input type="submit" name="submit" value="全てを適用">
</form>
443 :
435:04/01/12 01:19 ID:???
444 :
413:04/01/12 01:40 ID:???
document.body.onload = foo1;
とするとbodyタグに onload="foo1();"
と追加される事になるのは分かるのですが、なんとか
onload="foo1( val1 );"
の様に因数を持たせてやりたいのですが、なんとかならないでしょうか?
setAttribute( "onload", "foo( val1 )" );
ではIEで何故か動いてくれませんので
>>444 onload = function(){ foo(val1); };
これでどうか。
そして「ひきすう」と読むとなおいい。
446 :
444:04/01/12 02:14 ID:???
…解決いたしました、ありがとうございます
>そして「ひきすう」と読むとなおいい。
"つい"でも出てしまうのは愚か者ですよね
スイマセン逝ってきます
447 :
442:04/01/12 02:44 ID:???
>>447 なんか知らんが
<input type="submit" name="submit" value="全てを適用">
のname属性をなくしたらうまく動いた。誰か解説しちくれ。
あと
OnClick = "javascript:preview('top',1,'index.cgi')">
↓
OnClick = "preview('top',1,'index.cgi')">
なんで、一応。
449 :
442:04/01/12 03:55 ID:???
>>448 まじですかー。うち、それやったけど、動かない。。。
ちなみに、ネスケだとf.submitなんて関数は存在しないとおこられてしまいますた。。。
>OnClick = "javascript:preview('top',1,'index.cgi')">
>↓
>OnClick = "preview('top',1,'index.cgi')">
>なんで、一応。
あ、らじゃです。
450 :
442:04/01/12 03:59 ID:???
>>448 あ、ごめんなさい。うごきました。
ネスケだとだめだけど。。。
>>448 f.submit.click();
すでにブラウザが使っているプロパティを上書きしてるから
>>438 ん?どう違うの?
ECMA-262 v3 11.2.1 Property Accessors
... The dot notation is explained by the following syntactic convention:
MemberExpression . Identifier
is identical in its behaviour to
MemberExpression [ <identifier-string> ]
and similary
CallExpression . Identifier
is identical in its behaviour to
CallExpression [ <identifier-string> ]
where <identifier-string> is a string literal containing the
same sequences of characters as the Identifier.
もしかして「構文が違う」とかいう突っ込み?
>>450 N4で動かないのは別の原因があるんじゃないの。本当にsubmitの
行でエラー出てる?
ちなみに多くのブラウザでは要素にname="X"を指定するとそのフォーム
オブジェクトにXというプロパティを書き込む。この場合submitという
プロパティを書き込むわけだけど、メソッドsubmit()も同じ名前のプロパティ
だからそれが上書きされてなくなってしまう。
自分はこういうトラブルを避けるためにname属性には「f0」だとか「i0」
だとか数字のついた名前を指定する習慣にしているけど。
dynamic htmlを使って文字の回転ってできますよね
で、一定時間文字を回転→一定時間回転停止→回転→…というのを無限にやりたいんです
function seq_init(){
seq("ActionSet1").At(0.000,"RotateAll()",-1,0.05);
seq("ActionSet1").Play();
}
↑ この部分を変えればいいんですかね?自分で弄ってたらブラウザがフリーズするものができてしまいました…
我々はseq()だのseq_init()だのいう関数は知らないんで
何とも回答しようがないわけだが。
456 :
Name_Not_Found:04/01/12 10:57 ID:JCKzM3jX
以下のようにして、
document.onmousemoveに登録したmouseMoveCatch(e)からpageX(e)を呼び出したのですが、
window.eventがnullなようでした。
どういった時にwindow.eventがnullになって、
どういった時に適切なオブジェクトが入るのでしょうか?
どのようにすれば、期待通りに動作するのでしょうか?
OS: Windows XP
IE: 6.0.2800.1106
です。
function pageX(e){
if(IE){
return window.event.clientX + document.body.scrollLeft;
}else if(OP){
return window.event.clientX;
}else{//GK
return e.clientX + window.pageXOffset;
}
}
function mouseMoveCatch(e){
cursorX = pageX(e);
cursorY = pageY(e);
}
>>454 function seq_init(){
seq("ActionSet1").At(0.000,"RotateAll(),setTimeout(seq_init,10000)",100,0.05);
seq("ActionSet1").Play();
}
>>456 どうやってハンドラつけてるのか書かれてないんだけど、そっち側が
あやしいような気がする。過去ログから持ってきて手直しした例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var d0, d1;
function init() {
if(window.captureEvents) {
window.captureEvents(Event.MOUSEMOVE);
window.onmousemove = function(e) { move1(e.pageX, e.pageY); };
} else {
document.onmousemove = function() { move1(event.clientX, event.clientY); };
}
}
function move1(x, y) { window.status = x + ',' + y; }
</script>
</head><body onload="init()">
</body></html>
459 :
Name_Not_Found:04/01/12 14:17 ID:JCKzM3jX
458さんどうも。
window.eventは実際現在作っているのが正常に動くかわかりませんが、
極小さいテストで、正常に動くパターンがわかったような???感じです。
現在は以下のようなコードで動かすと、
intervalFunc()は1度正常に最後まで動くのですが、
2度目が最初から正常に動かずこのようなエラーが出ます。
setTimeout、setIntervalには特殊なルールがあるのでしょうか?
ライン:1
文字:1
エラー:オブジェクトを指定してください。
コード:0
var shootingStar;
var timeout;
function initialize(){
shootingStar = new ShootingStar();
intervalFunc();
}
function intervalFunc(){
shootingStar.shooting();
timeout = setTimeout("intervalFunc();", 1);
}
>>459 その「ライン1文字1」というのはsetTimeoutが文字列を評価した時に
起きてるようだねえ。それだとエラー原因が分かりにくいんで、
あと1ms間隔というのはちょっときついと思うので
「timeout = setTimeout(intervalFunc, 20);」
としてもっかい動かしてみて。
461 :
Name_Not_Found:04/01/12 15:25 ID:tgIMP5Fi
parent.document.referrerを使ってリファラ取ってるんですが、ドメインサービスの
フレーム転送をやるとこれを読み込んだときにエラーが出てしまいます。
どうしてもフレーム転送したいのですが、どうかすれば解決できますか?
462 :
Name_Not_Found:04/01/12 16:02 ID:JCKzM3jX
460さんどうも。
3000くらいにまでしてみましたが、だめなようでした。
いままで、クッキー関連でしかJavaScriptは書いたことがなかったのですが、
動くものを作ろうとすると、途端に難しくなるのですね。
今回初めてJavaでオブジェクト指向で書いてみたこともあって、余計に挙動が不安でした。
今の俺には難しすぎたようです。
書き掛けのコードをアップさせていただきましたので、
腕に覚えがある方がいらっしゃいましたら、完成させてください。
ttp://musyoku.com/upbbs/data/shootingstar.txt なお、アップしたページは検索してたまたまみつけました。
あしからず。
463 :
462:04/01/12 16:05 ID:???
JavaじゃなくてJavaScriptでした。
>>461 別ドメインになったらセキュリティ制約によりアクセスできなくなって
当然。回避する方法は「各ユーザがブラウザのセキュリティを自らスカ
スカにする」以外には絶対にない(あったらヤバい)。
>>462 3000なんてしなくていいから、setTimeoutに文字列を渡す代わりに
関数オブジェクトを渡してみて。
465 :
Name_Not_Found:04/01/12 18:55 ID:gW0adYRF
setTimeoutの場合、すべて文字列として処理されるみたいだから、
関数オブジェクト渡して出来るのかな?
グローバルの変数を作って、それを書くしかないと思うよ。
>>465 関数オブジェクト渡しできるよ。ちゃんとリファレンス見なよ。
グローバル変数使うとバグ出やすいからできるだけ関数渡しを
使うのが吉。NN3.xとか超古いブラウザが対象でない限りはね。
468 :
ハル:04/01/12 22:02 ID:rMK/e5e7
教えてください!
JavaScriptでYAHOOのTOPページみたいに、
アクセスごとに内容の一部分を変更することって出来ますか?
あれってどんな仕組みなのでしょうか?
var a = new Array(3);
a[0] = "内容1";
a[1] = "内容2";
a[2] = "内容3";
document.write(a[Math.floor(Math.random()*a.length)]);
>465>467
IEだと
5.5以降でポインタ渡し可能です。(MSのマニュアルではポインタと読んでるので。)
5.0は中途半端に対応(5.0では使わないほうが吉)。4.0は文字列のみ。
471 :
448:04/01/12 23:42 ID:???
472 :
専用窓:04/01/13 00:23 ID:NNb8a8oV
473 :
Name_Not_Found:04/01/13 01:04 ID:y8soSeiV
474 :
専用窓:04/01/13 01:29 ID:YFq5VB9L
分からない。
476 :
Name_Not_Found:04/01/13 02:42 ID:y8soSeiV
>>474 <html>
<title>472</title>
<script><!--
var veryCommonWords = [ "a", "an", "and", "are", "as", "at", "by", "com", "de",
"for", "from", "i", "in", "is", "it", "la", "of", "on", "or", "the", "this",
"that", "to", "with" ];
var vcw = new Object();
for (var i = 0; i < veryCommonWords.length; i++)
vcw[veryCommonWords[i]] = true;
var input = window.prompt("検索キーワードを入力してください。", "");
var a = input.split(/\s+/);
for (var i = 0; i < a.length; i++) {
var t = a[i].split(/\b/);
t[0] = "+" + t[0];
for (var j = 1; j < t.length; j++)
if (t[j].toLowerCase() in vcw)
t[j] = "+" + t[j];
a[i] = encodeURIComponent('"' + t.join("") + '"');
}
var result = "
http://www.google.co.jp/search?hl=ja&lr=&ie=UTF-8&oe=UTF-8&sa=G&q="
+ a.join("+");
location.href = result;
//--></script>
</head>
<body></body>
</html>
veryCommonWordsは他にも who とかあるでしょう。
478 :
Name_Not_Found:04/01/13 03:10 ID:uovG1CEP
質問させてください。
ニフティのサーバでページ作成中です。
indexにiFrameを使ってページを切り替えています。
各ページが読み込まれたらindexの page_title.gif を入れ替えているのですが、
CGIのページだけ入れ替えが出来ません。
以下javascriptのソースです。
window.top.document.images["pagetitle"].src = './images/about.gif';
ディレクトリ構成は
HOME - / homepgae / index.html
/ cgi-bin / bbs / bbs.cgi
こんな感じ。
ご教授よろしくお願いします。
480 :
478:04/01/13 03:30 ID:???
>>479 絶対パスでやってみましたが、ダメでした・・・
481 :
専用窓:04/01/13 03:41 ID:YFq5VB9L
>>476 Name_Not_Foundさん ありがとうございます。
私にはさっぱり分かりませんが、ちゃんと使えます。すばらしいです。
ただ贅沢を言えばpromptではなく、ふつうの窓だとありがたいのですが、
やはり不可能みたいですね。こんなに早くいただけるとは思っていませんでした。
本当にありがとうございました。
画像がCGIサーバにあるとか
483 :
480:04/01/13 03:47 ID:???
>>482 いえ、homepage/images/にあります。
>>478 そのスクリプトがフレーム内のページから呼び出されてるなら
サーバが違うのが原因だろね。セキュリティにふぃkっかかり
485 :
483:04/01/13 04:09 ID:???
>>484 >セキュリティにふぃkっかかり
よくわからないんですけど(w
無理ってことですか?
486 :
483:04/01/13 04:10 ID:???
書き忘れ。
フレーム内のページから呼び出されてます。
>>485 異なるサーバ間ではページ内容の動的な書き換えはできない。
IEならエラーが出るはずだが。黄色の三角の奴
488 :
485:04/01/13 04:21 ID:???
>>478 へぇ、勉強になりました。
ノートン先生を解除したらエラー出るようになりますた<IE
てことは、メニューのonClickの場合は大丈夫そうですね。
ありがとうございました。
489 :
485:04/01/13 04:28 ID:???
>>481 こういうことですか?
<html><head><title>472</title></head>
<script><!--
var veryCommonWords = [ "a", "an", "and", "are", "as", "at", "be", "by", "com",
"de", "en", "for", "from", "how", "i", "in", "is", "it", "la", "of", "on",
"or", "the", "this", "that", "to", "who", "what", "when", "where", "which",
"will", "with" ];
var vcw = new Object();
for (var i = 0; i < veryCommonWords.length; i++)
vcw[veryCommonWords[i]] = true;
function googleSearch() {
var a = document.f.q.value.split(/[\s ]+/);
for (var i = 0; i < a.length; i++) {
var t = a[i].split(/\b/);
t[0] = "+" + t[0];
for (var j = 1; j < t.length; j++)
if (t[j].toLowerCase() in vcw)
t[j] = "+" + t[j];
a[i] = encodeURIComponent('"' + t.join("") + '"');
}
location.href = "
http://www.google.co.jp/search?hl=ja&lr=&ie=UTF-8&oe=UTF-8&sa=G&q="
+ a.join("+");
}
//--></script>
</head>
<body onload="document.google.q.focus();">
<form name="f" action="javascript:googleSearch();">
<input type="text" name="q" size="31" maxlength="255" value="">
<input type="submit" value="Google 検索"></form>
</body></html>
491 :
490:04/01/13 11:49 ID:???
<body の行が間違ってた。
……
<body onload="document.f.q.focus();">
……
別ウィンドウを開くJavaScriptを使ってるのですが、
<!--
function newWin(){
window.open("hage.html","hage","status=0,width=200,height=300")}
-->
〜〜
<A HREF="javascript:newWin()">リンク</A>
という風なものです。
これだとリンクが増えるたびに<!-- -->の部分を増やして行かなくてはいけないようですが
リンクが相当な数になるとコピペしてもやはりめんどくさいですし、
ソースが長くなるのも嫌なものです。
もっと簡素にできる方法ないものでしょうか?
>>492 その関数newWin()を直して、パラメタで開くURI(と窓の名前も?)を
渡すようにしたら。もしもこの説明で分からないならここで聞くん
じゃなくて勉強したら(
>>1-10あたりに勉強用サイトもあるんで)。
494 :
Name_Not_Found:04/01/13 15:56 ID:9t1MtBrm
配列に添え字を指定して値を挿入したいのですが可能ですか。
挿入したら、うしろの値はそのままずれたいです。
495 :
Name_Not_Found:04/01/13 16:03 ID:9t1MtBrm
hoge[2] = "aaa";
これだと前の値が上書きされちゃうので塩梅がよくないです。
497 :
Name_Not_Found:04/01/13 16:35 ID:9t1MtBrm
これって前の値が上書きされないですか?
499 :
Name_Not_Found:04/01/13 16:47 ID:Iv72/dVx
>>497 var a = [ "miffy", "boris", "barbara", "poppy", "snuffy" ];
alert(a);
a.splice(3, 0, "alice");
alert(a);
// のように使う。
あ〜あ、そんな裏技があったんだー。どうも。
501 :
専用窓:04/01/13 19:28 ID:oYmjzWof
>>490-491 Name_Not_Foundさん まさにこれです。完璧です。これで他のフォームと一緒にできます。
重ねて御礼申し上げます。
502 :
Name_Not_Found:04/01/13 19:38 ID:P7DZ+zi0
誘導されますた。
フォームに
<input type="hidden" name="hoge" value="1">
<input type="hidden" name="hoge" value="2">
とあったら
form.hoge[0].valueでアクセスできますが
<input type="hidden" name="hoge" value="1">
のように一つしかない場合は
form.hoge.valueでアクセスしなければいけないのでしょうか?
できれば1つのときも2つ以上のときも同じコードでアクセスしたいのですが。
よろしくお願いします。
503 :
Name_Not_Found:04/01/13 19:53 ID:Iv72/dVx
>>502 こういうのはどうでしょう
(0 in form.hoge ? form.hoge[0] : form.hoge).value
504 :
専用窓:04/01/13 20:08 ID:oYmjzWof
>>490-491 ↑なんですが他のフォームを付け足して作ってみたのですが、
<BASE TARGET="_blank">とあるとエラーになり、削除して個別にTARGET="_blank"にしたんですが、
action="javascript:googleSearch();"の部分のフォームはエラーになります。別窓で開くにはlocation.hrefをどう変えればいいのですか?
勉強不足で申し訳ありません。Googleってみましたがすぐ出てきません。度々ですがまたお願いします。
505 :
Name_Not_Found:04/01/13 20:18 ID:Iv72/dVx
506 :
専用窓:04/01/13 20:38 ID:oYmjzWof
早々の回答ありがとうございます。以前location.hrefをフレームの制御で覚えていたのですが、少し違ったようですね。
location.href TARGET="_blank"でグ愚ってもなかなか出てきませんでした。
507 :
Name_Not_Found:04/01/13 20:55 ID:ZolozX6g
<head> の子の <script type="text/javascript"> の中で、
window.onload = new function(){ document.getElementsByTagName("h1")[0] }
もしくは
document.onload (ry
とすると、body が読み込み終わる前に実行されてしまって、h1 等の要素も
当然みつからないのですが、
この場合は、<body onLoad="func();"> とするしかないのでしょうか。
"new"を窓から投げ捨てろ
509 :
507:04/01/13 21:01 ID:???
捨てました、が。
ページが表示するときに、ウィンドウをフルスクリーンにしたいんですが
どうすればいいんでしょうか(´Д`;)
>>507 <body onload=
とするのがいいと思います。
512 :
507:04/01/13 21:13 ID:???
スマソ。落ちますた。。。
捨てました、が。
状況はかわらないです。。。
やりたいことは、もうすでに出来上がっているサイトがあって、すべての
ページのh1要素の中身をそのままtitle要素に継ぎ足したい、
というものです。
513 :
507:04/01/13 21:21 ID:???
×title要素に継ぎ足したい
○title要素の中身に継ぎ足したい
onload = function(){ … }
>>507 こんな感じでどうでしょう。
〜
<script type="text/javascript><!--
function func() {
document.title += document.getElementsByTagName("h1")[0].firstChild.nodeValue;
}
//--></script>
</head>
<body onload="func();">
〜
516 :
507:04/01/13 21:47 ID:???
>>515 どうもありがとう。ですが、漏れがいま問題としているのは
<body onload="func();">
の方で、現在化道中の結構なページ数のあるサイトがあって、
title がみーんな同じなので、さくっとなんとかできないかな、と
いうことなんです。スマソです。
517 :
507:04/01/13 21:49 ID:???
あ、すべてのページで読まれている外部JavaScriptファイルが
あるので、それに書き足しでなんとかならんかな、と。
どうもありがとう。
いろいろがんがってみます。
518 :
515:04/01/13 21:51 ID:???
>>516 HTMLファイルの<title></title>の中身を自動的に書き換える
スクリプトを作ったほうがいいかも。
>>515は新し目のブラウザ以外ではエラーになりそうですし。
>>507 onload = function(){ document.title += document.getElementsByTagName("h1")[0].firstChild.nodeValue }
これでいける
520 :
478:04/01/13 22:32 ID:???
昨日質問させてもらった
>>478です。
>>487でご指摘を受けて、メニューのonClickでTitleを入れ替えていたのですが、
この方法だとブラウザの戻るボタンなどでページ移動されると、画像そのままっていう罠・・・
回避策何かありませんでしょうか?
以下概要です。
indexにiFrameがあり、メニューを選ぶとiFrameのページが替わる。
それと同時にindexに配置されてるページタイトル画像を入れ替えたい。
CGIが異なるサーバのためページ内容の動的な書き換えはできない。
お願いします。
521 :
478:04/01/13 22:34 ID:uovG1CEP
すいません。ageます。
>>520 そうだねえ、CGIのiframeの切り替えと並行して切り替える
隠しフレームを用意しておき、その隠しフレーム内の
JavaScriptで定期的に外側ページの画像を置き換えるなんて
方法はどうかな。隠しフレーム側は同じサーバにできるから。
523 :
520:04/01/13 22:51 ID:???
>>522 えーと、
メニュークリック時にiFrameと隠しフレームのページを切り替えて、
画像入れ替えは隠しフレーム側から。
って感じですか?
定期的に、っていう意味がちょっとわからないのですが・・・
>>523 だからクリックみたいなタイミングなら取れるけど
戻るボタンで切り替えられたときは取れないでしょ?
あれ?それもonloadで取れるんだっけ?もしそうなら
定期的にチェックする必要はないでつね。
525 :
523:04/01/13 23:08 ID:???
>>524 うん、そですね。
iFrameのonloadで隠しフレーム入れ替え、やってみます。
ありがとうございました。
526 :
Name_Not_Found:04/01/14 00:53 ID:cPPx4xU1
質問します。このスクリプトの結果が、WinIEとSafariで異なるので困っています。
どこに原因があるのかどなたかおしえていただけませんか。
now = new Date();
today = new Date(now.getYear(), now.getMonth(), now.getDate());
bd = new Date(2004, 10-1, 10);
remain = (bd - today) / 86400000;
document.write("誕生日まであと");
document.write(remain);
document.write("日です。");
>>526 remain = (bd.valueOf() - today.valueOf()) / 86400000;
としたらうまくいくでしょうか?
528 :
Name_Not_Found:04/01/14 01:31 ID:jJ42xTCK
質問させてください。
window1のサブルーチンにwindow2から値を渡し、
渡した時点で即window1側で実行させるためにはどうすれば良いでしょう?
>>528 window1 と window2 の関係は?
530 :
528:04/01/14 01:46 ID:???
>>529 えーと、window1がメインフレーム、window2がメニューフレームです。
・・・関係ってこういう事でいいんだろうか。
じゃあまず、性別は?
532 :
530:04/01/14 01:50 ID:???
え・・・男です。
533 :
529:04/01/14 02:05 ID:???
>>530 > window1のサブルーチンにwindow2から値を渡し、
> 渡した時点で即window1側で実行させるためにはどうすれば良いでしょう?
値を渡して実行させるというより、window2からwindow1の関数を呼び出す時に一緒に値を渡す。
呼び出し方は parent.フレーム名.関数名(引数);
ただし違うドメイン名のページにアクセスしようとするとエラーでます。
とこういう回答でよいのかな
534 :
530:04/01/14 02:09 ID:???
>>533 ありがとうございました!
早速やってみまつ。
>>526 getYear()じゃなくgetFullYear()でしょ。ちゃんとリファレンスをチェックすれ。
でもそもそも、現在日時だったら何もせず
(new Date(2004, 10-1, 10).getTime() - new Date().getTime())/86400000
でいいんじゃないのかなあ。
教えてください。
フォームのフィールドに値をセットする場合
そのフィールドがあるかないかチェックしてから
行いたいのですが方法はありますか?
例えば
form1.kanjiname.value = "test";
としたばあいにkanjinameフィールドがなかった場合
エラーになってしまうので先にあるかないかチェックしたいのです。
よろしくお願いします。
538 :
Name_Not_Found:04/01/14 10:11 ID:nrlGAaG5
試したわけじゃないけど...
if(form1){
if(form1.kanjiname){
if(form1.kanjiname.value){
form1.kanjiname.value = "test";
}
}
}
だから、
if(form1 && form1.kanjiname && form1.kanjiname.value){
form1.kanjiname.value = "test";
}
&&だと、左が偽なら右は評価されないから。エラーにはならないと思われ。
539 :
Name_Not_Found:04/01/14 10:13 ID:3m3Kbm5X
new Option(hoge, hoge, true, false);
この trueとflaseは何を意味するのですか?
540 :
507:04/01/14 11:10 ID:???
>>519 のおっしゃる通りでうまくいきました。ありがとう。
で、他にもページがロードされた時点で実行したいモノがいくつかあり、
例えば、func1()、func2()、func3()、として、それらを配列に格納して、
var f_arr = new Array();
f_arr[f_arr.length] = func1;
f_arr[f_arr.length] = func2;
f_arr[f_arr.length] = func3;
まとめて実行しようとしたけどうまくいかず。
window.onload = function(){ for(var i=0 ; i<f_arr.length ; i++) f_arr[i](); }
window.onload ってどの時点で評価されるモノなんでしょうか。。。
541 :
Name_Not_Found:04/01/14 11:22 ID:3m3Kbm5X
javascript に exitってありますか?
エラーメッセージのあとに強制終了したいのですが。
>>540 どんな風にうまくいかないのか説明できる?
>>541 ブラウザ環境下では、
コード全体を try-catch で囲んで終了したいときに Error を投げればよろしい。
NN4とか古いブラウザでは onerror=function(){return true;}としておいて
未定義の関数呼ぶとかして無理矢理エラー発生させる(あまり誉められたやり方ではない)。
あとスクリプトの実行環境によるかと(例えば、WSHならQuitメソッドとか)。
>>540 なんだかよくわからんので、適当に参考にして
<script>
window.onload = function(){ for(var i=0;i<f_arr.length;i++) f_arr[i](); }
var f_arr = new Array();
f_arr[f_arr.length] = func1;
f_arr[f_arr.length] = function func2(){ alert(2) };
function func1() { alert(1) }
</script>
544 :
Name_Not_Found:04/01/14 12:12 ID:3m3Kbm5X
>>542 そのtry-catchというのはjavascriptのエラーの場合ですよね?
alaert("無効な値が入力されています");
のあとに強制終了したいのです。
>>544 throw 文使えば手動でエラーオブジェクトを投げられる。
547 :
507:04/01/14 12:38 ID:???
>>542-543 お世話んなります。
漏れがやろうとしているのが
>>512 で、onload で title に書き足す
のですが、書く内容を h1 要素の中身にしようと思うのです。で、
>>540 で配列うんぬん言っているのは、その他にロード時に
ブラウザを判別したりだとか、いくつかやることがあったからです。で、
>>519 で教えていただいた通りで動くことは動くのですが、コレを関数化して、
function func1(){
document.title += document.getElementsByTagName("h1")[0].firstChild.nodeValue;
}
f_aar[f_arr.length] = fumc1;
function func2(){
// ブラウザの判別とか
}
f_aar[f_arr.length] = fumc2;
window.onload = function(){ for(var i=0 ; i<f_arr.length ; i++) f_arr[i](); }
とかにすると、func1 の方で、document.getElementsByTagName("h1").length が 0 なのです。
で、window.onload っていつ評価されているのかな、と。さっきオライリの本借りてきて
見ているのですが、function func1() がまず評価されて、その評価済の func1 を window.onload で
評価するから、ですかね?
num = "111"
num = num.replace("1", "1");
numを111にしたいのですが、一個しか置換されません。
549 :
Name_Not_Found:04/01/14 12:46 ID:nrlGAaG5
num = num.replace(/1/g, "1");
>>547 > document.getElementsByTagName("h1").length が 0 なのです。
その現象が発生する環境は何?
そのコードの typo だけ修正して試してみたが
WinIE6, Moz1.5, Opera7.0 では再現できないんだが。
551 :
507:04/01/14 14:02 ID:???
>>550 スマソです。
>>547 のタイポとは違ったのですが、
f_arr = func1();
と書いていました。_| ̄|○
552 :
Name_Not_Found:04/01/14 20:13 ID:tJIR3uW9
htmlを起動するたびにテキストファイルを起動して起動ログを記録したいのですが、
うまい方法はないでしょうか?テキストファイルには先頭行に.LOG記述しておきます。
質問です。
<script language = "javascript">
<!--
function Mouse_Over(elem, clr)
{elem.style.backgroundColor = clr;
elem.children.tags('A')[0].style.color = "#ffffff";
elem.style.cursor = 'hand'}
function Mouse_Out(elem, clr)
{elem.style.backgroundColor = clr;
elem.children.tags('A')[0].style.color = "#EEEEEE";}
function Mouse_Up(path)
{location.href = path;}
function Mouse_Click(elem, clr)
{elem.style.backgroundColor = clr;
elem.children.tags('A')[0].style.color = "#ffffff";}
//-->
</script>
↑マウスが乗った時にセルの色を変えるJavaScriptですが、こやつを呼び出すのに
<td bgcolor=#ffffff onMouseDown="Mouse_Click(this, '#0099FF')"
onMouseUp="Mouse_Up('#')" onMouseover="Mouse_Over(this, '#0099FF')" onMouseout="Mouse_Out(this, '#ffffff')"></td>
こうしております。 thisとはこのタグが書いてあるページへのリンクです。
document write='タグ' か document write="タグ" のようにして外部jsファイルに埋め込みたいと思ってます。
そこで「"」を消して''で統一しようとしたものの、
onMouseUP="○○"の [”]これを消してしまうとエラーが返ってきてきます。
document write""内にいれてこのJavaScriptを正常に動かすにはどうしたらいいんでしょうか?
長レス&わかりにくい説明ですみません(´・ω・`)
555 :
Name_Not_Found:04/01/14 20:44 ID:tJIR3uW9
556 :
554:04/01/14 20:57 ID:???
あまりもの長レスで書き忘れてました。
OS:Win2000 現在HPビルダーにて動作確認中です。
\とか/とか
559 :
526:04/01/14 23:35 ID:cPPx4xU1
>>536 おっしゃるとおり、getYear()でした。
Safariは、1900との差を返していました。
560 :
Name_Not_Found:04/01/15 00:08 ID:jeYg4wll
input type="text"にstyle="display:none"を適用すると
IEではvalueを取得できるのに、ネスケの4.7ではなぜか取得できません。
これは仕様でしょうか?
どうにかしてネスケでdisplay:noneの適用したelementsの
valueを取得したいのですがどうしたらよいでしょうか?
どなたかわかる方教えてください。
561 :
Name_Not_Found:04/01/15 00:08 ID:GxaHU8qh
IE限定でいいのですが、
テキストエリアの、カーソルが点滅している位置に、ある文字列(関数の引数で渡す文字列)を挿入するには、
どうすればいいのでしょうか?
選択した文字列を、ある文字列で囲む方法なら、
なんとなくわかったのですが・・・
(↓formatColor("red")を呼び出すと、文字列を<font color="red"></font>が囲む)
function formatColor (v) {
if (!document.selection) return;
var str = document.selection.createRange().text;
if (!str) return;
document.selection.createRange().text = '<font color="' + v + '">' + str + '</font>';
}
どなたかおわかりのかた、教えていただければ幸いです。
なお、もしできればなのですが、textareaのnameを参照しないで実現できると、なおありがたいです。
よろしくお願いします。
562 :
554:04/01/15 00:12 ID:???
>>557 (`・ω・´)dクス!一回やってきます
>>560 type="hidden" はいかがですか。
564 :
554:04/01/15 00:16 ID:???
(´・ω・`) \とか/に変えてみても動作しなくなるのですが・・・
566 :
560:04/01/15 00:23 ID:jeYg4wll
>563
hidden以外の方法を探していて、
それでdisplay:noneに行き当たったんです。
申し訳ないですが、hidden以外で何か、
表示されないような工夫をしたいのですが。
>>566 type="hidden"ではなくdisplay:hiddenではどうかな。
display:noneは「なかったことに」なるが「display:
hidden」だと「あるけど見えない」になるはず。
568 :
javascriptr:04/01/15 00:41 ID:NXJ3O36R
小数点以下2桁目までを表示させたく式を立てたのですが
<SCRIPT LANGUAGE="JavaScript"><!--
var hige1 = 710;
var hage1 = 3670;
var hige2 = 780;
var hage2 = 3730;
var hoge1 = Math.floor(hige1/hage1*10000)/100;
var hoge2 = Math.floor(hige2/hage2*10000)/100;
var k1 = hoge1 - hoge2;
var k2 = Math.floor((hige1/hage1 - hige2/hage2)*10000)/100;
document.write("hoge1 = " + hoge1 + "<BR>");
document.write("hoge2 = " + hoge2 + "<BR>");
document.write("k1 = " + k1 + "<BR>");
document.write("k2 = " + k2 + "<BR>");
// ---></script>
結果はこうなってしまいます。
hoge1 = 19.34
hoge2 = 20.91
k1 = -1.5700000000000002
k2 = -1.57
k1 にはなぜ -1.5700000000000002 のような数値が入ってしまうのでしょうか…
>>567 そんなのないよ。
visibility : hidden;
の間違いと思われ。
571 :
Name_Not_Found:04/01/15 01:07 ID:j49p+UOr
>>579 「javascript 小数点」ってググッったらいっぱいでたよ。
0と1の世界は小数点が苦手なんだよ。詳しく解説してるページを昔みたが、
URL忘れた。
572 :
571:04/01/15 01:07 ID:j49p+UOr
>>570 スマソ、その通りですた。
>>568 background-position: の値を「0% 0%」から「99% 0%」まで
連続的に変化させたらどうだろうか。
574 :
561:04/01/15 01:25 ID:GxaHU8qh
>>574 いまIE手もとにないからやらない。MSのドキュメントでRangeオブジェクト
のところを読めばすぐできると思うよ。ちゃんと自分で調べなってば。
>>568 > 上のように背景をスクロースさせるにはどうしたら良いでしょうか?
スクロースってグーニーズに出てたやつだっけ?
植物を形作ってるやつだろ。
女性用下着じゃなかったっけ?
580 :
561:04/01/15 05:04 ID:???
581 :
560:04/01/15 06:49 ID:oxV3Ub9E
>567,570
ありがとうございます。
visibility : hiddenだと
テキストボックス丸見えなので、使えません・・・
>>581 それじゃあもう隠しフレーム作ってそこにフォームを
置くとか、フォームの上に別のdivを置いて見えなくするとか。
今2ちゃんねるが韓国から攻撃されているんですが
2ちゃんねるは大丈夫として、個人用サイトにも田代砲が撃たれているようなのです。
ttp://bb3000.wo.to/ ↑これが韓国側の田代砲サイトで
ttp://my.dreamwiz.com/kkss0735/bbt.html ↑田代砲本体部分です。
埋め込みフレームで攻撃側サイトを何度も表示するってわけなのですが
攻撃された側のHTMLにJavaScript組み込んで、これを無害化できないでしょうか?
「SiteURL」の変数を関係ないアドレスに変えてしまうとかだと
普通に表示する分には何も起こらないので理想的なのですが
それが可能かどうかもわかんない初心者なので、やりかたもさっぱりです。
誰か教えてください。
<html>
<body onLoad="seq_init()" bgcolor="#000000">
<object id="title" style="width:500;height:100;" CLASSID="clsid:369303c2-d7ac-11d0-89d5-00a0c90833e6">
<param name="Line0001" value="setFillColor(255,255,255)">
<param name="Line0002" value="setLineColor(120,120,255)">
<param name="Line0003" value="setFillStyle(1)">
<param name="Line0004" value="setLineStyle(0)">
<param name="Line0005" value="setFont('Arial',50,100)">
<param name="Line0006" value="Text('TEST',-50,20,0)">
</object>
<object id="seq" CLASSID="clsid:b0a6bae2-aaf0-11d0-a152-00a0c908db96">
</object>
<script language="JavaScript">
function RotateAll(){
title.Rotate(4,0,0);}
function seq_init(){
seq("ActionSet1").At(0.000,"RotateAll()",90,0.05);
seq("ActionSet1").Play();}
</script>
</body>
</html>
↑を実行すると、文字を1回転させることができます。
1回転→1秒停止→1回転→1秒停止…と無限に繰り返すようにしたいのですが、
どうしたら良いのでしょうか。以前は質問の仕方が悪かったようで…
>>569 JavaScriptでその手の計算は無理。
素直に文字列にして、「.」以下2文字まで取りだせ。
>>587 素直に toFixed(2) 使っとけ、ぢゃないの?
>>585 また出てきたか…
まぁ、今度は全部張ったようだから見てやるが。
んー、seq|init()だけで1回転させれるなら、1秒毎にseq_init()すれ。
setInterval()だっけ?調べなさいと。
590 :
587:04/01/15 09:25 ID:???
>>588 あ、素直にtoFixed()知らんかった。thx
591 :
585:04/01/15 09:36 ID:???
>>589 setIntervalを使ってもsetTimeoutを使っても、徐々に回転数が上がる(しかも1秒の停止時間が無い)
という現象が起きてしまいます。これを防止する方法はありませんか?
いくらググっても解決策らしきものが見つかりません…
593 :
javascriptr:04/01/15 10:07 ID:NXJ3O36R
スクロールの間違い
>>591 var i=0;
function RotateAll(){
title.Rotate(4,0,0);
i++;
if(i==90){
i=0;
setTimeiut(seq_init,1000);
}
}
function seq_init(){
seq("ActionSet1").Stop();
seq("ActionSet1").At(0.000,"RotateAll()",90,0.05);
seq("ActionSet1").Play();
}
596 :
585:04/01/15 11:55 ID:???
function seq_init(){
seq("ActionSet1").At(1.000,"RotateAll()",90,0.05);
seq("ActionSet1").Play();
setInterval("seq_init2()",5500);
}
function seq_init2(){
seq("ActionSet1").Stop();
seq("ActionSet1").Play();
}
で解決しました。
AtメソッドをsetInterval(もしくはsetTimeout)で複数回呼び出してしまったのが失敗の原因でした。
>>589、
>>592、
>>594各氏、ありがとうございました。
サッカロースって紛らわしいよね
598 :
Name_Not_Found:04/01/15 19:56 ID:poBK9KhZ
>>598 onChangeでclip_copy()を呼び出しているのを、
ボタンが押されるとclip_copy()を呼び出すようにする。
リンクが紫だったので、?って思ったら、初心者用スレの64でレスする前に
検索した時開いたページだった.... orz
600 :
Name_Not_Found:04/01/15 21:13 ID:poBK9KhZ
どうもです。あとそこの<option value=' '>の' '内で'を使うにはどうすれば
いいんでしょうか?
601 :
Name_Not_Found :04/01/15 21:50 ID:w0ghg9+/
チップヘルプを外部から読み込んで改行有で表示できるようにする為には、
どうしたらいいのでしょうか?教えて下さい。
外部からデータ読み込む方法って
jsかcsvかxmlなんだろうけど
txtをダイレクトに読み込む方法って
あるのだろうか?
>>602 テキストを普通にブラウザの窓か隠しフレームにロードして
DOMでアクセスできるよ。過去ログのどっかにあった。
/* 描画領域右上からの座標 */
function windowOffset() {
if( window.scrollX ) {
// Moziila
this.x = window.scrollX;
this.y = window.scrollY;
} else if( window.pageXOffset ) {
// Opera, NN4
this.x = window.pageXOffset;
this.y = window.pageYOffset;
} else if( document.documentElement && document.documentElement.scrollLeft ) {
// 以下 IE
this.x = document.documentElement.scrollLeft;
this.y = document.documentElement.scrollTop;
} else if(document.body && document.body.scrollLeft) {
this.x = document.body.scrollLeft;
this.y = document.body.scrollTop;
}
}
という構造体を作って使っているのですが
new windowOffset().x
とすると、IE6.01、Opera7.23では値が取り出せるのですが
MozillaFirebirdでは意図したとおりに動いてくれません
window.scrollXでスクロースしただけのpxを取り出すのは勘違いでしょうか?
607 :
605:04/01/16 12:25 ID:???
if( undefined != window.scrollX ){
……(以下省略
等if()の中にundefinedを付けていったところ、無事に動いてくれました…
Mozillaの場合でも
window.scrollX > スクロールしていない > 0を返す > 実行されない
が起こっていたようです。
あと、先ほど調べ直して見たところ、IE、Operaとも意図しない動作をしていました
重ね重ねスイマセン
608 :
Name_Not_Found:04/01/16 13:24 ID:J3VmXUox
javascriptに連想配列ってありますか?
>>608 googleで「javascript 連想配列」で検索
(キー:値)
イヌ:6歳
ネコ:5歳
トラ:7歳
だとして、こいつらを年齢順に並べ替えたいのです。
自分で考えてみて、一応その通りに動きますが、もっと簡単なやり方ないでしょうか。
※動物名は重複しません、値は重複します。
var nameArray = new Array("イヌ","ネコ","トラ"); // 動物名です
var yearArray = new Array("6","5","7"); // 動物の歳だとします、順番は動物名と対応しています。
var afterSort = new Array(); // ソート後の配列
var combi = new Object(); // 動物名と歳のコンビを組みます
combi['イヌ'] = "6";
combi['ネコ'] = "5";
combi['トラ'] = "7";
yearArray.sort(); // 歳を若い順にソートします
for(i=0;i<nameArray.length;i++){ // 動物名を展開します
var name = nameArray[i]; // 動物名を取得します
var yearNum = combi[name]; // combiに動物名(オブジェクト名)を与えて対応する歳を取得します
for(ii=0;ii<yearArray.length;ii++){ // 歳の配列を展開します
if(yearNum == yearArray[ii]){ // 「combiの歳」と「歳の配列の歳」が一致するか?
afterSort[ii] = name; // 一致したらその時の順番で新しい配列に要素を追加します
}
}
}
alert(afterSort);
611 :
554:04/01/16 14:23 ID:???
>>565 遅レスになりましたが、どうやらできそうな予感です(つД`)ありがとうございます
>>610 arr = [
{name:"イヌ",old:6},
{name:"ネコ",old:5},
{name:"トラ",old:7}
]
arr.sort(sortByOld);
function sortByOld(a,b){
return a.old==b.old?0:(a.old<b.old?-1:1)
}
>>612 そこは「arr.sort(function(a,b){return a.old-b.old;});」
>>600 文字参照でできないかな?

615 :
Name_Not_Found:04/01/16 15:05 ID:ToJ6Ttjh
>>612 すげぇ!
勉強になった。
こんな作り方もあるのか。
(通りすがりの者です)
616 :
Name_Not_Found:04/01/16 15:08 ID:ToJ6Ttjh
617 :
616:04/01/16 15:11 ID:ToJ6Ttjh
間違った
&#39; ※これを半角で書いたら
>>616になっちゃった。&のエスケープをちゃんとしてないんだな。2chは
>>612 arr = [
{name:"イヌ",old:6},
{name:"ネコ",old:5},
{name:"トラ",old:7}
]
この部分はなんていう技なんでしょうか。
あと何を参照すれば順番が変わったのかがわからないです。
object literal
array literal
621 :
610:04/01/16 16:03 ID:???
どどど、どっちですか?
622 :
Name_Not_Found:04/01/16 16:41 ID:nOK+bvc/
ウィンドウが閉じられた場合だけ、ポップアップを出したいのですが。
onunloadではページ移動した場合もポップアップが出てしまって
上手くいきません。
一部からは不可能であるとの意見もあるのですが、
やはり不可能なのでしょか
>>618 alert(arr[0].name)
alert(arr[1].name)
alert(arr[2].name)
>>622 <body onunload='open("pop.html")'>
<iframe src='main.html'>
</iframe>
</body>
コンテンツはiframeで開いたページ内
625 :
Name_Not_Found:04/01/16 17:09 ID:7PfZLzX3
すみません。質問なんですが
文字に触れたら画像を変えるっていうのはどうやってするのでしょうか?
例:文字「(・∀・)」に触れると画像Aが画像Bに変わるというもの。
↓でstrへの代入方法ってもっとスマートに出来ませんかね?
なんか + で繋いでいくのってダルイと言うかなんというか、、
var name = 'my name';
var str = 'ぼくの名前は' + name + "です\n";
627 :
Name_Not_Found:04/01/16 17:25 ID:ToJ6Ttjh
>>626 いろんなところで落ちてあるsprintfを使うとか。
sprintfという単語をはじめて聞きました! ってな場合は自分で調べて。
>>626-627 それもいいけど
var str = "ぼくの名前は%1です".replace(/%1/, name);
もちろん「%1」とかは中に現れないようなものを使う。沢山あってもいい。
var str = "私は%1を%2にあげました".replace(/%1/, x).replace(/%2/, y);
>>625 onmouseover
後は自分でどうぞ。
630 :
626:04/01/16 17:53 ID:???
>>628 おぉ、それスマートで美しいですね。
ありがとうございました。
631 :
Name_Not_Found:04/01/16 18:24 ID:zhB9vKNw
すいません、よろしければ教えてください。
JavaScriptで配列を使用する場合、どのぐらいの数というか容量を使用しても
平気なもんでしょう。パフォーマンス的に影響のでてくる地点を知りたいと
思っています。
現在WebDBを作成中でして、基本的にデータを検索して閲覧するだけの仕組み
です。サーバの負担を極力減らすため、可能なら、ユーザーが検索したデータを
一旦全部JavaScriptの配列に収めて、あとは再度検索を実行するまでは
JavaScriptを使いクライアント側で処理をすませてしまおうと考えています。
たとえば住所録レベルのデータベースで、データが何百件もある場合、
JavaScriptの配列として動作させても、それなりにさくさく動くもんなの
でしょうか?
クライアントが使用するPCは、ここ1、2年に購入したものを想定してます。
漠然とした質問で申し訳ありませんが、よろしくお願いします。
632 :
622:04/01/16 18:52 ID:nOK+bvc/
>>624 レスどうもです。
フレーム使用したり、状態監視用のサブウィンドウを
開くしかないんでしょうか?
通常のページのみでやる方法はないものかと探してました。
うーむ。これ以上考えるのは時間の無駄かなぁ。
>>631 そこまで条件がはっきりしているなら、実際に試してみれ。
>>631 例えば、このスレを全件表示にすると、スクリプト的には数千個のノードが生成されます。
そういう意味では、このスレに対するDOM操作が「さくさく」と感じられるのであれば
同等のデータ量ぐらいは扱えると考えられなくもないです。
個人的には、配列の大きさそのものよりは、配列に対して行う処理内容の方が
パフォーマンスに与える影響が大きいだろうと思います。
>>631 配列の個数よりも個々のデータ量が問題です。
for(a="aa";a.length<10000000;a=a+a+a);
637 :
631:04/01/16 19:45 ID:zhB9vKNw
レスありがとうございます。
>>633 やっぱ無茶なんでしょうかね・・・。
XMLなどのデータをJavaScriptでコントロールするという話を聞いたこと
があったので、可能なのかしらと思っていました。
>>364 まだデータが集まってなくて、コードの記述もこれからというところ
だったので、努力が報われるかどうかアドバイスいただけたらと思い
まして・・・。すいません甘えです。
>>635 配列に対してあまり複雑な処理をさせないようにすればうまくいく
可能性があるということですね。ありがとうございます。
現在でもDBに格納してあるマスタ情報をJavaScriptの配列に収めて
動的なプルダウンなどに使用しているのですが、結構使えると思って
ます。作り方次第というところなのでしょうか?
そもそもJavaを会得するとどういったことが出来るようになるのかを
教えていただけませんか?
639 :
Name_Not_Found:04/01/16 23:04 ID:ToJ6Ttjh
>>638 どういったことも出来ないよ。勉強しても意味無いよ。
だからあなたはもうここには来ないでね。
640 :
おいら:04/01/16 23:11 ID:???
誰かツッコめよナ
602なのだが
>>604で過去ログにあると教えてもらったけんだど
過去ログ見るのが面倒で自分でやろうとしたらエライ苦労した…
<iframe id="W" onload="PRE.innerText=W.document.body.innerText" style="display:none"></iframe>
<input id="INPUT" value="readme.txt">
<button onclick="W.location.replace(INPUT.value)">読込</button>
<pre id="PRE"></pre>
onloadの後じゃなきゃ読み込めないのがわからなかったために
DOMでルート要素のテキストノードを取得するにはどうすれば
いいのかあれこれ試行錯誤に無駄な時間を費やしてしまった。
documentElementじゃあダメなのか?みたいな感じでずっと…。
html文書にアクセスしようとしてダメだったことでようやく気付いた。
bodyオブジェクトってbodyタグがなくても問題ないんですねぇ。
改行もsplit(/\r\n|\r|\n/)で分割できることをついさっき知ったが
どうせ過去ログに概出なわけだろうし意地張らなきゃ良かった。
次からは過去ログ全部に目を通してから出直して来るとします。
そらまbodyタグがなくてもbody要素は存在してるからね。
Javaってクライアントでは時代遅れなんだろうけど
.NETにゃまだ早すぎるんだよなぁ
…誤爆?
はじめまして java初心者です。
質問なのですが、JavaScriptにてテキスト出力する際に、
記述するテキストの改行を許す書き方というのはあるのでしょうか?
例えば
document.write('test.text');
を
document.write('test.
text');
とするとエラーになってしまいます。
長文を表示させたい場合、改行がないと辛いのです。
どうすればいいのでしょうか?
よろしくお願いします。
>>646 C、C++、Java、JavaScriptなどいずれでも「改行」は「\n」という
エスケープシーケンスを文字列に埋めることで表せる。
document.write('test.\ntext');
ただしHTMLの中に挿入する場合は<pre>...</pre>の中などでないと
改行しても無意味(HTML側で改行を無視して詰め合わせる)。
最後に、JavaとJavaScriptの区別がつかない人は来ない方がいいよ。
>>646 document.write('test.\
text');
のように改行の直前に \ を書けば
document.write('test.text');
と書いたことと同じになります。
エスケープ文字で、
\f - フォームフィード
\b - バックスペース
この二つの意味が
わからないのですが
何に使うのでしょうか?
651 :
560:04/01/17 10:59 ID:+VFoU0hW
遅くなりましたが、
defaultValueで対応できました。
いろいろ案を出してくださってありがとうございます。
プルダウンメニューをつくったんですが
<FORM NAME="bl">
<SELECT NAME="bl2">
<OPTION SELECTED>- - - 下から選択してください - - -
<OPTION VALUE="index.html">1.テストページ1
<OPTION VALUE="2.html">2.テストページ2
<OPTION VALUE="3.html">3.テストページ3
</SELECT>
</FORM>
<INPUT type="button" ONCLICK="if(document.bl.bl2.value){location.href=document.bl.bl2.value;}" VALUE="移動">
これでいいんですよね?
INDEX.HTMLのところはリンク先のアドレス普通に貼ったんですけど
リンクされません。どうすればいいですか?
http://www.geocities.jp/xbox_ism/matiuke.html ここです。
>>652 >これでいいんですよね?
ダメだから動かねーんだろうが。だろ?
<INPUT type="button" VALUE="移動"
ONCLICK="if(n=document.bl.bl2.selectedIndex)location.href=document.bl.bl2.options[n].value">
気持ち悪りーからボタンはフォームに入れろ。
>>654 確かにそうですね…
ありがとうございます!
出来ました。
656 :
Name_Not_Found:04/01/17 12:29 ID:vQ/sZC92
Javascriptのif文でCSSの状態を読み取る事に失敗します。
docu〜部分を省略してないため見づらいかと思いますが、
ボタンをクリックするたび交互に色を替えようとしています。
function onoff(x){
if(document.form1.elements[x].style.backgroundColor == "lightgray"){
document.form1.elements[x].style.backgroundColor = "gray";
}else{
document.form1.elements[x].style.backgroundColor = "lightgray";
}
}
<INPUT type=button name="h0" value="あ" onClick="onoff(0)">
# HEAD部STYLEタグからlightgrayを指定したのでそれが原因かと思い念のためjavasriptでlightgrayを指定し直しましたが不可能でした。
# if内の実行文単体だと動きました。
# IE6
lightgray じゃなくて lightgrey
658 :
655:04/01/17 13:00 ID:???
>>657 (* Д) ゚ ゚
ありがとうございました!!
659 :
Name_Not_Found:04/01/17 13:22 ID:9xsjmxXo
<script language="JavaScript"><!--
c= new Array(14);
c[0]="#000000"; c[1]="#808080"; c[2]="#800000"; c[3]="#808000";
c[4]="#008000"; c[5]="#008080"; c[6]="#000080"; c[7]="#800080";
c[8]="#808040"; c[9]="#004040"; c[10]="#0080ff"; c[11]="#004080";
c[12]="#8000ff"; c[13]="#804000";
for (i = 0; i < 14; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[i]);
document.write("';\"><font color="+c[i]+">■<\/font><\/a>");
}
//--></script>
コレを二つ並べ、間に<br>を挟みます。
すると、
■■■■■■■■■■■■■■
■■■■■■■■■■■■■■
このようになります。
これと同じことを、ソースを二つ並べずに、ひとつのJAVASCRIPTで処理したいのですが、
どなたか解決しては頂けませんでしょうか? お願いします。
<FORM NAME="bl">
<SELECT NAME="bl2">
<OPTION SELECTED>- - - 下から選択してください - - -
<OPTION VALUE="index.html">1.テストページ1
<OPTION VALUE="2.html">2.テストページ2
<OPTION VALUE="3.html">3.テストページ3
</SELECT>
</FORM>
<INPUT type="button" ONCLICK="if(document.bl.bl2.value){location.href=document.bl.bl2.value;}" VALUE="移動">
<INPUT type="button" VALUE="移動"
ONCLICK="if(n=document.bl.bl2.selectedIndex)location.href=document.bl.bl2.options[n].value">
これでプルダウンメニューは作れたんですが、2個目のプルダウンメニューを作っても
作動しません。
2個目以上の場合は何かをかえなくてはだめなんですか?
>>659 <script language="JavaScript"><!--
c= new Array(14);
c[0]="#000000"; c[1]="#808080"; c[2]="#800000"; c[3]="#808000";
c[4]="#008000"; c[5]="#008080"; c[6]="#000080"; c[7]="#800080";
c[8]="#808040"; c[9]="#004040"; c[10]="#0080ff"; c[11]="#004080";
c[12]="#8000ff"; c[13]="#804000";
for (i = 0; i < 14; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[i]);
document.write("';\"><font color="+c[i]+">■<\/font><\/a>");
}
document.write("<br>");
for (i = 0; i < 14; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[i]);
document.write("';\"><font color="+c[i]+">■<\/font><\/a>");
}
//--></script>
あえて言おう。これでも一つのスクリプトであると…!
>>659 for (j = 0; j < 2; j++){
for (i = 0; i < 14; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[i]);
document.write("';\"><font color="+c[i]+">■<\/font><\/a>");
}
document.write("<br>");
}
>>660 >2個目以上の場合は何かをかえなくてはだめなんですか?
どんなふうに2個目を書いてるのかしらないけど、nameの値とか変えないとね
あと
>>654でも指摘されているがボタンも対応する<form>〜</form>内に入れるように
>>660 さっき答えるつもりで先客がいたからパスしたんだ.
うまくいかない原因は,闇雲にやっていて
script の指し示す object の内容を理解していないからだと思う.
さて,
onClick="〜" でやっている事が意味不明.
onClick="jmp(this.selectedIndex)"
などとして function を呼び出すようにした方がスマート.
それと,
alert(document.bl.bl2.value);
とやって見れば
document.bl.bl2.value が何を指し示しているかが解るはず.
ちょっとした工夫で人に頼らずに解決できる力が付くものさ.
664 :
659:04/01/17 14:38 ID:9xsjmxXo
>>661様
>>662様
ありがとうございます。
あの……説明足らずで申し訳ない。
それだと、上の行と下の行で、全く同じ背景変換ボタンになってしまいますよね。
実は、上の行と下の行で、色の内容が異なるのです。
どこに15番目以降のc[x]="#000000";を表記すればよいのでしょうか?
>>664 >実は、上の行と下の行で、色の内容が異なるのです。
やりたいことの肝心かなめのことじゃん。最初からきちんと書いてよ。レスの無駄になるんだから
<script type="text/javascript"><!--
c = new Array(2);
c[0] = new Array("#000000", "#808080", "#800000", "#808000", "#008000", "#008080", "#000080",
"#800080", "#808040", "#004040", "#0080ff", "#004080", "#8000ff", "#804000");
c[1] = new Array("#ff0000", "#cc0000", "#990000", "#660000", "#330000", "#00ff00", "#00cc00",
"#009900", "#006600", "#003300", "#0000ff", "#0000cc", "#000099", "#000066");
for (j = 0; j < 2; j++){
for (i = 0; i < 14; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[j][i]);
document.write("';\"><font color="+c[j][i]+">■<\/font><\/a>");
}
document.write("<br>");
}
// --></script>
>>659 <script language="JavaScript"><!--
c= new Array(28);
c[0]="#000000"; c[1]="#808080"; c[2]="#800000"; c[3]="#808000";
c[4]="#008000"; c[5]="#008080"; c[6]="#000080"; c[7]="#800080";
c[8]="#808040"; c[9]="#004040"; c[10]="#0080ff"; c[11]="#004080";
c[12]="#8000ff"; c[13]="#804000";c[14]="#f0f0f0"; c[5]="#0f0f0f";
c[16]="#ffffff"; c[17]="#aaaaaa";c[18]="#555555"; c[19]="#843017";
c[20]="#049851"; c[21]="#758901"; c[22]="#108375"; c[23]="#569231";
c[24]="#0851374"; c[25]="#649031"; c[26]="#581732"; c[27]="#812374";
for (i = 0; i < 14; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[i]);
document.write("';\"><font color="+c[i]+">■<\/font><\/a>");
}
document.write("<br>");
for (i = 14; i < 28; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[i]);
document.write("';\"><font color="+c[i]+">■<\/font><\/a>");
}
//--></script>
667 :
659:04/01/17 15:19 ID:9xsjmxXo
>>665様
>>666様
申し訳ございません。
失礼致しました。
そして、ありがとうございました。
668 :
Name_Not_Found:04/01/17 17:29 ID:KYhKxkjm
document.write("<form name='Form'>");
document.write("Color code = <input type=text name=box size=40 STYLE='font: 14pt ; background: #FFFFFF' id=xxx><br>");
document.write("</form>");
document.write('<td width="2" nowrap onClick=document.Form.box.innerText="#',n,'" style="background-color:#',n,'">');
n←文字列が入ってる。
onClick動作で、Form内にある。 innertextによる、表示した文字をさらに、
input範囲内のtextの色を指定したい場合 どうすればいいですか?
document.all.xyz.style.color = "#00FF00";
のようになる時
"#"+ ***; ***←nを代入。 n色コード文字列
>>668 悪いけどあなたの日本語はどうにも理解できない。もっかい正確に
言い直してホスイ。
670 :
Name_Not_Found:04/01/17 18:02 ID:Wba5h2Vu
フォームの内容をクリップボードにコピーさせるにはどうすればいいでしょう?
ttp://www.suepon.com/jsm/script/jsm34.html コピーの方法はわかりそうなのですが複数項目、たとえば
------------------------------------------------------
好きな色:■■■■■■(←textフィールド)
嫌いな色:■■■■■■
┌───┐┌──┐
│コピー││消去│
└───┘└──┘
------------------------------------------------------
各項目に任意の文字をいれ、コピーのボタンを押すとコピー
消去のボタンを入れると入力情報を消去。
ボタンを押すと確認アラートを出すようにしたいです。
コピーされる内容も(好きな色は「赤」嫌いな色を「青」)
-------------------------------------------------------
好きな色:赤
嫌いな色:青
-------------------------------------------------------
のように、項目名も一緒にコピーされるようにしたいです。
javascriptでかけますでしょうか?かけるとしたらどのように書けばいいでしょうか?
それともFlashでactionscriptで書いたほうがいいのでしょうか?
ご教授お願いします。
全部他人に書かそうとしてないか。
button.onclike copy()
button.onclike delete()
copy(){
hogehoge.clip=hogehoge.form;
}
delete(){
hogehoge.form="";
}
こんな漢字で適当に書けばいいと思うよ。
String.fromCharCodeの暗号を一括解除するスクリプトってない?
探し回ったけど
>>673 javascript:for(i in a=document.getElementsByTagName("script"))b+="\n"a.[0]innerHTML;open().document.write(b);
>>659 普段はこんな感じでやってるんだけど、
ループ内で i を参照するのはダメなんだっけ?
for (i = 0; i < 28; i++) {
document.write("<a href=\"#\" onClick=\"document.bgColor='"+c[i]);
document.write("';\"><font color="+c[i]+">■<\/font><\/a>");
if (i == 14) document.write("\n<br>\n");
}
679 :
Name_Not_Found:04/01/18 11:54 ID:Q02TTgss
オブジェクトを作成するときに、キーと値を別で指定しておいて、
key = "aaa";
value = "bbb";
o = {key:value}; // o={aaa:"bbb"}
alert(o.aaa);
と行いたいのですが、キーのほうが変数展開がされずに o.key のままに
なってしまいます。
キーも値も変数で指定したいのですが、{}のような形で行うことは可能でしょうか?
o = {};
o[key] = value;
しか思いつかない
どうにかしてdocument.referrerに書きこむことはできないのでしょうか?
683 :
Name_Not_Found:04/01/18 15:39 ID:h8qV+agP
指定した範囲のテキストを選択状態にする方法ってありますか?
ちなみにフォームじゃない普通に出力したテキストです。
<SPAN CLASS="selectable">ほにゃほにゃ</SPAN>
みたいのを、なんかのボタンを押すと選択状態にしたいのです。
>>683 var el=document.getElementById(id);
if (window.getSelection) // Gecko
window.getSelection().selectAllChildren(el);
else if (document.body.createTextRange) // IE
with(document.body.createTextRange())moveToElementText(el),select();
>>679 key = "aaa";
value = "bbb";
o = eval("{"+key+":value}"); // o={aaa:"bbb"}
alert(o.aaa);
687 :
685:04/01/19 04:31 ID:???
>>686 スマソ
key = "aaa";
value = "bbb";
o = eval("({"+key+":value})"); // o={aaa:"bbb"}
alert(o.aaa);
688 :
Name_Not_Found:04/01/19 11:11 ID:NJwGG21w
読み込み中に文字を表示させたいのですが、
<head>
<script language="javascript">
function jumpto(){
document.getElementById(’nowloading’).style.marginBottom=’0px’;
document.getElementById(’nowloading’).style.visibility=’hidden’;
}
//-->
</script>
</head>
<body onLoad="jumpto();">
<div style="margin-bottom:1000px; visibility:visible;" align="center" id="nowloading">now loading...</div>
上の<body onLoad="jumpto();">を使わないで行うことは無理でしょうか?
<script language="javascript">
window.onload = jumpto;
function jumpto(){
document.getElementById(’nowloading’).style.marginBottom=’0px’;
document.getElementById(’nowloading’).style.visibility=’hidden’;
}
//-->
</script></head><body><div..............
か
<script language="javascript">
window.onload = function(){
document.getElementById(’nowloading’).style.marginBottom=’0px’;
document.getElementById(’nowloading’).style.visibility=’hidden’;
};
//-->
</script></head><body><div..............
ってこと?
body の終了タグ直前にスクリプト入れるとか。
691 :
679:04/01/19 11:55 ID:y9OsVu++
692 :
683:04/01/19 12:02 ID:isyAHNou
すげーサンキューマジサンキューまだ試してないけど、
なんかいけそうですね。
どうもです。マジ感謝してます。
ホント感謝してます。
気持ち伝わりましたか?ほんとに感謝してます。
ありがとう。ほんまありがとう。
693 :
Name_Not_Found:04/01/19 15:38 ID:xENPQzxX
arr = [
{name:"イヌ",old:6},
{name:"ネコ",old:5},
{name:"トラ",old:7}
]
arr.sort(sortByOld);
function sortByOld(a,b){
return a.old==b.old?0:(a.old<b.old?-1:1)
}
年齢順に並べ替えるというので質問した者ですが、
a.old==b.old?0:(a.old<b.old?-1:1)
この部分が全く意味不明なのですが、どなたか簡単に解説お願いできますでしょうか。
技の名前だけでも。
695 :
Name_Not_Found:04/01/19 15:42 ID:u8gASqgY
>>695 涙が出る程ウザイから、やらない方がいいぞ。
697 :
Name_Not_Found:04/01/19 15:51 ID:u8gASqgY
>>696 とりあえずやり方だけでも教えてください。
お願いしますm(_ _)m
698 :
688:04/01/19 15:56 ID:???
既に<body onload="Init()">をしようしているので他に方法がないかっと思っていたんです。
689さんありがとうございます!でも「文字が正しくありません」とエラーが出てしまいます…。
>>698 そういうことなら onload="Init();jumpto()" で充分。
700 :
688:04/01/19 16:32 ID:???
699ありがとうございます!まだエラー出ますが、自分でなんとかがんばってみます!
702 :
Name_Not_Found:04/01/19 17:01 ID:y9OsVu++
>その例書いた人はなに考えているんでしょうね?
純粋に主観的な動機によるこういう発言もどうかしてると思うぞ。
自分の知識を自慢したいってのが、回答者の主な駆動力だからしょうがない。
条件演算子なんか自慢にならネーヨ…
むしろいつか役に立つから解らなきゃこれを機会に覚えろ、ぐらいの感じだろ。
中身が短くなるときは、こうやって書きたくなるよね。速いし。
707 :
Name_Not_Found:04/01/19 19:26 ID:y9OsVu++
> 中身が短くなるときは、こうやって書きたくなるよね。速いし。
ならないね。全く。もっと分かりやすく書いたほうが理解しやすいもの。
1日に何万回も表示するなら別だけど。
のちのち見直すときに苦労するのは自分だし。
(もちろん個人的意見。僕は天才じゃないからね。)
>>707 慣れてしまえばごく平易な式。見慣れてないから解りにくいと感じる。
お前が if 文使うのと同じ理由で条件演算子を使う奴だっているだろう。
たったそれだけのことだ。
「なに考えているんでしょうね?」とかそういう筋合いのことじゃない。
709 :
707:04/01/19 21:48 ID:y9OsVu++
そうですね。
711 :
707:04/01/19 22:01 ID:y9OsVu++
いいよもう。無駄な議論だ。一般論を語れない人っているからさ。
すると今後 ?: を使った回答はケチつけられる方向ですか。
ロジックに口挟むならともかくアホくさい話だな。
713 :
707:04/01/19 22:09 ID:y9OsVu++
そうですね。
個人の趣味ならともかく、一緒に仕事してる人は可哀想だな。
そうですね。
間違いない。
717 :
Name_Not_Found:04/01/19 22:23 ID:y9OsVu++
ごくろうさん。
そうですね。
開くドキュメントの内部にあるJavaScriptに、パラメータを渡せませんか?
たとえば、js.htmlというファイルがあったとして、そのjs.htmlでは
何らかのパラメータを受け取り、そのパラメータを表示したいのですが、
色々方法を模索しているのですがうまく行きません。
js.html?param という形で呼び出しても?以降を読むことが出来ないし、
js.html#param という形でもうまく行きませんでした。
dialogArgumentsを使うのは、dialogになってしまうので困ってしまうし、
何か方法があれば教えてください。
IEとMozillaに対応できればとりあえずはそれでいいと考えています。
>>721 URLの query string は location.search で読めると思うが。
724 :
Name_Not_Found:04/01/20 11:28 ID:FMsAskFI
(aaa,bbb) = hoge();
function hoge(){
return(1,2);
}
こうやるとエラーになるのですが、戻り値を受け取る時は、
配列として受け取らないといけないのですか?
そうですね。
それは、万能ではないですね。
727 :
Name_Not_Found:04/01/20 13:27 ID:50EBx+WB
javascirpt で文字列の圧縮って可能ですか?
2バイト文字は含まない文字列で、使用するのは[a-zA-Z0-9,: ]
ぐらいなのですが、2〜4Mになってしまい、サーバへ随時送らない
といけないのに困っています。
良い方法はないでしょうか?
728 :
Name_Not_Found:04/01/20 13:47 ID:FMsAskFI
(aaa) = hoge();
function hoge(){
return(1,2);
}
やっぱりこうやっても2しか入りませんでした。
二つ以上受け取るにはどうしたらいいんでしょうか。
730 :
Name_Not_Found:04/01/20 14:49 ID:FMsAskFI
>>729 var aaa,bbb;
(aaa,bbb) = hoge();
function hoge(){
return[1,2];
}
これは反則ですか?
>>730 JavaScriptの関数が値を2個以上返すことはない。
(aaa,bbb) = hoge(); という式は hoge() の戻り値を bbb に代入する式だ。
730のコードなら、 bbb に [1,2] という配列が代入される。
_hoge = hoge(); aaa=_hoge[0], bbb=_hoge[1];
としなければ、望んでるような結果にはならないと思うよ。
732 :
Name_Not_Found:04/01/20 15:42 ID:50EBx+WB
>>729 有り難うございます。でもこれだと、圧縮(解凍)ロジックが理解できないため
サーバ側で解凍するプログラムが書けません(;_;)
大変ど素人な質問で申し訳ないのですが、
ダブルクリックするとjs外部ファイル指定を
無効にするにはどうすればいいでしょうか。
>>732 zip解凍関連(inflate)とBASE64デコードのライブラリがあれば一応処理可能だと思う。
>>733 自分のページにそういう仕掛けを作りたいってこと?
>734 早速レスありがとうございます。
そうですね。マウス追跡型の時刻表示javascriptを使ってみたいのですが、
うざったい人には可哀想なので、切れるようにした方がいいかなぁと思いまして。
すみません。>733=>735です。
737 :
↑:04/01/20 16:08 ID:???
お前誰?
俺だよ俺
>>735 そのコード見てないから全くの憶測で書くけど
その時刻表示させている要素を隠せれば事足りたりする?
雰囲気としてはこんな感じのコードとか。
function hoge(){
document.getElementById(時刻表示させる要素のID).style.visibility='hidden';
}
<body ondblclick="hoge()">
740 :
735:04/01/20 16:43 ID:???
>735
なるほど。やってみますね。
本当にありがとうございます。
外部ファイルにやはり指定しないとだめみたいですね。
perlで言う、chopって無いのですか?
742 :
735:04/01/20 16:44 ID:u1Qw9FPL
訂正
>740の>735は>739です。
何度もごめんなさい。
745 :
745:04/01/21 00:35 ID:???
テーブルにマウスを置くと色が変わる、というJavaScriptを教えて下さいm(__)m
<td onmouseover="this.style.backgroundColor='red';"
onmouseout="this.style.backgroundColor='white';">ほげほげ</td>
747 :
746:04/01/21 01:01 ID:???
748 :
Name_Not_Found:04/01/21 10:16 ID:hVp7W48K
function aaa(){
var oImg,oForm;
oImg = document.createElement('img');
oImg.setAttribute("src", "xxx.gif");
oImg.setAttribute("name", "test");
oForm = document.getElementById("hoge");
oForm.appendChild(oImg);
}
function bbb(){
var oElements;
oElements = document.getElementsByName("test");
alert(oElements.length);
}
<form name="myFORM" action="#" id="hoge">
<input type="button" value="画像作る" onClick="aaa();">
<input type="button" value="取得できるか" onClick="bbb();">
</form>
画像を生成して、その後に、その画像が参照できるかテストしているのですが、
ゼロになってしまいます。ダメなのでしょうか。
>>748 IEのバグもしくは仕様だね。Mozではちゃんと機能する。
IEなら oImg.setAttribute("id", "test"); とすれば
document.getElementsByName("test"); で参照できるよ。(これはIEの仕様)
words = new Array();
words[0] = "A2";
words[1] = "C5";
words[2] = "B3";
words.sort(sort_dorder);
function sort_dorder(a,b){
return b-a;
}
文字と数字の混在した値をソートするにはどうしたらいいんでしょう。
function sort_dorder ( a, b ) {
if ( a > b ) return -1;
if ( a < b ) return 1;
if ( a == b ) return 0;
}
752 :
Name_Not_Found:04/01/21 13:39 ID:tGRYw4cl
初歩的なことかもしれませんが、質問させてください。
<form>
<input type="button" value="Go" onclick="location='xxx.html'">
</form>
↑のようにして、フォームボタンでページ移動をしているんですが、
ボタンをクリックして別ウィンドウを出すには、何を追加したらいいですか?
よろしくお願いします。
<form>
<input type="button" value="Go" onclick="open('xxx.html')">
</form>
754 :
752:04/01/21 13:56 ID:???
>>753 ありがとうございます!できました!
onclick="open('xxx.html')" とすると非常に重くなるので、
onclick="open('xxx.html','','')" としたら軽くなりました。
文法的にはどちらでも正しいですか?
755 :
Name_Not_Found:04/01/21 16:27 ID:FxTbREkZ
ページAでsubmit→ページBで結果表示という処理の流れで、
ページAで開いた子ウインドウをページBで閉じるには、どうするのでしょう?
1)ページAのformで必要事項入力し、submit。
↓
2)submitのonClickで子ウインドウを開く(「しばらくお待ちください」等)
↓
3)ページBがロードされると、上で開いた子ウインドウが自動的に閉じる
みたいなことがやりたいのですが。。。
>>755 子ウインドウは、window.onblurでclose()するようにしておき、
ページBがロードされたらfocus()
Opera7でtd要素の背景色の値を返すにはどうすればいいのですか。
return document.getElementById("hoge").style.backgroundColor;
みたいにやると動かなかったです。
>>757 document.getElementById("hoge").style.backgroundColor
で問題ない。他の場所に原因があるのでは。
>>757-758 設定するならそこでいいんだけど現在設定されている値を読む
という目的では使えないかも知れないよ。
なんで?
>>757 とりあえず背景色の指定方法はどれよ?
A: <td id="hoge" style="background-color: white">
B: <td id="hoge" bgcolor="white">
C: #hoge { background-color: white; }
Aなら
>>758で読める。
Bなら document.getElementById('hoge').bgColor で読める。
CはOpera7じゃちょっと無理ぽ。
762 :
Name_Not_Found:04/01/21 21:12 ID:T5Aiv+mb
別の鯖においてあるjsファイルを読み込んでも動かないようなんですが、これはセキュリティ上そういうものなのですか?
例えば、infoseek.jp/home/index.htmlに下記のタグを貼っても
<script src="
http://tok2.jp/home/program.js"></script>
動いてくれなくて困ってます。
763 :
Name_Not_Found:04/01/21 21:15 ID:por2JVNK
初めて質問させていただきます。
2分割フレーム、menuとmainがあります。
menuは1画面で、mainは数十画面あります。
main側の全てのページでページ読み込み時に一定の処理を行ないたいのですが
main側に一切javascriptを記述せずにそれを実現できますでしょうか?
main側に外部jsファイルを読み込ませるのが簡単なのはわかるのですが、
数が多いため、menu側だけで処理が賄えればと思っています。
menu側からmain側の移動を関知し、「parent.main.処理」とできれば良いのですが、
googleなどで検索しても、別フレームの移動を知る手法が見つかりませんでした。
menu側からmainの移動を知る方法はあるでしょうか?
動作ブラウザはIEのみでもかまいません。
どなたかご存知でしたら知恵をお貸しください。
765 :
762:04/01/21 21:37 ID:???
>764
超申し訳ない。cookieの読み取りと書き込みの名前がちごうとった。
亀裂の入った飛行機に乗って逝ってきまつ・゜・(つД`)・゜・
766 :
757:04/01/21 22:03 ID:???
>>758-761 回答ありがとうございます。
<td id="hoge">(スタイルシートによる設定はなし)をJSで
背景色を変えていたのですが、これだと
>>757では値が返りませんでした。
で、スタイルシートでデフォルト値を指定したところ値が返ってきました。
IEと違ってOperaだとデフォルト値が指定してないと値が返らないんですね。
767 :
757:04/01/21 22:13 ID:???
すみません。今の書き込みは勘違いでした。
768 :
757:04/01/21 22:20 ID:???
解決しました。
どうでもいいですが、Operaってrgb(x, y, z)形式の値を返すんですね。
<script type="text/javascript">
<!--
/*窓の大きさを指定、NN4とOpera以外で作動*/
if (window==window.top && !document.layers && navigator.userAgent.indexOf("Opera")==-1)
{window.resizeTo(640,480);}
//-->
</script>
下記のスクリプトをhead内に書いてあります。
<script type="text/javascript">
<!--
/*窓の大きさを指定、NN4とOpera以外で作動*/
if (window==window.top && !document.layers && navigator.userAgent.indexOf("Opera")==-1)
{window.resizeTo(640,480);}
//-->
</script>
うまく実行されることもあるのですが、WinIE6でかなり高い割合でエラーが出ます。
>エラー:アクセスは拒否されました
>コード:0
とのこと。
{window……の2文字目がいけない箇所だ、と。
しかし、どこが悪いか、わかりません。わかる方、どうかご指摘下さい。
猶、当該ページはフレームで、HTML 4.01 Framesetです。
771 :
Name_Not_Found:04/01/21 22:48 ID:DIu0XvbT
<SCRIPT language="JavaScript">
<!--
function Clock(){
myDate=new Date();
window.status=myDate.toLocaleString();
setTimeout("Clock()",1000)
}
// -->
</SCRIPT>
の日付を3ヶ月前の日付にしたいんですがどうすればいいのでしょうか?
772 :
ゆか:04/01/21 23:09 ID:J7HRzxi8
初心者ですみません。
@『\n』というのを見かけるんですが、これはどういうものなのでしょうか?
\n---------\n とか "文字\n" とかありますが・・・。
よろしくお願いいたします。
774 :
Name_Not_Found:04/01/21 23:16 ID:EqeTwxRf
>>771 3ヶ月前とはどういう意味か?
例えば5月30日の3ヶ月前は何?
まさか2月30日なんていわないよな。
window.status = new Date(new Date().getTime()-90*864e5).toLocaleString();
こんなんでいいんじゃなかろうか
776 :
Name_Not_Found:04/01/22 02:24 ID:otkbA2im
>>776 意味がワカラン。
痛いサンプルサイトをハッケンソしますた。という報告なら素直にそう言え。
マンドクセーからズバリを書いとくわ。
com_list = document.getElementById("com");
>>777 すみませんでした。
NN用のソースでそう置き換えても、やっぱ動きませんでした。
ちなみにソースはこうなっています。
else if(navigator.appName=='Netscape'){
com_list = document.getElementById("com");
if(flag[num] == 1){
com_list[num].style.display='none';
flag[num] = 0;
}
else{
com_list[num].style.display='block';
flag[num] = 1;
}
}
}
エラーメッセージの内容は「com_list[num] has no properties」となっています。
痛いサンプルサイトって事は、このサンプルは使わないほうがいいって事でしょうか?
>>778 まず糞サンプルの
<FONT color="green" id="com"
の全てのIDに
id="com1" みたく対応した
onclick="tree(1)" の引数をIDにくっつける。
で、関数を下にする。
function tree(num){
if(document.all){ com_list = document.all("com"+num);
}else if(document.getElementById){ com_list = document.getElementById("com"+num);
}else{ return; }
if(flag[num]){
com_list.style.display='none';
flag[num] = 0;
}
else{
com_list.style.display='block';
flag[num] = 1;
}
}
>>779 ありがとうございます。
仰る通りに書き直しました。
IE6では問題なく動作しましたが、NN7.1では、エラーは出なくなったものの、動作しません。
ファイルをアップしておきました。
もしよろしかったら見てみてください。
tp://venus.aez.jp/uploda/dat/upload3073.html
>>780 意味不明なDIVのせいだな。消せばイイ。
どうせなら span を div, font を span にしる。
あ、2行目無かったコトにしてくり。
>>781-782 ああ…申し訳ないです。
スタイルシートでdivを使ってた名残を消し忘れていました…
間抜けなミスで本当に申し訳ないです。
おかげさまで無事NN7.1でも動作いたしました。
本当にありがとうございます。
下記をフレームで使うと、別フレームにプルダウンメニューの
リンク先が出るのですが、これと同時に新しいウィンドウで
別のHTMLを表示するにはどうしたらいいのでしょうか。
なるべくなら、下記のようにスクリプト内に
URLを書かずに済む方法でおねがいします
<html>
<head>
<script langage="javaScript">
function jump(sel) {
if (sel.options[sel.selectedIndex].value)
{
parent.migi.location.href = sel.options[sel.selectedIndex].value;
}
}
</script>
</head><body>
<SELECT onChange="jump(this)">
<option selected>選ぶ</option>
<option value="01.jpg">1つめ</option>
<option value="02.jpg">2つめ</option>
</body></select>
</html>
業者か。
>>784 過去ログどころかこのスレにすら複数のサンプルがあるくらいガイシュツ。
それも読めないような奴は来るな。まず
>>1を嫁。
ネスケでDHTMLやるくらいだったら
DHTMLを使用しないページを
用意したほうがいいんじゃないかと
ときどき思ったりするんだけど
こういうのって宗教論議ですか?
人を殺してはいけない、物を盗んではいけない、というのは
宗教以前の問題だと思うが。
789 :
Name_Not_Found:04/01/22 15:00 ID:onKAnI9r
>>770ですが、どなたもおわかりになりませんか。
>・ユーザーに迷惑となるスクリプトを書かない者
ウィンドウのリサイズはユーザーに迷惑とされます。
せめてボタンかリンクで「ここをクリックするとウィンドウが640×480になります」
くらいにして作りなさい。そうすればおのずと
>>770も解決されるでしょう。
そんなコトより
if (window==window.top
誰かつっこんでヤレよ。
むしろ何を比較しているつもりなのか聞いてみたい気もする。
>>791 フレームなので、window.top の状態以外で作動すると妙なことになります。
つまり別のフレームセットの子フレームの中にこの窓リサイズのフレームが含まれてしまった場合に、です。
そこでその記述を入れてみたのですが、他に然るべきやり方があるのなら御示教下さい。
>>790 自分専用のページなのでユーザーの迷惑にはならないはずです。
793 :
770:04/01/22 16:44 ID:???
単に、下記だけのスクリプトでも、エラーがしばしば出ます(出ないこともある)。
<script type="text/javascript">
<!--
window.resizeTo(640,480);
//-->
</script>
フレームにウィンドウ・リサイズは鬼門なのですか?
>>794 その「他」とは何ぞや。それが問題だな。
直前に閲覧したページによるとか?
>>793 とりあえず仕込んでみたが再現できねー。Ie6
で、結局そのスクリプトはドコに書いてるんだ?
そこらへんのソースきぼん。
797 :
770:04/01/22 17:47 ID:???
>>796 ドコって、最初に書いた通り、head内です。こんな感じ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
[…略…]
<script type="text/javascript">
<!--
/*窓の大きさを指定、NN4とOpera以外で作動*/
if (window==window.top && !document.layers && navigator.userAgent.indexOf("Opera")==-1)
{window.resizeTo(640,480);}
//-->
</script>
</head>
<frameset rows="*" title="親フレーム">
<frame name="main" src="child.html" frameborder="1">
</frameset>
</html>
つまりchild.htmlから張ってあるリンクをクリックすると
すべて一定サイズのフレーム内にて表示される仕組みです。
すいません、
お申込みフォームでテキストフオームに半角数字で入力する欄8個と
全角文字で入力する欄が2個あります。項目は
最初に半角数字の入力欄に入力を済ませたい。
Enterを押下すれば半角数字の入力欄にフォーカスが飛ぶ
ようにしたいのですが・・・・・。
質問
cssの外部リンクを覚えたのでjavascriptも同じ処理にしようと考えたのですが、なかなか上手くいきません。
<script type="text/javascript" src="./javascript/test.js></script>
を<head></head>に入れてます。
これは画像ファイルをクリックすると、小さいウィンドウを表示するような処理です。
外部ファイルの記述は
function openWin(){
var win1 = window.open('','newwin1','');
win1.document.write('あいうおえ');
win1.document.close();}
です。
html部分は
<body>
<div class="chapter" id="preamble">
<h1>説明<a href="#" onclick="openWin()"><img src="./image/y.gif" width="12" height="12" border="0"></a></h1>
</body>
です。
802 :
798:04/01/22 21:45 ID:???
すいません、
tabとEnterキーが同じ役割をするということです。
803 :
771:04/01/22 21:52 ID:F7y8prVi
すいません。説明が足りませんでした。
dd = new Date();
dd.setTime(dd.getTime() - ((31+30+31) * 24 * 3600 * 1000));
yy = dd.getYear();
mm = dd.getMonth() + 1;
dd = dd.getDate();
if (yy < 2000) { yy += 1900; }
if (mm < 10) { mm = "0" + mm; }
if (dd < 10) { dd = "0" + dd; }
document.write(yy + "/" + mm + "/" + dd);
これで、アクセスした月が1月の場合ちゃんと3ヶ月前を表示
してくれると思うのですが、もちろん29日の月もあるし、
今年のようなうるう年もあるのでなので、上記のように(31+30+31)とすると、
ずれてしまいます。いちいち毎月直すのもなんなので
なにか良い方法はありますでしょうか?
>>802 これでどう?
13=エンター、9=タブ。
<INPUT type=text onkeydown="if(event.keyCode==13) event.keyCode=9">
805 :
798:04/01/22 22:10 ID:???
ありがとうございます。
とりあえず、作ってみます。
23:30ごろ、またみにきます。
806 :
798:04/01/22 22:19 ID:???
できました!!!
どうもありがとう。
>>803 基本的には3つ前の月の同じ数字の日なのね。
で、
>>774みたいな場合(3つ前の月に同じ数字の日がない場合)は?
808 :
Name_Not_Found:04/01/22 22:58 ID:bD5fHb6s
ステータスバーにリンク先URLを表示させない方法で楽なの教えてください。
メッセージを流すのは一瞬表示されるのでダメです。
811 :
808:04/01/22 23:10 ID:bD5fHb6s
>>809 嫌いって俺のこと?
そんなこと言わずにいいから教えてください。
>>810 自分だけ消してもダメでしょ。マジレスお願いします。
> いいから教えてください。
そんな投げやりな態度はよくないぞ。
813 :
808:04/01/22 23:21 ID:bD5fHb6s
>>812 あーもう!うっとうしいなぁ!
すいませんでした!早く教えてください!お願いします。
この通りです。_| ̄|○
>>808 なぜ消さなければならないかきちんと理由を書かなくちゃ。
それで皆が納得すれば教えてもらえるよ。厨房な理由なら
どのみち無理ぽ。
816 :
808:04/01/22 23:48 ID:bD5fHb6s
>>814 ?
>>815 消したい理由はですね、小遣い稼ぎサイトのリンク先なんですけど
見る側にしたらやっぱりIDとか出ると嫌な印象を受けると思うのです。
それが消したい理由です。納得してもらえますか?
さて
818 :
808:04/01/23 00:02 ID:/ZkceTiU
納得してもらえなかったというのですか?
(・∀・)ハゲッ!
820 :
808:04/01/23 00:14 ID:/ZkceTiU
ちきしょう!
こんなタイミングで恐縮なんですが画像をクリックすると
別ウィンドウが表示されるスクリプトで、マウスを画像の上に持っていっても
なんの反応もありません。
別ウィンドウの処理は問題ないのですが、通常リンクの上にマウスを持っていくと
指の形に変わりますよね?それが何の反応も無いんです。
画像がリンクしていることを示すためにも、この不具合を修正したいです。
何か見落としがちな点があればアドバイスよろしくお願いします。
画像がリンクじゃないんだろう。おそらく
>>821 指の形になるのはAタグでhrefを指定した時。
onclickなら何も反応はないよ。
どうしてもというのなら<A href="javascript:〜"><IMG 〜></A>とか
onmouseoverからスタイルシートで指の形を指定するなり。
>>821 リンクを張ってないわけだ。じゃぁ張れば良い
<a>にonclick="return false" か target="..."
>>822-823 なるほど!確かに<a></a>では指定していませんでした。
この場合
>>823さんの<a href="javascript:〜">の「〜」というのは何が当てはまるのでしょうか?
>>825 非推奨かも知らんが「〜」の部分にスクリプトを書ける。
つまり<IMG onclick="〜">としてたんだろうからその「〜」を持って来ればいい。
828 :
808:04/01/23 00:43 ID:/ZkceTiU
俺を無視するな
>>808 やっぱりユーザをだまそうとしてるわけじゃない。そういう
のはキモいよ。あんたのページのコンテンツがよくて読み手が
それに価値を見出してくれるなら「ぜひ協力してここをクリック
してください」と書けば協力が得られるでしょ。ああ、なんて
Web製作板らしい議論なんだ(ry
830 :
808:04/01/23 01:00 ID:/ZkceTiU
。 。 。。
・゚ ゚・。 。・ ゚・。
。゚ ・。 。・゚ ゚。
。゚ ・。 。 ゚ ゚。
。 ゚。 。゚ ・。
゚ (ノД`)
>>827 もしかしたら書き方を間違っているのでしょうか?
<img src="./image/aaa.gif" width="12" height="12" border="0" onclick="openWin()">
現在こうなっています。
>>831 なら、
<a href="javascript:openWin()"><img src="./image/aaa.gif"略></a>
だな。
833 :
831:04/01/23 01:31 ID:???
>>831-832 <a href="..." onclick="open('', 'pop')" target="pop"> の方が良い
835 :
831:04/01/23 02:44 ID:???
>>834 なるほど。もしよければ何故その方が良いのか教えてくださいませんか?
>>835 JSオフ状態でもまったく動作しない、ということがないから
ついでに
>>834のはonclick="open(...);return false;"にした方が良い。hrefタグの方も動作してしまうから。
……href属性、だった。スマソ
なるほど、JavaScriptがOffでも似た動作するのか。
目から鱗。ありがとう。
>>836 JSオフで動かなかったらユーザーの迷惑だろ!
この808!
>>836 これってつまり
<a href="..." onclick="open(......); return false;">
ってことですか?
ちょいと便乗質問。
>>834 > <a href="..." onclick="open('', 'pop'); return false;" target="pop">
コレだとjavascript有効の人も href属性が優先されちゃいませんか?
window.openに色んなオプション(アドレスバー消したりサイズ調整したり)
付けたい場合には使えないですよね。
だから return false だって・・・
>>841 基本的にはイベントハンドラがfalseを返すと、
そのイベントのデフォルトアクションはキャンセルされる(可能な場合)。
844 :
841:04/01/23 19:15 ID:???
聞くだけってのもアレなので、実際に書いてみた。
function click_to(uri, target) {
open(
uri,
target,
'top=10, left=40, width=500, height=500, '
)
return false;
}
<a href="
http://www.google.com/" onclick="click_to('
http://www.google.com/');" target="_blank"><img></a>
上記を実行してみたんだが、やっぱりhrefが優先されてしまいまする。
845 :
841:04/01/23 19:19 ID:???
ごめん、なんか見難い&コード間違ってたのでもう一度。
function click_to(uri, target) {
open(
uri,
target,
'top=10, left=40, width=500, height=500, '
)
return false;
}
<a href="
http://www.google.com/" onclick="click_to('
http://www.google.com/', '_blank');" target="_blank"><img></a>
846 :
841:04/01/23 19:26 ID:???
スイマセン。書き忘れです。
>>844-845 では return false; 書いてませんが、自分のでは書いてます。
んで、解決しました。↓実際の自分のコード。
<a href="
http://www.google.com/" onckick="click_to('
http://www.google.com/', '_blank'); return false;" target="_blank"><img></a>
どうやっても動かねーよ、と思って、よーく見直してみたら、
onclick → onckick
でした。。。。。。。。。。。。。。orz
そりゃ動きませんよね。。。。。。。生まれなおして来ます。。。。。。。。
入力フォームの複数のテキストボックスに対して、同じ数値入力チェック関数を
走らせたいと思っています。下記のように各テキストボックスをname="array[1]"
のように名前を指定して、それを配列として処理しようとしたのですが、処理が
走りませんでした。配列の指定の仕方等がおかしいのでしょうか?
そもそも考え方が間違っているのかもしれませんが…
どなたかご教授いただければと思います。
//チェック関数部
function inputCheck(){
for(i in document.inputForm){
if(isNaN(document.inputForm.array[i].value) == true){
alert("数値を入力してください。");
document.inputForm.array[i].focus();
}
}
}
//フォーム部分
<form name="inputForm">
<input type="text" name="array[1]">
以下繰り返し
>>847 nameは重複のない英字で始まる英数字の列。だから多少面倒でも
たとえばname="array1" ... name="array20" とかにして、ループ側で
for(var i = 1; i <= 20; ++i)
if(isNaN(document.forms.inputForm.elements['array'+i].value) ...
とする(「==true」ってのは冗長だろ)。
document.inputForm[ 'array[' + i + ']' ].value
>>849 だからnameに記号を入れたらHTMLの規格違反になるんだってば。
この場合はわざわざ違反しなくたって済むんだから…
851 :
831:04/01/23 23:39 ID:???
何度試しても動作しなくなったのですが
>>836の記述を
もう少し具体的に書いていただけませんでしょうか?
>>832のソースだと動作できました。
しかし
>>836の記述が少しわかりません。
現在は<a href="javascript:openWin()"><img src="./image/aaa.gif"略></a> です
>>836の書き方は<a href="aaa.htm" onclick="open('リンク先html','変数名',オプション設定'); return false;">
これであってますか?なかなか動かないので検証よろしくお願いします。
>>850 お客様、トマトソースはいかがでしょうか?
>>851 こうかな。
<a href="aaa.htm" onclick="window.open('リンク先html','変数名',オプション設定'); return false;" target="...">
~~~~~~~~ ~~~~~~~~~~
JavaScriptOnなら、
onclickで新規ウィンドウオープン。return falseがあるのでhrefとか無視して処理終了。
JavaScriptOffなら、
onclickを無視してhrefとtarget属性によって新規ウィンドウオープン。
たぶんこんな所だろう。
>>853 それだと右クリックからの「新しい(ry」で開くと崩れる罠w
フレーム無きゃtarget属性は無くてもいいやね。
>>856 できるだけ別窓を開かせたいんならtargetは必要でしょ。
859 :
Name_Not_Found:04/01/24 01:44 ID:KvQr+GYC
自分はまだJavaScriptを学んでいないんですが、質問させて下さい
読み込むたびに色の変わるサイトを作りたいと思っているのですが、
ソースの一部をランダムに入れ替える、というよなことは
JavaScriptによって実現できるんでしょうか。
861 :
859:04/01/24 02:13 ID:???
>860
ありがとうございます。それを応用して、例えば
スタイルシートのリンク先を入れ替えることで背景色を変える
なんてこともできますか?
すみません・・・
定義した画像or文字にマウスポインタを置くと
別の場所に説明などが出るスクリプトを教えていただけませんでしょうか・・・
>>863 ただ完成品が欲しいだけなら
検索「javascript 説明を表示 サンプル」
>>863 例えば下のような感じで出来る。
<head>
<script type="text/javascript">
var exp = new Array();
exp[0] = "説明文0";
exp[1] = "説明文1";
function ShowExp(n) {
EX.innerHTML = exp[n];
}
function HideExp() {
EX.innerHTML = "";
}
</script>
</head>
<body>
<span onmouseover="ShowExp(0)" onmouseout="HideExp()">ここにマウスを乗せると説明文0が出る。</span>
<span onmouseover="ShowExp(1)" onmouseout="HideExp()">ここにマウスを乗せると説明文1が出る。</span>
<div id="EX"></div>
</body>
866 :
859:04/01/24 02:56 ID:???
>862
ありがとうございます。どうやらかなりの高等テクのようですね・・・。
自分のような程度の者は手を出さない方が良いようです。
どうもいがとうございました。
>>858 崩れるってそいういうことか。まぁ大したあれでもない…
自作オブジェクトのプロパティに関数の引数からアクセスするには
どうすればいいのでしょうか?
例えば連想配列を使った
var foo2 = new Array();
foo2 ['x']=50;
foo2 ['y']=100;
function alert_zahyo2(axis){
alert(foo[axis]);
}
onclick="alert_zahyo('x')"
は動作するのに、オブジェクトを使用した
function zahyo(x, y){
this.x = x;
this.y = y;
return this
}
var foo = new zahyo(50 , 100);
function alert_zahyo(axis){
alert(foo.axis);
}
onclick="alert_zahyo(x)"
はxが未定義だと怒られます。
よろしくお願いします
870 :
869:04/01/24 14:13 ID:???
上記連想配列サンプルの
alert(foo[axis]);
は
alert(foo2[axis]);
でした。スマソ
871 :
869:04/01/24 14:37 ID:???
何度もスマソ
もう1ケ所間違えてたので再度質問を書き直します。
よろしくお願いします。
自作オブジェクトのプロパティに関数の引数からアクセスするには
どうすればいいのでしょうか?
例えば連想配列を使った
var foo = new Array();
foo['x']=50;
foo['y']=100;
function alert_zahyo(axis){
alert(foo[axis]);
}
onclick="alert_zahyo('x')"
は動作するのに、オブジェクトを使用した
function zahyo(x, y){
this.x = x;
this.y = y;
return this
}
var foo = new zahyo(50 , 100);
function alert_zahyo(axis){
alert(foo.axis);
}
onclick="alert_zahyo(x)"
はxが未定義だと怒られます。
よろしくお願いします
>>871 そら x って変数が未定義だからだろ
さらに foo には axis って名前のプロパティは無いじゃん
function alert_zahyo(axis) { alert(foo[axis]); }
alert_zahyo('x');
873 :
Name_Not_Found:04/01/24 16:10 ID:vhEcPRS1
>>465,467
で『setTimeoutでオブジェクト渡しできる』って書いてあるのを見て
やろうとしているのですが、うまく出来ません。どのようにしたら
オブジェクト渡しが出来るのでしょうか?
function func(o){
alert(o);
}
var obj = new Array(1,2,3);
setTimeout("func(" + obj + ")", 1);
-------------
alert(o)の部分では、配列の1番目である1しか表示されず、オブジェクト
渡しが出来ていません。
874 :
849:04/01/24 16:42 ID:???
>>850 inputのname属性はCDATAだからHTML規格上は問題なく使える。
?
877 :
876:04/01/24 17:48 ID:???
……と思ったが、俺の勘違いだった。スマソ
878 :
863:04/01/24 17:59 ID:???
>>865様
何度もごめんなさい、説明を複数行テキストフォームに出す方法
ってないでしょうか。。いろいろ調べてみたんですが全然分かりませんでした(つД`)
>>873 > setTimeout("func(" + obj + ")", 1);
setTimeout("func(1,2,3)", 1);
と、解釈されるので、1と表示される。
関数オブジェクト渡しとは、
var obj = new Array(1,2,3);
function func(){
alert(obj);
}
setTimeout(func, 1);
880 :
Name_Not_Found:04/01/24 19:24 ID:xJX1tHV4
881 :
Name_Not_Found:04/01/24 19:45 ID:vhEcPRS1
>>879 ありがとうございます。
"関数オブジェクト渡し"とはそういう意味なんですね。
結局グローバルなものしか渡せないということか...。
有り難うございました。
>>880 ウィンドウの左端を
( (ウィンドウ全体幅) - (子ウィンドウの幅) ) / 2 にすれば良いんじゃネーノ?
884 :
Name_Not_Found:04/01/24 22:23 ID:vhEcPRS1
上の
>>844のようなスクリプトで、
開いたウィンドウを閉じる前に新たなウィンドウを開いた場合、
ウィンドウが元々開いていたページの下に潜ってしまうのを回避する方法はありますか?
すごくわかり辛い表現で申し訳ないのですが、よろしくお願いします。
そうそう。そもそもグローバルなものがないから。
888 :
Name_Not_Found:04/01/25 01:17 ID:0JrRlwmh
>>882 そうするとブラウザの解像度によって子ウィンドウの位置が
かわったりしないのでしょうか?
私は1024×なんとかですが(忘れました)
もっとワイドな人だと・・・
>>888 ヴォケ
ソースもろくに見れん香具師が知ったようなこと言いやがって。
window.screen でググれや。
891 :
880 :04/01/25 02:49 ID:0JrRlwmh
はぁ〜何時間もいろいろ検索しましたら、解説してあるサイトを見つけました。
ありがとうございました。
892 :
Name_Not_Found:04/01/25 04:48 ID:GmSm9ceU
質問です。
72個x3値(0,1,2)のデータをクッキーに保存させたいのですが、
エンコードデコードの手間や、クッキーのデータ量を考えた場合どのような保存方法がいいでしょうか。
案1.値を順番にベタ保存
0010022011221・・・(72桁まで)
案2.案1のを3進数として27進数(0-9A-Q)に変換するように
3桁ごと 000=0 ... 222=Q と割り当てる
12FKAE・・・(24桁まで)
他にもあると思いますがいい方法があれば教えてください。
>>891 で、タブブラウザでは苦労が報われないワケだ。(プ
まー猿知恵はヤメろってこった。
>>892 データ中に日本文字は含まれるの ?
(日本文字がなくて, PC user に読まれても良いのなら簡単.)
>>895 おまえは読解力も著しく欠如しているんだな。
4月からもう一度小学校に通えや。
>>894 なんでスレ違いなんだ。JavaScriptからクッキーにアクセス
できるんだからあってるだろ。
>>892 72文字なんて楽勝だからそのままがいいんじゃないの。沢山
食べさせるなら手間かけて24文字にする意味もなくはないかも。
HTMLとJSで画像を回転させることは可能ですか?
imgを45度くらいに傾けたいんですが。
最初から45度傾けたimgを用意するしかないんでしょうか。
角度とか条件があるんで、可能であればJSで制御したいのだけど。
>>895 ユーザに読まれても構いません。
全角文字も使う予定ですが、参考に教えて頂けたら幸いです
>>897 ではそのままベタで記録しようと思います。
皆様ありがとうございました。
>>901 >>897 が言うようにデータが 72 文字程度なら
encode とか考える必要はないと思ったの.
(区切り文字をどうするかを考えるだけ)
ただし,日本語文字がデータに含まれるのなら
文字化け対策を考える必要性があるかもしれません.
全角はencode関数使うつもりです。
全角文字100文字程度を想定していますので制限の4kb(?)には収まりそうです。
ありがとうございました。
nullは放置すれ
window.onblur = function() { window.focus() }
908 :
Name_Not_Found:04/01/25 17:41 ID:e3R0f/6q
質問
数十枚ある小さなサムネール形式の写真をクリックすると、別ウィンドウで表示して
説明するスクリプトを書いたのですが、1つわかりません。
写真説明htmlは、その写真の枚数分作る必要があるのでしょうか?
これだと手間がかかってしまうので、1つのhtmlで「次の写真」「前の写真」のリンクを押すと
説明文と写真だけを差し替える方式があれば楽なのですが。
>>908 別ウィンドウに画像と説明をdocument.write()すればいいと思うが
スクリプトが無効な環境に対しても配慮したいなら
枚数分html作った方がいいだろうと思う。
>>909 ありがとうございます。早速それについて調べてみようと思います。
あと、もしかしたらスレ違いかもしれませんが、みなさんの経験として
スクリプト無効な環境というのは実際多いのでしょうか?
>>909 しつも〜ん.
" スクリプトが無効な環境 " とは,どのようなものでせうか ?
>>910 少なくとも俺はJavaScriptを常時無効にしている。
で、必要に迫られたときだけ、渋々有効にしている。
>>908-912 思うに、数十枚ぶんの説明文は手もとで持っておき、
画像だけ差し替える(説明はinnerHTMLで書き込む)のが
一番速くて快適だと思うよ。HTMLわけるとHTML読んで
続いて画像読むのでのろいし。JavaScript OFFな人
用にのろいHTMLも用意してONの人はさくさく、これが
いいんじゃないかな。「前」「次」で切り替えるなら
1つ分先読みしておくという手があって、これだとさらに
さくさく快適だよね。
>>910 の回答の致命的欠陥をハケーン:
JavaScript off の場合,切り替えられる画像は限られている.
(event handler 内の記述だけで 処理しようとでも言うのだろうか... ???)
>>912 ありがとうございます。やはりそういう環境の方もいらっしゃるわけですね。
教えていただけたdocument.write()の件ですが、なかなか該当するサイトを見つけることができませんでした。
この件に関しては、どこを参考にすればよいでしょうか?
別ウィンドウに表示したいものは「サムネイルの画像(大)」「写真説明文」「前の写真」「次の写真」です。
画像や説明文をどこに置けばよいのかということと、前と次の取得の方法がわかりません。
サンプルがあればよいのですが、なかなかこの条件の物が見つかりませんでした。
汎用性があると思うのですが、あまり利用されていないようです。
アドバイスよろしくお願いいたします。
JavaScriptがOFFだったらイベントハンドラ自体効かないので騙されないでね。
>912
素朴な疑問なんだが、なんであんたはこのスレにいるんだ?
煽りではなく純粋にそう思った。
918 :
908:04/01/25 18:30 ID:???
レスがされているのを書き込んだ後気づきました。
>>913 >思うに、数十枚ぶんの説明文は手もとで持っておき
これを具体的に教えていただけませんでしょうか?数十枚の写真は一度に公開する予定なのですが
説明文をローカル側に保存しておいて、更新のたびに書き換えるという意味でしょうか?
>>914 ということはユーザーがoffの場合、切り替え時は通常のhtmlリンクを使わないといけないということですね。
>>916 はい。javascriptの機能全てが使えないということですね。
>>916 僕は騙すつもりなどないのさ.
むしろ,正確さを求めて event handler の話を持ち出したんだけどな〜.
( あらかじめ meta 指定している事が条件だけど,
event handler は attribute 扱いなので js off は関係ないはず)
勘弁してください。
921 :
Name_Not_Found:04/01/25 19:37 ID:cYgjBaXr
<SCRIPT language=JavaScript>
<!--
function Jump(n){
n=0;
n=n+1;
document.images['画像'].src="画像"+n+".jpg";
}
// -->
</SCRIPT>
で、関数Jumpを呼び出すたびに、画像0→画像1→画像2と
変更させたいのですが、
毎回、nの初期値に0を代入してしまうためうまくいきません。
どこか別の箇所で初期値を設定する方法を教えてください。
919糞null
> js off
日本語でお願い♪
>>921 var n = 0;
function Jump()
{
document.images['画像'].src = "画像" + n + ".jpg";
n++;
}
924 :
Name_Not_Found:04/01/25 19:56 ID:ZDLRNG72
別窓が出るときにスライディングしながらでるやり方を
教えてください。
検索したら、GOLIVE?にはワンタッチでそういうことできる
ツールがあるみたいです。
>>922 " 919糞null " とか言われて,
まともに答えるほど僕はお人好しではありませぬ.
お願いだから,一度しんでくで !!!
嘘を教えるのは勘弁してください。
JavasprictからJavaappletを呼び出すにはどうすればいいのでしょうか?
HTMLで呼び出すとこういう表記です
<HTML>
<applet archive=goodshape.jar code=mori.go.GoodShapeApplet width=340 height=340>
<PARAM NAME=init VALUE="W">
<PARAM NAME=moves VALUE="B">
<param name=startupmessage value="test">
</applet>
</HTML>
O'Reillyの『JavaScript』第3版の p207、静的スコープとクロージャに関する部分について
質問させて下さい。
---------------------------------------------------------
var x = "global";
function f() {
var x = "local";
function g() {
alert(x);
}
}
// "undefined"が表示される。f()はまだ呼び出されていないので、
// ローカル変数 x は Call オブジェクトにあるが、値がまだ設定されていない。
f.g(); //■1… undefined と表示される(はず)
// f()を呼び出すことで、変数を初期化する。
f();
// 入れ子の関数を呼び出すことで、f のローカル変数の値を取得する。
f.g(); //■2… local と表示される(はず)
---------------------------------------------------------
こういうコードがあるのですが、
929 :
928:04/01/25 20:58 ID:???
1.g() は f() のプロパティではなく、内部変数のはずなのに、
どうして f.g() という方法でアクセスできるのでしょうか?
2.実際のブラウザでは、どちらも著者の想定した動きをしません。
Mozilla 1.6 では、■1、■2とも undefined が表示され、
IE6 では、■1で
「オブジェクトでサポートされていないプロパティまたはメソッドです」
という実行エラーとなります。
どちらが正しいのでしょうか?
3.function g() の定義部分を、var g = function() と変えると、
Mozilla でも IE でも、
「オブジェクトでサポートされていないプロパティまたはメソッドです」
というエラーになります。どうしてこのような挙動の違いが出るのでしょうか?
以上です。どなたかよろしくお願いいたします。
930 :
Name_Not_Found:04/01/25 21:09 ID:cYgjBaXr
>>923 var n=0と設定しても毎回0が代入されてしまうみたいです
>>930 そのスクリプトだと関数に引数は必要ないように見えるが。
>>923でnを削ってるがそれは確認済み?
もちろん呼び出し元もjump()で。
>>930 毎回って、どういう意味?
関数 Jump() を呼び出すたびに、という意味なら、
>>923でちゃんと動くはず。
ページをロードするたびに、という意味なら、JavaScript でできる範囲じゃない。
Perl や PHP 、サーバサイド Java などが必要になる。
933 :
Name_Not_Found:04/01/25 21:33 ID:cYgjBaXr
いけました。
引数なしでやればいいんですね。
nを&nに変えてみたりして動かなくて
Javaにポインタの概念とかあるのかなって悩んでました・・・
>>928 その本は JavaScript1.2 について触れている本ですが
このバージョンはECMAScript初版の策定中にリリースされたもので
その後のECMAScript/JavaScript/JScriptとは互換のない仕様や
現在は破棄(予定)となっている仕様が含まれています。
JavaScript/JScriptにはさらに文書化されていない内部(拡張)仕様等もあり
知らないうちに実装が変わっていることもありえるでしょう。
1は、Netscape4.0-4.05(JavaScript1.2)はそういう実装だったのかもしれません。
2と3については、「どちらもそういう実装であり、間違いではない」としか言えません。
(ECMAScript仕様上はIEの挙動になるでしょうが、
Mozillaの挙動のような拡張も別に禁止されないでしょう。)
>>927 「呼び出す」という意味が不明だけど何もないところに
そういうアプレットを出現させるんだったら別窓や別フレーム
にしてdocument.write()でそういうHTMLを書き出すんでしょね。
>>918 ホレ。別窓きらいなので自分の窓内だけのデモ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var pos = 0, msg = ['テスト0','テスト1','テスト2','テスト3'],
file = ['t0.png','t1.png','t2.png','t3.png'];
function mv(d) {
if(pos+d < 0 || pos+d >= msg.length) return;
pos += d; document.getElementById('i0').src = file[pos];
document.getElementById('p0').innerHTML = msg[pos];
}
</script>
</head><body>
<div><img id="i0" src="t0.png"><br><p id="p0">テスト0</p></div>
<div><a href="javascript:mv(-1)">前<a>|<a href="javascript:mv(1)">次<a></div>
</body></html>
例えば
<a href="a.html" onClick="return false;">
ってやるとクリックしてもa.htmlにはジャンプしないと思うんですが、
家のIE6ではジャンプしてしまいます。なにか原因って考えられますか?
JavaScript OFF とか。スペルミスとか。
それでも駄目ならIE再インストール。
939 :
929:04/01/25 22:34 ID:???
>>934 ありがとうございました。
とくに1.の疑問が非常に頭を悩ませていました。非常に奇妙な挙動だと思います。
本のどこを見ても、こういう構文が許される理由が示されていないのですから。
現在ではIE が正しいということで、それに従い、f.g() という使い方は
しないことにします。
それにしても、JavaScript 1.2は、どうして f.g() という構文を許したのでしょう?
Callオブジェクトの実装の仕方に依存する、裏技のようなものかと想像しますが。
どなたかご存知の方がいらっしゃったら、お教えください。
940 :
936:04/01/25 22:44 ID:???
>>937 いや、他のパソコンやブラウザでは期待通りに動くんです。
やっぱり家のIEがおかしいだけですかね?
ひょっとして細かいバージョンの違いで挙動が違うのかと思ったもので。
有料のJavaScriptってあるの?
>>941 わざわざお金払ってそれをWebに公開するの?
944 :
941:04/01/26 01:27 ID:???
>>942 でしょ。コンパイラじゃなくてインタプリタなんだし。有料cgiはいくらでも見るが。
JS売るような話があって、ほんとかよ!と思って調べてたわけです。
ただ、初心者向けに、有料でHP構築します、ってのはあるね。
JSが含まれると値段上がるんで、それを有料と言うべきかは微妙だけど。
945 :
941:04/01/26 01:29 ID:???
「でしょ」は、公開したら売り物にならないよね、って意味で。
JavaScriptはWebページで使うだけじゃなくて、
例えばDreamWeaverは機能拡張するのにJavaScriptを使うのだけど、
便利な機能だったらお金払ってもいいな、って思う。
Windows の Active DeskTop でも使えそうだね。
>>939 「構文は」ちっとも間違っていない。関数というのはオブジェクトだし
function f() { ... }
とやって関数を定義するのは
var f = function() { ... }
とやって定義するのと同じことだし、オブジェクトにプロパティをつける
ことはいくらでもできるから。ただ、gというプロパティが作られるという
のは当時の処理系固有の動作と思われ。
えー、次スレは975越えたら立てますね。テンプレは同じでいいね?
>>939 JavaScript1.2は、関数を入れ子にできるようにした最初のバージョンだったから
当時はそういう実装でそのへんやりくりしていたものと思われる。
でもあくまで非公開仕様であり常に廃止・修正予定、みたいな。
>>948 > 当時の処理系固有の動作
JavaScript1.3/1.5もf.xやf.gというプロパティは作られる。
>>928 のコードだと f.g() で f.x がアラート表示される模様。
まあ、やはり「処理系固有の動作」なのでどうでもいいことだが。
# 1.3と1.5でも若干挙動が違うな。
951 :
Name_Not_Found:04/01/26 10:48 ID:okT2tJ7h
一番後ろの配列を削除しているのに、pushすると次の添え字のところに値が入ってしまいます。
a = new Array(1,2,3);
delete(a[2]); // aの最後のa[2]を削除
a.push(9); // a[2]にではなく、a[3]に9が入ってしまう
a[2]を削除してa[0]、a[1]だけになっているはずなのに、pushするとa[3]に値が
入ってしまいます。たしかに、deleteの後のa.lengthは3のままなのですが、
こんなもんなんでしょうか?
これもJavaScriptのバージョンが変わると変わってしまうのでしょうか?
>>951 そんなもんです。 delete は Array オブジェクトの length を変更しません。
push は length を参照するのでそういう動作になります。
末尾を削除して長さも変更したいなら、 pop を使いましょう。
frames[n]のnは変数にできないのでしょうか?
for(i=0; i<=5; i++)
{
if(document.forms[vInter].elements[i].checked == true)
{
alert(i);
setTimeout("parent.Bottom.frames[i].location.href = 'hoge.html'",iTIME);
iTIME = iTIME + iTime;
}
}
これだとエラーになってしまいます(IE6)
6行目を↓にするとエラーは出ません
setTimeout("parent.Bottom.フレーム名.location.href = 'hoge.html'",iTIME);
setTimeout("parent.Bottom.frames[0].location.href = 'hoge.html'",iTIME);
parent.Bottom.frames[i].location.href = 'hoge.html';
>>953 "parent.Bottom.frames["+i+"].location.href = 'hoge.html'"
>>954 そういう事だったんですね
ありがとうございます
956 :
Name_Not_Found:04/01/26 12:04 ID:5sWPkHik
こんにちは。
ホームページに縦のフレームを使っています。
左には、メニューと言う感じになっています。
そこで、左フレームにあるメニューの1つの項目を
クリックしたら、ちょっと小さなサブメニュー?をクリックした項目の下に
表示したいんですが、どうも引っかかりません。
どうかよろしくお願いします。
958 :
Name_Not_Found:04/01/26 12:13 ID:5sWPkHik
そういうのを階層って言うんですね。
ありがとうございます。
まさに、実現したかったことでした。
わかりやすい解答ありがとうございました。
959 :
928:04/01/26 12:13 ID:???
>>948,
>>950 ありがとうございます。
いま for in で調べてみたら、確かに Mozilla では f.x, f.g というプロパティが
できていました。IE ではできていませんでしたが。
しかしこの Mozilla の JavaScript の挙動は怖い気がします。f に外部からプロパティ
x, g を付加した時、内部変数と名前空間が衝突してしまう気がします。
今試したところ、問題は起こらないようでしたが。
f.g = "foo";
f();//この関数の実行後に、f.g が書き換わっていないか試したい。
alert(f.g);//"foo"と表示された。
でもやはり、余計なプロパティを生成しない IE の方が使い勝手が良いと思います。
f のプロパティを for in で処理しようとすると、内部変数と同じ名前のプロパティが
意図せずに生成されてしまっているので、邪魔だと思います。
960 :
928:04/01/26 12:15 ID:???
ところで、この明らかに実装依存と思われる現象に私がこだわったのには理由が
あります。
>>929 の 3.の現象が気になったのです。つまり、
g() の定義を、function g() とした場合と、 var g = function() とした場合とで
挙動が違ったことです。Mozilla のみですが。
function g() の場合
alert(f.g); // "function g(){ alert(x); }" を表示
f.g()//undefined
var g = function() の場合
alert(f.g);//undefined
f.g()//エラー f.g is not a function
この挙動は f() の実行の前後で変わりませんでした。
些細なことですが、function g() と var g = function() とで挙動が異なるのは
初めての経験でした。自分の見落としていたポイントがあるような気がしたのです。
まあ、function g() とした場合に、コンパイル時に g の値が定まっているのは
当然かもしれませんが。
>>960 > 些細なことですが、function g() と var g = function() とで挙動が異なるのは
> 初めて
( ´,_ゝ`)プッ
だいじょぶ?
最初から勉強しなおしたほうがいいよ
>>960 ぜーんせん分からない。いったいなんで「f.g()」なんていう呼び出しを
したいわけ?オブジェクト作るなら普通にコンストラクタとしてfを書けば
いいと思うんだけど。
963 :
Name_Not_Found:04/01/26 13:13 ID:okT2tJ7h
>>952 ありがとうございます。
deleteはArrayオブジェクトのlengthを変更しないんですね。
また、pushはlengthを参照して動いているんですね。知りませんでした。
でもJavaScriptのことだからいずれ変わる可能性はありますよね?
いいえ。変わりません
>>962 別に f.g() という呼び出しの実現が目的でやってることじゃないと思われ。
966 :
928:04/01/26 13:39 ID:???
>>961 確かに勉強しなおしたほうがいいと思います。
割と最近まで、
function g() (FunctionDeclaration) は
var g = function() (FunctionExpression) の syntactic sugar だと
誤解していましたので。
この二つの構文で挙動が違うのは、他にどのような場合が考えられるのでしょうか?
>>928の場合、どちらも g は f のローカル変数となる点では変わらないです。
再帰などで影響があるかと思いましたが、そうでもないようです。
(影響があるのは無名関数に名前をつけた場合ですよね?)
http://www.interq.or.jp/student/exeal/dss/ejs/1/2.html >>962 f.g() という呼び出しをしたいわけではありません。JavaScriptの動作原理を
理解するために、この現象を考察することが助けにならないかと考えたのです。
もう少しいうと、
・JavaScript 1.2 のスコープ・チェインの仕様と、現在の仕様の違い
・FunctionDeclaration と FunctionExpression の挙動の違い
をきちんと整理したいと考えています。
> しかしこの Mozilla の JavaScript の挙動は怖い気がします。f に外部からプロパティ
> x, g を付加した時、内部変数と名前空間が衝突してしまう気がします。
JavaScript1.3(NN4.0x, 4.x) だと、実際に衝突してくれたりするので
そのへんに対応させる場合は注意が必要かもしれません。
ECMAScript仕様とか読むと出てくるんだけど、Activation Object ってわかる?
関数の実行時にスコープチェーンの一番近いところに入ってくる(つまり真っ先に参照される)
仮引数や入れ子の宣言された関数、ローカル変数をプロパティに持つオブジェクトなんだけど
JavaScript1.2/1.3では恐らくFunctionオブジェクトにこの役割をさせていると思われる。
>FunctionDeclaration と FunctionExpression の挙動の違い
これは単純に評価されるタイミングが違う。
delete
969 :
928:04/01/26 14:14 ID:???
>>967 > JavaScript1.3(NN4.0x, 4.x) だと、実際に衝突してくれたりするので
Netscape 4.0x, 4.x は、野心的だが、非常に実装が汚いと聞きました。
それは <layer> タグなどのことでしたが、JavaScript 1.3 もそうだったのですねえ。
> ECMAScript仕様とか読むと出てくるんだけど、Activation Object ってわかる?
O'Reilly のサイ本の Call オブジェクトのことですね。
> JavaScript1.2/1.3では恐らくFunctionオブジェクトにこの役割をさせていると思われる。
やはりそうでしたか。そういう実装だったなら、Closureオブジェクトが役に立った
でしょうね。
Closure オブジェクトが創設、廃止された理由を知りたかったのですが、このあたりが
鍵のように思います。
> >FunctionDeclaration と FunctionExpression の挙動の違い
> これは単純に評価されるタイミングが違う。
このタイミングの違いが、はっきりと大きな違いになるケースを知りたかったのです。
コーディングルールとして、原則として FunctionExpression を用いるようにして
おりましたので。
Activation オブジェクトが Function オブジェクトそのものだったなら、何か
影響が出そうです。
現代のブラウザだとどうなのだろう?
>>967 うーん、分からないんだけど、Functionオブジェクトにそれをさせると
再帰のときに困ったりしないのかなあ。
あとそもそも、問題が起きるのは関数オブジェクトにプロパティを書き
込む場合なわけで、普通そういう危ないことはしないと思うし、JS1.5から
はちゃんとECMAに準拠してるわけでしょ。まあ探求するのはいいんだけど。
ECMA的には、var f = function(...) { ... }; と funciton f(...) {... }
は同じことだよね。規格を見るとそう読めるんだけど(何か読み落してる?)
>>969 > JavaScript 1.3 もそうだったのですねえ。
まあ関数の入れ子が標準化される前の仕様だから。
> このタイミングの違いが、はっきりと大きな違いになるケース
FunctionDeclarationはコード評価に先だって評価されるから
先頭に書いても末尾に書いてもコード中のあらゆるところで参照できる。
FunctionExpressionは式評価のタイミングで評価され、評価前は参照することができない。
こんなんで参考になるかなぁ。
f();
var f=funciton(){ alert('fuga') }
function f () { alert('hoge') }
f();
なるほど、名前fが利用可能になる時点が違うのか、納得しますた。
x.js のなかで y.js で定義された f という関数を使いたいときはどうやれば
呼び出せるのですか?
>>973 y.js を先に読み込んでれば、普通に f() で呼び出せるだろ。
975 :
928:04/01/26 14:54 ID:???
>>971 なんと、こんなシンプルなところを今まで理解していなかったとは…。
ありがとうございました。
ところで、これ↓は動きましたが、
<script type='text/javascript'>
f()
function f(){ alert("foo!"); };
</script>
こちら↓は動きませんでした。(f is not defined)
<script type='text/javascript'>
f()
</script>
<script type='text/javascript'>
function f(){ alert("foo!"); };
</script>
こういう仕様なのですねえ。
>>975 それはscript要素毎にコード評価を行っているから。
どっちかというとブラウザとかHTMLの仕様。
>>974 htmlファイルからの javascript の読み込み方しか知らないんです。
.jsファイルから.jsファイルを読み込むにはどうすればいいのですか?
>>977 .js ファイルから .js ファイルを読み込むなんてことはできないけど、
<script type='text/javascript' src='y.js'></script>
<script type='text/javascript' src='x.js'></script>
htmlにこう書けば x.js からは y.js が使える。
>>980 > .js ファイルから .js ファイルを読み込むなんてことはできないけど、
そうなのですか。
ちょっと、設計を考え直します。
そんじゃ埋めに入るか
javascript:confirm('記念カキコしていい?')
( ´ー`)y―┛~~
うめ
たて
まっせ
Umetaterupo
みんなで埋める、JSスレ
993 :
Name_Not_Found:04/01/27 23:19 ID:jvGsmwlI
梅松
埋めながらageるな!!!
埋めは影の戦い