IE 11:对象不支持属性或方法“getElementsByClassName”

3

这不是重复问题。以前的问题涉及IE8,而此问题发生在IE11中。

我在Chrome或Firefox上运行时没有任何问题,但我的代码必须在IE11中运行,我收到以下错误:

对象不支持属性或方法“getElementsByClassName”

function showNext(a) {
    var questions = document.getElementsByClassName("questionholder");
    showRequired.style.display = "none";

    for (var i = 0; i < questions.length; i++) {
        questions[i].style.display = "none";
    }

    var nextQuestion = document.getElementById("question" + a);

    if (nextQuestion !== null) {
        nextQuestion.style.display = "inline-block";
    }
}

代码应该在这里查找:
<form id="TheForm" style="display:block;">
    <div class="questionholder" id="question0" style="display:block">
        <a class="text2button" onclick="showNext(1)">Start</a>
    </div>
    <div class="questionholder" id="question1" style="display:block">
        <a class="text2button" onclick="showNext(2)">Q1</a>
    </div>
    <div class="questionholder" id="question2" style="display:block">
        <a class="text2button" onclick="showNext(3)">Q2</a>
    </div>
</form>

上述代码将隐藏所有的div,然后根据点击的按钮确定匹配id为"question"+a的div并显示。
我应该怎么做才能解决上述错误?

1
你能否展示一个可行的例子?因为IE11肯定有document.getElementsByClassName - Keith
1
这不是一个重复的问题,现在已经不是2014年和IE8了,IE9+已经有了这个方法。 - Keith
1
无法复现。我的IE11有document.getElementsByClassName - melpomene
2
@JackBashford 这不是你链接的那个问题的重复。那个问题是关于IE8的,其中没有实现.getElementsByClassName()。而这个问题是关于IE11的,它已经实现了。 - Scott Marcus
我在IE 11中使用您上面的代码进行了测试,这是输出结果。https://i.postimg.cc/Qd3GQDmW/35.gif 您可以看到您的代码在IE 11中运行良好。因此,看起来您上面的代码没有任何问题。可能是您网页中的其他代码导致了此问题。 - Deepak-MSFT
1个回答

3
解决方法如下:
<meta http-equiv="X-UA-Compatible" content="IE=11" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接