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

JavaScript中使用indexOf匹配多个字符串的实现疑问

解决JavaScript检查innerHTML包含任意指定ID的问题

嘿,我来帮你修正这段代码~你的思路是对的,但写法上踩了逻辑或操作符的小坑,咱们一步步来理清楚:

原代码的问题

你写的"76561198331632938" || "id2"其实不会同时检查两个ID,因为逻辑或||会返回第一个真值——而非空字符串都是真值,所以这个表达式最终只会返回第一个ID字符串,相当于你的条件只判断了innerHTML是否包含76561198331632938,完全没生效第二个ID的检查。

另外还要注意:如果document.getElementById("id")找不到元素,会返回null,直接访问null.innerHTML会报错,所以最好先判断元素是否存在。

几种正确的实现方式

方式1:分开使用indexOf + 逻辑或

适合ID数量少的场景,写法直观:

// 先获取目标元素并判断是否存在
var targetEl = document.getElementById("id");
if (targetEl && (targetEl.innerHTML.indexOf("76561198331632938") !== -1 || targetEl.innerHTML.indexOf("id2") !== -1)) {
    console.log("Hello world!");
}

方式2:用数组+some方法(推荐,可扩展性强)

如果后续要加更多ID,直接往数组里加就行,维护起来更方便:

var targetEl = document.getElementById("id");
// 把需要检查的ID都放在数组里
var checkIds = ["76561198331632938", "id2"];
// some()会遍历数组,只要有一个ID匹配就返回true
if (targetEl && checkIds.some(id => targetEl.innerHTML.includes(id))) {
    console.log("Hello world!");
}

这里用includes()代替indexOf(),返回的是布尔值,代码可读性更高。

方式3:正则表达式

适合需要更精确匹配的场景(比如要避免ID被其他字符串包含的情况,可以加边界符\b):

var targetEl = document.getElementById("id");
// 用|分隔多个匹配项
var idRegex = /76561198331632938|id2/;
// test()方法检查字符串是否匹配正则
if (targetEl && idRegex.test(targetEl.innerHTML)) {
    console.log("Hello world!");
}

如果需要精确匹配整个ID(比如避免id23被误判为id2),可以改成/\b(76561198331632938|id2)\b/。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:12:39