Javascript 内部css不';我不能用JS

Javascript 内部css不';我不能用JS,javascript,html,css,Javascript,Html,Css,我试图在JS中创建的表中使用以下css代码,但它似乎没有任何样式,我不知道为什么 下面是代码: CSS代码: <style type="text/css"> div.team { margin-right: 30%; } .team table { border-collapse: collapse; } .team table td { background-color:

我试图在JS中创建的表中使用以下css代码,但它似乎没有任何样式,我不知道为什么

下面是代码: CSS代码:

<style type="text/css">
    div.team
    {
        margin-right: 30%;
    }
    .team table
    {
        border-collapse: collapse;
    }
    .team table td
    {
        background-color: #4F5FAC;
        border: 2px groove grey;
    }
    .team table th
    {
        font-style: italic;
        background-color: #0B1260;
        padding: 0 15px;
        color: white;
        border: 2px groove black;
    }
    .team tr td:first-child
    {
        color: yellow;
        font-weight: bold;
        text-align: center;
    }
</style>

分区队
{
保证金权利:30%;
}
.团队表
{
边界塌陷:塌陷;
}
.团队表td
{
背景色:#4F5FAC;
边框:2个灰色凹槽;
}
.团队表th
{
字体:斜体;
背景色:#0B1260;
填充:0 15px;
颜色:白色;
边框:2个黑色凹槽;
}
.团队tr td:第一个孩子
{
颜色:黄色;
字体大小:粗体;
文本对齐:居中;
}
JS代码:

myWindow=window.open('table.html');
myWindow.document.write("<table class = 'team'>");
myWindow.document.write("<tr><td> שם  פרטי: </td><td>" + document.reg.name.value + "</td></tr> <tr><td> שם משפחה: " + document.reg.lname.value + "</td></tr> <tr><td> אימייל: " + document.reg.email.value + "</td></tr> <tr><td> סיסמא: " +document.reg.password.value +"</td></tr>");
myWindow.document.write("</table>");
myWindow=window.open('table.html');
myWindow.document.write(“”);
myWindow.document.write(“שםפרייי:”+document.reg.name.value+“document.reg.email.value+”document.reg.password.value+);
myWindow.document.write(“”);
你知道我为什么不了解表格的样式吗?(没有js它也能工作) 提前谢谢

CSS
元素只应用于它们所在的页面。你正在打开一个全新的页面。它需要自己的CSS副本

您可以给
元素一个“id”,然后复制它

<style id='page-style'> ... </style>
。。。
然后:

var myWindow=window.open('table.html');
myWindow.document.write(“”+document.getElementById('page-style').innerHTML+“”);
// ... 创建表的代码
在Internet Explorer上,我认为您需要“innerText”而不是“innerHTML”


无论如何,将样式保存在单独的样式表中可能更好。

尝试在团队类中使用双引号(“”)。

我发现至少有四个问题:

  • CSS规则必须位于您试图影响的同一文档中。因此,这些CSS规则需要位于
    table.html
  • 如果在此处加载文档后使用
    document.write()
    ,则会清除当前文档(包括以前包含的所有样式规则)并启动新文档。因此,这些样式规则无法在
    table.html
    文件中生效,因为您已经清除了该文档先前的内容。如果要向现有页面添加内容而不破坏其当前内容和样式,则需要在现有DOM对象上使用DOM插入API调用,如
    .append()
    .insertBefore()
    或设置
    .innerHTML
  • 您的CSS规则没有正确指定。当您针对同一标记上的多个标识符时,标识符之间不能有空格。因此,
    .team table
    需要是
    table.team
    .team table th
    需要是:
    table.team th
    。当标识符之间有空格时,如
    .team table
    中所示,这意味着您希望将
    table
    对象与
    class=“team”
    的祖先相匹配。如果希望对象同时是
    class=“team”
    ,则两个标识符之间不必有空格,如:
    table.team
  • 如果要在保留
    table.html
    内容的同时向此新窗口添加内容,则必须等待加载(使用
    onload()
    事件或其他
    DOMReady
    事件之一),然后才能修改其内容,并且不能使用
    document.write()
  • 为了解决所有这些问题,我建议:

  • 将所有样式规则放在外部样式表中,并将它们包含在table.html中
  • 将用于修改页面的javascript也放入table.html中
  • 加载table.html时,将查询参数添加到URL的末尾,并将要在该文件中显示的值传递给它
  • 将javascript添加到table.html,解析查询参数以获取数据,然后在该页面中DOM就绪后,将相关内容添加到该页面
  • 这会将样式规则放在正确的文件中,并将数据传递到新页面,同时将用于修改页面的代码保留在其自己的页面中(大大简化了后续的维护)


    好的,假设您不需要table.html中的任何内容,您可以使用以下代码从头创建一个新窗口:

    function openMyWindow() {
        var newWin = window.open("", "table");
        newWin.document.write("<div class='team'>");
        newWin.document.write('<table>');
        newWin.document.write("<tr><td> שם  פרטי: </td><td>" + 
            document.reg.name.value + "</td></tr> <tr><td> שם משפחה: " + 
            document.reg.lname.value + "</td></tr> <tr><td> אימייל: " + 
            document.reg.email.value + "</td></tr> <tr><td> סיסמא: " + 
            document.reg.password.value +"</td></tr>");
        newWin.document.write("</table>");
        newWin.document.write("</div>");
        var cssLink = newWin.document.createElement("link") 
        cssLink.href = "iframestylefile.css"; 
        cssLink.rel = "stylesheet"; 
        cssLink.type = "text/css";     
        newWin.document.getElementsByTagName('head')[0].appendChild(cssLink);
    }​
    
    函数openMyWindow(){ var newWin=window.open(“,“table”); newWin.document.write(“”); newWin.document.write(“”); newWin.document.write(“שםפריי”):+ document.reg.name.value+“שםמשפחה:”+ document.reg.lname.value+“document.reg.lname.value:”+ document.reg.email.value+“סיסא:”+ document.reg.password.value+“”); newWin.document.write(“”); newWin.document.write(“”); var cssLink=newWin.document.createElement(“链接”) cssLink.href=“iframestylefile.css”; cssLink.rel=“样式表”; cssLink.type=“text/css”; newWin.document.getElementsByTagName('head')[0].appendChild(cssLink); }​ 您可以在此处看到此工作:。样式规则不会在那里应用,因为css文件没有正确的完整URL。

    您不能将样式应用到另一个css为一个页面的页面。 将CSS上载到文件,然后使用以下代码段将CSS加载到打开的页面上

    myWindow=window.open('table.html');
    var cssLink = document.createElement("link") 
    cssLink.href = "iframestylefile.css"; 
    cssLink .rel = "stylesheet"; 
    cssLink .type = "text/css"; 
    myWindow.document.body.appendChild(cssLink);
    // Now carry on writing the elements
    

    单引号在HTML中很好。试试看。愿它奏效。你和不同的浏览器核对过了吗?我知道了,解决这个问题的方法是什么?你需要将
    元素从源页面复制到新页面中。创建seprate css文件并在table中使用。htmlright,谢谢你,我会试试看,这似乎是正确的答案。这只是众多问题中的一个。而且,在指定时不能立即打开新窗口
    myWindow=window.open('table.html');
    var cssLink = document.createElement("link") 
    cssLink.href = "iframestylefile.css"; 
    cssLink .rel = "stylesheet"; 
    cssLink .type = "text/css"; 
    myWindow.document.body.appendChild(cssLink);
    // Now carry on writing the elements