2017-10-12 9 views
0

クラスのスタイルを変更したいと思っていますが、これはかなり単純な質問ですが、すでにGoogleを試してみて、それを行う方法を見つけることができません。これは私のコードですが、アレイ状obbjectあるjsのクラススタイルを変更する

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

言葉の周りの人々の事はスティッキー 'スティッキーどのようなものですか;'?彼らは引用符ではありません。もしあなたがjQueryを使っているのであれば、 '$( '。advanced-search')を使ってください。 style.position' – j08691

+0

あなたの構文エラーは実際の引用符ではない引用です。そうでなければこれは問題ありません –

答えて

2

document.getElementsByClassName戻りHTMLCollection.style.positionのプロパティはありません。既にjQueryを使用しているので、それを使用してセレクタに問い合わせるだけです。 MDNから

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

、重点鉱山:

配列のようなオブジェクトに与えられたクラス名のすべてを持っているすべての子要素のを返します。

styleはリストのプロパティではありません。各要素を反復してスタイルを適用するか、リストから要素を選択する必要があります。

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

document.getElementsByClassName("advanced-search")が配列である:ES6の非構造と縮合し、

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

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

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

または:これを行うには

一つの方法は、その上に配列に反復をgetElementsByClassNameの結果を回すことであろうあなたが使ったスタイルとまったく同じようにまっすぐにスタイルを追加することはできません! 使用for loopまたはforeach

$(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(); 
    } 
}); 
関連する問題