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

重置数组后返回undefined?Killfeed脚本技术求助

解决Killfeed脚本重置后出现undefined的问题

问题根源

你的resetNames函数中错误地使用了let声明局部变量names,这导致全局的names数组完全没有被重置——你只是在函数内部创建了一个新的局部数组,全局数组依然保持为空状态。当getRandomName再次执行时,即使调用了resetNames,全局数组还是空的,此时Math.floor(Math.random() * names.length)计算出的索引为0,访问空数组的第0项自然返回undefined。

修复方案

移除resetNames函数里的let关键字,直接修改全局的names数组:

function resetNames() {
  names = [...myNames];
}

完整修复后的JavaScript代码

const myNames = ["Niko", "Anomaly", "Kandis"];
let names = [...myNames];

function getRandomName() {
  if (names.length === 0) {
    resetNames();
  }
  let randomIndex = Math.floor(Math.random() * names.length);
  let randomName = names[randomIndex];
  names.splice(randomIndex, 1);
  return randomName;
}

function addKill() {
  let kills = $("li").length + 1; // 补充let声明,避免全局变量污染
  let selectedName = getRandomName();
  $("#killfeed").append('<li><b class="ct">ne0lines</b> killed <i class="t">' + selectedName + '</i></li>');
}

function resetNames() {
  names = [...myNames]; // 去掉let,直接修改全局数组
}

function resetKill() {
  $("ul").fadeOut(1000);
  setTimeout(function() {
    $("li").remove();
  }, 1000);
  $("ul").fadeIn();
  resetNames();
}

保留的CSS与HTML代码

CSS代码

body {
  background-color: transparent;
  margin: 0px auto;
  overflow: hidden;
  text-decoration: none;
  font-size: 20px;
  font-family: rajdhani, sans-serif !important;
  letter-spacing: 1px;
  font-weight: 600;
  text-align: center;
}

ul {
  list-style: none;
}

li {
  display: table;
  margin: 0px auto;
  position: relative;
  clear: both;
  float: none;
  min-width: 100px;
  height: 32px;
  line-height: 32px;
  background: rgba(0, 0, 0, 0.5);
  border: 2px #b50000 solid;
  border-radius: 6px;
  padding: 0 10px;
  color: #fff;
  margin-top: 5px;
  right: -100%;
  animation: smooth-appear 1s ease forwards;
}

b {
  font-style: normal;
  font-weight: 600;
}

i {
  font-style: normal;
}

.ct {
  color: rgb(105, 180, 255);
}

.t {
  color: rgb(237, 208, 87);
}

@keyframes smooth-appear {
  to {
    right: 5px;
    opacity: 1;
  }
}

HTML代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button onClick="javascript:addKill();">Add kill</button>
<button onClick="javascript:resetKill();">Reset</button>
<ul id="killfeed"></ul>

内容的提问来源于stack exchange,提问作者David Hermansson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:53:16