2016-10-28 1 views
2

Hallo Ich erstelle dynamische Form in neue Registerkarte mit JavaScript. Margin-Effekte auf Div treten nicht in Kraft. Ich bin weder in der Lage, die Ränder mit der Klasse und der ID in css noch mit div.setAttribute zu setzen. Unten ist der Code. `Die Ränder in div der neuen Registerkarte überhaupt nicht wirksam

var openWindow = window.open('dynForm.html','_blank',''); 
    var windoc=openWindow.document; 
    windoc.write("This is dynamic form "); 
    var div=document.createElement("div"); 
    div.setAttribute("style","border:solid"); 
    div.setAttribute("style","margin-left:1cm"); 
    div.setAttribute("style","margin-right:1cm"); 
    div.setAttribute("style","margin-bottom:1cm"); 
    div.setAttribute("style","margin-top:1cm"); 
    div.setAttribute("style","background-color:lightblue"); 

` Nur Hintergrundfarbe wird auf der neuen Registerkarte Wirksam. Der folgende Screenshot zeigt, wie der Bildschirm unabhängig von den Randwerten aussieht. enter image description here

Quesstion 2: Keine Klasse oder id-Attribut in meinem css auf div angewendet wird.

#myDIV2{ 

    background-color:lightblue; 
} 

Ich versuchte div.id="myDIV2";

Ich habe auch versucht div.setAttribute("id","myDIV2"); `ich das gleiche mit Klasse auch angewandt, aber immer noch keinen Unterschied finden konnte. Ich weiß nicht, warum es nicht funktioniert und was hier schiefgelaufen ist. Bitte helfen

+4

Ich könnte mir vorstellen, dass Sie das gesamte 'style' Attribut bei jedem Aufruf von' div.setAttribute' überschreiben. Es wird also nur der letzte Effekt angewendet. Möglicherweise benötigen Sie einen Weg, um sie zu verbinden. – Gorbles

+0

Wie sollte ich meinen Code ändern, um zu bekommen, was ich will. Kannst du mir bitte auch sagen, warum # myDIV2 nicht auf den div im neuen Tab wirkt. Ich gebe alle setAttribute-Zeilen an, bevor ich # myDIV2 hinzufüge. Das ist meine zweite Frage. Alles, was ich wissen wollte, ist, wie man eine Klasse aus CSS-Datei zu meinem Div-Element in der neuen Registerkarte hinzufügen. –

Antwort

1

Sie überschreiben die Stile jedes Mal, wenn setAttribute rufen, versuchen die Stile kombiniert und dann den Stil-Attribut nur einmal:

var openWindow = window.open('dynForm.html','_blank',''); 
 
    var styles= [ 
 
     "border:solid;", 
 
     "margin: 1cm;", 
 
     "background-color:lightblue;" 
 
    ]; 
 
    var windoc=openWindow.document; 
 
    windoc.write("This is dynamic form "); 
 
    var end_styles = ""; 
 
    for (var i=0; i<styles.length;i++) { 
 
     end_styles += styles[i]; 
 
    } 
 
    var div=document.createElement("div"); 
 
    div.setAttribute("style", end_styles);

Hinweis: die Geige gewonnen‘ t arbeiten auf stackoverflow, ich habe es verwendet, weil es einfacher ist, Code zu formatieren

+0

Seine Arbeit Jonas. Vielen Dank. –

+0

Entschuldigung, ich habe nicht genug Punkte, um dich zu bewerten. –

+1

@ RokoC.Buljan upvoted. –

0

Dies passiert, weil Ihr Attribut alle Stil durch vorherige div.setAttribute und y überschrieben werden unser letztes Attribut div.setAttribute("style","background-color:lightblue"); wird angewendet. Versuchen Sie, alle Stile auf einmal zu platzieren. div.setAttribute("style","style1:value1;style2:value2;style3:value3;");

+0

Danke Tharun, kannst du bitte für meine zweite Frage auch beantworten, wie man # myDIV2 zu meinem div-Element hinzufügt. –

+0

Normalerweise sollte 'div.id' oder' setAttribute' funktionieren. Kannst du eine Geige erstellen? –

Verwandte Themen