私のコードはウェブページの中央にイメージを表示し、クリックが外側または内側のイメージの場合は2つのアクションを行います。私は、ページの初期サイズにとどまりながら、onclick()イベントごとに画像の位置をランダムに変更したい(クリックの有無にかかわらず)。Onclick()イベント:イメージのランダムな外観
2つの動作は正しく行われますが、画像の位置は変わりません。誰かが私が何を変えるべきか教えてくれますか?
<html>
<head>
<title>random position</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js">
$(window).height();
$(window).width();
</script>
<body>
<style>
#myImage { position: absolute;
top:0;
bottom: 0;
left: 0;
right: 0;
margin:auto; }
</style>
<script>
function moveImg() {
var img = document.getElementById("myImage");
var width = $(img).width();
var height = $(img).height();
document.addEventListener("click", function(e) {
var offset = $(img).offset();
if (e.target === img) {
action 1;
}
else {
action 2;
}
// GENERATE RANDOM LOCATION IN BOTH CASES
img.offset.left = Math.floor(Math.random() * (window.width()- 0) + 0);
img.offset.top = Math.floor(Math.random() * (window.height()- 0) + 0);
}, false);
}
</script>
<img id="myImage" src="img.gif" onclick="moveImg()">
</body>
</html>
「アクション1;」と「アクション2;」はどういう意味ですか?私の推測では、このコードが実行されるとJSエラーが発生します。あなたはまた、クリックごとにますます多くのイベントリスナーを追加し続けています... –
私はランダムな位置の部分を使わずに同じコードを実行するといいです。私が前にrondom posionを生成する別の方法を使用していました(下記)。それはうまくいったが、それは完全ではなかった:/ * var x = Math.floor(Math.random()*(max - min)+ min); var y = Math.floor(Math.random()*(max - min)+ min); img.style.top = x + "px"; img.style.left = y + "px"; */ – Gigi
位置を変更するために使用していたコードは残念です。var x = Math.floor(Math.random()* 400); var y = Math.floor(Math.random()* 400); img.style.top = x + "px"; img.style.left = y + "px"; – Gigi