You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

前端新手求助:如何实现用户提交内容的屏幕随机位置多显示?

实现随机位置展示提交内容的方案

直接给你修改后的完整代码,关键部分我会标注说明:

<!-- 输入区域 -->
<input type="text" id="myText" placeholder="输入内容后提交">
<button onclick="myFunction()">提交</button>

<script>
function myFunction() {
    // 获取输入值并过滤空内容
    const inputVal = document.getElementById("myText").value.trim();
    if (!inputVal) return;

    // 创建新的内容元素
    const contentItem = document.createElement("div");
    contentItem.textContent = inputVal;

    // 设置绝对定位,让元素可以自由定位
    contentItem.style.position = "absolute";
    // 计算随机X坐标:避免元素超出屏幕右侧
    const maxX = window.innerWidth - contentItem.offsetWidth;
    contentItem.style.left = Math.floor(Math.random() * maxX) + "px";
    // 计算随机Y坐标:避免元素超出屏幕底部
    const maxY = window.innerHeight - contentItem.offsetHeight;
    contentItem.style.top = Math.floor(Math.random() * maxY) + "px";

    // 基础样式优化,让内容块更显眼
    contentItem.style.padding = "8px 14px";
    contentItem.style.backgroundColor = "#f5f5f5";
    contentItem.style.borderRadius = "6px";
    contentItem.style.boxShadow = "0 2px 6px rgba(0,0,0,0.1)";
    contentItem.style.zIndex = 10; // 确保内容块在其他元素上方

    // 将元素添加到页面中
    document.body.appendChild(contentItem);

    // 清空输入框,方便继续输入
    document.getElementById("myText").value = "";
}
</script>

核心修改说明:

  • 避免内容覆盖:每次提交都会创建新的<div>元素,而非修改同一个元素的内容,所以之前提交的内容会保留在页面上。
  • 随机位置实现:通过position: absolute脱离文档流,再用Math.random()生成随机的left和top值,同时计算窗口与元素的尺寸差,防止内容超出屏幕。
  • 基础体验优化:增加空内容判断、提交后清空输入框、给内容块添加基础样式提升可读性。

如果需要点击内容块即可删除的功能,可以在创建contentItem后添加这段代码:

contentItem.addEventListener("click", function() {
    this.remove();
});

内容的提问来源于stack exchange,提问作者Julia Nowak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:24:21