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

jQuery.inArray用外部列表失效,普通数组下功能正常

问题解决思路

核心问题有三个:

  • 变量作用域冲突:你在$.get回调里又用var blocked声明了一次变量,这会把外部的空数组blocked覆盖掉,导致按钮点击时用的还是最初的空数组。
  • 异步请求时序问题:$.get是异步加载的,页面刚加载完绑定点击事件时,TXT文件还没下载完成,blocked数组还没被填充。
  • 换行符不统一:不同系统的换行符不一样,直接用split("\n")可能会让数组里的域名带上\r(Windows系统的换行是\r\n),导致匹配失败。

修正后的代码:

$(document).ready(function () {
  // 只声明一次blocked变量
  let blocked = [];

  // 处理异步请求,确保加载完成后再绑定事件
  $.get("https://cdn.jsdelivr.net/gh/cokeboyyy/blackout@main/blocked.txt", function (data) {
    // 处理所有可能的换行符,同时过滤空行
    blocked = data.split(/\r?\n/).filter(item => item.trim() !== "");
    console.log(blocked);

    // 等域名数组加载完成后,再绑定点击事件
    $("button").click(function () {
      const domain = $("input").val().trim(); // 去掉输入的前后空格
      if (jQuery.inArray(domain, blocked) !== -1) {
        $("#check").html("available");
      } else {
        $("#check").html("not available");
      }
    });
  });
});

额外优化建议:

  • 用let/const代替var,避免变量提升带来的问题
  • 对用户输入的域名做trim()处理,防止用户不小心输入空格
  • 过滤TXT文件里的空行,避免数组里出现空字符串元素

内容的提问来源于stack exchange,提问作者Steven T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:59:56