以下実行すると、AAAをクリックしてもBBBをクリックしても「BBB」とアラートされます。
<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body>
<script type="text/javascript"><!--
var gDown= false;
var div = document.createElement('div');
div.id = 'AAA';
div.innerHTML = 'AAA';
document.body.appendChild(div);
Event.observe(div, 'mousedown',function(){
gDown = div;
});
var div = document.createElement('div');
div.id = 'BBB';
div.innerHTML = 'BBB';
document.body.appendChild(div);
Event.observe(div, 'mousedown',function(){
gDown = div;
});
Event.observe(document, 'mouseup',function(){
alert(gDown.id);
gDown=false;
});
//--></script>
</body>
</html>
javascriptって値渡しだと思っていたので、期待した動作と異なります。参照渡しだと考えると納得できるのですが、javascriptって
参照渡し?それとも値渡し? と混乱しています。
この辺のところを、教えてください。お願いいたします。
No.4
- 回答日時:
連投失礼。
ついでなのでEvent.elementを使った実例。
<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body>
<script type="text/javascript"><!--
var gDown = false;
var Ary = ['AAA','BBB'];
for(var i=0;Ary[i];i++){
var div = document.createElement('div');
div.id = Ary[i];
div.innerHTML = Ary[i];
document.body.appendChild(div);
Event.observe(div, 'mousedown',function(event){
gDown = Event.element(event); // ← ※ココ
});
}
Event.observe(document, 'mouseup',function(){
alert(gDown.id);
gDown=false;
});
//--></script>
</body>
</html>
No.3
- 回答日時:
>使い捨てられていく変数を多数用意する
ちょっとおっしゃりたい事を理解してませんので見当違いかもしれませんが、
とりあえずサンプルのようなコードなら「値」を設定するのではなく、「イベント」オブジェクトからイベント発生オブジェクトを得るのが常套手段だと思います。
イベントオブジェクトはブラウザによって違いがあってやや面倒です。
http://wiki.bit-hive.com/tomizoo/pg/JavaScript%2 …
ただ、prototype.jsを使っているなら、Event.elemntでシンプルに取得できます。
http://www.s2factory.co.jp/tech/prototype/protot …
No.2
- 回答日時:
>javascriptって値渡し
値渡しのみとは限らず、参照渡しもあります。
これはファンクションプやイベントプロシジャーへの
パラメーター受け渡し方法である。
今回の場合、グローバル変数diを重複宣言しており
後者のBBBの設定がAAAを打ち消している為ではないか思います。
変数名の重複を避けて、再試行してみてはどうでしょう。
Hardkingさんご回答ありがとうございます。
javascriptは値渡しと参照渡し混在なんですね。
アラウンドとして変数名の重複を避れば良いのは、
色々試した結果、わかってました。
でも、使い捨てられていく変数を多数用意するのって、微妙ですよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
javascriptでスロットゲームを...
-
onchangeイベントを使ってspan...
-
画像上のクリックした場所が分...
-
Enterで次の入力項目へ進むには?
-
div要素内の全input要素をdisable
-
【Tabキー】特定の範囲内だけで...
-
javascript 特定のタグのidの存...
-
同じIDで定義した要素の配列を...
-
JavaScriptで文字列の特定文字...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
javascriptとphpの連携で疑問
-
Latexに関する質問です。
-
window.openでタイトル名の指定
-
Boolean型配列中のTrueの有無を...
-
翌月を取得するGASが分かりません
-
Javascriptグローバル変数の値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
onchangeイベントを使ってspan...
-
HTML:Tableタグに対し、JavaScr...
-
任意の座標をクリックさせるには
-
モーダルダイアログウィンドウ...
-
innerHTML実行後のイベント
-
Click回数を数え、規定された回...
-
javascript 特定のタグのidの存...
-
[初心者]javascriptのfor文でな...
-
【Tabキー】特定の範囲内だけで...
-
javascriptでスロットゲームを...
-
JavaScriptとcookieを利用して...
-
日本語入力の禁止
-
javascriptで、表示されている...
-
javascriptで編集可能不可能の...
-
画像の一部を表示
-
DIV内のDIV要素を移動する。
-
javascript の 命令文の記述で...
-
重複しないくじの作り方がわか...
おすすめ情報