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

循环DOM元素获取innerHTML失败,我的jQuery代码为何不生效?求解析

你的jQuery循环代码问题分析与修复方案

咱先拆解下你代码里导致无法正常运行的几个关键问题:

1. 错误使用for...in遍历jQuery对象

你用for (var title in titles)来遍历$('.collapseTitle')返回的jQuery对象,但jQuery对象是类数组结构,for...in会遍历它的所有枚举属性(包括jQuery自带的方法、原型链上的属性),而不是你要的DOM元素。这时候title拿到的是属性名(比如数字索引、"length"、"each"这些),不是jQuery包装的DOM元素,调用title.html()自然会报错。

2. indexOf的逻辑判断错误

你写的title.html().indexOf("(CSR)" || "(ADMIN)")逻辑不对,"(CSR)" || "(ADMIN)"会直接返回第一个真值"(CSR)",相当于只判断了是否包含"(CSR)",完全忽略了"(ADMIN)"的判断。

3. HTML标签的转义问题

你用&lt;和&gt;转义标签,但在jQuery的append方法里直接写正常的HTML标签就行,转义后会把<和>当成纯文本输出,而不是渲染成input元素。


修复后的代码

用jQuery的.each()方法来遍历元素才是正确的姿势,同时修正判断逻辑:

function createInputsForWebAppRemotes() { 
    $('.collapseTitle').each(function() { 
        var titleText = $(this).html();
        console.log(titleText);
        // 分别判断是否包含两个关键词,也可以用正则简化
        if (titleText.indexOf("(CSR)") !== -1 || titleText.indexOf("(ADMIN)") !== -1) { 
            $('#remoteWebAppDiv').append('<input class="form-control" name="remoteWebAppUrl" type="url"/>'); 
        } 
    }); 
}

替代方案:普通for循环

如果你习惯用普通for循环,也可以这样写(因为jQuery对象支持按索引访问):

function createInputsForWebAppRemotes() { 
    var titles = $('.collapseTitle');
    for (var i = 0; i < titles.length; i++) { 
        var titleText = $(titles[i]).html();
        console.log(titleText);
        if (titleText.indexOf("(CSR)") !== -1 || titleText.indexOf("(ADMIN)") !== -1) { 
            $('#remoteWebAppDiv').append('<input class="form-control" name="remoteWebAppUrl" type="url"/>'); 
        } 
    } 
}

这样就能正常遍历所有.collapseTitle元素,判断文本内容并添加对应的input啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:18:50