JavaScript 只能部分工作

标签 javascript html

我想创建一个脚本,单击后将删除两个 li 项目上的类,并将类添加到另一个 li 项目。我已经使用了 .className 方法,但它只能部分工作。

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    <ul class="nav navbar-nav navbar-right">
        <li class="tbh lista">
            <a href="#"><img src="images/facebook.png"></a>
        </li>
        <li class="tbh lista">
            <a href="#"><img src="images/mail.png"></a>
        </li>
        <li class="lista">
            <a href="#" onclick="changeClass()" id="phone"><img     src="images/phone.png"></a>
        </li>
        <li class="lista hidden">
            <p>text</p>
        </li>
    </ul>
</div>

这是脚本:

function changeClass(){
    var elements = document.getElementsByClassName('tbh');
    for (var i = 0, len = elements.length; i <=len; i++) {
        elements[i].className='hidden';

        console.log('aaa');
    }
}

我单击 li 项目一次后,只有一个 li 项目消失,并且出现错误。我必须单击它两次才能正常运行。我找不到错误。 这些显示在 console.log 中:aaa 未捕获的类型错误:无法设置未定义的属性“className”

最佳答案

这是因为 document.getElementsByClassName 返回 HTMLCollection 而不是 Array。所以改变你的字符串

var elements = document.getElementsByClassName('tbh');

var elements = Array.from(document.getElementsByClassName('tbh'));

关于JavaScript 只能部分工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40201015/

相关文章:

javascript - 3ds max > collada > Threejs 动画错误, "Scale out of bounds"

javascript - 使用 setInterval 更新 .style 属性

javascript - 如何将附加参数传递给 graffle.js

html - Angular2中的Aria角色属性

html - 自禁用按钮,辅助功能

jquery - li 标签中的垂直居中链接是父 ul 高度的 11.11%

javascript - 位置相对div得到不同的偏移量

html - 音频播放器中的html/hta多个文件

html - 将垂直对齐设置为中间不能应用于复选框

javascript - 带有附加参数的django dajaxice javascript回调