javascript for循环将dom元素文本与数组进行比较

标签 javascript html arrays

我正在将 DOM 元素的 innerHTML 中的内容与静态文本数组中的内容进行比较。元素中的内容始终与文本数组中的条目匹配。

<p id="main1">b</p>

var textArr = ["<p>a</p>","<p>b</p>","<p>c</p>"];
if (main1.innerHTML == textArr[0]) {
            return 0;
        } else if (main1.innerHTML == textArr[1]) {
            return 1;
        } else if (main1.innerHTML == textArr[2]) {
            return 2;
        } else if (main1.innerHTML == textArr[3]) {
            return 3;
        } else {
            return 0;
}
//returns 1

我很快就会在 textArr 中添加条目,并且意识到对于这种情况,for 循环通常是更好的做法。但是,我的条件语句从未遇到循环。

var index;
for (index = 0; index < textArr.length; ++index) {
    if (main1.innerHtml == textArr[index]) {
        return index;
    } 
}
//does nothing

我如何检查元素中的内容与数组中的内容?

最佳答案

正如我在评论中所说,这样做可以完成工作,如果您想要相关 HTML 元素的文本内容,则使用 ```innerHtml`` 可能不是一个好主意。如果您还想要嵌套标签,那么当然,这根本不是问题,只是要小心您使用的是哪个标签,有时您希望将嵌套的 HTML 元素作为一部分返回字符串,其他时候你不会,等等。

const textArr = ["a", "b", "c"];
const el = document.getElementById("main1");
const getIndex = () => textArr.indexOf(el.textContent);

console.log(getIndex());
<p id="main1">b</p>

关于javascript for循环将dom元素文本与数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53979154/

相关文章:

用于动态加载 SWF 的 Javascript

javascript - 解析js中没有 `eval`的数据

javascript - 不能使用 w3school HTML 包含

javascript - 优化 JS 代码以在悬停时显示某些 Div

javascript - html 中的 Jquery <br> 在展开期间导致连续的文本节点

arrays - Swift:获取多个数组值,如 "x"

c - 复制链表头时出现段错误

javascript - sort() 函数不起作用

Javascript math "draw"矩形围绕多个其他矩形实现背景效果

java - 插入部分填充的数组