我有一个眼睛图标,当你点击它时,图标会改变,它会通过js:left: 10%;重新定位.

但是,如果DOM中有ID为login-section的元素,则应该将其重新定位为left: 50%;.

我试了document.getElementsByClassName('fa-eye-slash').style.left = '50%';次,但不起作用.

let eye = document.querySelectorAll('.eye');
eye.forEach(function (v) {
    v.addEventListener('click', function () {
        this.classList.toggle('fa-eye-slash');
    

        if(document.getElementById('login-section')) {
            // Following line is not working:
            document.getElementsByClassName('fa-eye-slash').style.left = '50%';
        }
       

    })
});
.eye {
    position: absolute;
}
.fa-eye-slash {
    left: 10%;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">

<div id='login-section'>
    <i class="fa-solid fa-eye eye"></i>
</div>

推荐答案

您应该 Select 被单击的元素本身,并且类为.fa-eye-slash.现在,看起来你正在try 设置类.fa-eye-slash的所有元素的left属性.

此外,还可以使用Style属性设置CSS样式.但是,由于您希望在两个位置之间切换,因此添加和删除定义Left属性的CSS类可能更好.

这里有一个可能会有帮助的例子:

let eye = document.querySelectorAll('.eye');

eye.forEach(function (v) {
    v.addEventListener('click', function () {
        this.classList.toggle('fa-eye-slash');

        if (document.getElementById('login-section')) {
            if (this.classList.contains('fa-eye-slash')) {
                this.style.left = '50%'; 
            } else {
                this.style.left = '10%'; 
            }
        }
    });
});

Javascript相关问答推荐

将数据从strapi提取到next.js,但响应延迟API URL

如何修复内容安全策略指令脚本-SRC自身错误?

使用JavaScript在ionic Web应用程序中更新.pane和.view的背景 colored颜色

Chart.js V4切换图表中的每个条,同时每个条下有不同的标签.怎么做?

我不知道为什么setwritten包装promise 不能像我预期的那样工作

如何添加绘图条形图图例单击角形事件

如何从隐藏/显示中删除其中一个点击?

当Redux提供程序访问Reduxstore 时,可以安全地从Redux提供程序外部调用钩子?

简单的PayPal按钮集成导致404错误

rxjs插入延迟数据

JS:XML insertBefore插入元素

在VS代码上一次设置多个变量格式

从逗号和破折号分隔的给定字符串中查找所有有效的星期几

使用自动识别发出信号(&Q)

在GraphQL解析器中修改上下文值

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

如何将字符串拆分成单词并跟踪每个单词的索引(在原始字符串中)?

如何将缓冲区数组转换回音频

如何为Reaction应用程序创建仅登录的路由?

如何根据获取的对象数量动态生成状态变量