这个HTML代码让我发疯

时间:2013-02-18 13:35:45

标签: javascript html

<html>
<head>
<title>DIsplaying triangle /square</title>

<script type="text/javascript">
document.write("<html><body><p style='line-height:100%;>");
var sides=prompt("Enter the number of sides","3/4");
if(sides==4)
{
    var i=0;

    var j=0;
    var z=0;
    while(i<=6)
    {   
        if(i==0||i==6)
        {
            while(j<=6)
            {
                document.write("*");    
                document.write("<span style='visibility:hidden'>*</span>");
                ++j;
            }
            j=0;
            document.write("<br\>");
        }
        else 
        {
            while(z<=6)
            {
                if(z==0||z==6)
                {
                    document.write("*");
                    document.write("<span style='visibility:hidden'>*</span>");
                }
                else
                {
                    document.write("<span style='visibility:hidden'>*</span>");
                    document.write("<span style='visibility:hidden'>*</span>");
                }
                ++z;
            }
            z=0;
            document.write("<br\>");
        }
        ++i;
    }
    document.write("</p></body></html>");
}
else
{
    var i=0;
}
</script>
</head>
</html>

我在提示框中输入4时的输出应为:

* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *

(认为这是一个完美的广场。很难在这里画画。)

但我明白了:

** * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *

看第一行。它有第一个2&#34; *&#34; s。根据代码,它不应该发生。 document.write("*")部分出了问题。当我尝试使用alert进行调试时,我发现第一次(即当i = 0时)第一次document.write("*")被忽略。但是每隔一段时间都要考虑它。

2 个答案:

答案 0 :(得分:0)

检查出来:http://jsbin.com/efehiv/1/edit

这条线对我来说很糟糕:

document.write("<html><body><p style='line-height:100%;>");

答案 1 :(得分:0)

Nikhil,你还没有关闭你的风格......从单引号开始,以分号结束。重写

document.write("<html><body><p style=\"line-height:100%;\">");

如果您认为段落标记是必要的,那么您可以保留它,但这不是必需的。它目前正在弄乱你的页面的其余部分。