2017-05-12 3 views
0

Hallo, ich versuche, eine "margin-top" -Eigenschaft in Javascript zu bearbeiten. Der folgende Code-Schnipsel arbeitet in meiner Safari 6.1.6 aber nicht in meiner Safari 10,1Bearbeiten Stil funktioniert nicht

document.getElementById("fbContent").setAttribute("style", "margin-top: 70px!important"); 
document.getElementById("fbContent").style.cssText = "margin-top: 70px!important"; 
document.getElementById("fbContent").style.setProperty("margin-top","70px","important"); 

Irgendwelche Vorschläge, wie dieses Problem zu lösen? p.s. wenn es die möglichkeit gibt, möchte ich jquery nicht benutzen! Dank :)

Update: Dank für die aktuelle Lösung, aber der einzige Browser diese Lösungen Arbeit ist die alte Safari (6.1.6)

+0

Die Eigenschaft ist in einer Datei definiert, die ich nicht bearbeiten kann. Frag nicht, dass es schrecklich ist, mit ihm zu arbeiten. Ich habe keine andere Möglichkeit ... – Erdnuss

+1

Aus Antworten unten. Wenn Sie es wichtig einstellen müssen, bedeutet das, dass Sie bereits einen anderen Stil für #fbContent haben? – Gezzasa

+0

ja das ist richtig – Erdnuss

Antwort

3

Sie können dies tun:

document.getElementById("fbContent").style.marginTop = "70px";
<div id='fbContent'>fbContent</div>

Sie können CSS in die Seite mit JavaScript setzen:

function addNewStyle(newStyle) { 
    styleElement = document.createElement('style'); 
    styleElement.type = 'text/css'; 
    document.getElementsByTagName('head')[0].appendChild(styleElement); 
    styleElement.appendChild(document.createTextNode(newStyle)); 
} 

addNewStyle('#fbContent {width:70px !important;}') 

Mit dieser Methode wird ein style Tag an der Unterseite des Elements head hinzugefügt, das alle vorherigen style Tags überschreibt. Deshalb funktioniert das.

Der Grund, dass die andere "einfache" Option nicht funktioniert, ist rein, weil Javascript es nicht unterstützt.

+0

Thans :) aber es muss sein! Wichtig – Erdnuss

+1

Aktualisiert meine Antwort @Erdnuss – Albzi

+0

implementiert, aber arbeiten auf einem meiner Browser .. :( – Erdnuss

2

Versuchen Sie, die CSS-Eigenschaft direkt und nicht über setProperty Methode.

document.getElementById("fbContent").style.marginTop = "70px" 
+0

Die Verwendung von '! Wichtig' wird nicht wirklich funktionieren und wird es überhaupt nicht schaffen, eine Marge zu haben. – Albzi

+2

verbesserte meine Antwort! – user1995

+0

Upvoted, wie es jetzt funktioniert :) – Albzi

0

Ich stimme mit den vorhandenen Antworten es, wie dies zu tun:

document.getElementById("fbContent").style.marginTop = "70px"; 

sicher, dass dies funktioniert, aber es ist eine bessere Art und Weise streng CSS und JS aufzuspalten. Um dies zu erreichen, würde ich empfehlen, eine CSS-Klasse zu definieren und sie mit Ihrem Javascript hinzuzufügen.

CSS:

.marginTop { margin-top : 70px !important; } 

JS:

document.getElementById('fbContent').class += ' marginTop'; 

Oder mit JQuery:

$('#fbContent').addClass('marginTop'); 
+0

ich werde es versuchen – Erdnuss

+0

arbeitete auf meinem alten Safari, aber wieder nicht auf dem neuen ... trotzdem danke – Erdnuss

1

CSS einzige Lösung

https://jsfiddle.net/99b85ymb/3/

#fbContent {margin: 'whateverItIs'} 
body #fbContent {margin-top: 70px;} 

<div id="one"> 
    <div id="fbContent"></div> 
</div> 

hoffte, das hilft

EDIT: in meiner Geige ich nur die Hintergrundfarbe funktioniert es zeigt abgezielt. EDIT2: machte es einfacher. Sie müssen nur das CSS jetzt bearbeiten.

+0

Dies ist nicht, was er fragte. – johannesp

+0

@johannesp Er möchte dem Element margin top hinzufügen. Wenn es unbedingt dynamisch sein muss, dann benutze Javascript. Meine Lösung ist nur CSS. Er sagte auch nur keine jQuery. – Gezzasa

+0

nachdem ich es wieder gelesen habe ich denke er hat das problem, dass er nicht auf die css-dateien zugreifen kann und den rand in ihn "hacken" will ... – johannesp

Verwandte Themen