2017-10-12 76 views
0

我想改變一個類的風格,我知道這是一個非常簡單的問題,但已經嘗試谷歌和無法找到如何做到這一點,這是我的代碼,但它不工作我得到語法錯誤在js中改變類風格

$(window).scroll(function() { 
    if ($(this).scrollTop()> 620) { 
     document.getElementsByClassName("advanced-search").style.position = ¨sticky;¨ 
    $('.advanced-search').fadeIn(); 
    } 
+0

什麼是周圍的話這些東西粘在粘';'?他們不是引號。如果你使用的是jQuery(你應該用假設的方式標記你的問題),可以使用'$'''advanced-search')。css('position','sticky')'not'document.getElementsByClassName(「高級搜索「)。style.position' – j08691

+0

是的,你的語法錯誤是不是真正的引號。否則這很好 –

回答

2

document.getElementsByClassName回報和HTMLCollection其是陣列狀obbject。它不會有.style.position屬性。既然你已經在使用jQuery,只需使用它查詢選擇器。

var $el = $('.advanced-search'); 
$el.css('position', 'fixed'); 
$el.fadeIn(); 
1

MDN,重點煤礦:

返回數組對象,它具有所有給定的類名稱的所有子元素的

style不是列表的屬性;您必須遍歷每個元素並應用樣式或從列表中選擇一個元素。要做到這一點

一種方法是在它打開的getElementsByClassName結果到一個數組的迭代:

var advSearches = document.getElementsByClassName('advanced-search'); 

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

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

或者,用ES6解構濃縮:

[...document.getElementsByClassName('advanced-search')] 
    .map(e => e.style.position = 'sticky'); 
0

document.getElementsByClassName("advanced-search")是一個數組而且你不能直接向所有人添加樣式,就像你用過的那樣! 使用for loopforeach

$(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(); 
    } 
});