+ JavaScript の質問用スレッド vol.21 +
953 :
Name_Not_Found:03/09/06 23:04 ID:c2d4NkNj
すみません、フレームを2つ作ったとして、
一方のフレームの<script>〜</script>の中にabcという変数があるとき、
もう一方のフレームからその変数の値を得ることは出来ますか?
以前質問したものです。
ユーザの手動で写真を順に閲覧できるページが必要で、
こちらで教えていただいたことを参考にし、
>>956のようなソースを書いたのですが、画像ファイルの名前を、
1.jpg 2.jpg 3.jpg……9.jpg 10.jpg 11.jpg……
のようではなく、
001.jpg 002.jpg 003.jpg……009.jpg 010.jpg 011.jpg……
のようにできる方法があれば、ご教示ください。
Numの値が9以下の場合は"00"を付加、10〜99の場合は"0"を付加、
という風にやればよいのかな、と思い、色々試してみたのですが、
うまくいきません。
よろしくお願いします。
956 :
955:03/09/07 00:02 ID:???
>>955のソースです。
#HTML
<script type="text/javascript" src="swapimg.js" charset="Shift_Jis "></script>
</head>
<body>
<h1 id="currentNum">商品の見本写真(全15枚)</h1>
<p><a href="javascript:swapImg(-1);">前の写真</a>
<a href="javascript:swapImg(+1)">次の写真</a></p>
<p><img src="1.jpg" alt="商品の見本写真" /></p>
#Javascript
Max = 15;
Num = 1;
d = document;
function swapImg(n){
if(!(Num += n)) Num = Max;
else if(Num > Max) Num = 1;
d.images[0].src = Num + ".jpg";
if(d.all) h1o = d.all.currentNum;
else if(d.getElementById) h1o = d.getElementById("currentNum");
h1o.innerHTML = '商品の見本写真(全' + Max + '枚中' + Num + '枚目)';
}
「Num + ".jpg"」→「String(Num + 1000).substring(1) + ".jpg"」かな。
958 :
Name_Not_Found:03/09/07 07:48 ID:jaU+toxg
スレ違いならすみません。
某音楽サイトで曲の聴けるアイコンをクリックすると、ステータスバーに
javascript:mediaplayerという表示が出て再生できなくなってしまいまし
た。いろんなヘルプを見たのですがよく分からず困っています…。
環境はWin XP、IE6です。分かる方宜しくお願いします。
たぶん、そのページで定義しているJavaScript関数が動かない
わけなんでしょ。そのサイトに質問するべき。
961 :
Name_Not_Found:03/09/07 16:27 ID:G9unMSoR
function plusBonus(x) {
document.status.x.value++;
}
こんな感じのってどうやったらいいですか?
962 :
Name_Not_Found:03/09/07 18:32 ID:5tu/Hv7C
えと、onChangeって連鎖するのでしょうか?
つまり
<TD><SELECT name="item1" onChange="form.item2.value='';">
<OPTION Value=なんたら>
</SELECT></TD>
<TD><SELECT name="item2" onChange="form.item3.value='';">
<OPTION Value=うんたら>
</SELECT></TD>
<TD><SELECT name="item3" onChange="form.submit();">
<OPTION Value=かんたら>
</SELECT></TD>
で、
(1)item1を変えたら、item2、item3を初期値にしてsubmit
(2)item2を変えたら、item3を初期値にしてsubmit
(3)item3を変えたらそのままsubmit
ってー動きになるのかな、ということです。ご経験のある方がいらっしゃいましたらアドバイスをお願いします。
>>961 その質問は頻出だが、
function plusBonus(x) {
document.status[x].value++;
}
965 :
Name_Not_Found:03/09/07 21:49 ID:OLQg7exX
タイマー関数はあるみたいだけれど、Javascriptにsleep関数はないのですか?
既出?
ちょっとそこで寝ててくれるだけでいいのに...
>>965 無かったっけ?
無いならこんなんは?
flag = true;
setTimeOut("flag = false",1000);
while(flag);
967 :
Name_Not_Found:03/09/07 21:54 ID:q/UWyWHC
クイズのコンテンツを作っていて例えば
問題、bookの意味は?
1.本・予約する 2.箱 3.カメラ
で1番をクリックすると勿論正解という趣旨のとぶように設定したんですが
2・3番はランダムで他にもいろんな意味をランダムで出すようにさせてしかも
箱を選んだ時には「箱はboxだろ!」て言う感じのページにとびたいのですが
googleで一生懸命探してjavascriptで
…
url=new Array(e);
text=new Array(e);
url[0]="box.htm";
text[0]="箱";
…
ってやったらなんとhtmもランダムになっちゃったんです(泣
すみませんがhtmは固定できる方法を教えてください
>966
激しくCPU息切れしないかな?
>>968 するだろうね。でも数秒でしょ?
じゃあ、SetTimeOut呼び出し直後でその関数は終了。
続きはSetTimeOutで呼び出したルーチンでやるとか。
SetTimeOut って何?
>969
うーむ。精度は低くて構わないのですが、10秒くらいsleepして欲しいのです。。
やはり n秒後にそのサブルーチン呼ぶようにして、
メインのルーチンは終了させるようなやり方になりますか。
>>971 と、言うか何がしたい訳よ?
何にせよエレガントな設計じゃない気が。
>972
紙芝居みたいなものです。
指定時間後から10秒おきに画像がパラパラと置きかわっていくような感じ。
画像置き換えのメソッドをキューにいれて
タイマーでキックするようなものをとりあえず作ったんですが
sleepがあれば単純に書けるのになぁと思って...
ともかくsleep()はない。それが不満だろうとなんだろうとない。
それ以上どうにもならない。だからsetTimeoutを使うしかない。
>>973 いや、タイマ使った方が良いとお兄さんは思うぞ。
>>975 いや、setTimeOutに「関数名」を「文字列」で渡すという方が
キモイんだけれど。
クラス化してあると渡せないし(関数だけね)、
暗にevalされてんのもどうかと思うし。
せめて関数ポインタ(?)で渡せりゃいいのにって思うよ。
>>976 関数名を文字列で渡す奴がキモイだけだ。関数オブジェクトか関数リテラルで渡せ。
setTimeout(myfunc, 10000);
setTimeout(function() { 後でやる動作; }, 10000);
これでアンタのいう「関数ポインタ」になるだろ。
>>977 まじ!?できんだ!
知らなかったよ〜〜 >976
これってどこにも書いてないじゃん。サンキューやってみる!!
>>977 ところでハッと気がついた。
引数はどやって渡すの?
var a = 10;
setTimeout(function() { var x = a; いろいろ; }, 10000);
でクロージャとかになったりするの?
>>980 なるとも。まさにクロージャこそ関数リテラルの利点。
982 :
Name_Not_Found:03/09/07 23:17 ID:RlPoUBn/
関連する話題だと思いますが、ついでによろしくお願いします。
nameという名前の画像のURLを一秒ごとにsrc1/src2と切りかえる関数を
作ってみたのですが、setTimeoutの行で変数が渡されません。
どのようにすればよろしいでしょうか。
function changeImage(name,src1,src2){
if(changed==0){
document.images[name].src = src2;
changed=1;
}else if(changed==1){
document.images[name].src = src1;
changed=0;
}
setTimeout("changeImage(name,src1,src2)",1000);
}
>>982 setTimeoutに文字列を渡すなと書いてあるのが読めなかったの?
「Mozillaで動くことを確認した、DOCTYPE宣言つきの」サンプル
なら貼ってもいいけど。たぶんIEでも動く(手もとにないからテス
トしてないだけで)。
985 :
Name_Not_Found:03/09/07 23:30 ID:RlPoUBn/
>>984 ありがとうございます。自分で作ってみたのですが、一応動きました。
これでよろしいのでしょうか?
var changed = 0;
function changeImage(name,src1,src2){
if(changed==0){
document.images[name].src = src1;
changed=1;
}else if(changed==1){
document.images[name].src = src2;
changed=0;
}
setTimeout( function(){ changeImage(name,src1,src2) },1000 );
}
そうね、でもchangedをトグルするのはださいと思うんだよな。
あくまで一例だけど。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg(n, s1, s2) {
document.images[n].src = s1;
setTimeout(function() { chg(n, s2, s1); }, 1000);
}
</script>
</head><body onload="chg('i1', 't1.png', 't2.png')">
<p><img name="i1" src="t0.png" alt="test"></p>
</body></html>
989 :
Name_Not_Found:03/09/07 23:35 ID:hCCoFZAT
991 :
985:03/09/07 23:35 ID:???
>>986 ありがとうございます。
確かにこっちの方がはるかにスマートですね。
そろそろ埋め
993 :
985:03/09/07 23:37 ID:???
>>987 確かにそうですね。複数箇所やってみたらダメでした。やっぱ変数changedが問題ありますね。
>>985 長く使うとスタックが底尽きる気もするけど。
そんなことはないのか?
>>994 Mozillaだとまだ尽きたことはないけど。上書きになる場合は伸ばさないとか
そういう実装なんじゃないかな? IEでのテスト、キボーン。
うめうめ。
998 :
Name_Not_Found:03/09/07 23:52 ID:g4rHhAGQ
hunnga-
999 :
Name_Not_Found:03/09/07 23:53 ID:g4rHhAGQ
1000ゲトー
できるかな
できればコレで通算三回目
1000 :
Name_Not_Found:03/09/07 23:54 ID:g4rHhAGQ
やったー
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。