W3用1行javascript代码验证html错误

时间:2013-11-14 15:32:48

标签: javascript html validation

我在validator.W3.org上收到以下错误

第70行,第26栏:字符“<”是分隔符的第一个字符,但是作为数据出现

if (remainingSeconds < 10) {

第70行,第26列:StartTag:无效的元素名称

if (remainingSeconds < 10) {

这是我使用的代码。

<script type="text/javascript">
function secondPassed() {
var minutes = Math.round((seconds - 30)/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
    remainingSeconds = "0" + remainingSeconds;  
}
</script>

如果我删除&lt;或改变&lt;到a =然后错误就消失了。

有人有想法吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

3 个答案:

答案 0 :(得分:2)

您正在验证XHTML文档,因此you have to use CDATA markers around your script contents

<script>
  <![CDATA[
  // JavaScript goes here
  ]]>
</script>

就我个人而言,我不知道为什么你会在这个时代使用XHTML,无论如何。

答案 1 :(得分:1)

如果您要验证为XHTML,请尝试将您的JavaScript包装在<![CDATA[]]>块中:

What does <![CDATA[]]> in XML mean?

答案 2 :(得分:1)

您正在使用严格的XHTML,因此如果您想将它们用作文本,则必须正确转义属于XML语法(几乎所有)的所有字符。在XHTML中,通常的方法是使用CDATA块以与HTML兼容的方式进行转义:

<script type="text/javascript">//<![CDATA[
function secondPassed() {
var minutes = Math.round((seconds - 30)/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
    remainingSeconds = "0" + remainingSeconds;  
}
//]]></script>

但是,有两个更好的修复:

  • 使用HTML5(<!DOCTYPE html>),而不是XHTML
  • 使用外部脚本<script type="text/javascript" src="second-passed.js"></script>

两者都是更好的做法。