
以下の2つのjsファイルをボタンで切り替えれるようにするにはどういうソースで可能でしょうか?
<SCRIPT type="text/javascript" src="http://www9.ocn.ne.jp/~aki2nd/dhtml/sample/heart …
<SCRIPT type="text/javascript" src="http://www9.ocn.ne.jp/~aki2nd/dhtml/sample/stard …
2つとも動く背景のjsファイルです。
bodyに置けば作動しますので、ボタンを押して2つを切り替えれるようにしたいのですがどうしても方法がわかりません。
どなたかご教授いただけないでしょうか?
よろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
No.4です。
<body>に降らせる物と数を変更できるようなやつを作ってみました。
「FallObj.js」
https://gist.github.com/723150
※ windowリサイズイベントには未対応です。
※ DOM プロセッサが管理しているオブジェクトと、スクリプトエンジンが管理
しているオブジェクト、が混在してそうです。
連鎖を断ち切ってるので、メモリーリークしないと思うんですが、自身
ありません。
※ Firefox、GoogleChrome、IE8(6,7)でOKかな。
サンプルHTML
(とりあえず、文字(Star★、Hart▼)を降らせてますけど、画像でも
大丈夫のはずです。)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Falling Object</title>
<style type="text/css"></style>
<script type="text/javascript" src="FallObj.js"></script>
</head>
<body>
<h1>Falling Object</h1>
<button type="button" onclick="changeHart();">Hart</button>
<button type="button" onclick="changeStar();">Star</button>
<button type="button" onclick="stop();">stop</button>
<p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p>
<p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p>
<p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p>
<p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p><p>↓</p>
<script type="text/javascript">
var Star = document.createElement("span");
Star.appendChild(document.createTextNode("★"));
var Hart = document.createElement("span");
Hart.appendChild(document.createTextNode("▼"));
//最初に星を10個降らせます
var objs = setfalldownobj(Star,10);
function changeHart(){
objs = changefalldownobj(objs,Hart,10)
};
function changeStar(){
objs = changefalldownobj(objs,Star,10)
};
function stop(){
stopfalldownobj(objs);
};
</script>
</body>
</html>
この回答への補足
失礼しました。NO,4さんですね。違う方と思っていました。大変失礼しました。
downloadボタンを押しましたが、これがFallObj.jsでしょうか?
ファイルの使い方がわかりませんでしたので
https://gist.github.com/723150
よりソースをコピーしたものをメモ帳に貼り付け、FallObj.jsとして保存したものを
<script type="text/javascript" src="http//●●FallObj.js"></script>
(●●は自分のサーバーのURL)
として使ってみたのですが、30行目(var objs = setfalldownobj(Star,10);)で「オブジェクトがありません」とエラーが出ます。
やり方が違うのでしょうか?
手の込んだものを掲載頂いてるようなので、是非とも見てみたいのですが、手順に間違いがありますでしょうか?
ご指導お願い致します。
是非とも拝見したいです。
No.4
- 回答日時:
切り替えボタンを押したら、
「画面いっぱいにハートが降ってきたり、雪が降ってきたりするのを切り替える」
を実装出来れば、元のjavascriptにこだわる必要はないのでしょうか?
回答ありがとうございます。そして返事遅くなり申し訳ありません。
知識不足のためいろいろと検証し、やっと皆さんの回答を理解するに至りました。
お一方ずつとも思ったのですが、なかなか切りが悪く、失礼とは思いながらもまとめて御礼をさせて頂くこととしました。
回答拝見させて頂きました。
はい、全くその通りです。
むしろ元のスクリプトにはこだわらない方法で行いたいというのが本音です。
目的はとにかく、画像もしくは文字を降らせる、もしくは上昇させる、というごく単純な動きです。ボタンを押すと画像(文字)が降ってきて、再度ボタンを押すとstopする。画像や文字の部分は変数にしておいて、押したボタンによって画像(文字)の部分を可変できるようにしたいと思っています。
自分で書くことが出来れば何ら問題ないのですがまだ未熟なためネットのものを解読しながら皆さんの回答を参考にさせていただき自分なりに検証しています。
まだまだ検証中(未完成)ですので、サンプルなどありましたら是非ともご教授頂ければ幸いです。
まだしばらくは空けさせていただくつもりですので是非ともよろしくお願いします。
No.3
- 回答日時:
私も見てみました。
そして質問主さんのなぜ切り替えが必要かの意図もちょっと理解。
(人様の暗号化を解くのは、気が引けますが あくまで 勉強で。汗)
js内は タグを作って 配列に15個分x,y座標を つくって、randomで挙動距離を動かし、
setTimeoutで動かしてます。
<div id=><img src= style=position ></div>
setTimeout("・・・", 読み込む間隔);
とまぁ おいといて、
ブラウザが表示された際に、すでに タグが書かれているのと同じ状態に
なりますので、再読み込み(リロード)しなければ、かえれない仕様?なのかな。
私ならば js自体を書きかえるとおもいます。
ところで
iframe で表示してみるというのはいかがでしょうか。
元のページはリロードせず、iframe内だけをリロードする。
また 無茶してみます。こうなりゃ やけです。
(IE8確認しました firefox3.6・Chrome7.0 表示できませんでした。)
でも、iframeも 使えなくなっていくような気がする
【html】
<html><head>
<!-- cssで、位置を指定-->
<style type=text/css>
.kiji{position:absolute;top:5px;left:5px;}
.cssiframe{
border:none;
width:100%;
height:1000px;
position:fixed;top:0;left:0;
}
.mask{position:absolute;top:0px;left:0px;width:100%;height:1000px;}
</style>
<script type=text/javascript>
//intoiframe は body内の<iframe name="intoiframe" ・・・> で私が勝手に名づけたもの
function button(num){ // 引数 num
if(num==0){
intoiframe.location.href="draw.htm";
}else{
intoiframe.location.href="draw1.htm"; //iframeの中のurlを 変更しています
}
}
</script>
</head>
<body>
<iframe class="cssiframe" name="intoiframe" scrolling="no" border="0" frameborder="0"></iframe>
<div class="mask"></div>
<div class="kiji">
無理やりですね^^;<br>
もはや 結果 こうなったという、本来の主旨からはずれてますが。<br>
<div class="mask">&nbsp;</div>は、ブラウザ内で右クリックするとiframe内を<br>
選択してしまう為に、いれました。<br>
<input type="button" onClick="button(0)" value="0">
<input type="button" onClick="button(1)" value="1">
</div>
</body></html>
【draw.htm】
<html><body>
<script type=text/javascript src=http://www9.ocn.ne.jp/~aki2nd/dhtml/sample/stard …
</body></html>
【draw1.htm】
<html><body>
<script type=text/javascript src=http://www9.ocn.ne.jp/~aki2nd/dhtml/sample/heart …
</body></html>
回答ありがとうございます。そして返事遅くなり申し訳ありません。
知識不足のためいろいろと検証し、やっと皆さんの回答を理解するに至りました。
お一方ずつとも思ったのですが、なかなか切りが悪く、失礼とは思いながらもまとめて御礼をさせて頂くこととしました。
回答拝見させて頂きました。
iframeと言う言葉すら知らない状況でしたのでネットで検索しながら何とか意味を理解するに至りました。同じことでもいろんなやり方があるんですね。
本来の目的は、画像もしくは文字を降らせる、もしくは上昇させる、というごく単純な動きを目指しています。
まだまだ検証中ですので何かありましたら書き込み頂ければ幸いです。
No.2
- 回答日時:
>ボタンで切り替えれるようにする
というのが、どのような状況を想定しているのかわかりませんが、あるスクリプト(背景)が動作中にボタンを押すと別の背景に切り替わるといったイメージでしょうか?
ご提示のサイトのサンプルをざっと見た感じでは、どうもみな基本は同じロジックで、使用する画像と出現数と速度くらいを変えてるだけで、スクリプトは同じなのではないだろうかという気がします。
スクリプトを見てみると(1種類(hertdrop)しか見てませんが)、やはり最初の、
var no = 15; // snow number
var speed = 10; // smaller number moves the snow faster
var snowflake = "http://www9.ocn.ne.jp/~aki2nd/dhtml/sample/ha170.gif";
の部分にある変数程度で制御しているみたいですね。
それなので、ボタンを押したら動作中の画像をキャンセルする(又は画像アドレスを切り替える)などをして、制御変数を取り替えてあげるようにすれば、スクリプト本体はを使い分けなくてもすみそうな気がします。(ちゃんと見てないので未検証ですが、もしかすると乱数を発生させるときの係数やなんかも変えているのかな…)
少々気になったのが、それに続く、
var ns4up = (document.layers) ? 1 : 0; // browser sniffer
var ie4up = (document.all) ? 1 : 0;
でブラウザの分岐を行っているようですが、(バージョン4のことらしいので)どうも少々古い分岐のように思えます。
試みに、手元のfx3、Opera10だとサンプル画面は動作しないみたいですが・・・
(あまり回答にはなっていなくてすみませんが。)
回答ありがとうございます。そして返事遅くなり申し訳ありません。
知識不足のためいろいろと検証し、やっと皆さんの回答を理解するに至りました。
お一方ずつとも思ったのですが、なかなか切りが悪く、失礼とは思いながらもまとめて御礼をさせて頂くこととしました。
回答拝見させて頂きました。少し古いんですね。まだまだ未熟で一つ一つに時間が掛かりますが、地道にやっていくつもりです。まだまだ検証中ですので何かありましたら書き込み頂ければ幸いです。
No.1
- 回答日時:
自身に ボタンで test.htm?bu=0 で飛ばしてみてはと おもったのですが。
で、buの値で jsを選択。
phpでいう、$_GET[〇〇]。 無理やりです。
もちろん、ページ全体が再度読み込まれます。
でも、この記述ができるなら
jsファイルを 一つにまとめる方が いいとおもうのですが・・・
function heartdrop(){ 背景表示 }
function stardrop(){ 背景表示 }
<input type="button" onClick="heartdrop()">
で一つのjsファイルには ムリなのでしょうか。
主旨が違ったり更なる混乱になったらゴメンナサイ。
"javascriptでjsをgetで切り替える"という事だけ考えたサンプル
(コード、考え方がまわりくどすぎです。背景描画のjsなかったので差し替えました)
【test.htm】
<head>
<script type="text/javascript">
function button(num){
location.href="test.htm?bu="+num;
}
function getRequest(){
if(location.search.length > 1) {
var get = new Object();
var ret = location.search.substr(1).split("&");
for(var i = 0; i < ret.length; i++) {
var r = ret[i].split("=");
get[r[0]] = r[1];
}
return get;
} else {
return false;
}
}
var get=getRequest();
if(get['bu']==0){
document.write("<script type='text/javascript' src='./draw.js'><\/script>");
}else{
document.write("<script type='text/javascript' src='./draw1.js'><\/script>");
}
</script>
</head>
<body>
<input type="button" onClick="button(0)" value="0">
<input type="button" onClick="button(1)" value="1"><br/>
<span id="draw"></span><br/>
<span id="draw1"></span>
</body>
【draw.js】
window.onload=function(){
document.getElementById("draw").innerHTML="test";
}
【draw1.js】
window.onload=function(){
document.getElementById("draw1").innerHTML="test1";
}
↓javascriptの中で jsを読み込んでいる↓
document.write("<script type='text/javascript' src='./draw.js'><\/script>");
それを if で条件分岐。
参考URL:http://www.s-memo.net/blog/2007/03/javascriptget …
回答ありがとうございます。そして御礼遅くなりすいません。
実はjavascriptを始めて一ヶ月程度のレベルです。ですので、以下のサイトのものを使用したいと思い今回質問しました。
http://www.awcs.org/dhtml/#drop
すごく時間は掛かりますがfunctionにまとめることは出来ます。ただ、暗号化されていましたし、できればそのままサーバーに置いたものを使用できればと思い質問しました。
やはり思ったより面倒そうですね。
まだ内容を充分に理解できていませんが検証してみます。
もし何かありましたら書き込み頂けると嬉しいです。
わからないことがありましたら質問させていただきますのでよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Operaでのobjectタブの高さ変更
-
JavaScriptのロールオーバーに...
-
function の return 値を表示し...
-
初心者javascript ウィンドウサ...
-
JavaScriptでiframeの内容を「...
-
乱数を一定時間毎に表示させた...
-
GoogleChart 階層ごとのブロッ...
-
<a href="#" …>の意味を教えて...
-
このスクリプトを説明してください
-
検索フォームでの結果を別窓に...
-
ブラウザ上に表示されたデータ...
-
JavaScriptってどんな使い方が...
-
外部ファイルを読み込ませるた...
-
<DIV id=""></DIV>勘でいれたら...
-
1クリックで複数のページを開く...
-
同意を求めて、次のページに進...
-
noscriptについて
-
複数の外部jsをランダム表示さ...
-
レンタルサーバーでjavascript...
-
window.openでフルスクリーン表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
キーを押している間の時間を計...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでの西暦下2桁での表...
-
htaでVBSのソースを書いたらエ...
-
クリックすると別の文章を表示する
-
日付のチェック
-
AjaxでXMLの要素が取得できない
-
引数付きで呼び出す関数・配列...
-
JavaScriptでのEnterキーとAlt+...
-
【js】onsubmit属性が変更できない
-
フォーカス移動抑止について
-
bodyタグのfocus
-
AjaxでDBから取得したデータを...
-
IEの拡大・縮小機能をWebページ...
-
idHOGEで取得したinnerText(数...
-
iframeの中から親ページをスム...
-
function の return 値を表示し...
-
「オブジェクトを指定してくだ...
おすすめ情報