電子書籍の厳選無料作品が豊富!

以下htmlは[up]の上でマウスダウンすると[down]に、[down]の上でマウスアップすると[up]になります。
しかし、[up]の上でマウスダウンして、[down]に変わった後[down]の外でマウスアップすると[down]のままになってしまいます。
このように、外でマウスアップした場合でも[up]の表示としたいのですが、なにかよい方法はないでしょうか?

FlashのAcitoscriptでいうところのreleaseOutsideを検知したいです。

<html>
<head>
<script>
window.onload = function(){
var Drag = 0;
i = function(id){ return document.getElementById(id) };
i('o').onmousedown = function(){i('o').innerHTML='[down]'; }
i('o').onmouseup = function(){ i('o').innerHTML='[up]'; }
}
</script>
<div id="o">[up]</div>
</body>
</html>

A 回答 (4件)

こんな感じでどうでしょうか?



<html>
<head>
<script>

window.onload = function(){

var flag = false;
i = function(id){
return document.getElementById(id)
};

i('o').onmousedown = function(){
flag = true;
i('o').innerHTML='[down]';
};

document.onmouseup = function(){
if( flag == false ) return;
flag = false;
i('o').innerHTML='[up]';
};

}



</script>
<div id="o">[up]</div>
</body>
</html>

この回答への補足

chara0-mさん
ご回答ありがとうございます。

概ね良好なのですが、カチカチいじってるとマウスアップしてるのに[down]のままになる事があります。
どのような動作をさせた時に発生するのか断定は難しいのですが、
反転させてドラックの様な動作をした際に禁止のマークが出た後でしょうか。IEで発生します。

補足日時:2008/12/17 18:23
    • good
    • 0

ドラッグ禁止させるなら、


i('o').ondragstart=function(){return false;}
でいかがでしょうか。

選択禁止も文字列ドラッグを防ぐのにはいいかもしれません。
    • good
    • 0
この回答へのお礼

15mmさん
ご回答ありがとうございます。

問題事象が解決しました。

お礼日時:2008/12/18 17:15

すいません。


何度かやっているとなってしまいますね・・・。

No2の回答は、役にたたなそうです。。
    • good
    • 0
この回答へのお礼

chara0-mさん
ご回答ありがとうございます。

お礼日時:2008/12/18 14:38

>>反転させてドラックの様な動作をした際に禁止のマークが出た後でしょうか。

IEで発生します。

これに関しては、divの部分でのドラッグの禁止ぐらいで対応するしか
ない気がします。

i('o').onmousemove = function(){ return false; }

のような感じではどうでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!