javascript不在浏览器中生成,只是将代码打印到屏幕上

时间:2009-10-17 21:30:55

标签: javascript

首先,我不是要求任何人做我的作业。这一点的目的是编写一个简单的网页来熟悉javascript。它从名为“cards”的文件夹中生成并显示随机卡片。我完成了那部分。但是,当我把它提交给老师时,他给我发回了这个截图,主题是“任何想法?”

http://i38.tinypic.com/2wr3e2p.jpg

我在几台机器上测试了这个页面,它适用于每个浏览器。我不知道为什么它只是在运行时将代码打印到页面上。有什么想法吗? (我假设他会启用javascript,特别是因为我班上的每个人都提交了这个程序)。

编辑:这是代码,对不起,但我包含了一切只是为了清除任何问题

    <!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Aaron's Gamble Page!</title>

<style type="text/css">
* { padding: 0; margin: 0; }

body 
{
 font-family: Arial, Helvetica, sans-serif;
 font-size: 13px;
 background: #48454C;
}
#wrapper 
{ 
 margin: 0 auto;
 width: 365px;
}
#header 
{
 color: #333;
 width: 365px;
 padding: 10px;
 margin: 10px 0px 0px 0px;
 background: #A29EA2;
}
#centercolumn 
{
 color: #333;
 padding: 10px;
 width: 365px;
 background: #DFE0DB;
}
#footer 
{ 
 width: 365px;
 clear: both;
 color: #333;
 background: #A29EA2;
 padding: 10px;
}
</style>

<script type="text/javascript" charset="utf-8">
// this page created by Aaron Albin
// creation date: October 17, 2009

var score = 0;

function generateCards()
{
    var i, randType, randSuite;
    var type = new Array("2", "3","4","5","6","7","8","9","t","j","q","k","a");
    var suite = new Array("c","d","s", "h");
    var cards = new Array(5);
    for (i = 0; i < cards.length; i++)
    {
        cards[i] = setRandomCard(type, suite, cards);
        document.write('<img src = "'+cards[i]+'">');
    }
}

function setRandomCard(type, suite, cards)
{
    var randType, randSuite;
    var filePath = "file://C:/cards/";
    var fileExt = ".gif";

    do
    {
        randType = Math.floor(Math.random() * type.length);
        randSuite = Math.floor(Math.random() * suite.length);
    }
    while(checkDuplicate(randType, randSuite, filePath, fileExt, type, suite, cards));

    addScore(type, randType);
    return filePath + type[randType] + suite[randSuite] + fileExt;
}

function checkDuplicate(randType, randSuite, filePath, fileExt, type, suite, cards)
{
    var j;
    for (j = 0; j < cards.length; j++)
    {
        if (cards[j] == filePath + type[randType] + suite[randSuite] + fileExt)
        {
            return true;
        }
    }
    return false;
}

function addScore(type, randType)
{
    switch(type[randType])
    {
        case "2":
            score += 2;
            break;
        case "3":
            score += 3;
            break;
        case "4":
            score += 4;
            break;
        case "5":
            score += 5;
            break;
        case "6":
            score += 6;
            break;
        case "7":
            score += 7;
            break;
        case "8":
            score += 8;
            break;
        case "9":
            score += 9;
            break;
        case "t":
            score += 10;
            break;
        case "j":
            score += 11;
            break;
        case "q":
            score += 12;
            break;
        case "k":
            score += 13;
            break;
        case "a":
            score += 1;
            break;
        default:
            score += 0;
    }
}
</script>

</head>

<body>
   <div id="wrapper">
         <div id="header"></div>
            <div id="centercolumn">
                <h2>Gamble!</h2>     
                <br />
                <p>Welcome to my gambling page.  You have drawn</p><br />
                <script type="text/javascript" charset="utf-8">generateCards();</script><br /><br />
                <p>The value of this hand is <script type="text/javascript" charset="utf-8">document.write(score);</script>.</p>
                <br />
            </div>
         <div id="footer"></div>
   </div>
</body>
</html>

3 个答案:

答案 0 :(得分:3)

您确定您的代码列在版权标记内吗?

<script type="text/javascript" charset="utf-8">
// your code goes here
</script>

这是我能想象的唯一原因

答案 1 :(得分:2)

您将其声明为XHTML。在XHTML中,解析每个标记的内容。所以&lt;和&gt;您的JavaScript中的标志可以分解页面。 (他们可以,这是我能看到的唯一错误的东西。)将你的javascript放入CDATA标签。 (请参阅http://www.w3schools.com/xmL/xml_cdata.asp)不幸的是,每个浏览器都无法正确解析,因此您必须(javascript-)对其进行评论才能使其正常工作。

<script type="text/javascript">
/* <![CDATA[ */
    // code goes here
/* ]]> */
</script>

编辑:尝试http://validator.w3.org/,您会看到您的标记无效以及问题所在。添加CDATA标签可以解决问题,或者至少使代码有效。

答案 2 :(得分:0)

当您从IE中加载了一个本地页面,其中包含javascript,然后会出现一个警告栏,弹出“Active content has a disabled。点击此处启用活动内容”。 (或类似的规定)。与老师核实他是否看到了酒吧,没有看到它会暗示JS在某种程度上被禁用,无论是在浏览器中还是在他的本地机器上通过某种安全/防病毒。如果他确实看到了,请确保他点击以启用活动内容:)

很难从屏幕截图中看到是否存在某种错误,因为他狡猾地移动了窗口中出现错误图标的部分屏幕上的状态栏,但是我可以看到他安装了Firefox,所以请他看看你的页面。