我遇到了满足类分配的XHTML严格要求的问题。类赋值表示使用java脚本生成表,但只有数组可以在外部javascript文件中使用。在尝试满足XHTML Scrict要求时,这会导致一些问题。我违反的“规则”如下:
第147行,第38列:文档类型不允许元素“script”在这里
script type =“text / javascript”
上面提到的元素是在不允许的上下文中找到的。这可能意味着您有错误的嵌套元素 - 例如“body”部分中的“style”元素而不是“head”内部 - 或者两个重叠的元素(不允许)。
此错误的一个常见原因是在HTML文档中使用XHTML语法。由于HTML的隐式闭合元素规则,此错误可以创建级联效果。例如,在HTML文档的“head”部分中使用XHTML的“自闭”标签“meta”和“link”可能会导致解析器推断出“head”部分的结尾和“body”的开头“section(不允许使用”link“和”meta“;因此报告错误)。
产生此错误的行是:
<script type="text/javascript">
<!--
for(var i=0; i<5;i++){
document.write('<tr><td class="classes">');
document.write(classArray[i]);
document.write('</td></tr>');
}
-->
</script>
问题是此代码位于“body”标记中。我不确定如何复制此代码以将其放在头部,同时在页面上我想要的位置生成一个表。任何帮助将非常感激。我真的不太了解XHTML Strict或Javascript,这只是课堂3周模块的一部分,我的所有经验来自讲座/阅读。
完整代码,怀疑是朝下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Career Goals</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style type="text/css">
body
{
background-image:url('./images/marbleBG.jpg');
background-repeat:no-repeat;
background-position:right top;
background-size: 100% , 100%;
margin-top:5%;
margin-bottom:5%;
font-family: sarif;
text-align: center;
font-size: 18px;
}
table.main
{
margin-left: auto;
margin-right:auto;
height: auto;
width: 65%;
border: 0px solid black;
}
table.classes
{
margin-left: 15%;
margin-right:auto;
height: 100%;
width: auto;
text-align : left;
border-collapse: collapse;
}
td.classes
{
text-indent : 25px;
border: 1px solid;
padding: .3em;
}
th.classes
{
padding: .3em;
border: 1px solid;
}
table.centered
{
margin-left: 15%;
margin-right: auto;
border: 0px solid black;
}
h1.title
{
text-align: center;
padding-bottom:25px;
}
p.left
{
text-align: left;
font-size: 16px;
text-indent: 25px;
}
li
{
text-align: left;
}
</style>
</head>
<body>
<script type="text/javascript" src="myarray.js" ></script>
<script type="text/javascript" src="mycookie.js" ></script>
<table class="main">
<tr>
<td>
<h1 class="title"> Career Goals </h1>
<p class="left">
My goals when I complete my computer science degree with Arizona State University will include
joining a corporation where I can improve my technical skills and assist in the growth of said company.
I would like to be a part of a team of programmers with common career interests where we can motivate each
other to visibly show improvement as our careers progress.
</p>
<p class="left">
In my study with Arizona State University I have learned many popular programming languages. In my career I plan
on utilizing most, if not all, of the languages I know. The programing languages I know include:
</p>
<table class="centered">
<tr>
<td>
<ul>
<li>Java</li>
<li>C/C++</li>
<li>Scala</li>
<li>Java Scripting</li>
<li>PERL Scripting</li>
<li>Unix Scripting</li>
<li>HTML/XHTML</li>
</ul>
</td>
</tr>
</table>
<p class="left">
With Arizona State Univeristy I did not just learn programming languages, I learned industry practicies. In my career
I expect to utilize msot of these techniques, as well as learn new practicies to improve the quality of software I
assist in creating. The techniques taught by Arizona State University include:
</p>
<table class="centered">
<tr>
<td>
<ul>
<li>Extreme Programming</li>
<li>Paired Programming</li>
<li>Code Reviews</li>
<li>Refacotring Sessions</li>
</ul>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<p class="left"> At Arizona State University I have taken many classes to progress
in my computer science degree. Some of the classes that I have taken that may assist in my career goals are:
</p>
<table class="classes">
<tr>
<th class="classes">
<b>Classes Taken for Computer Science Major</b>
</th>
</tr>
<script type="text/javascript">
<!--
for(var i=0; i<5;i++){
document.write('<tr><td class="classes">');
document.write(classArray[i]);
document.write('</td></tr>');
}
-->
</script>
</table>
</td>
</tr>
<tr>
<td>
<p class="left">
More of my skills and goals can be found on my <a href="resume.html">resume</a>. If you feel my career goals would be a great addition
to your team you can contact me using my <a href="contact.html">contact form</a>.
</p>
</td>
</tr>
</table>
<p>
<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
</p>
</body>
</html>
答案 0 :(得分:5)
表中不允许使用脚本元素,除非它们位于数据或标题单元格中。如果要从脚本生成表的一部分,则必须从脚本生成表的全部。
顺便说一句,在XHTML中,注释是注释,因此您实际上并没有脚本,只是包含注释的脚本元素。您可能没注意到,因为您可能告诉浏览器将文档视为HTML(本地文件的.html文件扩展名或HTTP上提供的文本/ html内容类型)。 删除评论。然后,您将发现脚本中的<
将生成更多错误(因为标记是XHTML中脚本内部的标记(与HTML不同))。 Wrap the content with CDATA flags
一般来说,我不会为任何新项目推荐XHTML。当你假装它是HTML时,应该如何处理XHTML以及浏览器如何实际处理它之间的差异使它更加麻烦然后它值得。
你似乎也有适合列表的数据,而不是一个表(只有一列是一个很大的线索),所以我完全摆脱了这个表。
答案 1 :(得分:2)
您不必使用Javascript生成整个表,您只需要使用比document.write更好的方法来输出您的元素。由于这是一个类,我犹豫是否给你确切的代码,但你应该能够使用document.getElementById(),document.createElement('td')和appendChild()的组合。
像: 的document.getElementById( '类')的appendChild(newChild对象);
作为旁注,Quentin对于语义问题是完全正确的:XHTML不太可能是正确的选择,非表格内容的基于表格的布局已经过时了。但是,据我所知,这是一个课程项目,所以你可能别无选择。