首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改js中的类样式

更改js中的类样式
EN

Stack Overflow用户
提问于 2017-10-13 01:12:28
回答 3查看 51关注 0票数 0

我想改变一个类的风格,我知道这是一个非常简单的问题,但我已经尝试过谷歌,但找不到如何做到这一点,这是我的代码,但它不工作,我得到语法错误

代码语言:javascript
复制
$(window).scroll(function() {
  if ($(this).scrollTop()> 620) {
        document.getElementsByClassName("advanced-search").style.position = ¨sticky;¨
    $('.advanced-search').fadeIn();
   } 
EN

回答 3

Stack Overflow用户

发布于 2017-10-13 01:17:37

返回document.getElementsByClassNameHTMLCollection,这是一个类似数组的对象。它将不具有.style.position属性。由于您已经在使用jQuery,所以只需使用它查询选择器即可。

代码语言:javascript
复制
var $el = $('.advanced-search');
$el.css('position', 'fixed');
$el.fadeIn();
票数 2
EN

Stack Overflow用户

发布于 2017-10-13 01:18:07

来自MDN,重点是我的:

返回一个类似数组的对象,其中包含具有所有给定类名的所有子元素。

style不是列表的属性;您必须迭代每个元素并应用样式,或者从列表中选择一个元素。

要做到这一点,一种方法是将getElementsByClassName的结果转换为一个数组,并对其进行迭代:

代码语言:javascript
复制
var advSearches = document.getElementsByClassName('advanced-search');

advSearches = Array.prototype.slice.call(advSearches);

advSearches.forEach(function(element) {
    element.style.position = 'sticky';
});

或者,缩写为ES6解构:

代码语言:javascript
复制
[...document.getElementsByClassName('advanced-search')]
    .map(e => e.style.position = 'sticky');
票数 1
EN

Stack Overflow用户

发布于 2017-10-13 01:21:16

document.getElementsByClassName("advanced-search")是一个数组,你不能完全像你使用的那样直接给所有的数组添加样式!使用for loopforeach

代码语言:javascript
复制
$(window).scroll(function() {
  if ($(this).scrollTop()> 620) {
        var x = document.getElementsByClassName("advanced-search");
        for(var i=0;i<x.length;i++){
            x[i].style.position = ¨sticky;¨
        }
        $('.advanced-search').fadeIn();
   }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46715330

复制
相关文章

相似问题

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