javascript - 我无法将 div 放置在随机位置

标签 javascript

我试图随机放置一个 div,但出现类型错误。它说该元素未定义,但我认为我是用第 1 行的 const 行定义它的。在我的 CSS 文件中,div 的位置是绝对的,并且有一个背景图像集。我可以在 console.log 中得知我正在获得我想要的随机数。我只是在将这些坐标附加到 div 时遇到了一些麻烦。

const animal = document.querySelectorAll('.animal');

function getRandomPos(animal) {
    var x = screen.width;
    var y = screen.height;
    var randomX = Math.floor(Math.random() * x);
    var randomY = Math.floor(Math.random() * y);
    console.log(randomX, randomY);

    let rect = animal.getBoundingClientRect();
    console.log(rect.top, rect.right, rect.bottom, rect.left);

    animal.style.left = randomX;
    animal.style.top = randomY;
}

最佳答案

评论中已经解决了一个主要问题 - querySelectorAll 返回 HTMLCollection 而不是单个元素,因此您需要 querySelector。 此外,您还需要在设置元素样式的行中添加“px”单位(见下文)。

更新

提问者提到有多个随机移动的元素,因此我添加了一个示例,其中包括如何使用 ID 作为 setRandomPos 函数的参数来完成此操作。

function setRandomPos(target) {
  const element = document.getElementById(target);
  // var x = screen.width;
  var x = 400; // Just smaller numbers for the example
  // var y = screen.height;
  var y = 200;
  var randomX = Math.floor(Math.random() * x);
  var randomY = Math.floor(Math.random() * y);

  // Remember to add px for units
  element.style.left = randomX + 'px';
  element.style.top = randomY + 'px';
}
.randMove {
  position: fixed;
}

button {
  font-size: 20px;
  z-index: 1;
  position: relative;
}
<div id="animal" class="randMove">
  <img src="https://upload.wikimedia.org/wikipedia/en/thumb/e/e7/Animal_%28Muppet%29.jpg/220px-Animal_%28Muppet%29.jpg" alt="Animal">
</div>

<div id="grover" class="randMove">
  <img src="https://vignette.wikia.nocookie.net/muppet/images/f/f7/GroverFullFigure2.png/revision/latest?cb=20190222025220" alt="Grover">
</div>

<button onClick="setRandomPos('animal')">Move Animal</button>
<button onClick="setRandomPos('grover')">Move Grover</button>

关于javascript - 我无法将 div 放置在随机位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57797643/

相关文章:

javascript - mozContacts.tel 的 Firefox OS 联系人问题

javascript - 使用 "new RegExp"和使用正斜杠符号创建正则表达式有什么区别?

c# - RSA:在 javascript 中加密密码但无法在 C# 中解密

javascript - 如何为游戏 PHP/JS 制作倒计时/计时器

javascript - python javascript IBMCloud 为日语重新制作 Watson-voice-bot

javascript - 是否有 Node 方法来检测网络接口(interface)是否联机?

javascript - 作为对象键访问时无法推断类型

javascript - 向 d3.js 折线图添加图例

javascript - 启用 Django 和 Tastypie 对尾部斜线的支持?

javascript - 必填字段验证器错误地失败了对禁用文本框的验证