2009-08-17 9 views
3

JSで行う必要があるのは、すべての絶対配置された要素をxピクセルだけ下に移動することです。すべての要素をループして、絶対的に配置されているかどうかを調べる必要がありますか?それとも良い方法がありますか?すべての絶対配置された要素を変更するJavaScript

おかげで、 マラ

更新:特定:私は、任意のページにJSを注入するブックマークレットを使用しています - ので、私はどのような方法でマークアップや実際のCSSファイルを変更することはできません。このブックマークレットは、とりわけ、すべての絶対配置された要素を155ピクセル下に移動する必要があります。

+0

あなたの正確な要件は何ですか? – rahul

+0

なぜこれをやりたいのですか? – rahul

+0

[具体的に質問が更新されました] – Mala

答えて

2

何かがそれを行う必要があります。

function getStyle(el, prop) { 
    var doc = el.ownerDocument, view = doc.defaultView; 
    if (view && view.getComputedStyle) { 
    return view.getComputedStyle(el, '')[prop]; 
    } 
    return el.currentStyle[prop]; 
} 
var all = document.getElementsByTagName('*'), i = all.length; 
while (i--) { 
    var topOffset = parseInt(all[i].style.top, 10); 
    if (getStyle(all[i], 'position') === 'absolute') { 
    all[i].style.top = isNaN(topOffset) ? '155px' : (topOffset + 155) + 'px'; 
    } 
} 
+0

これは感謝しました!私はちょうど最高の値を得るためにgetSyleを使うためにtopOffsetを変更しなければなりませんでした。私はそれをテストしていたページ上に何も返さなかったので(Google検索結果) – Mala

+0

@Malaああ、良い考え! :) – kangax

0

CSS文のposition: fixedあります - あなたが欲しいものを行う可能性がありますあなたは、特定のクラス名を持つすべての絶対位置のエレメントをタグ付けし、most browsersgetElementsByClassNameを使用することができ

+0

どうすればie6;) – redsquare

2

...。それ以外には、ループが唯一の選択肢です。

1

フェニックスのソリューションは、jQueryの-ifed UN:このような

var nodes = document.getElementsByTagName("*"); 
node.foreach(function(n){ // can use foreach since this is FF only 
    if(n.style.position=="absolute"){ 
     n.style.top += parseInt(n.style.top || 0, 10) +"px"; 
    } 
} 
関連する問題