[英]Internal css doesn't work for me with JS
我正在尝试在我在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>
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>");
知道为什么我没有得到表格的样式吗?(它在没有js的情况下有效)预先感谢!
我至少看到四个问题:
table.html
。 document.write()
在此处执行此操作),则它将清除当前文档(包括您先前包含的所有样式规则)并启动一个新文档。 因此, table.html
文件中的这些样式规则无法生效,因为您已经清除了该文档的先前内容。 如果要在不破坏当前内容和样式的情况下将内容添加到现有页面,则需要使用DOM插入API调用(如.append()
或.insertBefore()
或在现有DOM对象上设置.innerHTML
。 .team table
需要为table.team
而.team table th
必须为: table.team th
。 如果在.team table
标识符之间有空格,则意味着您想将table
对象与class="team"
的祖先匹配。 如果您想要一个既是table
又是class="team"
,则必须在两个标识符之间没有空格,例如: table.team
。 table.html
内容的同时向此新窗口添加内容,则必须等待它加载(使用onload()
事件或其他DOMReady
事件之一),然后才能准备好其内容。修改后,您将无法使用document.write()
。 为了解决所有这些问题,我建议这样做:
这会将样式规则放在正确的文件中,并将数据传递到新页面,同时将用于修改页面的代码保留在自己的页面内(从而大大简化了以后的维护工作)。
好的,假设您不需要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);
}
您可以在这里查看这项工作: http : //jsfiddle.net/jfriend00/VLt8h/ 。 样式规则不会在此处应用,因为CSS文件没有正确的完整URL。
CSS <style>
元素仅适用于它们所在的页面。您正在打开一个全新的页面。 它将需要自己的CSS副本。
您可以给<style>
元素一个“ id”,然后将其复制。
<style id='page-style'> ... </style>
然后:
var myWindow=window.open('table.html');
myWindow.document.write('<style>' + document.getElementById('page-style').innerHTML + '</style>');
// ... your code to build the table
在Internet Explorer上,我认为您将需要“ innerText”而不是“ innerHTML”。
无论如何,将样式保存在单独的样式表中可能更好。
尝试在团队课程中使用双引号(“”)。
将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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.