JavaScript和XHTML严格代码的问题

时间:2011-11-23 18:06:32

标签: javascript xhtml xhtml-1.0-strict

我遇到了满足类分配的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>

2 个答案:

答案 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不太可能是正确的选择,非表格内容的基于表格的布局已经过时了。但是,据我所知,这是一个课程项目,所以你可能别无选择。