2016-10-28 52 views
2

您好我正在使用JavaScript在新选项卡中创建动态表单。对div的保证金效应不起作用。我既不能在CSS中使用class和id设置边距,也不能使用div.setAttribute。以下是代码。 `在新选项卡div边缘不起作用

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"); 

`只有背景颜色,走的是新的选项卡上的效果。下面的屏幕截图显示了屏幕的外观如何与边距值无关。 enter image description here

Quesstion 2:在我的CSS没有class和id属性被应用到DIV。

#myDIV2{ 

    background-color:lightblue; 
} 

我试图div.id="myDIV2";

我也试过div.setAttribute("id","myDIV2");`我申请使用类也一样,但还是没找到任何区别。我不知道为什么它不工作,这里出了什么问题。请帮助

+4

我想象是因为每次调用'div.setAttribute'时你都覆盖整个'style'属性。所以只应用最后的效果。您可能需要一种方法来复合它们。 – Gorbles

+0

我应该如何修改我的代码以获得我想要的。你也可以告诉我为什么#myDIV2没有对新标签中的div生效。我在添加#myDIV2之前评论所有setAttribute行。这是我的第二个问题。我想知道的是如何从css文件中添加一个类到新选项卡中的div元素。 –

回答

1

你每次调用setAttribute时间重写风格,尝试结合的样式,然后设置样式属性只有一次:

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);

注:小提琴赢得”我用它,因为它更容易格式化代码

+0

其工作乔纳斯。非常感谢你。 –

+0

对不起,我没有足够的积分投票给你。 –

+1

@ RokoC.Buljan upvoted。 –

0

这是因为你的所有样式属性被覆盖以前的div.setAttribute和y我们的最后一个属性div.setAttribute("style","background-color:lightblue");正在得到应用。尝试将所有风格放在一起。 div.setAttribute("style","style1:value1;style2:value2;style3:value3;");

+0

谢谢Tharun,你可以请回答我的第二个问题,关于如何添加#myDIV2到我的div元素。 –

+0

通常'div.id'或'setAttribute'应该可以工作。你能创造一个小提琴吗? –