内部css不'我不适合JS
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的情况下工作)提前感谢!
我至少看到四个问题:
- CSS规则必须在您试图影响的同一文档中。所以这些CSS规则需要在
table.html
中 - 如果在加载文档后使用
document.write()
(您在此处执行此操作),则它会清除当前文档(包括您以前包含的所有样式规则)并启动新文档。因此,这些样式规则不可能在table.html
文件中生效,因为您已经清除了该文档的先前内容。如果希望在不破坏现有页面的当前内容和样式的情况下将内容添加到现有页面,则需要使用DOM插入API调用,如.append()
或.insertBefore()
,或在现有DOM对象上设置.innerHTML
- 未正确指定CSS规则。当您针对同一标签上的多个标识符时,标识符之间不能有空格。因此,
.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中
- 将用于修改页面的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);
}
你可以在这里看到这幅作品: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
在InternetExplorer上,我认为您需要"innerText"而不是"innerHTML"。
无论如何,将样式保存在单独的样式表中可能会更好。
您不能使用一个页面的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
尝试在团队类中使用双引号(")。
相关文章:
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 如何在不使用JS发出新请求的情况下读取当前标头
- Grunt不看JS文件
- 导航菜单不适合移动浏览器
- Javascript 单击html字段值而不编辑.js文件
- 5 秒后加载页面而不刷新 JS
- 如何解决不适合的分页输出
- 提交按钮的点击元素不调用JS函数
- 我没有'我不理解js的结构
- Rails远程表单发送html而不是js
- 错误:this.setValues不是js代码中的函数,请使用googlemapapi
- Javascript返回内容/字符串;不适合UIWebView的给定宽度和高度
- javascript with()函数获胜'我不适合歌剧、Chrome或Brave
- 为什么浏览器可以'在`.中找不到js文件/lib/`(相对)位置
- Angular html文件可以'找不到JS控制器[Node.JS/Angular]
- angularjs生成器中的Coffeescapet在控制台中找不到js文件
- 内部css不'我不适合JS
- Jquery cycle2 video js插件不适合Drupal 7
- 在IE8中,Excanvas.js不适合我
- Ext JS tabpanel不适合窗口大小