为什么这个Javascript代码的行为如下?

时间:2014-07-12 08:19:22

标签: javascript

<!DOCTYPE html>
<html>
<body>

<script type="text/javascript">
<!--
    var x = 26;
    do{
        document.write(x + " et voilà! <br />");
        x++;
    }while(x<32);
//-->
</script>

</body>
</html>

我不知道为什么上面的代码不起作用。浏览器窗口继续加载,没有任何内容出现。我甚至无法在Google Chrome中使用F12来调试代码。我不确定,但我认为问题出在<br />标签上。 <br><br/ >似乎工作正常,但不是<br /><br/>。 (注意空格)。四个都不应该正常工作吗? (Dunno为什么,但是代码开始工作。我非常,非常确定它一开始并不工作。很奇怪。)

使用<br><br/ >时,印刷文字为et voilà !而不是et voilà! 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

“Ô而不是“a”是UTF-8的问题。

HTML解决方案:

设置元字符集,并使用UTF-8编码保存文件:

<meta charset="UTF-8">

<meta charset="utf-8"> vs <meta http-equiv="Content-Type">

.HTACESS解决方案:

AddDefaultCharset utf-8

htaccess UTF-8 encoding for .html, .css, .js - Whats the best way?

使用UTF-8编码保存文件:

答案 1 :(得分:0)

当您的JavaScript位于HTML中的/标记内(而不是外部文件)时,请尝试使用\转义<script>

document.write(x + " et voilà! <br \/>");

但是我没有在Chrome中看到这个问题。

就Unicode字符而言,您应该将文件编码为UTF-8并将<meta charset="utf-8" />添加到文档的头部。

<html><head><meta charset="utf-8" /></head>

答案 2 :(得分:-1)

html / xml评论和javascript评论//在同一行。然后是/&gt;在字符串中结束标记(html解析器不理解或看到javascript,它只是看到/&gt;)---所以破解的解析器可能会混淆。

  • 删除//
  • 将字符串拆分为document.write(x + " et voilà! br " + "/" + ">");

无论如何,您的原始代码适用于我的Chrome。