javascript - 无法读取 HTML 和 Javascript 中未定义的属性 'index Of'

标签 javascript html

我尝试使用按钮在页面上突出显示搜索表达式。 谁能帮我解决这个问题吗?

Uncaught TypeError: Cannot read property 'indexOf' of undefined at highlight (?q=Python:11) at HTMLButtonElement.onclick (?q=Python:24)

JS代码:

function highlight(text) {
        var titles = document.getElementsByClassName('title');
        for (var x in titles) {
            var innerHTML = titles[x].innerHTML;
            var index = innerHTML.indexOf(text);
            if (index >= 0) {
                innerHTML = innerHTML.substring(0, index) + "<span class='highlight'>" + innerHTML.substring(index, index + text.length) + "</span>" + innerHTML.substring(index + text.length);
                x.innerHTML = innerHTML;
            }
        }
    }

第 11 行:

var index = innerHTML.indexOf(text);

第 24 行:

<button onclick="highlight('{{ search_expression }}')">Highlight search expression</button>

最佳答案

不要使用 for .. in 来迭代元素列表,而是使用传统的 for 循环。

function highlight(text) 
{
        var titles = document.getElementsByClassName('title');
        for (var i=0; i < titles.length; i++) 
        {
            var title = titles[i];
            var innerHTML = title.innerHTML;

            // Work with title some more.
        }
}

有关发生的情况的解释,请参阅 Why is using "for...in" with array iteration a bad idea?

关于javascript - 无法读取 HTML 和 Javascript 中未定义的属性 'index Of',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737115/

相关文章:

javascript - 跟踪并显示用户在我的网站上点击按钮的次数

javascript - 为什么 jquery 的 .html() 不能用于 <td></td>?

JavaScript 输入字段在加载时获取旧值

javascript - Chart JS - 为 x 轴时间序列设置一周的开始

javascript - 使用 xmlhttprequest 对象在两个文本框中显示值?

javascript - 带有登录页面的 Ionic 应用程序侧面菜单

javascript - 无法在 D3 中为 svg 元素着色

JavaScript 结果未显示在同一页面中

javascript - jquery 基于另一个输入禁用一个输入

html - 如何删除 jQuery Mobile 中按钮的默认边框?