首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能获得所有元素并向它们添加一个类?

为什么我不能获得所有元素并向它们添加一个类?
EN

Stack Overflow用户
提问于 2017-02-24 23:58:48
回答 1查看 52关注 0票数 0

好吧,我想做点什么,但我显然做错了。

我在JS中有这个功能:

代码语言:javascript
复制
function onFocus() {
      document.getElementsByClassName('blur').classList.add("blurry");
    }

    function onFocusOut() {
      document.getElementsByClassName('blur').classList.remove("blurry");
    }

我认为错误如下:

未定义TypeError:无法读取未定义属性的“添加”

我试图做的是,得到所有元素的类名模糊,并添加另一个类名(模糊)到它.但是这不起作用,因为我的CSS没有被更改。

我唯一想要实现的是,当一个输入字段被点击/聚焦时,向带有那个类名的元素添加不透明度,并在某人单击输入字段外部时删除它。

代码语言:javascript
复制
.blurry {
  opacity: 0.4
}

PS:最初,我开始使用id's而不是classes,但这意味着我可以只在一个HTML元素上使用这个函数。所以我才决定改姓。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-25 00:03:42

为了保持您要使用的格式,您可以简单地添加一个for循环,以类名"blur“迭代所有元素。

在您的情况下,我添加了一个实现for循环的方法的示例:

代码语言:javascript
复制
function onFocus() {
    var blurElements = document.getElementsByClassName('blur');
    for (var i = 0, l = blurElements.length; i < l; i++) {
        blurElements[i].classList.add("blurry");
    }
}

function onFocusOut() {
    var blurElements = document.getElementsByClassName('blur');
    for (var i = 0, l = blurElements.length; i < l; i++) {
        blurElements[i].classList.remove("blurry");
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42450261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档