Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法读取属性';指数';HTML和Javascript中未定义的_Javascript_Html - Fatal编程技术网

无法读取属性';指数';HTML和Javascript中未定义的

无法读取属性';指数';HTML和Javascript中未定义的,javascript,html,Javascript,Html,我尝试在页面上用按钮突出显示搜索表达式。 有谁能帮我解决这个问题吗 未捕获 TypeError:无法读取HtmlButtoneElement.onclick(?q=Python:24)上突出显示处未定义的属性“indexOf” JS代码: function highlight(text) { var titles = document.getElementsByClassName('title'); for (var x in titles) {

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

未捕获 TypeError:无法读取HtmlButtoneElement.onclick(?q=Python:24)上突出显示处未定义的属性“indexOf”

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;
            }
        }
    }
第24行:

<button onclick="highlight('{{ search_expression }}')">Highlight search expression</button>
突出显示搜索表达式

innerHTML
可能是
未定义的
。在调用
innerHTML.indexOf

var innerHTML = titles[x].innerHTML
if (innerHTML) {
  var index = innerHTML.indexOf(text)
  ...
}

innerHTML
可能是
未定义的
。在调用
innerHTML.indexOf

var innerHTML = titles[x].innerHTML
if (innerHTML) {
  var index = innerHTML.indexOf(text)
  ...
}

不要将
用于。。在
中迭代元素列表,但在循环中使用传统的

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.
        }
}
功能突出显示(文本)
{
var titles=document.getElementsByClassName('title');
对于(变量i=0;i

有关正在发生的情况的解释,请参见不要将
用于。。在
中迭代元素列表,但在
循环中使用传统的

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.
        }
}
功能突出显示(文本)
{
var titles=document.getElementsByClassName('title');
对于(变量i=0;i

关于正在发生的事情的解释,请参见

可能重复的@NineBerry well这是正确的答案,但问题与我想的不一样:)可能重复的@NineBerry well这是正确的答案,但问题与我想的不一样:)我想补充一点,你可以替换为。。在
中,使用for。。of
,用于循环枚举。与..的
不同。。在
中,使用
for(让x成为数组的一部分)
在每个循环中
x
将在数组中分配一个值-但是我建议通过索引进行循环,它更明确,并且您可以确定发生了什么。
for。。Internet Explorer不支持of
,因此,如果您无法控制所使用的浏览器,则不支持of。您可以在集合中使用
foreach()
。非常感谢,在下面另一个答案的帮助下工作。我只想补充一点,您可以为..替换
。。在
中,使用for。。of,用于循环枚举。与..的
不同。。在
中,使用
for(让x成为数组的一部分)
在每个循环中
x
将在数组中分配一个值-但是我建议通过索引进行循环,它更明确,并且您可以确定发生了什么。
for。。Internet Explorer不支持of
,因此,如果您无法控制所使用的浏览器,则不支持of。您可以在集合中使用
foreach()
。非常感谢,请使用下面的另一个答案。